|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [edk2] [PATCH v2] OvmfPkg: XenPvBlkDxe: handle empty cdrom drives
On 10/21/15 13:39, Stefano Stabellini wrote:
> Empty cdroms are not going to connect, avoid waiting for the backend to
> switch to state 4, which is never going to happen, and return
> error instead from XenPvBlockFrontInitialization(). Detect an
> empty cdrom by looking at the "params" node on xenstore, which is set to
> "" or "aio:" for empty drives by libxl.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
>
> ---
> Changes in v2:
> - better commit message
> - return EFI_DEVICE_ERROR instead of EFI_NO_MEDIA
> - check the return status of XenBusIo->XsBackendRead
> ---
> OvmfPkg/XenPvBlkDxe/BlockFront.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> 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",
>
Reviewed-by: Laszlo Ersek <lersek@xxxxxxxxxx>
I test-built this for X64 and Ia32, and then committed it to SVN as rev
18651.
Thanks!
Laszlo
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |