All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: "Andreas Färber" <afaerber@suse.de>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Julien Grall <julien.grall@citrix.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Frederic Konrad <fred.konrad@greensocs.com>
Subject: Re: [Qemu-devel] [RFC 00/34] QOM realize, device-only plus ISA conversion
Date: Wed, 02 Jan 2013 08:48:31 -0600	[thread overview]
Message-ID: <877gnvd4jk.fsf@codemonkey.ws> (raw)
In-Reply-To: <1353888766-6951-1-git-send-email-afaerber@suse.de>

So there are 3-4 different series in here all rolled into one.  This
makes review a bit tedious.

I'd suggest:

1) Pull out all of the QOMification stuff into a separate series.
2) Pull out the style cleanups into another series
3) Pull out the introduction of realize/unrealize into a series
4) Pull out the ISA use of realize into another series.

Individually, each series looks very easy to merge.  The general
approach is right along what I was hoping for.

Regards,

Anthony Liguori

Andreas Färber <afaerber@suse.de> writes:

> Hello Anthony and Paolo,
>
> As announced at KVM Forum, I have been preparing a new approach to incrementally
> get us Anthony's QOM realizefn concept. A previous attempt by Paolo and me had
> been turned down for making this available at Object-level and over questions
> whether BlockDriverState may need its own three-stage realization model.
>
> So here's an all-new patchset doing it at DeviceState-level only, adapting the
> signature to void realize(DeviceState *, Error **).
> CPUState is on a good way to get derived from DeviceState, so in the future
> will benefit from this approach as well.
>
> I've picked ISADevice as an example to showcase what semantic effects the
> switch to QOM realizefn has (in the hopes the number of devices would be small):
> As requested by Anthony for QOM CPUState reset and as seen with virtual methods
> in object-oriented programming languages, it becomes the derived method's
> responsibility to decide when and whether to call the parent class' method. In
> lack of real vtables this requires to save the parent's method in case we want
> to call it; classes and matching macros may need to be added for that.
> Another point to note is that we should carefully distinguish what goes into
> the qdev initfn / QOM realizefn and what can already go into a QOM initfn.
>
> This series is rebased onto Julien's ioport cleanups (touching on ISA devices).
>
> It starts by preparing the "realized" property, wrapping qdev's initfn (04).
> This means setting realized to true will not yet affect its children, as seen
> in Paolo's previous patches. That can be implemented later when the realizefns
> have been reviewed not to create new devices that would mess with recursive
> child realization. (In the previous series we had recursive realization but
> on my request dropped the hook-up of qdev due to the aforementioned quirks.)
>
> At that point there is a coexistence of QOM device realizefn and qdev initfn.
> For the first time now I have set out to actually eliminate some qdev initfns,
> that's what I chose ISA for. This consists of three parts, introducing
> realizefns for ISADevices (28) and recursively for PITs (31) and for PICs (34).
> As seen for the PCI host bridge series, I've extracted general QOM cleanups
> from the main conversion patch to arrive at a clean QOM'ish state while
> hopefully keeping the main patches readable.
>
> This series also highlights an interesting find: Beyond the to-be-solved
> CPUState, there is also a "realize" function for BusState (02), which is not
> derived from DeviceState. :-)
> With the device-centric approach taken here it would still be possible to add
> "realized" properties to other types using their own infrastructure (e.g., a
> hardcoded setter rather than a realizefn hook).
>
> Posted as an RFC to encourage bikeshedding, in particular about the type names
> and macros introduced. Adding new header files to move them out of the source
> files for, e.g., vl.c is left for a follow-up, but for instance I was unsure
> about TYPE_ISA_FDC (should this be TYPE_ISA_FLOPPY_DRIVE_CONTROLLER as with
> PCI_HOST_BRIDGE rather than PHB?), and naming of type names and functions is
> highly inconsistent (e.g., isa_vga vs. vga_isa, or pic vs. i8259).
>
> Available for viewing/testing at:
> https://github.com/afaerber/qemu-cpu/commits/realize-qdev
> git://github.com/afaerber/qemu-cpu.git realize-qdev
>
> Regards,
> Andreas
>
> Cc: Anthony Liguori <anthony@codemonkey.ws>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
>
> Cc: Julien Grall <julien.grall@citrix.com>
> Cc: Frederic Konrad <fred.konrad@greensocs.com>
> Cc: Peter Maydell <peter.maydell@linaro.org>
> Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
> Cc: Kevin Wolf <kwolf@redhat.com>
> Cc: Stefan Hajnoczi <stefanha@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Cc: Igor Mammedov <imammedo@redhat.com>
>
> Andreas Färber (34):
>   qdev: Eliminate qdev_free() in favor of QOM
>   qbus: QOM'ify qbus_realize()
>   qdev: Fold state enum into bool realized
>   qdev: Prepare "realized" property
>   isa: Split off instance_init for ISADevice
>   applesmc: QOM'ify
>   cirrus_vga: QOM'ify ISA Cirrus VGA
>   debugcon: QOM'ify ISA debug console
>   fdc: QOM'ify ISA floppy controller
>   i82374: QOM'ify
>   i8259: Fix PIC_COMMON() macro
>   i8259: QOM cleanups
>   ide: QOM'ify ISA IDE
>   m48t59: QOM'ify ISA M48T59 NVRAM
>   mc146818rtc: QOM'ify
>   ne2000-isa: QOM'ify
>   parallel: QOM'ify
>   pc: QOM'ify port 92
>   pckbd: QOM'ify
>   pcspk: QOM'ify
>   sb16: QOM'ify
>   serial: QOM'ify ISA serial
>   sga: QOM'ify
>   vga-isa: QOM'ify ISA VGA
>   vmmouse: QOM'ify
>   vmport: QOM'ify
>   wdt_ib700: QOM'ify
>   isa: Use realizefn for ISADevice
>   i8254: QOM'ify
>   kvm/i8254: QOM'ify some more
>   i8254: Convert PITCommonState to QOM realizefn
>   i8259: QOM'ify some more
>   kvm/i8259: QOM'ify some more
>   i8259: Convert PICCommonState to use QOM realizefn
>
>  hw/acpi_piix4.c      |    2 +-
>  hw/applesmc.c        |   45 +++++++++---------
>  hw/cirrus_vga.c      |   27 ++++++-----
>  hw/debugcon.c        |   34 +++++++++-----
>  hw/fdc.c             |   45 ++++++++++--------
>  hw/fdc.h             |    2 +
>  hw/i82374.c          |   25 +++++-----
>  hw/i8254.c           |   26 +++++++---
>  hw/i8254.h           |    7 ++-
>  hw/i8254_common.c    |   19 ++------
>  hw/i8254_internal.h  |    1 -
>  hw/i8259.c           |   64 +++++++++++++++++--------
>  hw/i8259_common.c    |   20 +++-----
>  hw/i8259_internal.h  |    7 +--
>  hw/ide/isa.c         |   55 +++++++++++++---------
>  hw/isa-bus.c         |   15 ++----
>  hw/isa.h             |    1 -
>  hw/kvm/i8254.c       |   59 +++++++++++++++--------
>  hw/kvm/i8259.c       |   38 ++++++++++++---
>  hw/m48t59.c          |   54 +++++++++++----------
>  hw/mc146818rtc.c     |   56 ++++++++++++----------
>  hw/mc146818rtc.h     |    2 +
>  hw/ne2000-isa.c      |   27 ++++++-----
>  hw/parallel.c        |   42 ++++++++++-------
>  hw/pc.c              |   26 +++++-----
>  hw/pc_piix.c         |    2 +-
>  hw/pci-hotplug.c     |    2 +-
>  hw/pci_bridge.c      |    2 +-
>  hw/pcie.c            |    2 +-
>  hw/pckbd.c           |   34 ++++++++------
>  hw/pcspk.c           |   21 +++++----
>  hw/pcspk.h           |    4 +-
>  hw/qdev-addr.c       |    2 +-
>  hw/qdev-core.h       |   12 ++---
>  hw/qdev-monitor.c    |    2 +-
>  hw/qdev-properties.c |   28 +++++------
>  hw/qdev.c            |  128 ++++++++++++++++++++++++++++++++++----------------
>  hw/sb16.c            |   35 +++++++++-----
>  hw/scsi-bus.c        |    4 +-
>  hw/serial-isa.c      |   33 +++++++------
>  hw/serial-pci.c      |    4 +-
>  hw/serial.c          |    6 +--
>  hw/serial.h          |    3 +-
>  hw/sga.c             |   19 ++++----
>  hw/shpc.c            |    2 +-
>  hw/usb/bus.c         |    7 +--
>  hw/usb/dev-storage.c |    2 +-
>  hw/usb/host-linux.c  |    2 +-
>  hw/vga-isa.c         |   46 +++++++++---------
>  hw/vmmouse.c         |   24 +++++-----
>  hw/vmport.c          |   24 ++++++----
>  hw/wdt_ib700.c       |   22 +++++----
>  hw/xen_platform.c    |    2 +-
>  53 Dateien geändert, 692 Zeilen hinzugefügt(+), 481 Zeilen entfernt(-)
>
> -- 
> 1.7.10.4

      parent reply	other threads:[~2013-01-02 14:48 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-26  0:12 [Qemu-devel] [RFC 00/34] QOM realize, device-only plus ISA conversion Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [PATCH 01/34] qdev: Eliminate qdev_free() in favor of QOM Andreas Färber
2012-11-26  0:12   ` Andreas Färber
2012-11-26  7:20   ` [Qemu-devel] " Paolo Bonzini
2012-11-26  7:20     ` Paolo Bonzini
2012-11-26 11:52     ` [Qemu-devel] " Andreas Färber
2012-11-26 12:04       ` Paolo Bonzini
2012-11-26  0:12 ` [Qemu-devel] [RFC 02/34] qbus: QOM'ify qbus_realize() Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 03/34] qdev: Fold state enum into bool realized Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 04/34] qdev: Prepare "realized" property Andreas Färber
2012-12-12 14:29   ` Eduardo Habkost
2012-12-12 16:51     ` Andreas Färber
2012-12-12 18:16       ` Eduardo Habkost
2012-12-12 18:25         ` Andreas Färber
2012-12-12 18:44           ` Eduardo Habkost
2012-11-26  0:12 ` [Qemu-devel] [RFC 05/34] isa: Split off instance_init for ISADevice Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 06/34] applesmc: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 07/34] cirrus_vga: QOM'ify ISA Cirrus VGA Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 08/34] debugcon: QOM'ify ISA debug console Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 09/34] fdc: QOM'ify ISA floppy controller Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 10/34] i82374: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [PATCH 11/34] i8259: Fix PIC_COMMON() macro Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 12/34] i8259: QOM cleanups Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 13/34] ide: QOM'ify ISA IDE Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 14/34] m48t59: QOM'ify ISA M48T59 NVRAM Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 15/34] mc146818rtc: QOM'ify Andreas Färber
2013-04-22 15:42   ` Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 16/34] ne2000-isa: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 17/34] parallel: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 18/34] pc: QOM'ify port 92 Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 19/34] pckbd: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 20/34] pcspk: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 21/34] sb16: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 22/34] serial: QOM'ify ISA serial Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 23/34] sga: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 24/34] vga-isa: QOM'ify ISA VGA Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 25/34] vmmouse: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 26/34] vmport: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 27/34] wdt_ib700: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 28/34] isa: Use realizefn for ISADevice Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 29/34] i8254: QOM'ify Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 30/34] kvm/i8254: QOM'ify some more Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 31/34] i8254: Convert PITCommonState to QOM realizefn Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 32/34] i8259: QOM'ify some more Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 33/34] kvm/i8259: " Andreas Färber
2012-11-26  0:12 ` [Qemu-devel] [RFC 34/34] i8259: Convert PICCommonState to use QOM realizefn Andreas Färber
2012-12-04 22:19 ` [Qemu-devel] [RFC 00/34] QOM realize, device-only plus ISA conversion Andreas Färber
2013-01-02 14:48 ` Anthony Liguori [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877gnvd4jk.fsf@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=afaerber@suse.de \
    --cc=armbru@redhat.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=ehabkost@redhat.com \
    --cc=fred.konrad@greensocs.com \
    --cc=imammedo@redhat.com \
    --cc=julien.grall@citrix.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.