From: David Woodhouse <dwmw2@infradead.org>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-devel@nongnu.org, "Hanna Reitz" <hreitz@redhat.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Paul Durrant" <paul@xen.org>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcelo Tosatti" <mtosatti@redhat.com>,
qemu-block@nongnu.org, xen-devel@lists.xenproject.org,
kvm@vger.kernel.org
Subject: Re: [PATCH 11/12] hw/xen: automatically assign device index to block devices
Date: Wed, 18 Oct 2023 11:52:22 +0100 [thread overview]
Message-ID: <950f3a62dfcecce902037f95575f1013697a5925.camel@infradead.org> (raw)
In-Reply-To: <ZS+cutIjulWBQakk@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2998 bytes --]
On Wed, 2023-10-18 at 10:52 +0200, Kevin Wolf wrote:
> Am 16.10.2023 um 17:19 hat David Woodhouse geschrieben:
> > From: David Woodhouse <dwmw@amazon.co.uk>
> >
> > There's no need to force the user to assign a vdev. We can automatically
> > assign one, starting at xvda and searching until we find the first disk
> > name that's unused.
> >
> > This means we can now allow '-drive if=xen,file=xxx' to work without an
> > explicit separate -driver argument, just like if=virtio.
> >
> > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
>
> Actually, how does this play together with xen_config_dev_blk()? This
> looks like it tried to implement a very similar thing (which is IF_XEN
> even already existed).
Ah yes, thanks for spotting that! I hadn't been looking at the xenfv
> Are we now trying to attach each if=xen disk twice in the 'xenpv'
> machine? Or if something prevents this, is it dead code.
I suspect we end up creating them twice (and probably thus failing to
lock the backing file).
The old Xen PV device drivers in Qemu, before Paul's XenDevice
conversion, were purely reactive. If they see nodes in XenStore
describing a backend which they should implement, they'd do so.
The code in xen_config_dev_blk() is *creating* those nodes for the
frontend (guest) and backend (host/qemu) to see, which prompts the
xen-block and xen-net drivers into action.
In the new XenDevice model, we can just instantiate a device (e.g.
qdev_new(TYPE_XEN_DISK_DEVICE) and its realize() method will create the
corresponding XenStore nodes (with some help from the generic XenBus
code for the common ones).
The new XenDevice/XenBus model will *also* react to nodes which it
discovers in XenStore, and instantiate the corresponding devices.
So I suspect what'll happen is xen_config_dev_blk() will create the
nodes starting at xvda (int vdev = 202 * 256 + 16 * disk->unit), and
later my new code will create a new set starting from xvdb or wherever
the next free one is.
> I think in both cases, we would want to delete that function and remove
> the loop that calls it in xen_init_pv()?
Yes, I think so. The xen_config_dev_blk() one can just die, as can
xen_config_dev_console() which isn't called from anywhere anyway.
The vkbd/vfb ones can stay until/unless those drivers are converted to
the new XenDevice model.
And xen_config_dev_nic() probably just needs to loop doing the same as
I did in pc_init_nic() in
https://lore.kernel.org/qemu-devel/20231017182545.97973-5-dwmw2@infradead.org/T/#u
+ if (xen_bus && (!nd->model || g_str_equal(model, "xen-net-device"))) {
+ DeviceState *dev = qdev_new("xen-net-device");
+ qdev_set_nic_properties(dev, nd);
+ qdev_realize_and_unref(dev, xen_bus, &error_fatal);
... but this just reinforces what I said there about "if
qmp_device_add() can find the damn bus and do this right, why do we
have to litter it through platform code?"
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
next prev parent reply other threads:[~2023-10-18 10:52 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-16 15:18 [PATCH 0/12] Get Xen PV shim running in qemu David Woodhouse
2023-10-16 15:18 ` [PATCH 01/12] i386/xen: fix per-vCPU upcall vector for Xen emulation David Woodhouse
2023-10-24 12:16 ` Paul Durrant
2023-10-24 12:58 ` David Woodhouse
2023-10-16 15:18 ` [PATCH 02/12] hw/xen: select kernel mode for per-vCPU event channel upcall vector David Woodhouse
2023-10-24 12:29 ` Paul Durrant
2023-10-24 13:20 ` David Woodhouse
2023-10-16 15:19 ` [PATCH 03/12] include: update Xen public headers to Xen 4.17.2 release David Woodhouse
2023-10-24 12:30 ` Paul Durrant
2023-10-16 15:19 ` [PATCH 04/12] i386/xen: advertise XEN_HVM_CPUID_UPCALL_VECTOR in CPUID David Woodhouse
2023-10-24 12:32 ` Paul Durrant
2023-10-16 15:19 ` [PATCH 05/12] hw/xen: populate store frontend nodes with XenStore PFN/port David Woodhouse
2023-10-24 12:35 ` Paul Durrant
2023-10-24 12:53 ` David Woodhouse
2023-10-16 15:19 ` [PATCH 06/12] hw/xen: add get_frontend_path() method to XenDeviceClass David Woodhouse
2023-10-24 12:42 ` Paul Durrant
2023-10-24 12:56 ` David Woodhouse
2023-10-24 12:59 ` Paul Durrant
2023-10-24 13:29 ` David Woodhouse
2023-10-24 13:37 ` Paul Durrant
2023-10-25 8:30 ` David Woodhouse
2023-11-21 12:25 ` David Woodhouse
2023-10-16 15:19 ` [PATCH 07/12] hw/xen: update Xen console to XenDevice model David Woodhouse
2023-10-24 13:07 ` Paul Durrant
2023-10-16 15:19 ` [PATCH 08/12] hw/xen: do not repeatedly try to create a failing backend device David Woodhouse
2023-10-24 13:19 ` Paul Durrant
2023-10-16 15:19 ` [PATCH 09/12] hw/xen: prevent duplicate device registrations David Woodhouse
2023-10-24 14:10 ` Paul Durrant
2023-10-24 14:38 ` David Woodhouse
2023-10-16 15:19 ` [PATCH 10/12] hw/xen: automatically assign device index to console devices David Woodhouse
2023-10-16 15:19 ` [PATCH 11/12] hw/xen: automatically assign device index to block devices David Woodhouse
2023-10-17 10:21 ` Kevin Wolf
2023-10-17 18:02 ` David Woodhouse
2023-10-18 7:32 ` Igor Mammedov
2023-10-18 8:32 ` David Woodhouse
2023-10-23 9:30 ` Igor Mammedov
2023-10-23 9:42 ` David Woodhouse
2023-10-23 9:42 ` David Woodhouse
2023-10-23 13:45 ` Kevin Wolf
2023-10-18 8:52 ` Kevin Wolf
2023-10-18 10:52 ` David Woodhouse [this message]
2023-10-19 11:21 ` Kevin Wolf
2023-10-20 17:47 ` David Woodhouse
2023-10-18 23:13 ` David Woodhouse
2023-10-16 15:19 ` [PATCH 12/12] hw/xen: add support for Xen primary console in emulated mode David Woodhouse
2023-10-24 14:20 ` Paul Durrant
2023-10-24 15:37 ` David Woodhouse
2023-10-24 15:39 ` Paul Durrant
2023-10-24 15:49 ` David Woodhouse
2023-10-24 16:25 ` Paul Durrant
2023-10-24 16:34 ` David Woodhouse
2023-10-25 8:31 ` Paul Durrant
2023-10-25 9:00 ` David Woodhouse
2023-10-25 10:44 ` Paul Durrant
2023-10-24 15:24 ` [PATCH 0/12] Get Xen PV shim running in qemu Alex Bennée
2023-10-24 16:11 ` David Woodhouse
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=950f3a62dfcecce902037f95575f1013697a5925.camel@infradead.org \
--to=dwmw2@infradead.org \
--cc=anthony.perard@citrix.com \
--cc=eduardo@habkost.net \
--cc=hreitz@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.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).