From: Anthony Liguori <aliguori@us.ibm.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Juha Riihimäki" <juha.riihimaki@nokia.com>,
"patches@linaro.org" <patches@linaro.org>,
"Jan Kiszka" <jan.kiszka@siemens.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"Paul Brook" <paul@codesourcery.com>
Subject: Re: [Qemu-devel] [PATCH RFC 0/3] basic support for composing sysbus devices
Date: Fri, 10 Jun 2011 07:51:00 -0500 [thread overview]
Message-ID: <4DF21334.2070204@us.ibm.com> (raw)
In-Reply-To: <m339ji85o8.fsf@blackfin.pond.sub.org>
On 06/10/2011 03:13 AM, Markus Armbruster wrote:
> Jan Kiszka<jan.kiszka@siemens.com> writes:
>> Resource management, e.g. IRQs. That will be useful for other types of
>> buses as well.
>
> A device should be able to say "I need to be connected to an IRQ line".
> Feels generic to me.
More specifically, a device has input IRQs. A device has no idea what
number the IRQ is tied to.
Devices may also have output IRQs. At the qdev layer, we should be able
to connect an arbitrary output IRQ to an arbitrary input IRQ.
So the crux of the problem is that:
-device isa-serial,id=serial,irq=3
Is very wrong. It ought to look something more like
-device piix3,id=piix3 -device isa-serial,id=serial,irq=piix3.irq[3]
IRQ forwarding becomes very easy in this model because your composite
qdev device has a set of input IRQs and then routes the input IRQs to
the appropriate input IRQs of the sub devices.
The trouble is that I don't think we have a reasonable way to refer to
properties of other devices and we don't have names for all devices. I
think if we fix the later problem, the former problem becomes easier.
> Connecting the two is configuration. Requires a suitable naming scheme
> for IRQ lines. Naming might have to include bus-specific sugar for
> user-friendliness. For instance, I'd rather express "isa-serial uses
> ISA interrupt 4" as "irq=4" than as something like
> "irq=PIIX3/isa.0:irq.4".
That's just syntactic sugar. It can live at a higher level than the
qdev API.
> I doubt all resources are as generic as IRQ lines, but that's okay.
They pretty much are. We're really just talking about referring to
subcomponents of a device. That's what's lacking today.
> Device component composition is not (yet?) covered by qdev. Of course
> we compose anyway, in various ad hoc ways.
Busses need to die. They can be replaced by having fixed "slots". For
instance, if you had a way of having a PCIDevice * property, the I440FX
could have 32 PCIDevice * properties. That's how you would add to a bus
(and notice that it conveniently solves bus addressing in a robust fashion).
Regards,
Anthony Liguori
> One way is to put the components' state structs into the device's state
> struct, and define suitable wrappers. For instance, we have qdevs
> "sysbus-fdc" and "isa-fdc". They both contain the FDC proper as a
> component: FDCtrlSysBus and FDCtrlISABus contain a FDCtrl member.
> Simple enough.
>
> A different way to adapt the same component to different buses can be
> found in virtio: VirtIOPCIProxy and VirtIOS390Device both contain
> pointers to VirtIODevice. I found that one quite awkward to work with.
>
> Yet another way can be found in usb-storage. usb-storage expands into
> two qdevs connected by a qbus: it provides a SCSI bus, and automatically
> creates a single scsi-disk on that bus. One of those tricks that look
> cute initially, then create no end of trouble.
>
> I figure a "qdevy" composition mechanism would be useful. Needs
> thought.
next prev parent reply other threads:[~2011-06-10 12:51 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-08 11:33 [Qemu-devel] [PATCH RFC 0/3] basic support for composing sysbus devices Peter Maydell
2011-06-08 11:33 ` [Qemu-devel] [PATCH RFC 1/3] sysbus: Add support for resizing and unmapping MMIOs Peter Maydell
2011-06-08 11:33 ` [Qemu-devel] [PATCH RFC 2/3] sysbus: Allow sysbus MMIO passthrough Peter Maydell
2011-06-08 11:33 ` [Qemu-devel] [PATCH RFC 3/3] sysbus: Allow passthrough of single IRQ Peter Maydell
2011-06-08 12:29 ` [Qemu-devel] [PATCH RFC 0/3] basic support for composing sysbus devices Jan Kiszka
2011-06-09 16:40 ` Markus Armbruster
2011-06-09 17:03 ` Jan Kiszka
2011-06-10 8:13 ` Markus Armbruster
2011-06-10 12:51 ` Anthony Liguori [this message]
2011-06-10 13:10 ` Peter Maydell
2011-06-10 13:43 ` Jan Kiszka
2011-06-10 13:50 ` Peter Maydell
2011-06-10 14:22 ` Markus Armbruster
2011-06-10 14:45 ` Anthony Liguori
2011-06-10 14:34 ` Anthony Liguori
2011-06-10 14:12 ` Anthony Liguori
2011-06-10 14:18 ` Jan Kiszka
2011-06-10 14:31 ` Anthony Liguori
2011-06-10 14:07 ` Anthony Liguori
2011-06-10 14:59 ` Markus Armbruster
2011-06-10 15:43 ` Anthony Liguori
2011-06-12 17:12 ` Avi Kivity
2011-06-12 19:21 ` Anthony Liguori
2011-06-13 8:05 ` Avi Kivity
2011-06-13 17:53 ` Anthony Liguori
2011-06-13 20:59 ` Blue Swirl
2011-06-14 13:21 ` Anthony Liguori
2011-06-15 18:56 ` Blue Swirl
2011-06-15 20:00 ` Anthony Liguori
2011-06-15 20:20 ` Blue Swirl
2011-06-20 15:23 ` Paul Brook
2011-06-20 21:32 ` Blue Swirl
2011-06-21 8:16 ` Avi Kivity
2011-06-27 2:26 ` Paul Brook
2011-06-13 9:57 ` Gleb Natapov
2011-06-10 16:28 ` 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=4DF21334.2070204@us.ibm.com \
--to=aliguori@us.ibm.com \
--cc=armbru@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=juha.riihimaki@nokia.com \
--cc=patches@linaro.org \
--cc=paul@codesourcery.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).