* [Qemu-devel] KVM call agenda for 2014-05-13 @ 2014-05-12 9:10 Juan Quintela 2014-05-12 9:44 ` Peter Maydell 0 siblings, 1 reply; 10+ messages in thread From: Juan Quintela @ 2014-05-12 9:10 UTC (permalink / raw) To: KVM devel mailing list, qemu list Hi Please, send any topic that you are interested in covering. - QOMifying both Memory regions and GPIOs and attaching them via QOM links (Peter Crosthwaite) Thanks, Juan. Call details: 15:00 CEST 13:00 UTC 09:00 EDT Every two weeks If you need phone number details, contact me privately. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-12 9:10 [Qemu-devel] KVM call agenda for 2014-05-13 Juan Quintela @ 2014-05-12 9:44 ` Peter Maydell 2014-05-12 10:30 ` Peter Crosthwaite 0 siblings, 1 reply; 10+ messages in thread From: Peter Maydell @ 2014-05-12 9:44 UTC (permalink / raw) To: Juan Quintela; +Cc: qemu list, KVM devel mailing list On 12 May 2014 10:10, Juan Quintela <quintela@redhat.com> wrote: > Please, send any topic that you are interested in covering. > > - QOMifying both Memory regions and GPIOs and attaching them via QOM > links (Peter Crosthwaite) Is there some further useful material on-list on this subject, or are we just going to have a rerun of the discussions on the last two calls? thanks -- PMM ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-12 9:44 ` Peter Maydell @ 2014-05-12 10:30 ` Peter Crosthwaite 2014-05-12 11:09 ` Peter Maydell 0 siblings, 1 reply; 10+ messages in thread From: Peter Crosthwaite @ 2014-05-12 10:30 UTC (permalink / raw) To: Peter Maydell; +Cc: qemu list, KVM devel mailing list, Juan Quintela On Mon, May 12, 2014 at 7:44 PM, Peter Maydell <peter.maydell@linaro.org> wrote: > On 12 May 2014 10:10, Juan Quintela <quintela@redhat.com> wrote: >> Please, send any topic that you are interested in covering. >> >> - QOMifying both Memory regions and GPIOs and attaching them via QOM >> links (Peter Crosthwaite) > > Is there some further useful material on-list on this subject, or > are we just going to have a rerun of the discussions on the > last two calls? > I have any ugly work-in-progress series. TBH I was going to wait for discussion outcomes. Want me to RFC it? Regards, Peter > thanks > -- PMM > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-12 10:30 ` Peter Crosthwaite @ 2014-05-12 11:09 ` Peter Maydell 2014-05-12 23:27 ` Peter Crosthwaite 2014-05-13 10:21 ` Andreas Färber 0 siblings, 2 replies; 10+ messages in thread From: Peter Maydell @ 2014-05-12 11:09 UTC (permalink / raw) To: Peter Crosthwaite; +Cc: qemu list, KVM devel mailing list, Juan Quintela On 12 May 2014 11:30, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote: > On Mon, May 12, 2014 at 7:44 PM, Peter Maydell <peter.maydell@linaro.org> wrote: >> On 12 May 2014 10:10, Juan Quintela <quintela@redhat.com> wrote: >>> Please, send any topic that you are interested in covering. >>> >>> - QOMifying both Memory regions and GPIOs and attaching them via QOM >>> links (Peter Crosthwaite) >> >> Is there some further useful material on-list on this subject, or >> are we just going to have a rerun of the discussions on the >> last two calls? > I have any ugly work-in-progress series. TBH I was going to wait for > discussion outcomes. Want me to RFC it? I don't think you necessarily need to post code, but maybe a writeup of current status/options would be useful to try to make the on-call discussion productive? thanks -- PMM ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-12 11:09 ` Peter Maydell @ 2014-05-12 23:27 ` Peter Crosthwaite 2014-05-13 10:44 ` Peter Maydell 2014-05-13 10:21 ` Andreas Färber 1 sibling, 1 reply; 10+ messages in thread From: Peter Crosthwaite @ 2014-05-12 23:27 UTC (permalink / raw) To: Peter Maydell; +Cc: qemu list, KVM devel mailing list, Juan Quintela On Mon, May 12, 2014 at 9:09 PM, Peter Maydell <peter.maydell@linaro.org> wrote: > On 12 May 2014 11:30, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote: >> On Mon, May 12, 2014 at 7:44 PM, Peter Maydell <peter.maydell@linaro.org> wrote: >>> On 12 May 2014 10:10, Juan Quintela <quintela@redhat.com> wrote: >>>> Please, send any topic that you are interested in covering. >>>> >>>> - QOMifying both Memory regions and GPIOs and attaching them via QOM >>>> links (Peter Crosthwaite) >>> >>> Is there some further useful material on-list on this subject, or >>> are we just going to have a rerun of the discussions on the >>> last two calls? > >> I have any ugly work-in-progress series. TBH I was going to wait for >> discussion outcomes. Want me to RFC it? > > I don't think you necessarily need to post code, but maybe a writeup > of current status/options would be useful to try to make the on-call > discussion productive? > Ok so here's my plan: QOMify address spaces. So they can be instantiated, reffed etc. completely aside from the hotplug discussion this greatly helps connecting bus master devices using proper QOM links. E.G. using machine-set link properties rather &address_space_memory everywhere. QOMify Memory regions. So they are added as child objects to devices. Devices can do this explicitly in instance_init, or sysbus can handle it - sysbus_init_mmio parents the memory region to the device to transparently convert all existing devs to compliance. The address and container (the memory region containing this one as a subregion) of memory regions are QOM properties, of type integer and link resp. Setting the properties does the memory_region_add_subregion(). The root address space is parented the machine in exec.c. This give the address space a canonical path. Its root memory region is a child of it, so it also is referencable by canon path. Sysbus IRQ are abandoned completely and re-implemented as named GPIOs. The sysbus irq API remains and makes this transition behind-the-scenes. GPIOs are QOMified. qemu_allocate_irqs does the object_new() etc. IRQ inputs are then added as child objects of the instantiating device. Handled by qemu_init_gpio_in_named(). gpio_outs are setup as links. qdev_connect_gpio_out does the linkage. QOM is patched to allow setting of a device's child's properties from a ref to the parent. Best illustrated by example (see below). Anyways without a single patch to the command line interface, HMP, QMP, or implementing any machine specific hotplug or adding any new special busses, this works: -device xlnx.xps-timer,\ sysbus-mr-0.container=/machine/sysmem/root-mr,\ sysbus-mr-0.addr=0x83c00000,\ sysbus-irq-0=/machine/intc/unnamed-gpio-0 All the other ways to create devices should just work, this is not a command line specific feature. Note, I edited my machine model to sanitize the canonical path of the interrupt controller: --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -97,6 +97,8 @@ petalogix_s3adsp1800_init(QEMUMachineInitArgs *args) 1, 0x89, 0x18, 0x0000, 0x0, 1); dev = qdev_create(NULL, "xlnx.xps-intc"); + object_property_add_child(qdev_get_machine(), "intc", OBJECT(dev), + &error_abort); But you could have done the whole /machine/unattached/... ugliness too. If you name the irq inputs in the intc with my named GPIO series stuff the unnamed-gpio ugliness goes away too. If you throw away sysbus and do the memory-regions and IRQs naming the child objects properly the ugly sysbus names can de dispensed with too. But thats a big tree-wide to name everything properly. Regards, Peter > thanks > -- PMM > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-12 23:27 ` Peter Crosthwaite @ 2014-05-13 10:44 ` Peter Maydell 2014-05-13 11:07 ` Peter Crosthwaite 0 siblings, 1 reply; 10+ messages in thread From: Peter Maydell @ 2014-05-13 10:44 UTC (permalink / raw) To: Peter Crosthwaite; +Cc: qemu list, KVM devel mailing list, Juan Quintela On 13 May 2014 00:27, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote: > Ok so here's my plan: This generally all sounds good to me. A slight nit: > QOMify address spaces. So they can be instantiated, reffed etc. > completely aside from the hotplug discussion this greatly helps > connecting bus master devices using proper QOM links. E.G. using > machine-set link properties rather &address_space_memory everywhere. I'm not sure that the thing a bus master exposes to be connected up should be an AddressSpace -- I think it should be a MemoryRegion (more precisely, the code creating the bus-master should create a MemoryRegion and pass it to the bus-master device). Consider a board model which puts together some RAM and devices. It ought to have the same interface for passing this up to the CPU whether it's doing so directly or via some SoC container device. For the SoC container case, this has to be by passing a MemoryRegion, since the SoC will want to add some devices of its own to create a combined board+SoC view to pass to the CPU object proper. So for consistency the interface for passing things to the CPU should also be a MemoryRegion (which the CPU then turns into an AddressSpace for its own internal use.) thanks -- PMM ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-13 10:44 ` Peter Maydell @ 2014-05-13 11:07 ` Peter Crosthwaite 2014-05-13 11:31 ` Peter Maydell 0 siblings, 1 reply; 10+ messages in thread From: Peter Crosthwaite @ 2014-05-13 11:07 UTC (permalink / raw) To: Peter Maydell Cc: Paolo Bonzini, qemu list, KVM devel mailing list, Juan Quintela [-- Attachment #1: Type: text/plain, Size: 1997 bytes --] On Tuesday, May 13, 2014, Peter Maydell <peter.maydell@linaro.org> wrote: > On 13 May 2014 00:27, Peter Crosthwaite <peter.crosthwaite@xilinx.com<javascript:;>> > wrote: > > Ok so here's my plan: > > This generally all sounds good to me. A slight nit: > > > QOMify address spaces. So they can be instantiated, reffed etc. > > completely aside from the hotplug discussion this greatly helps > > connecting bus master devices using proper QOM links. E.G. using > > machine-set link properties rather &address_space_memory everywhere. > > I'm not sure that the thing a bus master exposes to be connected > up should be an AddressSpace -- I think it should be a MemoryRegion > (more precisely, the code creating the bus-master should create > a MemoryRegion and pass it to the bus-master device). > > So this does alter the current thinking slightly, in that the current DMA API has devices reffing addr spaces. I think the idea there is to provide iommu capability? > Consider a board model which puts together some RAM and > devices. It ought to have the same interface for passing this > up to the CPU whether it's doing so directly or via some SoC > container device. For the SoC container case, this has to be > by passing a MemoryRegion, since the SoC will want to add > some devices of its own to create a combined board+SoC view to > pass to the CPU object proper. My thinking here is SoC can create an address space for it's masters to master (cpu included) and add slave peripherals to its root MR. Both AS and MR are then exposed to board level by the SoC for board level master and slaves resp. > So for consistency the interface > for passing things to the CPU should also be a MemoryRegion > (which the CPU then turns into an AddressSpace for its own > internal use.) > > Although if we pull this off without major change its definitely preffered by me. AS vs MR confusion is an issue. Can we realistically convert all master AS refs to MR? Regards Peter > thanks > -- PMM > > [-- Attachment #2: Type: text/html, Size: 2998 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-13 11:07 ` Peter Crosthwaite @ 2014-05-13 11:31 ` Peter Maydell 0 siblings, 0 replies; 10+ messages in thread From: Peter Maydell @ 2014-05-13 11:31 UTC (permalink / raw) To: Peter Crosthwaite Cc: Paolo Bonzini, qemu list, KVM devel mailing list, Juan Quintela On 13 May 2014 12:07, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote: > On Tuesday, May 13, 2014, Peter Maydell <peter.maydell@linaro.org> wrote: >> I'm not sure that the thing a bus master exposes to be connected >> up should be an AddressSpace -- I think it should be a MemoryRegion >> (more precisely, the code creating the bus-master should create >> a MemoryRegion and pass it to the bus-master device). >> > > So this does alter the current thinking slightly, in that the current DMA > API has devices reffing addr spaces. I think the idea there is to provide > iommu capability? Well, the DMA API generally can mostly remain as-is: that's the API for devices which are bus-masters to use to do the read/write/etc operations. So that kind of device would take a MemoryRegion* representing its view of the world, convert it to an AddressSpace in its realize method, and then use the AS to do DMA as required via the existing API. I haven't looked closely at how we handle IOMMUs currently... >> Consider a board model which puts together some RAM and >> devices. It ought to have the same interface for passing this >> up to the CPU whether it's doing so directly or via some SoC >> container device. For the SoC container case, this has to be >> by passing a MemoryRegion, since the SoC will want to add >> some devices of its own to create a combined board+SoC view to >> pass to the CPU object proper. > > > My thinking here is SoC can create an address space for it's masters to > master (cpu included) and add slave peripherals to its root MR. Both AS and > MR are then exposed to board level by the SoC for board level master and > slaves resp. This seems confused about who creates the address spaces. It doesn't seem very consistent for the object in the middle of the stack (the SoC container) to create them and pass them both up to the CPU and down to the board. The nice thing about "MRs everywhere" is the consistency effect: it's always the lowest layer that creates the container and hands it up to the layer above. > Although if we pull this off without major change its definitely preffered > by me. AS vs MR confusion is an issue. Can we realistically convert all > master AS refs to MR? I can't currently see any reason why it wouldn't work. This will mean we'll typically end up with several ASes which are duplicates (eg if all CPUs in the system have the same view of memory then they'll have their own ASes which all have the same MR root) but IIRC from discussion earlier this isn't a big deal. thanks -- PMM ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-12 11:09 ` Peter Maydell 2014-05-12 23:27 ` Peter Crosthwaite @ 2014-05-13 10:21 ` Andreas Färber 2014-05-13 10:33 ` Peter Crosthwaite 1 sibling, 1 reply; 10+ messages in thread From: Andreas Färber @ 2014-05-13 10:21 UTC (permalink / raw) To: Peter Maydell, Peter Crosthwaite Cc: KVM devel mailing list, Juan Quintela, qemu list, Markus Armbruster, Kirill Batuzov, Paolo Bonzini Am 12.05.2014 13:09, schrieb Peter Maydell: > On 12 May 2014 11:30, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote: >> On Mon, May 12, 2014 at 7:44 PM, Peter Maydell <peter.maydell@linaro.org> wrote: >>> On 12 May 2014 10:10, Juan Quintela <quintela@redhat.com> wrote: >>>> Please, send any topic that you are interested in covering. >>>> >>>> - QOMifying both Memory regions and GPIOs and attaching them via QOM >>>> links (Peter Crosthwaite) >>> >>> Is there some further useful material on-list on this subject, or >>> are we just going to have a rerun of the discussions on the >>> last two calls? > >> I have any ugly work-in-progress series. TBH I was going to wait for >> discussion outcomes. Want me to RFC it? > > I don't think you necessarily need to post code, but maybe a writeup > of current status/options would be useful to try to make the on-call > discussion productive? Here's my WIP qemu_irq conversion, so that we don't discuss IRQs for the third time in a row without results: https://github.com/afaerber/qemu-cpu/commits/qom-irq make check passes, not further tested yet. As a side effect, cleaning up the leaks turned out rather easy. The only remaining users of qemu_free_irqs() are serial-pci.c and ipack.c. If we can get rid of it altogether, the hacks for freeing the memory chunk could be avoided. Regards, Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] KVM call agenda for 2014-05-13 2014-05-13 10:21 ` Andreas Färber @ 2014-05-13 10:33 ` Peter Crosthwaite 0 siblings, 0 replies; 10+ messages in thread From: Peter Crosthwaite @ 2014-05-13 10:33 UTC (permalink / raw) To: Andreas Färber Cc: Peter Maydell, KVM devel mailing list, Juan Quintela, qemu list, Markus Armbruster, Kirill Batuzov, Paolo Bonzini [-- Attachment #1: Type: text/plain, Size: 1918 bytes --] On Tuesday, May 13, 2014, Andreas Färber <afaerber@suse.de> wrote: > Am 12.05.2014 13:09, schrieb Peter Maydell: > > On 12 May 2014 11:30, Peter Crosthwaite <peter.crosthwaite@xilinx.com<javascript:;>> > wrote: > >> On Mon, May 12, 2014 at 7:44 PM, Peter Maydell < > peter.maydell@linaro.org <javascript:;>> wrote: > >>> On 12 May 2014 10:10, Juan Quintela <quintela@redhat.com<javascript:;>> > wrote: > >>>> Please, send any topic that you are interested in covering. > >>>> > >>>> - QOMifying both Memory regions and GPIOs and attaching them via QOM > >>>> links (Peter Crosthwaite) > >>> > >>> Is there some further useful material on-list on this subject, or > >>> are we just going to have a rerun of the discussions on the > >>> last two calls? > > > >> I have any ugly work-in-progress series. TBH I was going to wait for > >> discussion outcomes. Want me to RFC it? > > > > I don't think you necessarily need to post code, but maybe a writeup > > of current status/options would be useful to try to make the on-call > > discussion productive? > > Here's my WIP qemu_irq conversion, so that we don't discuss IRQs for the > third time in a row without results: > > https://github.com/afaerber/qemu-cpu/commits/qom-irq Same basic idea as my wip series. No conflict of design at all. I've done some stuff around parenting irqs to their devs that would build onto this. regards, Peter > > make check passes, not further tested yet. > As a side effect, cleaning up the leaks turned out rather easy. > > The only remaining users of qemu_free_irqs() are serial-pci.c and > ipack.c. If we can get rid of it altogether, the hacks for freeing the > memory chunk could be avoided. > > Regards, > Andreas > > -- > SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany > GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg > > [-- Attachment #2: Type: text/html, Size: 2833 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-05-13 11:31 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-05-12 9:10 [Qemu-devel] KVM call agenda for 2014-05-13 Juan Quintela 2014-05-12 9:44 ` Peter Maydell 2014-05-12 10:30 ` Peter Crosthwaite 2014-05-12 11:09 ` Peter Maydell 2014-05-12 23:27 ` Peter Crosthwaite 2014-05-13 10:44 ` Peter Maydell 2014-05-13 11:07 ` Peter Crosthwaite 2014-05-13 11:31 ` Peter Maydell 2014-05-13 10:21 ` Andreas Färber 2014-05-13 10:33 ` Peter Crosthwaite
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).