On 23/03/17 22:28, Eduardo Habkost wrote:
> Summary
> -------
>
> This series replaces the existing has_dynamic_sysbus flag (that
> makes the machine accept every single sysbus device type on the
> command-line) with a short whitelist.
>
> This will be helpful when implementing the new query-device-slots
> command, because each machine type will include only the sysbus
> devices it really supports, instead of including a catch-all
> TYPE_SYS_BUS_DEVICE "slot".
>
> Most of the machines already have an internal whitelist
> implemented using foreach_dynamic_sysbus_device(), so we just
> encode the existing behavior inside the new MachineClass field.
>
> Caveat: q35
> -----------
>
> The only problematic case is q35, that accepts all sysbus device
> types. In this case, instead of adding TYPE_SYS_BUS_DEVICE to the
> whitelist, I'm adding the existing list of existing sysbus device
> types to keep compatibility. After that, we can gradually and
> carefully remove unnecessary entries from the q35 whitelist.
>
> Issue: xen_set_dynamic_sysbus() hack
> ------------------------------------
>
> We still have an obstacle to get around: the callers of
> qdev_set_id() outside qdev_device_add() are breaking
> foreach_dynamic_sysbus_device(), and xen_set_dynamic_sysbus() is
> a workaround for that bug. We now need to fix that bug to be able
> to remove the xen_set_dynamic_sysbus() hack. This means the first
> patch of this series will probably break Xen, until we fix that
> bug.
>
> Eduardo Habkost (4):
> [UNTESTED] xen: Don't force has_dynamic_sysbus on machine class
> machine: Replace has_dynamic_sysbus with a whitelist
> q35: Remove ioapic devices from sysbus whitelist
> q35: Remove fw_cfg* from sysbus whitelist
>
> include/hw/arm/sysbus-fdt.h | 7 +++++++
> include/hw/boards.h | 3 ++-
> hw/arm/sysbus-fdt.c | 10 ++++++++++
> hw/arm/virt.c | 4 +++-
> hw/core/machine.c | 43 +++++++++++++++++++++++++++++--------------
> hw/i386/pc_q35.c | 25 ++++++++++++++++++++++++-
> hw/ppc/e500plat.c | 4 +++-
> hw/ppc/spapr.c | 2 +-
> hw/xen/xen_backend.c | 11 -----------
> 9 files changed, 79 insertions(+), 30 deletions(-)
>
This seems to break Xen. I got:
qemu-system-i386: Option '-device xen-backend' cannot be handled by this
machine
when using qemu as Xen backend driver.
Juergen