From: Joel Schopp <joel.schopp@amd.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Alexander Graf <agraf@suse.de>,
Kim Phillips <kim.phillips@freescale.com>,
eric.auger@st.com, Eric Auger <eric.auger@linaro.org>,
Patch Tracking <patches@linaro.org>,
Will Deacon <will.deacon@arm.com>,
Alvise Rigo <a.rigo@virtualopensystems.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Bharat Bhushan <Bharat.Bhushan@freescale.com>,
Alex Williamson <alex.williamson@redhat.com>,
Stuart Yoder <stuart.yoder@freescale.com>,
Antonios Motakis <a.motakis@virtualopensystems.com>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
Christoffer Dall <christoffer.dall@linaro.org>
Subject: Re: [Qemu-devel] [PATCH v5 10/10] hw/arm/dyn_sysbus_devtree: enable simple VFIO dynamic instantiation
Date: Mon, 18 Aug 2014 17:26:48 -0500 [thread overview]
Message-ID: <53F27DA8.7010206@amd.com> (raw)
In-Reply-To: <CAFEAcA80zcCvncbd0CrZXJMczrSUKp3MhjZOj+vqU586=e=9pw@mail.gmail.com>
On 08/18/2014 05:11 PM, Peter Maydell wrote:
> On 18 August 2014 22:54, Joel Schopp <joel.schopp@amd.com> wrote:
>> +static void vfio_fdt_add_device_node(SysBusDevice *sbdev, void *opaque)
>> +{
>> + PlatformDevtreeData *data = opaque;
>> + void *fdt = data->fdt;
>> + const char *parent_node = data->node;
>> + int compat_str_len;
>> + char *nodename;
>> + int i, ret;
>> + uint32_t *irq_attr;
>> + uint64_t *reg_attr;
>> + uint64_t mmio_base;
>> + uint64_t irq_number;
>> + gchar mmio_base_prop[8];
>> + gchar irq_number_prop[8];
>> + VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(sbdev);
>> + VFIODevice *vbasedev = &vdev->vbasedev;
>> + Object *obj = OBJECT(sbdev);
>> +
>> + mmio_base = object_property_get_int(obj, "mmio[0]", NULL);
>> +
>> + nodename = g_strdup_printf("%s/%s@%" PRIx64, parent_node,
>> + vbasedev->name,
>> + mmio_base);
>> +
>> + qemu_fdt_add_subnode(fdt, nodename);
>> +
>> + compat_str_len = strlen(vdev->compat) + 1;
> At this point you've already substituted the NULs in,
> so you can't call strlen(), I think.
>
>> + qemu_fdt_setprop(fdt, nodename, "compatible",
>> + vdev->compat, compat_str_len);
>> +
>> + reg_attr = g_new(uint64_t, vbasedev->num_regions*4);
>> +
>> + for (i = 0; i < vbasedev->num_regions; i++) {
>> + snprintf(mmio_base_prop, sizeof(mmio_base_prop), "mmio[%d]", i);
>> + mmio_base = object_property_get_int(obj, mmio_base_prop, NULL);
>> + reg_attr[2*i] = 1;
>> + reg_attr[2*i+1] = mmio_base;
>> + reg_attr[2*i+2] = 1;
>> + reg_attr[2*i+3] = memory_region_size(&vdev->regions[i]->mem);
>> + }
>>
>> This should be 4 instead of 2.
>> Also, to support 64 bit systems I think this should be 2 instead of 1.
> Actually it depends entirely on what the board has done to
> create the device tree node that we're inserting this child
> node into. For ARM boot.c sets both #address-cells and
> #size-cells to 2 regardless of whether the system is 32
> or 64 bits, for simplicity. I imagine PPC does something
> different. If we're editing a dtb that the user passed in (which
> I think would be pretty lunatic so we shouldn't do this)
> we'd have to actually walk the dtb to try to figure out what
> the semantics of the reg property should be.
For the index [2*i],[2*i+1], etc is clearly a bug as when i = 1 it will
overwrite two of the values. Changing that to [4*i],[4*i+1],etc fixes it.
I think you are right on the size. I also wonder if the user doesn't
pass in a dtb if qemu should try to recreate the device-tree entry from
the platform device entry in the host kernel? If so would that best be
done by recreating the values from /proc/device-tree ?
I also wish that qemu had a flag to output the generated dtb to a file
much like lkvm (kvmtool) has.
next prev parent reply other threads:[~2014-08-18 22:29 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-09 14:25 [Qemu-devel] [PATCH v5 00/10] KVM platform device passthrough Eric Auger
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 01/10] vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio Eric Auger
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 02/10] hw/vfio/pci: Rename VFIODevice into VFIOPCIDevice Eric Auger
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 03/10] hw/vfio/pci: introduce VFIODevice Eric Auger
2014-08-12 2:34 ` David Gibson
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 04/10] hw/vfio/pci: Introduce VFIORegion Eric Auger
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 05/10] hw/vfio/pci: split vfio_get_device Eric Auger
2014-08-12 2:41 ` David Gibson
2014-08-12 6:54 ` Eric Auger
2014-08-13 3:32 ` David Gibson
2014-08-29 10:00 ` Eric Auger
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 06/10] hw/vfio: create common module Eric Auger
2014-08-11 19:20 ` Alex Williamson
2014-08-12 5:57 ` Eric Auger
2014-08-11 19:25 ` Alex Williamson
2014-08-12 6:09 ` Eric Auger
2014-08-13 19:59 ` Alex Williamson
2014-09-01 16:31 ` Eric Auger
2014-09-01 17:41 ` Alexander Graf
2014-09-02 7:13 ` Eric Auger
2014-09-02 21:13 ` Alex Williamson
2014-08-20 19:12 ` Joel Schopp
2014-08-20 19:41 ` Alex Williamson
2014-08-20 20:08 ` Joel Schopp
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 07/10] hw/vfio/platform: add vfio-platform support Eric Auger
2014-08-11 9:36 ` Alexander Graf
2014-08-12 7:59 ` Bharat.Bhushan
2014-08-12 16:34 ` Eric Auger
2014-08-11 20:13 ` Alex Williamson
2014-08-12 5:51 ` Eric Auger
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 08/10] hw/intc/arm_gic_kvm: advertise irqfd Eric Auger
2014-08-11 9:37 ` Alexander Graf
2014-08-11 12:04 ` Eric Auger
2014-08-11 12:05 ` Alexander Graf
2014-08-11 12:27 ` Eric Auger
2014-08-11 12:29 ` Alexander Graf
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 09/10] hw/vfio/platform: Add irqfd support Eric Auger
2014-08-09 14:25 ` [Qemu-devel] [PATCH v5 10/10] hw/arm/dyn_sysbus_devtree: enable simple VFIO dynamic instantiation Eric Auger
2014-08-11 9:40 ` Alexander Graf
2014-08-11 11:55 ` Eric Auger
2014-08-18 21:54 ` Joel Schopp
2014-08-18 22:11 ` Peter Maydell
2014-08-18 22:26 ` Joel Schopp [this message]
2014-08-19 7:32 ` Eric Auger
2014-08-19 10:59 ` Alexander Graf
2014-08-19 14:15 ` Joel Schopp
2014-08-19 14:29 ` Alexander Graf
2014-08-19 7:24 ` Eric Auger
2014-08-19 8:17 ` Peter Maydell
2014-08-19 6:59 ` Eric Auger
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=53F27DA8.7010206@amd.com \
--to=joel.schopp@amd.com \
--cc=Bharat.Bhushan@freescale.com \
--cc=a.motakis@virtualopensystems.com \
--cc=a.rigo@virtualopensystems.com \
--cc=agraf@suse.de \
--cc=alex.williamson@redhat.com \
--cc=christoffer.dall@linaro.org \
--cc=eric.auger@linaro.org \
--cc=eric.auger@st.com \
--cc=kim.phillips@freescale.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=patches@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stuart.yoder@freescale.com \
--cc=will.deacon@arm.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).