qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] hw/pci: fixed crash when using rombar=0 for hot


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] hw/pci: fixed crash when using rombar=0 for hotplugged devices
Date: Wed, 22 Oct 2014 00:06:18 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0


On 10/21/2014 02:37 PM, Marcel Apfelbaum wrote:
> ROM images must be loaded at startup. Usage of rombar=0 after that
> is not allowed, but should not crash QEMU.
> 
> Check that the device is not hotplugged before trying to
> insert the rom file.

I think it could also make sense to just ignore the option ROM and allow
the hotplug.

Sooner or later we should drop the oldest compat machine types...
everything until 0.12 probably could go.

Paolo

> Signed-off-by: Marcel Apfelbaum <address@hidden>
> ---
>  hw/pci/pci.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index 6ce75aa..3907c90 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -1776,7 +1776,12 @@ static int pci_qdev_init(DeviceState *qdev)
>          pci_dev->romfile = g_strdup(pc->romfile);
>          is_default_rom = true;
>      }
> -    pci_add_option_rom(pci_dev, is_default_rom);
> +
> +    rc = pci_add_option_rom(pci_dev, is_default_rom);
> +    if (rc != 0) {
> +        pci_unregister_device(DEVICE(pci_dev));
> +        return rc;
> +    }
>  
>      return 0;
>  }
> @@ -1940,6 +1945,10 @@ static int pci_add_option_rom(PCIDevice *pdev, bool 
> is_default_rom)
>          if (class == 0x0300) {
>              rom_add_vga(pdev->romfile);
>          } else {
> +            if (DEVICE(pdev)->hotplugged) {
> +                error_report("PCI: rombar can't be 0 for hotplugged 
> devices!");
> +                return -1;
> +            }
>              rom_add_option(pdev->romfile, -1);
>          }
>          return 0;
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]