From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56522) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRik8-0000I5-C2 for qemu-devel@nongnu.org; Wed, 10 Sep 2014 10:19:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XRik2-00042w-2X for qemu-devel@nongnu.org; Wed, 10 Sep 2014 10:19:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:31859) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRik1-00041Y-Rx for qemu-devel@nongnu.org; Wed, 10 Sep 2014 10:19:26 -0400 Message-ID: <54105D9D.7090902@redhat.com> Date: Wed, 10 Sep 2014 16:18:05 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1410249273-6063-1-git-send-email-eric.auger@linaro.org> <1410249273-6063-2-git-send-email-eric.auger@linaro.org> <540EDCF9.7070609@redhat.com> <540F1BF2.4080505@linaro.org> <540F23F6.8080407@redhat.com> <54101A61.1080503@suse.de> <54101D5F.6060602@redhat.com> <54102068.6000807@suse.de> <54102258.4040503@redhat.com> <5410235E.7090704@suse.de> <5410574D.309@linaro.org> In-Reply-To: <5410574D.309@linaro.org> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 1/6] hw/misc/dyn_sysbus_binding: helpers for sysbus device dynamic binding List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Auger , Alexander Graf , eric.auger@st.com, christoffer.dall@linaro.org, qemu-devel@nongnu.org, a.rigo@virtualopensystems.com, kim.phillips@freescale.com, marc.zyngier@arm.com, manish.jaggi@caviumnetworks.com, joel.schopp@amd.com, peter.maydell@linaro.org, afaerber@suse.de Cc: patches@linaro.org, will.deacon@arm.com, stuart.yoder@freescale.com, Bharat.Bhushan@freescale.com, alex.williamson@redhat.com, a.motakis@virtualopensystems.com, kvmarm@lists.cs.columbia.edu 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. Paolo