From: Igor Mammedov <imammedo@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: marcel.a@redhat.com, mst@redhat.com, qemu-devel@nongnu.org,
vasilis.liaskovitis@profitbricks.com, aliguori@amazon.com,
afaerber@suse.de
Subject: Re: [Qemu-devel] [RFC 4/8] qdev: link based hotplug
Date: Fri, 21 Mar 2014 11:35:41 +0100 [thread overview]
Message-ID: <20140321113541.1a5e7a96@nial.usersys.redhat.com> (raw)
In-Reply-To: <532B2D8D.4040508@redhat.com>
On Thu, 20 Mar 2014 19:03:57 +0100
Paolo Bonzini <pbonzini@redhat.com> wrote:
> Il 20/03/2014 17:20, Igor Mammedov ha scritto:
> >> >
> >> > What about just looking up on the QOM tree until you find a
> >> > HotplugHandler, if the device doesn't have a bus or the bus doesn't have
> >> > a hotplug handler link itself? This is similar to how FWPathProvider works.
> > it does so "hotplug_handler_get_from_path()",
> > above just provides option to specify lookup path. See 6/8 where PC board
> > allocates links and sets its own board specific path for generic DimmDevice.
>
> Yeah, but I'm not sure why you need the links. Why can't you just start
> from the canonical path, such as /machine/peripheral/dimm-0 for -device
> dimm,id=dimm-0, and walk up from there?
That would work in this particular case since /machine is hotplug handler,
but in generic case hotplug handler can be located somewhere else in QOM tree
i.e. it isn't a parent of hotplugged device.
Allowing to customize lookup path via DeviceClass.hotplug_path() makes
wiring hotplug handler flexible. For example:
* A target that decides to use DimmDevice cloud have hotplug handler
located at /machine/peripheral/ec_foo, walking down from
/machine/peripheral/dimm-0 or /machine/unassigned/dimm-0 (in hotplug case)
won't allow to find hotplug handler. But overriding DeviceClass.hotplug_path()
the target machine could provide means to locate necessary hotplug handler
Maybe setting link<> is over-engineered and should be dropped for now,
while still keeping DeviceClass.hotplug_path() as a means to provide custom
hotplug hander path.
BTW not related to hotplug but why I used link<>s:
I've added link<>s as an attempt to visualize Andreas' idea to use them for
hotplug and mgmt. It has it's own benefits if we try to provide more or
less uniform QOM interface view for management. What I have in mind is that
we could have tree like this:
/machine/node[...]/dimm[...]
/cpu[...]/core[...]/thread[...]
where leaves are link<>s which are prebuilt at startup and set when device
is added. It provides an easy to enumerate interface for mgmt and also
gives us a quite informative path that encodes topology and later
we could use it instead of custom properties. For example:
device_add x86cpu,path=/machine/node[1]/cpu[0]/core[3]/thread[2]
vs
device_add x86cpu,apic-id=[who knows how it's calculated]
or
device_add dimm,path=/machine/node[0]/dimm[5]
vs
device_add dimm,node=0,slot=5
i.e. being added device could decode all needed information from above
provided path instead of creating a bunch of custom properties.
>
> Paolo
next prev parent reply other threads:[~2014-03-21 10:36 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-20 15:01 [Qemu-devel] [RFC 0/8] bus-less device hotplug Igor Mammedov
2014-03-20 15:01 ` [Qemu-devel] [RFC 1/8] vl.c: extend -m option to support options for memory hotplug Igor Mammedov
2014-03-20 15:01 ` [Qemu-devel] [RFC 2/8] make machine_class_init() accessible outside of vl.c Igor Mammedov
2014-03-23 15:27 ` Marcel Apfelbaum
2014-03-23 16:22 ` Marcel Apfelbaum
2014-03-20 15:01 ` [Qemu-devel] [RFC 3/8] pc: prepare PC for custom machine state Igor Mammedov
2014-03-23 15:13 ` Marcel Apfelbaum
2014-03-24 10:34 ` Igor Mammedov
2014-03-24 12:28 ` Marcel Apfelbaum
2014-03-24 10:52 ` Andreas Färber
2014-03-24 11:20 ` Michael S. Tsirkin
2014-03-24 11:57 ` Andreas Färber
2014-03-24 12:13 ` Marcel Apfelbaum
2014-03-20 15:01 ` [Qemu-devel] [RFC 4/8] qdev: link based hotplug Igor Mammedov
2014-03-20 16:12 ` Paolo Bonzini
2014-03-20 16:20 ` Igor Mammedov
2014-03-20 18:03 ` Paolo Bonzini
2014-03-21 10:35 ` Igor Mammedov [this message]
2014-03-21 11:45 ` Paolo Bonzini
2014-03-24 9:10 ` Igor Mammedov
2014-03-24 12:20 ` Andreas Färber
2014-03-24 13:12 ` Michael S. Tsirkin
2014-03-20 15:01 ` [Qemu-devel] [RFC 5/8] dimm: implement dimm device abstraction Igor Mammedov
2014-03-20 15:01 ` [Qemu-devel] [RFC 6/8] pc: preallocate hotplug links for DIMMDevices Igor Mammedov
2014-03-20 15:01 ` [Qemu-devel] [RFC 7/8] pc: initialize memory hotplug address space Igor Mammedov
2014-03-20 15:01 ` [Qemu-devel] [RFC 8/8] pc: make PC_MACHINE memory hotplug controller Igor Mammedov
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=20140321113541.1a5e7a96@nial.usersys.redhat.com \
--to=imammedo@redhat.com \
--cc=afaerber@suse.de \
--cc=aliguori@amazon.com \
--cc=marcel.a@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=vasilis.liaskovitis@profitbricks.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 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).