]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
OvmfPkg: QemuBootOrder: recognize virtio-blk OFW device paths
[mirror_edk2.git] / OvmfPkg / Library / PlatformBdsLib / QemuBootOrder.c
index 4a3339651218c6329e8d5d09b03002d5179cbe41..9807039f2ff9b2db354d8810e154b7f781d3aff2 100644 (file)
@@ -606,6 +606,32 @@ TranslateOfwNodes (
       PciDevFun[1],\r
       AcpiUid\r
       );\r
+  } else if (NumNodes >= 3 &&\r
+             SubstringEq (OfwNode[1].DriverName, "scsi") &&\r
+             SubstringEq (OfwNode[2].DriverName, "disk")\r
+             ) {\r
+    //\r
+    // OpenFirmware device path (virtio-blk disk):\r
+    //\r
+    //   /pci@i0cf8/scsi@6[,3]/disk@0,0\r
+    //        ^          ^  ^       ^ ^\r
+    //        |          |  |       fixed\r
+    //        |          |  PCI function corresponding to disk (optional)\r
+    //        |          PCI slot holding disk\r
+    //        PCI root at system bus port, PIO\r
+    //\r
+    // UEFI device path prefix:\r
+    //\r
+    //   PciRoot(0x0)/Pci(0x6,0x0)/HD( -- if PCI function is 0 or absent\r
+    //   PciRoot(0x0)/Pci(0x6,0x3)/HD( -- if PCI function is present and nonzero\r
+    //\r
+    Written = UnicodeSPrintAsciiFormat (\r
+      Translated,\r
+      *TranslatedSize * sizeof (*Translated), // BufferSize in bytes\r
+      "PciRoot(0x0)/Pci(0x%x,0x%x)/HD(",\r
+      PciDevFun[0],\r
+      PciDevFun[1]\r
+      );\r
   } else {\r
     return RETURN_UNSUPPORTED;\r
   }\r