1. 18 12月, 2017 1 次提交
  2. 15 10月, 2017 1 次提交
  3. 17 5月, 2017 1 次提交
    • E
      qdev: Replace cannot_instantiate_with_device_add_yet with !user_creatable · e90f2a8c
      Eduardo Habkost 提交于
      cannot_instantiate_with_device_add_yet was introduced by commit
      efec3dd6 to replace no_user. It was
      supposed to be a temporary measure.
      
      When it was introduced, we had 54
      cannot_instantiate_with_device_add_yet=true lines in the code.
      Today (3 years later) this number has not shrunk: we now have
      57 cannot_instantiate_with_device_add_yet=true lines. I think it
      is safe to say it is not a temporary measure, and we won't see
      the flag go away soon.
      
      Instead of a long field name that misleads people to believe it
      is temporary, replace it a shorter and less misleading field:
      user_creatable.
      
      Except for code comments, changes were generated using the
      following Coccinelle patch:
      
        @@
        expression DC;
        @@
        (
        -DC->cannot_instantiate_with_device_add_yet = false;
        +DC->user_creatable = true;
        |
        -DC->cannot_instantiate_with_device_add_yet = true;
        +DC->user_creatable = false;
        )
      
        @@
        typedef ObjectClass;
        expression dc;
        identifier class, data;
        @@
         static void device_class_init(ObjectClass *class, void *data)
         {
         ...
         dc->hotpluggable = true;
        +dc->user_creatable = true;
         ...
         }
      
        @@
        @@
         struct DeviceClass {
         ...
        -bool cannot_instantiate_with_device_add_yet;
        +bool user_creatable;
         ...
        }
      
        @@
        expression DC;
        @@
        (
        -!DC->cannot_instantiate_with_device_add_yet
        +DC->user_creatable
        |
        -DC->cannot_instantiate_with_device_add_yet
        +!DC->user_creatable
        )
      
      Cc: Alistair Francis <alistair.francis@xilinx.com>
      Cc: Laszlo Ersek <lersek@redhat.com>
      Cc: Marcel Apfelbaum <marcel@redhat.com>
      Cc: Markus Armbruster <armbru@redhat.com>
      Cc: Peter Maydell <peter.maydell@linaro.org>
      Cc: Thomas Huth <thuth@redhat.com>
      Acked-by: NAlistair Francis <alistair.francis@xilinx.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
      Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170503203604.31462-2-ehabkost@redhat.com>
      [ehabkost: kept "TODO remove once we're there" comment]
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      e90f2a8c
  4. 29 1月, 2016 1 次提交
    • P
      hw: Clean up includes · 0430891c
      Peter Maydell 提交于
      Clean up includes so that osdep.h is included first and headers
      which it implies are not included manually.
      
      This commit was created with scripts/clean-includes.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1453832250-766-38-git-send-email-peter.maydell@linaro.org
      0430891c
  5. 13 1月, 2016 1 次提交
    • M
      isa: Clean up error handling around isa_bus_new() · d10e5432
      Markus Armbruster 提交于
      We can have at most one ISA bus.  If you try to create another one,
      isa_bus_new() complains to stderr and returns null.
      
      isa_bus_new() is called in two contexts, machine's init() and device's
      realize() methods.  Since complaining to stderr is not proper in the
      latter context, convert isa_bus_new() to Error.
      
      Machine's init():
      
      * mips_jazz_init(), called from the init() methods of machines
        "magnum" and "pica"
      
      * mips_r4k_init(), the init() method of machine "mips"
      
      * pc_init1() called from the init() methods of non-q35 PC machines
      
      * typhoon_init(), called from clipper_init(), the init() method of
        machine "clipper"
      
      These callers always create the first ISA bus, hence isa_bus_new()
      can't fail.  Simply pass &error_abort.
      
      Device's realize():
      
      * i82378_realize(), of PCI device "i82378"
      
      * ich9_lpc_realize(), of PCI device "ICH9-LPC"
      
      * pci_ebus_realize(), of PCI device "ebus"
      
      * piix3_realize(), of PCI device "pci-piix3", abstract parent of
        "PIIX3" and "PIIX3-xen"
      
      * piix4_realize(), of PCI device "PIIX4"
      
      * vt82c686b_realize(), of PCI device "VT82C686B"
      
      Propagate the error.  Note that these devices are typically created
      only by machine init() methods with qdev_init_nofail() or similar.  If
      we screwed up and created an ISA bus before that call, we now give up
      right away.  Before, we'd hobble on, and typically die in
      isa_bus_irqs().  Similar if someone finds a way to hot-plug one of
      these critters.
      
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: "Hervé Poussineau" <hpoussin@reactos.org>
      Cc: Aurelien Jarno <aurelien@aurel32.net>
      Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      Signed-off-by: NMarkus Armbruster <armbru@pond.sub.org>
      Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
      Reviewed-by: NHervé Poussineau <hpoussin@reactos.org>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Message-Id: <1450370121-5768-11-git-send-email-armbru@redhat.com>
      d10e5432
  6. 24 6月, 2015 1 次提交
  7. 04 6月, 2015 1 次提交
  8. 26 2月, 2015 1 次提交
  9. 13 2月, 2015 1 次提交
  10. 26 1月, 2015 1 次提交
  11. 15 1月, 2015 1 次提交
  12. 10 12月, 2014 1 次提交
  13. 16 6月, 2014 1 次提交
  14. 14 2月, 2014 1 次提交
  15. 23 12月, 2013 2 次提交
    • M
      vt82c686: Clean up use of cannot_instantiate_with_device_add_yet · 04916ee9
      Markus Armbruster 提交于
      A VT82C686B southbridge has multiple functions.  We model each
      function as a separate qdev.  One of them need some special wiring set
      up in mips_fulong2e_init() to work: the ISA bridge at 05.0.
      
      The IDE controller at 05.1 (via-ide) has always had
      cannot_instantiate_with_device_add_yet set, but there is no obvious
      reason why device_add could not work for them.  Drop it.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      04916ee9
    • M
      qdev: Replace no_user by cannot_instantiate_with_device_add_yet · efec3dd6
      Markus Armbruster 提交于
      In an ideal world, machines can be built by wiring devices together
      with configuration, not code.  Unfortunately, that's not the world we
      live in right now.  We still have quite a few devices that need to be
      wired up by code.  If you try to device_add such a device, it'll fail
      in sometimes mysterious ways.  If you're lucky, you get an
      unmysterious immediate crash.
      
      To protect users from such badness, DeviceClass member no_user used to
      make device models unavailable with -device / device_add, but that
      regressed in commit 18b6dade.  The device model is still omitted from
      help, but is available anyway.
      
      Attempts to fix the regression have been rejected with the argument
      that the purpose of no_user isn't clear, and it's prone to misuse.
      
      This commit clarifies no_user's purpose.  Anthony suggested to rename
      it cannot_instantiate_with_device_add_yet_due_to_internal_bugs, which
      I shorten somewhat to keep checkpatch happy.  While there, make it
      bool.
      
      Every use of cannot_instantiate_with_device_add_yet gets a FIXME
      comment asking for rationale.  The next few commits will clean them
      all up, either by providing a rationale, or by getting rid of the use.
      
      With that done, the regression fix is hopefully acceptable.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NMarcel Apfelbaum <marcel.a@redhat.com>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      efec3dd6
  16. 14 10月, 2013 1 次提交
  17. 29 7月, 2013 1 次提交
  18. 04 7月, 2013 4 次提交
  19. 07 6月, 2013 1 次提交
  20. 09 4月, 2013 2 次提交
  21. 04 4月, 2013 1 次提交
  22. 01 3月, 2013 2 次提交
  23. 11 1月, 2013 1 次提交
    • A
      Make all static TypeInfos const · 8c43a6f0
      Andreas Färber 提交于
      Since 39bffca2 (qdev: register all
      types natively through QEMU Object Model), TypeInfo as used in
      the common, non-iterative pattern is no longer amended with information
      and should therefore be const.
      
      Fix the documented QOM examples:
      
       sed -i 's/static TypeInfo/static const TypeInfo/g' include/qom/object.h
      
      Since frequently the wrong examples are being copied by contributors of
      new devices, fix all types in the tree:
      
       sed -i 's/^static TypeInfo/static const TypeInfo/g' */*.c
       sed -i 's/^static TypeInfo/static const TypeInfo/g' */*/*.c
      
      This also avoids to piggy-back these changes onto real functional
      changes or other refactorings.
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      8c43a6f0
  24. 19 12月, 2012 3 次提交
  25. 17 12月, 2012 1 次提交
  26. 04 12月, 2012 7 次提交