summaryrefslogtreecommitdiff
path: root/OvmfPkg/XenPvBlkDxe
diff options
context:
space:
mode:
Diffstat (limited to 'OvmfPkg/XenPvBlkDxe')
-rw-r--r--OvmfPkg/XenPvBlkDxe/BlockFront.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/OvmfPkg/XenPvBlkDxe/BlockFront.c b/OvmfPkg/XenPvBlkDxe/BlockFront.c
index 256ac55..d07e980 100644
--- a/OvmfPkg/XenPvBlkDxe/BlockFront.c
+++ b/OvmfPkg/XenPvBlkDxe/BlockFront.c
@@ -169,6 +169,7 @@ XenPvBlockFrontInitialization (
XEN_BLOCK_FRONT_DEVICE *Dev;
XenbusState State;
UINT64 Value;
+ CHAR8 *Params;
ASSERT (NodeName != NULL);
@@ -186,6 +187,20 @@ XenPvBlockFrontInitialization (
}
FreePool (DeviceType);
+ if (Dev->MediaInfo.CdRom) {
+ Status = XenBusIo->XsBackendRead (XenBusIo, XST_NIL, "params", (VOID**)&Params);
+ if (Status != XENSTORE_STATUS_SUCCESS) {
+ DEBUG ((EFI_D_ERROR, "%a: Failed to read params (%d)\n", __FUNCTION__, Status));
+ goto Error;
+ }
+ if (AsciiStrLen (Params) == 0 || AsciiStrCmp (Params, "aio:") == 0) {
+ FreePool (Params);
+ DEBUG ((EFI_D_INFO, "%a: Empty cdrom\n", __FUNCTION__));
+ goto Error;
+ }
+ FreePool (Params);
+ }
+
Status = XenBusReadUint64 (XenBusIo, "backend-id", FALSE, &Value);
if (Status != XENSTORE_STATUS_SUCCESS || Value > MAX_UINT16) {
DEBUG ((EFI_D_ERROR, "XenPvBlk: Failed to get backend-id (%d)\n",