Skip to content
  • Markus Armbruster's avatar
    33fe9683
    Revert "qdev: Use qdev_get_device_class() for -device <type>,help" · 33fe9683
    Markus Armbruster authored
    
    
    This reverts commit 31bed550.
    
    The reverted commit changed qdev_device_help() to reject abstract
    devices and devices that have cannot_instantiate_with_device_add_yet
    set, to fix crash bugs like -device x86_64-cpu,help.
    
    Rejecting abstract devices makes sense: they're purely internal, and
    the implementation of the help feature can't cope with them.
    
    Rejecting non-pluggable devices makes less sense: even though you
    can't use them with -device, the help may still be useful elsewhere,
    for instance with -global.  This is a regression: -device FOO,help
    used to help even for FOO that aren't pluggable.
    
    The previous two commits fixed the crash bug at a lower layer, so
    reverting this one is now safe.  Fixes the -device FOO,help
    regression, except for the broken devices marked
    cannot_even_create_with_object_new_yet.  For those, the error message
    is improved.
    
    Example of a device where the regression is fixed:
    
        $ qemu-system-x86_64 -device PIIX4_PM,help
        PIIX4_PM.command_serr_enable=bool (on/off)
        PIIX4_PM.multifunction=bool (on/off)
        PIIX4_PM.rombar=uint32
        PIIX4_PM.romfile=str
        PIIX4_PM.addr=int32 (Slot and optional function number, example: 06.0 or 06)
        PIIX4_PM.memory-hotplug-support=bool
        PIIX4_PM.acpi-pci-hotplug-with-bridge-support=bool
        PIIX4_PM.s4_val=uint8
        PIIX4_PM.disable_s4=uint8
        PIIX4_PM.disable_s3=uint8
        PIIX4_PM.smb_io_base=uint32
    
    Example of a device where it isn't fixed:
    
        $ qemu-system-x86_64 -device host-x86_64-cpu,help
        Can't list properties of device 'host-x86_64-cpu'
    
    Both failed with "Parameter 'driver' expects pluggable device type"
    before.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    Message-Id: <1443689999-12182-11-git-send-email-armbru@redhat.com>
    33fe9683
    Revert "qdev: Use qdev_get_device_class() for -device <type>,help"
    Markus Armbruster authored
    
    
    This reverts commit 31bed550.
    
    The reverted commit changed qdev_device_help() to reject abstract
    devices and devices that have cannot_instantiate_with_device_add_yet
    set, to fix crash bugs like -device x86_64-cpu,help.
    
    Rejecting abstract devices makes sense: they're purely internal, and
    the implementation of the help feature can't cope with them.
    
    Rejecting non-pluggable devices makes less sense: even though you
    can't use them with -device, the help may still be useful elsewhere,
    for instance with -global.  This is a regression: -device FOO,help
    used to help even for FOO that aren't pluggable.
    
    The previous two commits fixed the crash bug at a lower layer, so
    reverting this one is now safe.  Fixes the -device FOO,help
    regression, except for the broken devices marked
    cannot_even_create_with_object_new_yet.  For those, the error message
    is improved.
    
    Example of a device where the regression is fixed:
    
        $ qemu-system-x86_64 -device PIIX4_PM,help
        PIIX4_PM.command_serr_enable=bool (on/off)
        PIIX4_PM.multifunction=bool (on/off)
        PIIX4_PM.rombar=uint32
        PIIX4_PM.romfile=str
        PIIX4_PM.addr=int32 (Slot and optional function number, example: 06.0 or 06)
        PIIX4_PM.memory-hotplug-support=bool
        PIIX4_PM.acpi-pci-hotplug-with-bridge-support=bool
        PIIX4_PM.s4_val=uint8
        PIIX4_PM.disable_s4=uint8
        PIIX4_PM.disable_s3=uint8
        PIIX4_PM.smb_io_base=uint32
    
    Example of a device where it isn't fixed:
    
        $ qemu-system-x86_64 -device host-x86_64-cpu,help
        Can't list properties of device 'host-x86_64-cpu'
    
    Both failed with "Parameter 'driver' expects pluggable device type"
    before.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    Message-Id: <1443689999-12182-11-git-send-email-armbru@redhat.com>
Loading