From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46408) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VUIgO-0001Gs-0j for qemu-devel@nongnu.org; Thu, 10 Oct 2013 12:01:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VUIgI-0002KM-MV for qemu-devel@nongnu.org; Thu, 10 Oct 2013 12:01:47 -0400 Received: from mail-qe0-x22f.google.com ([2607:f8b0:400d:c02::22f]:57923) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VUIgI-0002K1-Il for qemu-devel@nongnu.org; Thu, 10 Oct 2013 12:01:42 -0400 Received: by mail-qe0-f47.google.com with SMTP id b4so2098038qen.20 for ; Thu, 10 Oct 2013 09:01:42 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <5256CF60.2080204@redhat.com> Date: Thu, 10 Oct 2013 18:01:36 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1381416174-5110-1-git-send-email-armbru@redhat.com> <1381416174-5110-6-git-send-email-armbru@redhat.com> In-Reply-To: <1381416174-5110-6-git-send-email-armbru@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH RFC 5/9] ich9: Document why cannot_instantiate_with_device_add_yet List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: armbru@redhat.com Cc: peter.maydell@linaro.org, borntraeger@de.ibm.com, qemu-devel@nongnu.org, anthony@codemonkey.ws, afaerber@suse.de Il 10/10/2013 16:42, armbru@redhat.com ha scritto: > From: Markus Armbruster > > An ICH9 southbridge contains several PCI devices, some of them with > multiple functions. We model each function as a separate qdev. Two > of them need some special wiring set up in pc_q35_init() to work: the > LPC controller at 00:1f.0, and the SMBus controller at 00:1f.3. > > Signed-off-by: Markus Armbruster > --- > hw/i2c/smbus_ich9.c | 6 +++++- > hw/isa/lpc_ich9.c | 7 +++++-- > 2 files changed, 10 insertions(+), 3 deletions(-) > > diff --git a/hw/i2c/smbus_ich9.c b/hw/i2c/smbus_ich9.c > index c1ffa34..8d47eaf 100644 > --- a/hw/i2c/smbus_ich9.c > +++ b/hw/i2c/smbus_ich9.c > @@ -97,11 +97,15 @@ static void ich9_smb_class_init(ObjectClass *klass, void *data) > k->device_id = PCI_DEVICE_ID_INTEL_ICH9_6; > k->revision = ICH9_A2_SMB_REVISION; > k->class_id = PCI_CLASS_SERIAL_SMBUS; > - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ > dc->vmsd = &vmstate_ich9_smbus; > dc->desc = "ICH9 SMBUS Bridge"; > k->init = ich9_smbus_initfn; > k->config_write = ich9_smbus_write_config; > + /* > + * Reason: part of ICH9 southbridge, needs to be wired up by > + * pc_q35_init() > + */ > + dc->cannot_instantiate_with_device_add_yet = true; > } > > i2c_bus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base) > diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c > index ad841b5..d00d698 100644 > --- a/hw/isa/lpc_ich9.c > +++ b/hw/isa/lpc_ich9.c > @@ -604,14 +604,17 @@ static void ich9_lpc_class_init(ObjectClass *klass, void *data) > dc->reset = ich9_lpc_reset; > k->init = ich9_lpc_initfn; > dc->vmsd = &vmstate_ich9_lpc; > - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ > k->config_write = ich9_lpc_config_write; > dc->desc = "ICH9 LPC bridge"; > k->vendor_id = PCI_VENDOR_ID_INTEL; > k->device_id = PCI_DEVICE_ID_INTEL_ICH9_8; > k->revision = ICH9_A2_LPC_REVISION; > k->class_id = PCI_CLASS_BRIDGE_ISA; > - > + /* > + * Reason: part of ICH9 southbridge, needs to be wired up by > + * pc_q35_init() > + */ > + dc->cannot_instantiate_with_device_add_yet = true; > } > > static const TypeInfo ich9_lpc_info = { > I think SMBus is fine. Even though the standard configuration of the Q35 SMBus cannot be reproduced with -device, that's a problem of hw/i2c/smbus_eeprom.c, not of the smbus bridge itself. I think hw/i2c/smbus_eeprom.c should rather be marked as cannot_instantiate_with_device_add_yet (which makes sense, because it has a PROP_PTR). Alternatively, you can resuscitate the first two patches of http://lists.gnu.org/archive/html/qemu-devel/2012-02/msg00449.html Paolo