[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.