]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: QemuBootOrder: recognize virtio-blk OFW device paths
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 8 Oct 2012 07:33:37 +0000 (07:33 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 8 Oct 2012 07:33:37 +0000 (07:33 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13801 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c

index 4a3339651218c6329e8d5d09b03002d5179cbe41..9807039f2ff9b2db354d8810e154b7f781d3aff2 100644 (file)
@@ -606,6 +606,32 @@ TranslateOfwNodes (
       PciDevFun[1],\r
       AcpiUid\r
       );\r
       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
   } else {\r
     return RETURN_UNSUPPORTED;\r
   }\r