[libvirt] [PATCH 13/13] qemu: support new pci controller model "pcie-switch-downstream-port"
Laine Stump
laine at laine.org
Tue Jun 23 17:56:04 UTC 2015
On 06/23/2015 11:35 AM, Alex Williamson wrote:
> On Mon, 2015-06-22 at 14:44 -0400, Laine Stump wrote:
>> This is backed by the qemu device xio3130-downstream. It can only be
>> connected to a pcie-switch-upstream-port (x3130-upstream) on the
>> upstream side.
>> ---
>> src/qemu/qemu_command.c | 15 +++++++++++++++
>> .../qemuxml2argv-pcie-switch-downstream-port.args | 13 +++++++++++++
>> tests/qemuxml2argvtest.c | 9 +++++++++
>> 3 files changed, 37 insertions(+)
>> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-switch-downstream-port.args
>>
>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>> index b4df65a..064adcb 100644
>> --- a/src/qemu/qemu_command.c
>> +++ b/src/qemu/qemu_command.c
>> @@ -2367,6 +2367,10 @@ qemuAssignDevicePCISlots(virDomainDefPtr def,
>> */
>> flags = VIR_PCI_CONNECT_TYPE_PCIE_ONLY;
>> break;
>> + case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
>> + /* pcie-switch-port can only plug into pcie-switch */
>> + flags = VIR_PCI_CONNECT_TYPE_PCIE_SWITCH;
>> + break;
>> default:
>> flags = VIR_PCI_CONNECT_HOTPLUGGABLE | VIR_PCI_CONNECT_TYPE_PCI;
>> break;
>> @@ -4647,6 +4651,17 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
>> }
>> virBufferAsprintf(&buf, "x3130-upstream,id=%s", def->info.alias);
>> break;
>> + case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
>> + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM)) {
>> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>> + _("The pcie-switch-downstream-port "
>> + "(xio3130-downstream) controller "
>> + "is not supported in this QEMU binary"));
>> + goto error;
>> + }
>> + virBufferAsprintf(&buf, "xio3130-downstream,port=1,chassis=%d,id=%s",
>> + def->idx, def->info.alias);
> And why put all the downstream switch ports on port=1?
Just because that's what was shown as an example in docs/q35-chipset.cfg
in the qemu source.
> I had suggested
> the slot address would match what I see on physical hardware. Is the
> slot address not available at this point?
Yes, the slot is available - def->info.addr.pci.slot. I was just in "new
information overload" and missed that part. I'll do it that way the next
round.
Thanks again for the comments.
More information about the libvir-list
mailing list