qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 2/2] i440fx: print an error message if user t


From: Bandan Das
Subject: Re: [Qemu-devel] [PATCH v3 2/2] i440fx: print an error message if user tries to enable iommu
Date: Tue, 17 Nov 2015 18:39:55 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Markus Armbruster <address@hidden> writes:

> Bandan Das <address@hidden> writes:
>
>> There's no indication of any sort that i440fx doesn't support
>> "iommu=on"
>>
>> Reviewed-by: Eric Blake <address@hidden>
>> Signed-off-by: Bandan Das <address@hidden>
>> ---
>>  hw/pci-host/piix.c | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
>> index 7b2fbf9..715208b 100644
>> --- a/hw/pci-host/piix.c
>> +++ b/hw/pci-host/piix.c
>> @@ -34,6 +34,7 @@
>>  #include "sysemu/sysemu.h"
>>  #include "hw/i386/ioapic.h"
>>  #include "qapi/visitor.h"
>> +#include "qemu/error-report.h"
>>  
>>  /*
>>   * I440FX chipset data sheet.
>> @@ -301,6 +302,10 @@ static void i440fx_pcihost_realize(DeviceState *dev, 
>> Error **errp)
>>  static void i440fx_realize(PCIDevice *dev, Error **errp)
>>  {
>>      dev->config[I440FX_SMRAM] = 0x02;
>> +
>> +    if (object_property_get_bool(qdev_get_machine(), "iommu", NULL)) {
>> +        error_report("warning: i440fx doesn't support emulated iommu");
>> +    }
>>  }
>>  
>>  PCIBus *i440fx_init(const char *host_type, const char *pci_type,
>
> Hmm.
>
> If I understand things correctly, we add property "iommu" to *any*
> machine, whether it supports it or not (see machine_initfn() in
> hw/core/machine.c).
>
> Most machines don't support it.  You add a warning to one of them.

Yeah, I guess the only one that does is q35. Although, iommu should
be theoretically applicable to all machine types, a generic "iommu"
property common to all types makes little sense to me. 

One way is to remove the common property and make "iommu" a property of
Q35 only (through a custom instance_init). 

Other is to simply make the property common to pc by moving it to pc.c
But that still doesn't solve the problem since i440fx cannot emulate it yet.

> Why to that one and not the others?
>
> Shouldn't we add properties only to machines where they make sense?
> Adding them indiscrimiately defeats QOM introspection.

For now, maybe we can just skip this patch. I will post another generic 
solution.
It's just weird that qemu runs happily without complaining when iommu is
specified with an unsupported type.



reply via email to

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