[libvirt] [PATCHv2 7/7] qemu: enable using implicit sata controller in q35 machines

Andreas Färber afaerber at suse.de
Mon Aug 5 07:47:05 UTC 2013


Am 05.08.2013 09:40, schrieb Laine Stump:
> On 08/04/2013 07:55 PM, Doug Goldstein wrote:
>> On Sat, Aug 3, 2013 at 9:01 PM, Laine Stump <laine at laine.org> wrote:
>>> q35 machines have an implicit ahci (sata) controller at 00:1F.2 which
>>> has no "id" associated with it. For this reason, we can't refer to it
>>> as "ahci0". Instead, we don't give an id on the commandline, which
>>> qemu interprets as "use the first ahci controller". We then need to
>>> specify the unit with "unit=%d" rather than adding it onto the bus
>>> arg.
>> Maybe its called ich9-ahci0 instead of ahci0? Or ide0 or ide1? The
>> reason I ask is this code in QEMU.
>>
>>     /* ahci and SATA device, for q35 1 ahci controller is built-in */
>>     ahci = pci_create_simple_multifunction(host_bus,
>>                                            PCI_DEVFN(ICH9_SATA1_DEV,
>>                                                      ICH9_SATA1_FUNC),
>>                                            true, "ich9-ahci");
>>     idebus[0] = qdev_get_child_bus(&ahci->qdev, "ide.0");
>>     idebus[1] = qdev_get_child_bus(&ahci->qdev, "ide.1");
>>
>> Which is from the q35 bring up code.
> 
> I'm not familiar enough the the qemu code to know where the "ich9-ahci"
> string is going, but my information source was running "virsh
> qemu-monitor-command --pretty $domain '{"execute":"query-pci"}'" on a
> running domain, then looking at the "qdev_id" attribute of the device.
> That attribute is '' on the sata controller, but (for example) "pci.2"
> on the pci-bridge, and "ahci1" on a 2nd sata controller that is added by
> libvirt.
> 
> Andreas - does this implicit sata device really have no "id"? If not,
> then your suggestion of omiting the id for the first controller (I'm
> remembering correctly that it was you, right?) seems to work just fine
> (although I agree with Doug that it makes the code feel a bit "dirty").

The code snippet above (which I have not further verified) indicates two
busses, named "ide.0" and "ide.1" respectively. So bus=ide.0 or
bus=ide.1 should work, just like pcie.0 works for the built-in PCIe host
bridge.

"ich9-ahci" is the type name of the device, which you can use with
-device and device-add or see in qom-list-types.

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg




More information about the libvir-list mailing list