All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Peter Crosthwaite" <peter.crosthwaite@xilinx.com>,
	"KVM devel mailing list" <kvm@vger.kernel.org>,
	"Juan Quintela" <quintela@redhat.com>,
	"qemu list" <qemu-devel@nongnu.org>,
	"Stuart Yoder" <stuart.yoder@freescale.com>,
	"Alistair Francis" <alistair.francis@xilinx.com>,
	"Christoffer Dall" <christoffer.dall@linaro.org>,
	"Andreas Färber" <afaerber@suse.de>,
	"Anthony Liguori" <aliguori@amazon.com>
Subject: Re: [Qemu-devel] KVM call agenfda for 2014-04-01
Date: Fri, 11 Apr 2014 11:17:43 +0200	[thread overview]
Message-ID: <5347B337.5010109@suse.de> (raw)
In-Reply-To: <87ppkoqpf7.fsf@blackfin.pond.sub.org>


On 11.04.14 09:46, Markus Armbruster wrote:
> [Cc: Andreas, Anthony]
>
> Alexander Graf <agraf@suse.de> writes:
>
>> On 10.04.2014, at 17:52, Peter Maydell <peter.maydell@linaro.org> wrote:
>>
>>> On 10 April 2014 16:49, Alexander Graf <agraf@suse.de> wrote:
>>>> For the next call, I would propose to revive the "platform bus"
>>>> (aka: how to create non-PCI devices with -device) discussions
> Rather: devices that connect to more than just a bus.
>
> Since pseudo-bus sysbus provides exactly no connections, sysbus devices
> generally connect to more.
>
> Currently, the only way to make such additional connections is
> special-purpose code.  -device's connection engine can only connect to a
> bus.
>
>>>> to make sure we're all on the same page.
>>> I rather suspect we are not :-)  Do you have a link to
>>> the current proposals for prior reading?
>> The only thing I could find is the old thread about my platform bus
>> approach (which Anthony disliked):
>>
>>    https://lists.gnu.org/archive/html/qemu-devel/2013-07/msg03614.html
>>
>> So from what I remember the plan moving forward was to have a special
>> device type similar to my platform bus devices that you can just
>> create using -device, no bus involved. The machine file would then
>> loop through them, interpret the "I sit at address x" and "I want
>> interrupt number y" fields to link them to whatever the machine model
>> thinks is a good fit.
>>
>> The same way the machine model today has to have knowledge on each
>> device tree node type it generates, it would do the same for these
>> devices. So the machine has to have awareness of all the "funky
>> special options" a device tree node receives - the same as for any
>> other device. Just that in this case it wouldn't be able to hardcode
>> them, but have to generate them on the fly when it sees a device in
>> the object tree.
> The following is just my understanding of where we're trying to go.  The
> people active in this field (Andreas?) should correct misunderstandings.
>
> Our overall goal is building machines from components by *data* rather
> than code.  Once it's data, it can be made run-time configuration.

I've had plenty of discussions on this with Anthony over the years 
(first time this came up was about 2 or 3 years ago) on this. Eventually 
his conclusion was that it's not desirable to build the machine from 
data. Instead it should get built from a script. The nice thing about a 
script is that it's also run-time, but not as restricted and as much 
special-cased as a mere description.

Unfortunately I don't know all of the rationale that went into the 
conclusion :).

> The configuration describes how components are to be connected, and
> generic connection code makes the connections guided by the
> configuration.
>
> The current generic connection code can only connect a device to a
> single bus.
>
> If you don't specify the bus, it picks one.  Which one it picks is
> effectively ABI.
>
> Picking a bus is a special case of "pick a connection if user didn't
> specify one".  The current bus-picker doesn't depend on the machine
> type, but that's not going to hold in general.
>
> I like to think of the "pick connections the user didn't specify" engine
> as conceptually separate from the "make connections driven by
> configuration" engine.  The actual code isn't so separate, but that's
> implementation.
>
> How does your "platform device" proposal (for lack of a better
> expression) fit into this general framework of ideas?

Any leaf devices that are not hooked up to anything get connected by 
machine specific code :). So the "pick connections the user didn't 
specify" logic would be machine specific.


Alex


WARNING: multiple messages have this Message-ID (diff)
From: Alexander Graf <agraf@suse.de>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Peter Crosthwaite" <peter.crosthwaite@xilinx.com>,
	"KVM devel mailing list" <kvm@vger.kernel.org>,
	"Juan Quintela" <quintela@redhat.com>,
	"Stuart Yoder" <stuart.yoder@freescale.com>,
	"qemu list" <qemu-devel@nongnu.org>,
	"Anthony Liguori" <aliguori@amazon.com>,
	"Alistair Francis" <alistair.francis@xilinx.com>,
	"Andreas Färber" <afaerber@suse.de>,
	"Christoffer Dall" <christoffer.dall@linaro.org>
Subject: Re: [Qemu-devel] KVM call agenfda for 2014-04-01
Date: Fri, 11 Apr 2014 11:17:43 +0200	[thread overview]
Message-ID: <5347B337.5010109@suse.de> (raw)
In-Reply-To: <87ppkoqpf7.fsf@blackfin.pond.sub.org>


On 11.04.14 09:46, Markus Armbruster wrote:
> [Cc: Andreas, Anthony]
>
> Alexander Graf <agraf@suse.de> writes:
>
>> On 10.04.2014, at 17:52, Peter Maydell <peter.maydell@linaro.org> wrote:
>>
>>> On 10 April 2014 16:49, Alexander Graf <agraf@suse.de> wrote:
>>>> For the next call, I would propose to revive the "platform bus"
>>>> (aka: how to create non-PCI devices with -device) discussions
> Rather: devices that connect to more than just a bus.
>
> Since pseudo-bus sysbus provides exactly no connections, sysbus devices
> generally connect to more.
>
> Currently, the only way to make such additional connections is
> special-purpose code.  -device's connection engine can only connect to a
> bus.
>
>>>> to make sure we're all on the same page.
>>> I rather suspect we are not :-)  Do you have a link to
>>> the current proposals for prior reading?
>> The only thing I could find is the old thread about my platform bus
>> approach (which Anthony disliked):
>>
>>    https://lists.gnu.org/archive/html/qemu-devel/2013-07/msg03614.html
>>
>> So from what I remember the plan moving forward was to have a special
>> device type similar to my platform bus devices that you can just
>> create using -device, no bus involved. The machine file would then
>> loop through them, interpret the "I sit at address x" and "I want
>> interrupt number y" fields to link them to whatever the machine model
>> thinks is a good fit.
>>
>> The same way the machine model today has to have knowledge on each
>> device tree node type it generates, it would do the same for these
>> devices. So the machine has to have awareness of all the "funky
>> special options" a device tree node receives - the same as for any
>> other device. Just that in this case it wouldn't be able to hardcode
>> them, but have to generate them on the fly when it sees a device in
>> the object tree.
> The following is just my understanding of where we're trying to go.  The
> people active in this field (Andreas?) should correct misunderstandings.
>
> Our overall goal is building machines from components by *data* rather
> than code.  Once it's data, it can be made run-time configuration.

I've had plenty of discussions on this with Anthony over the years 
(first time this came up was about 2 or 3 years ago) on this. Eventually 
his conclusion was that it's not desirable to build the machine from 
data. Instead it should get built from a script. The nice thing about a 
script is that it's also run-time, but not as restricted and as much 
special-cased as a mere description.

Unfortunately I don't know all of the rationale that went into the 
conclusion :).

> The configuration describes how components are to be connected, and
> generic connection code makes the connections guided by the
> configuration.
>
> The current generic connection code can only connect a device to a
> single bus.
>
> If you don't specify the bus, it picks one.  Which one it picks is
> effectively ABI.
>
> Picking a bus is a special case of "pick a connection if user didn't
> specify one".  The current bus-picker doesn't depend on the machine
> type, but that's not going to hold in general.
>
> I like to think of the "pick connections the user didn't specify" engine
> as conceptually separate from the "make connections driven by
> configuration" engine.  The actual code isn't so separate, but that's
> implementation.
>
> How does your "platform device" proposal (for lack of a better
> expression) fit into this general framework of ideas?

Any leaf devices that are not hooked up to anything get connected by 
machine specific code :). So the "pick connections the user didn't 
specify" logic would be machine specific.


Alex

  reply	other threads:[~2014-04-11  9:17 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-31 10:40 KVM call agenfda for 2014-04-01 Juan Quintela
2014-03-31 10:40 ` [Qemu-devel] " Juan Quintela
2014-03-31 10:51 ` [Qemu-devel] KVM call agenda " Andreas Färber
2014-03-31 10:51   ` Andreas Färber
2014-03-31 12:07   ` Stefan Hajnoczi
2014-03-31 12:07     ` Stefan Hajnoczi
2014-03-31 13:21   ` Christian Borntraeger
2014-03-31 13:21     ` Christian Borntraeger
2014-03-31 13:25     ` Peter Maydell
2014-03-31 13:25       ` Peter Maydell
2014-03-31 14:01       ` Anthony Liguori
2014-03-31 14:01         ` Anthony Liguori
2014-03-31 14:28         ` Paolo Bonzini
2014-03-31 14:28           ` Paolo Bonzini
2014-03-31 14:32           ` Peter Maydell
2014-03-31 14:32             ` Peter Maydell
2014-03-31 14:46             ` Andreas Färber
2014-03-31 14:46               ` Andreas Färber
2014-03-31 15:42               ` Anthony Liguori
2014-03-31 15:42                 ` Anthony Liguori
2014-03-31 16:58                 ` Markus Armbruster
2014-03-31 16:58                   ` Markus Armbruster
2014-03-31 19:57               ` Michael Roth
2014-03-31 19:57                 ` Michael Roth
2014-04-01  8:16                 ` Peter Maydell
2014-04-01  8:16                   ` [Qemu-devel] " Peter Maydell
2014-04-01 12:39 ` KVM call agenfda " Juan Quintela
2014-04-01 12:39   ` [Qemu-devel] " Juan Quintela
2014-04-10 15:49 ` Alexander Graf
2014-04-10 15:49   ` Alexander Graf
2014-04-10 15:52   ` Peter Maydell
2014-04-10 15:52     ` Peter Maydell
2014-04-10 15:57     ` Alexander Graf
2014-04-10 15:57       ` Alexander Graf
2014-04-10 16:16       ` Stuart Yoder
2014-04-10 16:16         ` Stuart Yoder
2014-04-11  7:46       ` Markus Armbruster
2014-04-11  7:46         ` Markus Armbruster
2014-04-11  9:17         ` Alexander Graf [this message]
2014-04-11  9:17           ` Alexander Graf
2014-04-15 13:10     ` 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=5347B337.5010109@suse.de \
    --to=agraf@suse.de \
    --cc=afaerber@suse.de \
    --cc=aliguori@amazon.com \
    --cc=alistair.francis@xilinx.com \
    --cc=armbru@redhat.com \
    --cc=christoffer.dall@linaro.org \
    --cc=kvm@vger.kernel.org \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stuart.yoder@freescale.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.