From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LtMIq-000172-BH for qemu-devel@nongnu.org; Mon, 13 Apr 2009 09:34:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LtMIl-00016G-IU for qemu-devel@nongnu.org; Mon, 13 Apr 2009 09:34:23 -0400 Received: from [199.232.76.173] (port=60705 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LtMIl-000169-5D for qemu-devel@nongnu.org; Mon, 13 Apr 2009 09:34:19 -0400 Received: from mx2.redhat.com ([66.187.237.31]:49478) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LtMIk-0007K3-JB for qemu-devel@nongnu.org; Mon, 13 Apr 2009 09:34:18 -0400 Date: Mon, 13 Apr 2009 10:30:21 -0300 From: Marcelo Tosatti Subject: Re: [Qemu-devel] [patch 2/2] qemu: switch pci device init functions to accept devfn Message-ID: <20090413133021.GA1065@amt.cnet> References: <20090413035311.009617911@amt.cnet> <20090413035340.296329700@amt.cnet> <200904131327.35201.paul@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200904131327.35201.paul@codesourcery.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paul Brook Cc: qemu-devel@nongnu.org, Markus Armbruster On Mon, Apr 13, 2009 at 01:27:34PM +0100, Paul Brook wrote: > On Monday 13 April 2009, Marcelo Tosatti wrote: > > Some pci device initialization functions do not accept a devfn parameter, > > but instead use "-1", which caused pci_register_device to find the first > > free slot on the given bus. > > > > Have them accept a "devfn" parameter, and use the newly introduced > > pci_bus_assign_dev_addr function on platform init code to perform > > the "first free" enumeration. > > I don't see how this is better. If anything we want the platform code to get > smaller, not larger. Paul, This is a intermediate step. Later you'd get rid of pci_bus_assign_dev_addr in platform code. Ideally you'd have (I think): - generic machine initialization code fills in details of pci device address in pci device structure (or a temporary placeholder) taken from machine description (optionally auto assigns from a free slot). - pci driver init functions take generic device pointer as an argument (either containing the pre allocated pci device or temporary placeholder), and pass that to pci_register_device, which does actual registration of pci device on particular bus. Does that make sense? A benefit of the proposed patch is that it moves assumptions about pci device address assignment from drivers up to platform code. Later you'd remove that from platform code to devtree data.