From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KYLRe-00089U-1x for qemu-devel@nongnu.org; Wed, 27 Aug 2008 09:52:22 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KYLRc-00089E-Ji for qemu-devel@nongnu.org; Wed, 27 Aug 2008 09:52:21 -0400 Received: from [199.232.76.173] (port=59453 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KYLRc-00089B-Fi for qemu-devel@nongnu.org; Wed, 27 Aug 2008 09:52:20 -0400 Received: from mail.codesourcery.com ([65.74.133.4]:51003) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KYLRb-0002Kw-S6 for qemu-devel@nongnu.org; Wed, 27 Aug 2008 09:52:20 -0400 From: Paul Brook Subject: Re: [Qemu-devel] [patch 2/2] add default pci subsystem id for all devices. Date: Wed, 27 Aug 2008 14:52:14 +0100 References: <48B3DE05.3000009@redhat.com> <200808271310.30313.paul@codesourcery.com> <48B552B9.3040002@redhat.com> In-Reply-To: <48B552B9.3040002@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200808271452.15987.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: qemu-devel@nongnu.org Cc: Gerd Hoffmann On Wednesday 27 August 2008, Gerd Hoffmann wrote: > Paul Brook wrote: > > On Tuesday 26 August 2008, Gerd Hoffmann wrote: > >> This sets a default PCI subsystem ID for all emulated PCI devices. > >> PCI specs require this, so do it. Individual devices can overwrite > >> it of course. The defaults are global variables so they can easily > >> be changed (before device creation) > > > > This is just asking for trouble. Having devices set magic global > > variables before they create the device is a truly horrible API. > > The global variables are just for the *default* value, i.e. what devices > get prefilled by pci_register_device(). If a pci device wants set > specific subsystem IDs it can just do so in the init function where the > other config space fields are filled. There is no need for devices to > ever fiddle with the global variables. That's not what your comment says. Why are they extern variables if other modules aren't supposed to modify them? Paul