[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH v4 0/6] xl: Allow PCI devices to be passthrough'd via Qemu command line




On 4/23/26 17:20, Oleksii Kurochko wrote:
> 
> On 4/23/26 4:46 PM, Thierry Escande wrote:
>> This series adds new 'hotplug' option for PCI device passthrough.
>>
>> The current mechanism for device passthrough uses QMP device_add command
>> to hot-plug PCI devices to the guest Qemu instance. This is an issue for
>> guests running on Q35 chipset (preliminary support posted at [1])
>> since the
>> Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
>> a secondary PCI bus but Xen only support 1 PCI bus for now.
>>
>> The 'hotplug' option allows to control how devices are attached to the
>> guest, either by using the legacy QMP mechanism (this is the default)
>> or by
>> passing them directly to the Qemu command line using xen-pci-passthrough
>> device.
>>
>> Example usage in cfg file:
>>   pci = [ "00:03.0,seize=1,hotplug=0" ]
>>
>> Since Qemu -device option accepts parameters in json format, this
>> patchset adds a new internal function
>> libxl__device_pci_get_qapi_json() that
>> generates the device json object used for both QMP hotplug and command
>> line
>> passing.
>>
>> Also, to handle the assignable PCI device list, the function
>> libxl_pci_assignable() is renamed as libxl_device_pci_assignable() and is
>> made available from libxl.h for access in libxl_dm.c. 2 other
>> functions are
>> also exported internally: libxl__pciback_dev_is_assigned() and
>> libxl__device_pci_assignable_add().
>>
>> This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
>> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
>> Disabling the hotplug mechanism might be made mandatory for Q35 machines
>> later, once Q35 support is merged upstream.
>>
>> [1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-
>> thierry.escande@xxxxxxxxxx/
>>
>> Changes in v2:
>>   - Add support for YAJL json parser
>>
>> Changes in v3:
>>   - Move code block of device command line parameters creation
>>   - Better handling of pci device assignation
>>
>> Changes in v4:
>>   - Split the refactoring parts of the 2nd patch
>>   - Extend libxl__json_object_to_json() and use it to generate the
>> qapi json
>>     string
>>
>> Thierry Escande (6):
>>    xl: Add an hotplug option for PCI device passthrough
>>    libxl: Refactor some PCI device handling functions
>>    libxl: Add libxl__device_pci_get_qapi_json() internal API
>>    libxl: Extend libxl__json_object_to_json() prototype
>>    libxl: Allow PCI device passthrough using -device Qemu command line
>>    docs: provide description for pci hotplug option
>>
>>   docs/man/xl-pci-configuration.5.pod | 17 +++++++++
>>   docs/man/xl.cfg.5.pod.in            |  6 +++
>>   tools/include/libxl.h               |  1 +
>>   tools/libs/light/libxl_dm.c         | 33 +++++++++++++++++
>>   tools/libs/light/libxl_internal.h   | 12 +++++-
>>   tools/libs/light/libxl_json.c       | 11 +++++-
>>   tools/libs/light/libxl_pci.c        | 57 ++++++++++++++++++++---------
>>   tools/libs/light/libxl_types.idl    |  1 +
>>   tools/libs/util/libxlu_pci.c        |  2 +
>>   tools/xl/xl_parse.c                 |  5 +++
>>   10 files changed, 123 insertions(+), 22 deletions(-)
>>
> 
> I think we also want to add an item to CHANGELOG.md that it is possible
> to passthrough PCI device via QEMU command line.

Sure, will do.

Thanks,
Thierry

> Thanks.
> 
> ~ Oleksii



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.