• E
    sysbus: Set user_creatable=false by default on TYPE_SYS_BUS_DEVICE · e4f4fb1e
    Eduardo Habkost 提交于
    commit 33cd52b5 unset
    cannot_instantiate_with_device_add_yet in TYPE_SYSBUS, making all
    sysbus devices appear on "-device help" and lack the "no-user"
    flag in "info qdm".
    
    To fix this, we can set user_creatable=false by default on
    TYPE_SYS_BUS_DEVICE, but this requires setting
    user_creatable=true explicitly on the sysbus devices that
    actually work with -device.
    
    Fortunately today we have just a few has_dynamic_sysbus=1
    machines: virt, pc-q35-*, ppce500, and spapr.
    
    virt, ppce500, and spapr have extra checks to ensure just a few
    device types can be instantiated:
    
    * virt supports only TYPE_VFIO_CALXEDA_XGMAC, TYPE_VFIO_AMD_XGBE.
    * ppce500 supports only TYPE_ETSEC_COMMON.
    * spapr supports only TYPE_SPAPR_PCI_HOST_BRIDGE.
    
    This patch sets user_creatable=true explicitly on those 4 device
    classes.
    
    Now, the more complex cases:
    
    pc-q35-*: q35 has no sysbus device whitelist yet (which is a
    separate bug). We are in the process of fixing it and building a
    sysbus whitelist on q35, but in the meantime we can fix the
    "-device help" and "info qdm" bugs mentioned above. Also, despite
    not being strictly necessary for fixing the q35 bug, reducing the
    list of user_creatable=true devices will help us be more
    confident when building the q35 whitelist.
    
    xen: We also have a hack at xen_set_dynamic_sysbus(), that sets
    has_dynamic_sysbus=true at runtime when using the Xen
    accelerator. This hack is only used to allow xen-backend devices
    to be dynamically plugged/unplugged.
    
    This means today we can use -device with the following 22 device
    types, that are the ones compiled into the qemu-system-x86_64 and
    qemu-system-i386 binaries:
    
    * allwinner-ahci
    * amd-iommu
    * cfi.pflash01
    * esp
    * fw_cfg_io
    * fw_cfg_mem
    * generic-sdhci
    * hpet
    * intel-iommu
    * ioapic
    * isabus-bridge
    * kvmclock
    * kvm-ioapic
    * kvmvapic
    * SUNW,fdtwo
    * sysbus-ahci
    * sysbus-fdc
    * sysbus-ohci
    * unimplemented-device
    * virtio-mmio
    * xen-backend
    * xen-sysdev
    
    This patch adds user_creatable=true explicitly to those devices,
    temporarily, just to keep 100% compatibility with existing
    behavior of q35. Subsequent patches will remove
    user_creatable=true from the devices that are really not meant to
    user-creatable on any machine, and remove the FIXME comment from
    the ones that are really supposed to be user-creatable. This is
    being done in separate patches because we still don't have an
    obvious list of devices that will be whitelisted by q35, and I
    would like to get each device reviewed individually.
    
    Cc: Alexander Graf <agraf@suse.de>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Cc: Alistair Francis <alistair.francis@xilinx.com>
    Cc: Beniamino Galvani <b.galvani@gmail.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
    Cc: David Gibson <david@gibson.dropbear.id.au>
    Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
    Cc: Eduardo Habkost <ehabkost@redhat.com>
    Cc: Frank Blaschka <frank.blaschka@de.ibm.com>
    Cc: Gabriel L. Somlo <somlo@cmu.edu>
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Cc: Igor Mammedov <imammedo@redhat.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Cc: John Snow <jsnow@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kevin Wolf <kwolf@redhat.com>
    Cc: Laszlo Ersek <lersek@redhat.com>
    Cc: Marcel Apfelbaum <marcel@redhat.com>
    Cc: Markus Armbruster <armbru@redhat.com>
    Cc: Max Reitz <mreitz@redhat.com>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Peter Maydell <peter.maydell@linaro.org>
    Cc: Pierre Morel <pmorel@linux.vnet.ibm.com>
    Cc: Prasad J Pandit <pjp@fedoraproject.org>
    Cc: qemu-arm@nongnu.org
    Cc: qemu-block@nongnu.org
    Cc: qemu-ppc@nongnu.org
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Shannon Zhao <zhaoshenglong@huawei.com>
    Cc: sstabellini@kernel.org
    Cc: Thomas Huth <thuth@redhat.com>
    Cc: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
    Acked-by: NJohn Snow <jsnow@redhat.com>
    Acked-by: NJuergen Gross <jgross@suse.com>
    Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
    Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
    Message-Id: <20170503203604.31462-3-ehabkost@redhat.com>
    Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
    [ehabkost: Small changes at sysbus_device_class_init() comments]
    Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
    e4f4fb1e
fdc.c 89.7 KB