On Wed, Jun 18, 2014 at 07:17:13PM +0300, Michael S. Tsirkin wrote:
[...]
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -286,7 +286,12 @@ int e820_get_num_entries(void);
> bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>
> #define PC_Q35_COMPAT_2_0 \
> - PC_COMPAT_2_0
> + PC_COMPAT_2_0, \
> + {\
> + .driver = "ICH9 LPC",\
> + .property = "memory-hotplug-support",\
> + .value = "off",\
> + }
I have been wondering why exactly we need PC_Q35_COMPAT_* macros at all.
* If another machine (e.g. pc-i40fx) doesn't instantiate ICH9-LPC, it
won't be affected at all by a ICH9-LPC property on compat_props;
* If another machine does instantiate ICH9-LPC, it would also need the
same compat property.
So we could just add all the q35 compat properties to PC_COMPAT_* and
stop having to maintain different sets of compat_props for pc-i440fx and
pc-q35.
(I would go even further and say that no compat_props bit need to be
specific to a machine-type family, and they are simply tied to the code
included in a QEMU version. So every PC_COMPAT_* bit could go to a
common QEMU_COMPAT_<version> macro, that could be reusable by all
machine-types, and there's no need PC-specific compat macros.)
--
Eduardo