Andrey Drobyshev
2023-Mar-07 19:40 UTC
[Libguestfs] [COMMON PATCH v2 1/4] inject_virtio_win: match only vendor/device
From: Roman Kagan <rkagan at virtuozzo.com> Since different hypervisor vendors are allowed to use their own vendor-id as PCI subsystem-vendor-id for virtio devices, during v2v conversion it makes sense to only match the vendor/device and not the full device "path" in the Windows registry. This way the code will remain universal but will work for different hypervisor vendors. Signed-off-by: Andrey Drobyshev <andrey.drobyshev at virtuozzo.com> Originally-by: Roman Kagan <rkagan at virtuozzo.com> --- mlcustomize/inject_virtio_win.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mlcustomize/inject_virtio_win.ml b/mlcustomize/inject_virtio_win.ml index 4e977b3..8d72c5d 100644 --- a/mlcustomize/inject_virtio_win.ml +++ b/mlcustomize/inject_virtio_win.ml @@ -110,10 +110,10 @@ and get_inspection g root virtio_win = ""; was_set = false } let scsi_class_guid = "{4D36E97B-E325-11CE-BFC1-08002BE10318}" -let viostor_legacy_pciid = "VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00" -let viostor_modern_pciid = "VEN_1AF4&DEV_1042&SUBSYS_11001AF4&REV_01" -let vioscsi_legacy_pciid = "VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00" -let vioscsi_modern_pciid = "VEN_1AF4&DEV_1048&SUBSYS_11001AF4&REV_01" +let viostor_legacy_pciid = "VEN_1AF4&DEV_1001" +let viostor_modern_pciid = "VEN_1AF4&DEV_1042" +let vioscsi_legacy_pciid = "VEN_1AF4&DEV_1004" +let vioscsi_modern_pciid = "VEN_1AF4&DEV_1048" let rec inject_virtio_win_drivers ({ g } as t) reg (* Copy the virtio drivers to the guest. *) -- 2.31.1
Laszlo Ersek
2023-Mar-08 10:47 UTC
[Libguestfs] [COMMON PATCH v2 1/4] inject_virtio_win: match only vendor/device
On 3/7/23 20:40, Andrey Drobyshev wrote:> From: Roman Kagan <rkagan at virtuozzo.com> > > Since different hypervisor vendors are allowed to use their own vendor-id > as PCI subsystem-vendor-id for virtio devices, during v2v conversion it > makes sense to only match the vendor/device and not the full device "path" > in the Windows registry. This way the code will remain universal but will > work for different hypervisor vendors. > > Signed-off-by: Andrey Drobyshev <andrey.drobyshev at virtuozzo.com> > Originally-by: Roman Kagan <rkagan at virtuozzo.com> > --- > mlcustomize/inject_virtio_win.ml | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/mlcustomize/inject_virtio_win.ml b/mlcustomize/inject_virtio_win.ml > index 4e977b3..8d72c5d 100644 > --- a/mlcustomize/inject_virtio_win.ml > +++ b/mlcustomize/inject_virtio_win.ml > @@ -110,10 +110,10 @@ and get_inspection g root > virtio_win = ""; was_set = false } > > let scsi_class_guid = "{4D36E97B-E325-11CE-BFC1-08002BE10318}" > -let viostor_legacy_pciid = "VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00" > -let viostor_modern_pciid = "VEN_1AF4&DEV_1042&SUBSYS_11001AF4&REV_01" > -let vioscsi_legacy_pciid = "VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00" > -let vioscsi_modern_pciid = "VEN_1AF4&DEV_1048&SUBSYS_11001AF4&REV_01" > +let viostor_legacy_pciid = "VEN_1AF4&DEV_1001" > +let viostor_modern_pciid = "VEN_1AF4&DEV_1042" > +let vioscsi_legacy_pciid = "VEN_1AF4&DEV_1004" > +let vioscsi_modern_pciid = "VEN_1AF4&DEV_1048" > > let rec inject_virtio_win_drivers ({ g } as t) reg > (* Copy the virtio drivers to the guest. *)I wonder whether dropping the revision ID as well is a good idea. In the virtio-1.0 spec, we have under 4.1.2.1 Device Requirements: PCI Device Discovery: The PCI Subsystem Vendor ID and the PCI Subsystem Device ID MAY reflect the PCI Vendor and Device ID of the environment (for informational purposes by the driver). Non-transitional devices SHOULD have a PCI Device ID in the range 0x1040 to 0x107f. Non-transitional devices SHOULD have a PCI Revision ID of 1 or higher. Non-transitional devices SHOULD have a PCI Subsystem Device ID of 0x40 or higher. And in virtio-0.9.5, we have under 2.1 PCI Discovery: [...] The device must also have a Revision ID of 0 to match this speci cation. [...] So I think relaxing the PCI Revision ID is not necessary. But, it shouldn't cause problems in practice either, I think. It won't allow for cross-binding (the PCI Device IDs remain distinct). Acked-by: Laszlo Ersek <lersek at redhat.com>