From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:34493) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rq28P-0000aZ-B8 for qemu-devel@nongnu.org; Wed, 25 Jan 2012 07:39:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rq28J-0003iH-GT for qemu-devel@nongnu.org; Wed, 25 Jan 2012 07:39:29 -0500 Date: Wed, 25 Jan 2012 14:41:24 +0200 From: "Michael S. Tsirkin" Message-ID: <20120125124124.GA22203@redhat.com> References: <1327433600-7403-1-git-send-email-aliguori@us.ibm.com> <1327433600-7403-27-git-send-email-aliguori@us.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1327433600-7403-27-git-send-email-aliguori@us.ibm.com> Subject: Re: [Qemu-devel] [PATCH 26/28] pci: convert to QEMU Object Model List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Kevin Wolf , xen-devel@lists.xensource.com, Stefano Stabellini , qemu-devel@nongnu.org, Alexander Graf , Blue Swirl , Andreas =?iso-8859-1?Q?F=E4rber?= , qemu-ppc@nongnu.org, Paul Brook , Gerd Hoffmann On Tue, Jan 24, 2012 at 01:33:18PM -0600, Anthony Liguori wrote: > diff --git a/hw/ac97.c b/hw/ac97.c > index 03be99b..33b85f5 100644 > --- a/hw/ac97.c > +++ b/hw/ac97.c > @@ -1344,21 +1344,30 @@ int ac97_init (PCIBus *bus) > return 0; > } > > -static PCIDeviceInfo ac97_info = { > - .qdev.name = "AC97", > - .qdev.desc = "Intel 82801AA AC97 Audio", > - .qdev.size = sizeof (AC97LinkState), > - .qdev.vmsd = &vmstate_ac97, > - .init = ac97_initfn, > - .exit = ac97_exitfn, > - .vendor_id = PCI_VENDOR_ID_INTEL, > - .device_id = PCI_DEVICE_ID_INTEL_82801AA_5, > - .revision = 0x01, > - .class_id = PCI_CLASS_MULTIMEDIA_AUDIO, > - .qdev.props = (Property[]) { > - DEFINE_PROP_UINT32("use_broken_id", AC97LinkState, use_broken_id, 0), > - DEFINE_PROP_END_OF_LIST(), > - } > +static Property ac97_properties[] = { > + DEFINE_PROP_UINT32("use_broken_id", AC97LinkState, use_broken_id, 0), > + DEFINE_PROP_END_OF_LIST(), > +}; > + > +static void ac97_class_init(ObjectClass *klass, void *data) > +{ > + PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > + > + k->init = ac97_initfn; > + k->exit = ac97_exitfn; > + k->vendor_id = PCI_VENDOR_ID_INTEL; > + k->device_id = PCI_DEVICE_ID_INTEL_82801AA_5; > + k->revision = 0x01; > + k->class_id = PCI_CLASS_MULTIMEDIA_AUDIO; > +} > + > +static DeviceInfo ac97_info = { > + .name = "AC97", > + .desc = "Intel 82801AA AC97 Audio", > + .size = sizeof (AC97LinkState), > + .vmsd = &vmstate_ac97, > + .props = ac97_properties, > + .class_init = ac97_class_init, > }; > > static void ac97_register (void) So I have a question on this: the whole reason we moved class, vendor id etc away from device init functions to a table was to make it possible to perform queries, like list all available sound device types, or sort devices based on type, based on these tables. Another purpose was to remove the manually written description/name, embedding pci id database in qemu instead, and performing lookups based on device/vendor id. We never got these patches but it sounds like a genuinely useful functionality. Is this no longer possible? -- MST