From: Anthony Liguori <anthony@codemonkey.ws>
To: Gleb Natapov <gleb@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Jan Kiszka <jan.kiszka@siemens.com>,
qemu-devel <qemu-devel@nongnu.org>,
Markus Armbruster <armbru@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [RFC] Plan for moving forward with QOM
Date: Thu, 15 Sep 2011 15:50:28 -0500 [thread overview]
Message-ID: <4E726514.1050804@codemonkey.ws> (raw)
In-Reply-To: <20110915202907.GG11524@redhat.com>
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.
>
>> The UART has no knowledge of the fact that is mapped behind ISA.
>> The UART exposes a public interface (through it's pins) that's
>> orthogonal to any buses.
>>
> The UART itself has no knowledge, yes. But UART does not exists in
> vacuum. It is always a part of other device that provides bus logic.
> Original PC provided 2 or 4 ISA devices with UART on them. That is how
> we need to model them on a PC. You can (or could) easily buy PCI card
> with many more additional UARTs. You wouldn't claim that those UARTs are
> not on the PCI bus, would you?
Let's consider the following.
Let's say that we emulated a simpler micro controller that exposes a GPIO
interface. Something like an Amtel or maybe even a simple ARM chip.
IRL, you would wire the UART pins directly to the GPIO pins and call it a day.
There is no bus and there is no intermediate layer.
In an everything has a bus world, how does something like this get modelled?
>> How do you "walk up the device graph" from a 16650A? What signals
>> are you going to send out of the pins to do that?
> 16650A is not a device. ISA card it resides on is a device.
>
>>
>> If a device can always do self->parent->parent->parent->send_io(foo)
>> then the design is fundamentally broken and you will end up with
>> devices that do things that they shouldn't do.
>>
> Why?
Because a serial device has no business calling functions in the i440fx device.
It's a layering violation.
Regards,
Anthony Liguori
>
> --
> Gleb.
>
next prev parent reply other threads:[~2011-09-15 20:50 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 [this message]
2011-09-16 16:47 ` Gleb Natapov
2011-09-17 0:48 ` Edgar E. Iglesias
2011-09-17 2:17 ` Anthony Liguori
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=4E726514.1050804@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 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.