[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically s
From: |
Scott Wood |
Subject: |
Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices |
Date: |
Wed, 2 Jul 2014 12:26:24 -0500 |
On Wed, 2014-07-02 at 19:12 +0200, Alexander Graf wrote:
> On 02.07.14 00:50, Scott Wood wrote:
> > Plus, let's please not hardcode any more addresses that are going to be
> > a problem for giving guests a large amount of RAM (yes, CCSRBAR is also
> > blocking that, but that has a TODO to parameterize). How about
> > 0xf00000000ULL? Unless of course we're emulating an e500v1, which
> > doesn't support 36-bit physical addressing. Parameterization would help
> > there as well.
>
> I don't think we have to worry about e500v1. I'll change it :).
We theoretically support it elsewhere... Once parameterized, it
shouldn't be hard to base the address for this, CCSRBAR, and similar
things on whether MAS7 is supported.
> >> @@ -122,6 +131,77 @@ static void dt_serial_create(void *fdt, unsigned long
> >> long offset,
> >> }
> >> }
> >>
> >> +typedef struct PlatformDevtreeData {
> >> + void *fdt;
> >> + const char *mpic;
> >> + int irq_start;
> >> + const char *node;
> >> + int id;
> >> +} PlatformDevtreeData;
> > What is id? How does irq_start work?
>
> "id" is just a linear counter over all devices in the platform bus so
> that if you need to have a unique identifier, you can have one.
>
> "irq_start" is the offset of the first mpic irq that's connected to the
> platform bus.
OK, but why is that here but no irq_end, and no address range? How do
allocations from the irq range happen?
> >> +static int sysbus_device_create_devtree(Object *obj, void *opaque)
> >> +{
> >> + PlatformDevtreeData *data = opaque;
> >> + Object *dev;
> >> + SysBusDevice *sbdev;
> >> + bool matched = false;
> >> +
> >> + dev = object_dynamic_cast(obj, TYPE_SYS_BUS_DEVICE);
> >> + sbdev = (SysBusDevice *)dev;
> >> +
> >> + if (!sbdev) {
> >> + /* Container, traverse it for children */
> >> + return object_child_foreach(obj, sysbus_device_create_devtree,
> >> data);
> >> + }
> >> +
> >> + if (matched) {
> >> + data->id++;
> >> + } else {
> >> + error_report("Device %s is not supported by this machine yet.",
> >> + qdev_fw_name(DEVICE(dev)));
> >> + exit(1);
> >> + }
> >> +
> >> + return 0;
> >> +}
> > It's not clear to me how this function is creating a device tree node.
>
> It's not yet - it's only the stub that allows to plug in specific device
> code that then generates device tree nodes :).
How does the plugging in work?
It looks like all this does is increment id.
-Scott
[Qemu-ppc] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Alexander Graf, 2014/07/01
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Scott Wood, 2014/07/01
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Alexander Graf, 2014/07/02
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices,
Scott Wood <=
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Alexander Graf, 2014/07/02
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Scott Wood, 2014/07/02
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Alexander Graf, 2014/07/02
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Scott Wood, 2014/07/02
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: e500: Support dynamically spawned sysbus devices, Alexander Graf, 2014/07/02
[Qemu-ppc] [PATCH 4/6] sysbus: Make devices spawnable via -device, Alexander Graf, 2014/07/01
[Qemu-ppc] [PATCH 1/6] qom: macroify integer property helpers, Alexander Graf, 2014/07/01