On Wed, Mar 18, 2015 at 08:02:26AM -0600, Alex Williamson wrote: > On Wed, 2015-03-18 at 14:23 +0100, Michael S. Tsirkin wrote: > > typo in subject: vfio, not vifo. > > > > On Thu, Mar 12, 2015 at 06:23:59PM +0800, Chen Fan wrote: > > > for piix4 chipset, we don't need to expose aer, so introduce > > > PC_I440FX_COMPAT for all piix4 machines to disable aercap, > > > and add HW_COMPAT_2_2 to disable aercap for all lower > > > than 2.3. > > > > > > Signed-off-by: Chen Fan <chen.fan.f...@cn.fujitsu.com> > > > > Well vfio is never migrated ATM. > > So why is compat code needed at all? > > It's not for migration, it's to maintain current behavior on existing > platforms. If someone gets an uncorrected AER error on q35 machine type > today, the VM stops. With this change, AER would be exposed to the > guest and the guest could handle it. The compat change therefore > maintains the stop VM behavior on existing q35 machine types.
If stop VM behaviour is useful, expose it to users. If not, then don't. I don't see why does it have to be tied to machine types. > As I > commented here, the 440fx part of this patch is unnecessary since AER > cannot be exposed to the guest on a conventional PCI chipset. Thanks, > > Alex > > > > --- > > > hw/i386/pc_piix.c | 9 +++++++++ > > > hw/i386/pc_q35.c | 4 ++++ > > > include/hw/compat.h | 10 ++++++++++ > > > 3 files changed, 23 insertions(+) > > > > > > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > > > index 8eab4ba..ff9d312 100644 > > > --- a/hw/i386/pc_piix.c > > > +++ b/hw/i386/pc_piix.c > > > @@ -307,6 +307,11 @@ static void pc_init1(MachineState *machine, > > > > > > static void pc_init_pci(MachineState *machine) > > > { > > > + static GlobalProperty pc_compat_props[] = { > > > + PC_I440FX_COMPAT, > > > + { /* end of list */ } > > > + }; > > > + qdev_prop_register_global_list(pc_compat_props); > > > pc_init1(machine, 1, 1); > > > } > > > > > > @@ -534,6 +539,10 @@ static QEMUMachine pc_i440fx_machine_v2_2 = { > > > PC_I440FX_2_2_MACHINE_OPTIONS, > > > .name = "pc-i440fx-2.2", > > > .init = pc_init_pci_2_2, > > > + .compat_props = (GlobalProperty[]) { > > > + HW_COMPAT_2_2, > > > + { /* end of list */ } > > > + }, > > > }; > > > > > > #define PC_I440FX_2_1_MACHINE_OPTIONS \ > > > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c > > > index c0f21fe..97afb7d 100644 > > > --- a/hw/i386/pc_q35.c > > > +++ b/hw/i386/pc_q35.c > > > @@ -431,6 +431,10 @@ static QEMUMachine pc_q35_machine_v2_2 = { > > > PC_Q35_2_2_MACHINE_OPTIONS, > > > .name = "pc-q35-2.2", > > > .init = pc_q35_init_2_2, > > > + .compat_props = (GlobalProperty[]) { > > > + HW_COMPAT_2_2, > > > + { /* end of list */ } > > > + }, > > > }; > > > > > > #define PC_Q35_2_1_MACHINE_OPTIONS \ > > > diff --git a/include/hw/compat.h b/include/hw/compat.h > > > index 313682a..40c974a 100644 > > > --- a/include/hw/compat.h > > > +++ b/include/hw/compat.h > > > @@ -1,7 +1,17 @@ > > > #ifndef HW_COMPAT_H > > > #define HW_COMPAT_H > > > > > > +#define HW_COMPAT_2_2 PC_I440FX_COMPAT > > > + > > > +#define PC_I440FX_COMPAT \ > > > + {\ > > > + .driver = "vfio-pci",\ > > > + .property = "x-aer",\ > > > + .value = "off",\ > > > + } > > > + > > > #define HW_COMPAT_2_1 \ > > > + HW_COMPAT_2_2, \ > > > {\ > > > .driver = "intel-hda",\ > > > .property = "old_msi_addr",\ > > > -- > > > 1.9.3 > > > > >