|
[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 Thu, Apr 23, 2026 at 04:46:10PM +0200, 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. Hi Thierry, I don't like this new "hotplug" option. It is just an implementation detail on how the device is added to QEMU. It is just going to be confusing for users. Because in both case, the device is "cold-plugged", it just happen to be inserted after QEMU thing it is fully configured, but the guest hasn't really started yet. It is likely that we implemented the pci passthrough this way because it worked and because we could reuse the same code path for real hotplug as well. So, for the patch that is really needed (adding the device on the command line), we could do just for the Q35 machine, or we could do that for all guests. For the second option, probably the best one, but we are going to try to find out if everything work as expected, especially Linux stubdomain. > 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 I though you were renaming a public API function, but the original one was static with the wrong name. (function prefixed with "libxl_", one underscore, are in the public API, private one to libxl are prefixed with "libxl__".) > made available from libxl.h for access in libxl_dm.c. 2 other functions are If you only mean to use a function internally, add it to libxl_internal.h, I don't want to expose more functions to the API without a good reason. `xl pci-assignable-list` already work, so I don't think exposing a new function is useful. Cheers, -- Anthony Perard | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |