qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Gleb Natapov <gleb@redhat.com>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Markus Armbruster <armbru@redhat.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [RFC] Plan for moving forward with QOM
Date: Fri, 16 Sep 2011 21:17:54 -0500	[thread overview]
Message-ID: <4E740352.8050407@codemonkey.ws> (raw)
In-Reply-To: <20110917004804.GD20455@zapo>

On 09/16/2011 07:48 PM, Edgar E. Iglesias wrote:
> On Fri, Sep 16, 2011 at 07:47:57PM +0300, Gleb Natapov wrote:
>> On Thu, Sep 15, 2011 at 03:50:28PM -0500, Anthony Liguori wrote:
>>> On 09/15/2011 03:29 PM, Gleb Natapov wrote:
>>>> On Thu, Sep 15, 2011 at 12:51:23PM -0500, Anthony Liguori wrote:
>>>>> On 09/15/2011 11:59 AM, Gleb Natapov wrote:
>>>>>> On Thu, Sep 15, 2011 at 11:33:00AM -0500, Anthony Liguori wrote:
>>>>>>> On 09/15/2011 10:38 AM, Gleb Natapov wrote:
>>>>>>>> On Thu, Sep 15, 2011 at 10:28:52AM -0500, Anthony Liguori wrote:
>>>>>>>>> On 09/15/2011 09:25 AM, Gleb Natapov wrote:
>>>>>>>>>
>>>>>>>>> There is no canonical parent link.  A device may have multiple (more
>>>>>>>>> or less equivalent) parents.
>>>>>>>>>
>>>>>>>>> What should be treated as the "canonical" link depends on what
>>>>>>>>> you're trying to do.  In the case of OF, you want to treat the bus
>>>>>>>>> as a parent.  If a device happens to sit on multiple buses, I'm not
>>>>>>>>> really sure what you do.
>>>>>>>>>
>>>>>>>> Yes, "canonical" is a link to a bus. Can you give an example of a device
>>>>>>>> that sits on multiple buses?
>>>>>>>
>>>>>>> Not all devices buses that they sit on.
>>>>>>>
>>>>>> Missing "have"? If device has no bus how do you talk to it? Who carries
>>>>>> the signal from a cpu to a device?
>>>>>>
>>>>>>> A good example is our favorite one to debate--the PIIX3.  Devices
>>>>>> PIIX3 is a collection of devices, not a device.
>>>>>>
>>>>>>> like the UART don't sit on a bus.  They don't have any links at all.
>>>>>> In PC UART sits on isa bus. How device can have no links at all? It just
>>>>>> glued to a motherboard not touching any wires?
>>>>>
>>>>> A bus implies a bidirectional relationship.  IOW, the device has to
>>>>> know that it sits on a ISA bus to be an ISA device.
>>>>>
>>>> And ISA device with UART on it definitely knows that.
>
> IMO, this discussion is going nowhere, Partly because assummptions are
> beeing made about how hardware "works".
>
> Hardware works the way it gets designed, and it can be desinged in pretty
> much anyway you want.
>
> When it comes to devives, you can design them in a way so they become very
> dependent on a specific bus. But you can also design them in a more genric
> way so that they become bus agnostic. Then you just need to connect a bus
> adaptor that hooks things up to the particular bus the device needs to be
> hooked up to.
>
> Sometimes, the bus adaptor becomes more like like wrapper that is part
> of the logic, other times, the bus adaptor is just a passthru unit.
>
> QEMU should allow us to model devices in a a bus agnostic way.

And this is the problem to fix in qdev.  We need to kill buses in qdev.  The 
approach really boils down to:

1) Add unique names to devices (this is needed because buses must have names 
because they must be addressable).

2) Eliminate any device that has two bus instances in it.  I'm pretty sure IDE 
is the only example of this.

3) Move all BusState functionality to DeviceState and eliminate buses.  This is 
a compatibility breaker but a critical change.

Along the way, we also need to refactor properties to support getters/setters 
and add composition properties and link properties.  At some point, we need to 
introduce the QOM type system to get the full benefits of all of this but that 
can probably be mechanical once we've completed the above.

I think this is all well within the scope of 1.1 and can be done without a 
tremendous amount of churn in the tree.

Regards,

Anthony Liguori

  reply	other threads:[~2011-09-17  2:18 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-14 18:04 [Qemu-devel] [RFC] Plan for moving forward with QOM Anthony Liguori
2011-09-14 18:49 ` Anthony Liguori
2011-09-14 19:30 ` Jan Kiszka
2011-09-14 19:42   ` Anthony Liguori
2011-09-14 21:15     ` Jan Kiszka
2011-09-14 22:11       ` Anthony Liguori
2011-09-15 13:43         ` Jan Kiszka
2011-09-15 14:11           ` Anthony Liguori
2011-09-15 16:38             ` Jan Kiszka
2011-09-15 18:01               ` Anthony Liguori
2011-09-16 10:12             ` Kevin Wolf
2011-09-16 13:00               ` Anthony Liguori
2011-09-14 20:00 ` Edgar E. Iglesias
2011-09-14 20:22   ` Anthony Liguori
2011-09-14 20:27     ` Edgar E. Iglesias
2011-09-14 20:37     ` Blue Swirl
2011-09-14 21:25       ` Anthony Liguori
2011-09-15  6:31 ` Gleb Natapov
2011-09-15 10:49   ` Stefan Hajnoczi
2011-09-15 13:08     ` Anthony Liguori
2011-09-15 13:17   ` Anthony Liguori
2011-09-15 14:23     ` Gleb Natapov
2011-09-16 14:46     ` John Williams
2011-09-16 16:10       ` Anthony Liguori
2011-09-17  1:11         ` Edgar E. Iglesias
2011-09-17  2:12           ` Anthony Liguori
2011-09-17  2:35             ` Edgar E. Iglesias
2011-09-15 13:57   ` Anthony Liguori
2011-09-15 14:14     ` Paolo Bonzini
2011-09-15 14:25       ` Gleb Natapov
2011-09-15 15:28         ` Anthony Liguori
2011-09-15 15:38           ` Gleb Natapov
2011-09-15 16:33             ` Anthony Liguori
2011-09-15 16:59               ` Gleb Natapov
2011-09-15 17:51                 ` Anthony Liguori
2011-09-15 20:29                   ` Gleb Natapov
2011-09-15 20:45                     ` Peter Maydell
2011-09-15 21:15                       ` Anthony Liguori
2011-09-16 16:33                       ` Gleb Natapov
2011-09-16 17:47                         ` Peter Maydell
2011-09-16 18:08                           ` Anthony Liguori
2011-09-16 18:22                             ` Gleb Natapov
2011-09-16 18:42                               ` Anthony Liguori
2011-09-16 19:13                                 ` Gleb Natapov
2011-09-16 19:29                                   ` Anthony Liguori
2011-09-16 20:48                                     ` Gleb Natapov
2011-09-16 21:03                                       ` Anthony Liguori
2011-09-17  0:01                                 ` Edgar E. Iglesias
2011-09-16 18:18                           ` Gleb Natapov
2011-09-15 20:50                     ` Anthony Liguori
2011-09-16 16:47                       ` Gleb Natapov
2011-09-17  0:48                         ` Edgar E. Iglesias
2011-09-17  2:17                           ` Anthony Liguori [this message]
2011-09-17  2:29                             ` Anthony Liguori
2011-09-17  2:41                             ` Edgar E. Iglesias
2011-09-15  6:47 ` Paolo Bonzini
2011-09-15 13:26   ` Anthony Liguori
2011-09-15 13:35     ` Paolo Bonzini
2011-09-15 13:54       ` Peter Maydell
2011-09-15 14:18         ` Anthony Liguori
2011-09-15 14:33           ` Paolo Bonzini
2011-09-15 14:48             ` Peter Maydell
2011-09-15 15:31             ` Anthony Liguori
2011-09-15 15:47               ` Paolo Bonzini
2011-09-15 20:23     ` Avi Kivity
2011-09-15 20:52       ` Anthony Liguori
2011-09-18  7:56         ` Avi Kivity
2011-09-18 14:00           ` Avi Kivity
2011-09-16  9:36       ` Gerd Hoffmann
2011-12-13  4:47 ` Paul Brook
2011-12-13 13:22   ` Anthony Liguori
2011-12-13 17:40     ` Paul Brook
2011-12-13 18:00       ` Anthony Liguori
2011-12-13 20:36         ` Paul Brook
2011-12-13 21:53           ` Anthony Liguori
2011-12-14  0:39             ` Paul Brook
2011-12-14 13:53               ` Anthony Liguori
2011-12-14 14:01                 ` Avi Kivity
2011-12-14 14:11                   ` Anthony Liguori
2011-12-14 14:35                     ` Avi Kivity
2011-12-14 14:46                       ` Anthony Liguori
2011-12-14 14:50                         ` Avi Kivity
2011-12-15 18:59                 ` Paul Brook
2011-12-15 19:12                   ` Anthony Liguori
2011-12-15 21:28                     ` Paul Brook
2011-12-16  2:08                       ` Anthony Liguori
2011-12-16  5:11                         ` Paul Brook
2011-12-14  9:11             ` Andreas Färber

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=4E740352.8050407@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=gleb@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kraxel@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).