> Am 10.09.2014 um 16:18 schrieb Paolo Bonzini <pbonzini@xxxxxxxxxx>: > > Il 10/09/2014 15:51, Eric Auger ha scritto: >>> On 09/10/2014 12:09 PM, Alexander Graf wrote: >>> >>> >>>> On 10.09.14 12:05, Paolo Bonzini wrote: >>>> Il 10/09/2014 11:56, Alexander Graf ha scritto: >>>>> >>>>> >>>>>> On 10.09.14 11:43, Paolo Bonzini wrote: >>>>>> Il 10/09/2014 11:31, Alexander Graf ha scritto: >>>>>>>>> Yeah, please do the registration in sysbus.c, not in virt.c. There is >>>>>>>>> no reason to make the platform_bus_init_notify+DynSysbusNotifier >>>>>>>>> interface public. The code in sysbus.c can fill in the fields. >>>>>>> Sysbus != Platform bus. Sysbus is an in-QEMU representation of a >>>>>>> pseudo-bus that we put all devices onto that we consider unsorted. >>>>>>> >>>>>>> Platform bus is a machine representation of an actual bus that devices >>>>>>> are attached to. These devices usually are sysbus devices. >>>>>> >>>>>> Is there any difference between the two? >>>>>> >>>>>> Take a machine that has two chips, a SoC that does everything except >>>>>> USB, and a USB controller chip. >>>>>> >>>>>> Strictly speaking the USB controller chip would be on a "platform bus", >>>>>> but we would likely put it on sysbus. >>>>>> >>>>>> Why should it matter whether the devices are static or dynamic, for the >>>>>> sake of calling something the "system" or the "platform" bus? I would >>>>>> say that QEMU calls "sysbus" the platform bus. >>>>>> >>>>>> Some devices (e.g. the local APIC in x86, or the in-core timers and GIC >>>>>> in ARM) should probably not be in sysbus at all, and should attach >>>>>> directly to the CPU address space. But that is a quirk in the modeling >>>>>> of those devices, it shouldn't mean that sysbus is not a "platform" bus. >>>>> >>>>> On e500 for example, we have a predefined CCSR region. That is a machine >>>>> defined "platform bus". The offsets inside that region are strictly >>>>> defined by the spec. >>>>> >>>>> Now take the serial ports. We have space for 2 serial ports inside of >>>>> that CCSR region. We can spawn these 2 ports in the machine file based >>>>> on -serial, but if you want to spawn them with -device, how do you tell >>>>> the machine whether they should go into the "big bucket platform bus" or >>>>> the "CCSR platform bus"? >>>> >>>> Two possibilities: >>>> >>>> 1) you would use two instances of sysbus (one default, one created by >>>> the board) and specify ",bus=ccsr" on the command line when you want to >>>> add the device to the CCSR region. >>>> >>>> The two would work exactly the same way, only with different algorithms >>>> for resource allocation. >>>> >>>> 2) similar to ISA, you would create a new ccsr-bus device and a new >>>> ccsr-serial device, and use -device ccsr-serial,index=[0|1],chardev=foo >>>> to specify which of the two serial ports this is for. Most of the fdt >>>> magic could be shared by the sysbus and CCSR cases. >>>> >>>> I think I prefer (2)... >>> >>> Fair enough. >>> >>> As far as moving "platform bus" logic into sysbus, I'd really like to >>> hold back and see what this whole thing ends up getting used for first. >>> >>> So for now, I'd definitely prefer to keep "platform bus" logic and >>> "sysbus" logic separate. If we realize that every user only ever uses >>> the dynamic sysbus creation in conjunction with our "platform bus" >>> implementation, we can merge them. >> >> Hi Paolo, Alex, >> >> I understand I keep the code in a separate module from sysbus.c. Is that >> the shared conclusion? > > I don't think so, but maybe I misunderstood what Alex wrote. I still think it shouldn't be inside the sysbus files. You can use sysbus devices without a platform bus. Alex > > Paolo > _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm