From nobody Wed May 8 15:39:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55885+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55885+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373401; cv=none; d=zohomail.com; s=zohoarc; b=LHsFRmQSDHbMMvCWc9vxE4YHxNkIDxfZHaOjmuDMkbufFOXEjV7kywdn4g2Q/6pstPtvHBc4CknO+AduDgNdB1LqGYktCyEx/Ux2Gy38B/bF0P4oT8O3audd+vUBRi2Lw8iZByoHM9MYaPFAx4LK7MeTmP/l+0NCXFwcDL5DkDo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373401; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=bCvtiQfpQZl+TmhZqu6r7uiGPfAOc8MjFSsWkM/+xjs=; b=aZaDX7s1QLLFinKHNbnmT7Mi3FJdes9B4lp51FTqFM/ND0Qu9+vBIWfOsEIdsSg2M8qdO2b0fyvJi0DSYeWLspYhi+clS0s4O3v95UaB0xtgQYGwzKpbBVBPTSydXjnSPiFMq0hoSy8aAFkEHfeKPszTWVoBY2g6zNKHQRRe+jA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55885+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373401373167.5859434001868; Mon, 16 Mar 2020 08:43:21 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id NsvYYY1788612xJPVsHLQSJd; Mon, 16 Mar 2020 08:43:21 -0700 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web11.69741.1584370810101679076 for ; Mon, 16 Mar 2020 08:00:10 -0700 X-Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqjQ6088869; Mon, 16 Mar 2020 15:00:09 GMT X-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2130.oracle.com with ESMTP id 2yrppqyfaf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:09 +0000 X-Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqUMx113918; Mon, 16 Mar 2020 15:00:08 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserp3030.oracle.com with ESMTP id 2ys8tpw8wc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:08 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF06o0011367; Mon, 16 Mar 2020 15:00:06 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:05 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 01/17] OvmfPkg/PvScsiDxe: Create empty driver Date: Mon, 16 Mar 2020 17:00:57 +0200 Message-Id: <20200316150113.104630-2-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: wEtCJM7qxgnZyLWZNOdVIePox1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373401; bh=kUDzdHzzBPXv2k/lmPFzXl4pG5x+YE4ihqU5bSMuLZg=; h=Cc:Date:From:Reply-To:Subject:To; b=lMfOiDZ6c/QRtXH6LtKjAD09Q639Wlf0oEwFySY6obT8ktYRWqS9Q+9jXrRT7knzyWy 1Ssl1JZWdLmZwZ1Tack5fDCS5vs/EnTcu+tMSdoCSDTYAO3lJNUopfldfnB+0xu+zk4KW varmTEdQ5pX1DR0ngs3PVXtnlj4yaTryTGo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" In preparation for support booting from PvScsi devices, create a basic scaffolding for a driver. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/OvmfPkgIa32.dsc | 8 ++++++++ OvmfPkg/OvmfPkgIa32.fdf | 3 +++ OvmfPkg/OvmfPkgIa32X64.dsc | 8 ++++++++ OvmfPkg/OvmfPkgIa32X64.fdf | 3 +++ OvmfPkg/OvmfPkgX64.dsc | 8 ++++++++ OvmfPkg/OvmfPkgX64.fdf | 3 +++ OvmfPkg/PvScsiDxe/PvScsi.c | 24 ++++++++++++++++++++++++ OvmfPkg/PvScsiDxe/PvScsi.inf | 27 +++++++++++++++++++++++++++ 8 files changed, 84 insertions(+) create mode 100644 OvmfPkg/PvScsiDxe/PvScsi.c create mode 100644 OvmfPkg/PvScsiDxe/PvScsi.inf diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 19728f20b34e..79b8c58e54c3 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -44,6 +44,11 @@ =20 !include NetworkPkg/NetworkDefines.dsc.inc =20 + # + # Device drivers + # + DEFINE PVSCSI_ENABLE =3D TRUE + # # Flash size selection. Setting FD_SIZE_IN_KB on the command line direct= ly to # one of the supported values, in place of any of the convenience macros= , is @@ -718,6 +723,9 @@ OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf OvmfPkg/XenBusDxe/XenBusDxe.inf OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +!ifdef $(PVSCSI_ENABLE) + OvmfPkg/PvScsiDxe/PvScsiDxe.inf +!endif MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntim= eDxe.inf MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf index 63607551ed75..f59a58bc2689 100644 --- a/OvmfPkg/OvmfPkgIa32.fdf +++ b/OvmfPkg/OvmfPkgIa32.fdf @@ -227,6 +227,9 @@ INF OvmfPkg/VirtioRngDxe/VirtioRng.inf INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf INF OvmfPkg/XenBusDxe/XenBusDxe.inf INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +!if $(PVSCSI_ENABLE) =3D=3D TRUE + INF OvmfPkg/PvScsiDxe/PvScsiDxe.inf +!endif =20 !if $(SECURE_BOOT_ENABLE) =3D=3D TRUE INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootCon= figDxe.inf diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index 3c0c229e3a72..744f7eb05e12 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -44,6 +44,11 @@ =20 !include NetworkPkg/NetworkDefines.dsc.inc =20 + # + # Device drivers + # + DEFINE PVSCSI_ENABLE =3D TRUE + # # Flash size selection. Setting FD_SIZE_IN_KB on the command line direct= ly to # one of the supported values, in place of any of the convenience macros= , is @@ -731,6 +736,9 @@ OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf OvmfPkg/XenBusDxe/XenBusDxe.inf OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +!ifdef $(PVSCSI_ENABLE) + OvmfPkg/PvScsiDxe/PvScsiDxe.inf +!endif MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntim= eDxe.inf MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf index 0488e5d95ffe..5fd21ea1b2de 100644 --- a/OvmfPkg/OvmfPkgIa32X64.fdf +++ b/OvmfPkg/OvmfPkgIa32X64.fdf @@ -228,6 +228,9 @@ INF OvmfPkg/VirtioRngDxe/VirtioRng.inf INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf INF OvmfPkg/XenBusDxe/XenBusDxe.inf INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +!if $(PVSCSI_ENABLE) =3D=3D TRUE + INF OvmfPkg/PvScsiDxe/PvScsiDxe.inf +!endif =20 !if $(SECURE_BOOT_ENABLE) =3D=3D TRUE INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootCon= figDxe.inf diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index f6c1d8d228c6..64ed3d5ec18e 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -44,6 +44,11 @@ =20 !include NetworkPkg/NetworkDefines.dsc.inc =20 + # + # Device drivers + # + DEFINE PVSCSI_ENABLE =3D TRUE + # # Flash size selection. Setting FD_SIZE_IN_KB on the command line direct= ly to # one of the supported values, in place of any of the convenience macros= , is @@ -729,6 +734,9 @@ OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf OvmfPkg/XenBusDxe/XenBusDxe.inf OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +!ifdef $(PVSCSI_ENABLE) + OvmfPkg/PvScsiDxe/PvScsi.inf +!endif MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntim= eDxe.inf MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf index 0488e5d95ffe..c155993dc16f 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -228,6 +228,9 @@ INF OvmfPkg/VirtioRngDxe/VirtioRng.inf INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf INF OvmfPkg/XenBusDxe/XenBusDxe.inf INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +!if $(PVSCSI_ENABLE) =3D=3D TRUE + INF OvmfPkg/PvScsiDxe/PvScsi.inf +!endif =20 !if $(SECURE_BOOT_ENABLE) =3D=3D TRUE INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootCon= figDxe.inf diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c new file mode 100644 index 000000000000..a3f704d60d77 --- /dev/null +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -0,0 +1,24 @@ +/** @file + + This driver produces Extended SCSI Pass Thru Protocol instances for + pvscsi devices. + + Copyright (C) 2020, Oracle and/or its affiliates. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +// +// Entry Point +// + +EFI_STATUS +EFIAPI +PvScsiEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + return EFI_UNSUPPORTED; +} diff --git a/OvmfPkg/PvScsiDxe/PvScsi.inf b/OvmfPkg/PvScsiDxe/PvScsi.inf new file mode 100644 index 000000000000..093cc0171338 --- /dev/null +++ b/OvmfPkg/PvScsiDxe/PvScsi.inf @@ -0,0 +1,27 @@ +## @file +# +# This driver produces Extended SCSI Pass Thru Protocol instances for +# pvscsi devices. +# +# Copyright (C) 2020, Oracle and/or its affiliates. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 1.29 + BASE_NAME =3D PvScsiDxe + FILE_GUID =3D 30346B14-1580-4781-879D-BA0C55AE9BB2 + MODULE_TYPE =3D UEFI_DRIVER + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D PvScsiEntryPoint + +[Sources] + PvScsi.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + UefiDriverEntryPoint --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55885): https://edk2.groups.io/g/devel/message/55885 Mute This Topic: https://groups.io/mt/72001287/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55880+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55880+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373400; cv=none; d=zohomail.com; s=zohoarc; b=Vi4vPpkOgf4Wmfj+hHBd98sjw33ZR6FBGFFoirCerae0UEBoImOtXL4KH3sWwuM3hDr4eARfl3fcXiJ0nYn/Q/GxOfURtfBig0QoqYRzhIStEqZ1zSpDNCBIQMDhGWMx9KHacY0/MgOFusNMFwiRaXGCM4MqLPYmLNScfAQHV/8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373400; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=+JgFARz26SrtGP0lH0TKwxft7fp9xs0GIaUNHqShxCo=; b=WIZ0RBY3mjnq0heYT2oc2gZ0iI+zIb5Y0WwLRw7RJd04Ds/BzU/aCNgVSnDmzZF0flLCJVittsYPHsoOExy5PNZMX1K768Ty19agZj/7lSqq5GoIiNCraotRIkh7NNu2nmXyiKYTXq+qpStAQ2oleUTFglvscKLCMa08K+d7bHY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55880+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373400106840.1923458354514; Mon, 16 Mar 2020 08:43:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id JI0cYY1788612xNBKxSi041u; Mon, 16 Mar 2020 08:43:19 -0700 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web10.69826.1584370811599930742 for ; Mon, 16 Mar 2020 08:00:11 -0700 X-Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqdwF149219; Mon, 16 Mar 2020 15:00:10 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 2yrq7kqd6n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:10 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqLBS172490; Mon, 16 Mar 2020 15:00:10 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userp3020.oracle.com with ESMTP id 2ys8yvyhak-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:09 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 02GF08o8008741; Mon, 16 Mar 2020 15:00:08 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:08 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 02/17] OvmfPkg/PvScsiDxe: Install DriverBinding protocol Date: Mon, 16 Mar 2020 17:00:58 +0200 Message-Id: <20200316150113.104630-3-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: yzHahWZ6k9wNdQlMftChPkYux1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373399; bh=S8miPeLE+w4RkRfjwvZ4hX35B6Gv/ddcCGd4B0JJZ4s=; h=Cc:Date:From:Reply-To:Subject:To; b=Z+EAstmn/CJ9BRoMvXHMIUNiv56oJOfUJzeTX8eJ/PRmKIt+hTe6eYDUaDP0IlpeHbr hpYdPBz9D2KnKkEva5TZm7AfZ64DKcYBY3sYRm21reN9cTvWDDCov52BjQNy+E/Y7dX9/ 95NYAZACUh9PXPnLLoS96Yv8PqQVDxsCLyI= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" In order to probe and connect to the PvScsi device we need this protocol. Currently it does nothing. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/PvScsiDxe/PvScsi.c | 68 +++++++++++++++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.inf | 1 + 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index a3f704d60d77..bf0c743bad15 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -9,6 +9,65 @@ =20 **/ =20 +#include + +// +// Higher versions will be used before lower, 0x10-0xffffffef is the versi= on +// range for IVH (Indie Hardware Vendors) +// +#define PVSCSI_BINDING_VERSION 0x10 + +// +// Driver Binding +// + +STATIC +EFI_STATUS +EFIAPI +PvScsiDriverBindingSupported ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiDriverBindingStart ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiDriverBindingStop ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_DRIVER_BINDING_PROTOCOL mPvScsiDriverBinding =3D { + &PvScsiDriverBindingSupported, + &PvScsiDriverBindingStart, + &PvScsiDriverBindingStop, + PVSCSI_BINDING_VERSION, + NULL, // ImageHandle, filled by EfiLibInstallDriverBindingComponentName2= () + NULL // DriverBindingHandle, filled as well +}; + // // Entry Point // @@ -20,5 +79,12 @@ PvScsiEntryPoint ( IN EFI_SYSTEM_TABLE *SystemTable ) { - return EFI_UNSUPPORTED; + return EfiLibInstallDriverBindingComponentName2 ( + ImageHandle, + SystemTable, + &mPvScsiDriverBinding, + ImageHandle, + NULL, // TODO Component name + NULL // TODO Component name + ); } diff --git a/OvmfPkg/PvScsiDxe/PvScsi.inf b/OvmfPkg/PvScsiDxe/PvScsi.inf index 093cc0171338..d1d0e963f96d 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.inf +++ b/OvmfPkg/PvScsiDxe/PvScsi.inf @@ -25,3 +25,4 @@ =20 [LibraryClasses] UefiDriverEntryPoint + UefiLib --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55880): https://edk2.groups.io/g/devel/message/55880 Mute This Topic: https://groups.io/mt/72001282/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55886+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55886+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373401; cv=none; d=zohomail.com; s=zohoarc; b=WGgC+p0Y9ps6ngttGtb9UWwacowhNEmm7OXhc2aDYBgG3q+OoGJaE79FRErZ/6GSzcB2dR2R+5YBrstF1defVpKsa964MKpk116RlYPB8dOEXXfAFr6Irh+TzbiGlOJcrFUgdV+wGQ+khZudmgQMqIZNIP6EbYvNMwP/fbhEJKM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373401; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Fm/ritLUbSITEEA3T7+W4RCL465sKDA1E8lqvEhzxpE=; b=kXp0YVw9qr/HwrHbn36wDKxuAFVnN/l+Xy/PA3NgTzY1C/FHzZTn6P2E/h8f0Gfj+0K2nM5bCVZq6rIohc+4E9NSBx26UAadIWSGloJVgr+EsLaSqy3Wy2kFlNY4dQIdF9ISDxzmoclAtuz5NOkptfxUUV+MElYLt8enpefouUs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55886+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373401632900.2650892460983; Mon, 16 Mar 2020 08:43:21 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id mVZXYY1788612x9JBvGVlhCb; Mon, 16 Mar 2020 08:43:21 -0700 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web10.69827.1584370815217614653 for ; Mon, 16 Mar 2020 08:00:15 -0700 X-Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqjKM088847; Mon, 16 Mar 2020 15:00:14 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2130.oracle.com with ESMTP id 2yrppqyfas-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:12 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqNdn172713; Mon, 16 Mar 2020 15:00:12 GMT X-Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userp3020.oracle.com with ESMTP id 2ys8yvyhgw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:12 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 02GF0Bp9029965; Mon, 16 Mar 2020 15:00:11 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:10 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 03/17] OvmfPkg/PvScsiDxe: Report name of driver Date: Mon, 16 Mar 2020 17:00:59 +0200 Message-Id: <20200316150113.104630-4-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: stOBxuIkqsClSBJbYNXSm5P5x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373401; bh=OoekQxoOph45VG1C3vDdKzZrMw7W6x4HhSgzdNOFhy8=; h=Cc:Date:From:Reply-To:Subject:To; b=YyZJhyL+2t8YGv0NTWyhQ2VoMTYkXvkCViwDTXyq9brxxAKfY8V19eodSVvAUbgx92b 0Nw7SdPLrxL612IoVKGaZagkGsIvwfczQeyr4BYWL36eYlTsqx5EF4GO+PGQNATQutH4X 65sUDG4qvgF0Wl8tb9fcGZ1pDxV5REL3Guk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Install Component Name protocols to have a nice display name for the driver in places such as UEFI shell. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/PvScsiDxe/PvScsi.c | 63 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index bf0c743bad15..0c81e645de08 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -68,6 +68,65 @@ EFI_DRIVER_BINDING_PROTOCOL mPvScsiDriverBinding =3D { NULL // DriverBindingHandle, filled as well }; =20 +// +// Component Name +// + +STATIC +EFI_UNICODE_STRING_TABLE mDriverNameTable[] =3D { + { "eng;en", L"PVSCSI Host Driver" }, + { NULL, NULL } +}; + +STATIC +EFI_COMPONENT_NAME_PROTOCOL mComponentName; + +STATIC +EFI_STATUS +EFIAPI +PvScsiGetDriverName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName + ) +{ + return LookupUnicodeString2 ( + Language, + This->SupportedLanguages, + mDriverNameTable, + DriverName, + (BOOLEAN)(This =3D=3D &mComponentName) // Iso639Language + ); +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiGetDeviceName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE DeviceHandle, + IN EFI_HANDLE ChildHandle, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_COMPONENT_NAME_PROTOCOL mComponentName =3D { + &PvScsiGetDriverName, + &PvScsiGetDeviceName, + "eng" // SupportedLanguages, ISO 639-2 language codes +}; + +STATIC +EFI_COMPONENT_NAME2_PROTOCOL mComponentName2 =3D { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) &PvScsiGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) &PvScsiGetDeviceName, + "en" // SupportedLanguages, RFC 4646 language codes +}; + // // Entry Point // @@ -84,7 +143,7 @@ PvScsiEntryPoint ( SystemTable, &mPvScsiDriverBinding, ImageHandle, - NULL, // TODO Component name - NULL // TODO Component name + &mComponentName, + &mComponentName2 ); } --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55886): https://edk2.groups.io/g/devel/message/55886 Mute This Topic: https://groups.io/mt/72001288/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55873+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55873+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373399; cv=none; d=zohomail.com; s=zohoarc; b=T0KYs8tEVo2LrI4wGuXTTSZG4slu5q4rDhU1lwfTmGj9lC6XkPA1+NTpJyeNpHMIO3aGBIT/RwP3aEwkgDcbUWRFsb8XjXPpqLcRYU5kLp1TBHb47sLoZJ73oV3cZ7ZLPfokzZ39hGd2DozyJrblfSX/UIg+gFURxDhRjKaDmHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373399; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=QUcA3VvIThh07pVWaSCtxVCotScGRM8UAV2DRbQrO1w=; b=NpBTS72M5RHJRa4VS6QP3JEaAFy27uRbWRwH0geDFQYcCJ4q7uWBmWrK95cFYgKpK6Icsmbt0RBihtTlUa1RbZbSv6q3gyY3aNkjrVzbZUZs0bDydb1/3D11cCe1dnamxt/vaOsMwNkwW7L8WRx5529VM3zt8uvrsZbLU7NMMH0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55873+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373399112172.78335179865746; Mon, 16 Mar 2020 08:43:19 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id b9kZYY1788612xMp3UPcosMz; Mon, 16 Mar 2020 08:43:18 -0700 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web11.69796.1584370940227839170 for ; Mon, 16 Mar 2020 08:02:20 -0700 X-Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqjQH088869; Mon, 16 Mar 2020 15:02:19 GMT X-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2130.oracle.com with ESMTP id 2yrppqyfvw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:02:17 +0000 X-Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqQvY048514; Mon, 16 Mar 2020 15:00:17 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userp3030.oracle.com with ESMTP id 2ys8rcmqf5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:15 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 02GF0DnC008765; Mon, 16 Mar 2020 15:00:13 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:13 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 04/17] OvmfPkg/PvScsiDxe: Probe PCI devices and look for PvScsi Date: Mon, 16 Mar 2020 17:01:00 +0200 Message-Id: <20200316150113.104630-5-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: 3F3xG3HspXsq5faf6L4fdc40x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373398; bh=vcjiDN4GsUZ7A3ZAM5V7Xzfx3CKKQnUPZZ/HLm5G344=; h=Cc:Date:From:Reply-To:Subject:To; b=I07dgZ6DmY/DIAwGBd9z4pT8BAcQDd5zDX++4w8bcDKirXgTgiBeCqcGHPCD9yPyjs1 felG3yxVK/tuFZdV4YqCCR+rJPEH8bXgJfMIHMhXukyndtuLrk4/k1GYsbtZe5kUXLZXb MleizTPCOtrz809ClymCA3yoiadPbIKcN4k= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" PvScsiControllerSupported() is called on handles passed in by the ConnectController() boot service and if the handle is the PVSCSI controller, the function would return success. A success return value will attach our driver to the device. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/Include/IndustryStandard/PvScsi.h | 21 ++++++++++ OvmfPkg/PvScsiDxe/PvScsi.c | 49 ++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.inf | 5 +++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 OvmfPkg/Include/IndustryStandard/PvScsi.h diff --git a/OvmfPkg/Include/IndustryStandard/PvScsi.h b/OvmfPkg/Include/In= dustryStandard/PvScsi.h new file mode 100644 index 000000000000..004c0af84989 --- /dev/null +++ b/OvmfPkg/Include/IndustryStandard/PvScsi.h @@ -0,0 +1,21 @@ +/** @file + + VMware PVSCSI Device specific type and macro definitions. + + Copyright (C) 2020, Oracle and/or its affiliates. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __PVSCSI_H_ +#define __PVSCSI_H_ + +// +// Device offsets and constants +// + +#define PCI_VENDOR_ID_VMWARE (0x15ad) +#define PCI_DEVICE_ID_VMWARE_PVSCSI (0x07c0) + +#endif // __PVSCSI_H_ diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index 0c81e645de08..f1fffe962233 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -9,7 +9,11 @@ =20 **/ =20 +#include +#include +#include #include +#include =20 // // Higher versions will be used before lower, 0x10-0xffffffef is the versi= on @@ -30,7 +34,50 @@ PvScsiDriverBindingSupported ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - return EFI_UNSUPPORTED; + EFI_STATUS Status; + EFI_PCI_IO_PROTOCOL *PciIo; + PCI_TYPE00 Pci; + + Status =3D gBS->OpenProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + (VOID **)&PciIo, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Status =3D PciIo->Pci.Read ( + PciIo, + EfiPciIoWidthUint32, + 0, + sizeof(Pci) / sizeof(UINT32), + &Pci + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + if ((Pci.Hdr.VendorId !=3D PCI_VENDOR_ID_VMWARE) || + (Pci.Hdr.DeviceId !=3D PCI_DEVICE_ID_VMWARE_PVSCSI)) { + Status =3D EFI_UNSUPPORTED; + goto Done; + } + + Status =3D EFI_SUCCESS; + +Done: + gBS->CloseProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); + + return Status; } =20 STATIC diff --git a/OvmfPkg/PvScsiDxe/PvScsi.inf b/OvmfPkg/PvScsiDxe/PvScsi.inf index d1d0e963f96d..c1f0663832ed 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.inf +++ b/OvmfPkg/PvScsiDxe/PvScsi.inf @@ -22,7 +22,12 @@ =20 [Packages] MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec =20 [LibraryClasses] + UefiBootServicesTableLib UefiDriverEntryPoint UefiLib + +[Protocols] + gEfiPciIoProtocolGuid ## TO_START --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55873): https://edk2.groups.io/g/devel/message/55873 Mute This Topic: https://groups.io/mt/72001275/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55870+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55870+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373398; cv=none; d=zohomail.com; s=zohoarc; b=iuxVOSfLoAHpRXNis4FWEtQmTBuQb2cmIme488XS+N1dOmI1S9VGJLfk8i4yo2rggcP1aawgYLVk9CShg/wxS7Mm6/NuSafwBWNecX+7qc994A1tAbYvaDIn3lMgjVSHOcie/qpjN/qZSg0aaRpxyruRMnE1ykqOHRaOGx410cA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373398; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=T9d5Nqxg9ZM29CqSFwiIQhdrDWxz0kS3vn311VLdHVI=; b=UFClIKE1Xz+bKIcsfP1JLQ4ywGvBpSBfF1SfRI/dAJwFQ6StG/VZJC+jdvZ0rNim0nWviR9L0OyY+dXt6XaVvfH/kbTkQKxFDV6xu2YOL2RCaIaVYHpOoiLKa4NElU5Hv/3bISAl/mm1iBc4Z6W/BJKmCYwwqitN8y7/rlKhVxc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55870+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373398393558.3926294202346; Mon, 16 Mar 2020 08:43:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id T5XpYY1788612xWbAU4HNwKZ; Mon, 16 Mar 2020 08:43:17 -0700 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web11.69745.1584370820057606187 for ; Mon, 16 Mar 2020 08:00:20 -0700 X-Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqih9088803; Mon, 16 Mar 2020 15:00:19 GMT X-Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2130.oracle.com with ESMTP id 2yrppqyfbh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:19 +0000 X-Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEpX3Q074902; Mon, 16 Mar 2020 15:00:18 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserp3020.oracle.com with ESMTP id 2ys929utsd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:17 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0FCi011437; Mon, 16 Mar 2020 15:00:16 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:15 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 05/17] OvmfPkg/PvScsiDxe: Install stubbed EXT_SCSI_PASS_THRU Date: Mon, 16 Mar 2020 17:01:01 +0200 Message-Id: <20200316150113.104630-6-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: bLCBXuveZ3GXk4nxjJVLd3LFx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373397; bh=AktToSilfvrHlGvNgIPoY65r9PpPHb3tae5kQsep460=; h=Cc:Date:From:Reply-To:Subject:To; b=KcaKEoxUQTKkVPYobDjLIqy+/ugHbsf0Wnmk+voH0MdhoYv3XD2AD6oMejiMRDnMCjL DBlQFijBQpvTw7OY5nDZMqIpnLCjYOJ17Tobh20rKAJJpcijomV4hkWvVZhjX1EBK0rki gq/S13wJ/2uLHK90dmdFZwgOlS6TSmhFT7A= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Support dynamic insertion and removal of the protocol. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/PvScsiDxe/PvScsi.c | 209 ++++++++++++++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.h | 29 +++++ OvmfPkg/PvScsiDxe/PvScsi.inf | 5 +- 3 files changed, 240 insertions(+), 3 deletions(-) create mode 100644 OvmfPkg/PvScsiDxe/PvScsi.h diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index f1fffe962233..46b430a34a57 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -11,16 +11,155 @@ =20 #include #include +#include #include #include #include =20 +#include "PvScsi.h" + // // Higher versions will be used before lower, 0x10-0xffffffef is the versi= on // range for IVH (Indie Hardware Vendors) // #define PVSCSI_BINDING_VERSION 0x10 =20 +// +// Ext SCSI Pass Thru +// + +STATIC +EFI_STATUS +EFIAPI +PvScsiPassThru ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN UINT8 *Target, + IN UINT64 Lun, + IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, + IN EFI_EVENT Event OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiGetNextTargetLun ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN OUT UINT8 **Target, + IN OUT UINT64 *Lun + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiBuildDevicePath ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN UINT8 *Target, + IN UINT64 Lun, + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiGetTargetLun ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, + OUT UINT8 **Target, + OUT UINT64 *Lun + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiResetChannel ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiResetTargetLun ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN UINT8 *Target, + IN UINT64 Lun + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +PvScsiGetNextTarget ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN OUT UINT8 **Target + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +PvScsiInit ( + IN OUT PVSCSI_DEV *Dev + ) +{ + // + // Populate the exported interface's attributes + // + Dev->PassThru.Mode =3D &Dev->PassThruMode; + Dev->PassThru.PassThru =3D &PvScsiPassThru; + Dev->PassThru.GetNextTargetLun =3D &PvScsiGetNextTargetLun; + Dev->PassThru.BuildDevicePath =3D &PvScsiBuildDevicePath; + Dev->PassThru.GetTargetLun =3D &PvScsiGetTargetLun; + Dev->PassThru.ResetChannel =3D &PvScsiResetChannel; + Dev->PassThru.ResetTargetLun =3D &PvScsiResetTargetLun; + Dev->PassThru.GetNextTarget =3D &PvScsiGetNextTarget; + + // + // AdapterId is a target for which no handle will be created during bus = scan. + // Prevent any conflict with real devices. + // + Dev->PassThruMode.AdapterId =3D MAX_UINT32; + + // + // Set both physical and logical attributes for non-RAID SCSI channel + // + Dev->PassThruMode.Attributes =3D EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_PHYSI= CAL | + EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL; + + // + // No restriction on transfer buffer alignment + // + Dev->PassThruMode.IoAlign =3D 0; + + return EFI_SUCCESS; +} + +STATIC +VOID +PvScsiUninit ( + IN OUT PVSCSI_DEV *Dev + ) +{ + // Currently nothing to do here +} + // // Driver Binding // @@ -89,7 +228,42 @@ PvScsiDriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - return EFI_UNSUPPORTED; + PVSCSI_DEV *Dev; + EFI_STATUS Status; + + Dev =3D (PVSCSI_DEV *) AllocateZeroPool (sizeof (*Dev)); + if (Dev =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Status =3D PvScsiInit (Dev); + if (EFI_ERROR (Status)) { + goto FreePvScsi; + } + + // + // Setup complete, attempt to export the driver instance's PassThru inte= rface + // + Dev->Signature =3D PVSCSI_SIG; + Status =3D gBS->InstallProtocolInterface ( + &ControllerHandle, + &gEfiExtScsiPassThruProtocolGuid, + EFI_NATIVE_INTERFACE, + &Dev->PassThru + ); + if (EFI_ERROR (Status)) { + goto UninitDev; + } + + return EFI_SUCCESS; + +UninitDev: + PvScsiUninit (Dev); + +FreePvScsi: + FreePool (Dev); + + return Status; } =20 STATIC @@ -102,7 +276,38 @@ PvScsiDriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer ) { - return EFI_UNSUPPORTED; + EFI_STATUS Status; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru; + PVSCSI_DEV *Dev; + + Status =3D gBS->OpenProtocol ( + ControllerHandle, + &gEfiExtScsiPassThruProtocolGuid, + (VOID **)&PassThru, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL // Lookup only + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Dev =3D PVSCSI_FROM_PASS_THRU (PassThru); + + Status =3D gBS->UninstallProtocolInterface ( + ControllerHandle, + &gEfiExtScsiPassThruProtocolGuid, + &Dev->PassThru + ); + if (EFI_ERROR (Status)) { + return Status; + } + + PvScsiUninit (Dev); + + FreePool (Dev); + + return EFI_SUCCESS; } =20 STATIC diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h new file mode 100644 index 000000000000..3940b4c20019 --- /dev/null +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -0,0 +1,29 @@ +/** @file + + Internal definitions for the PVSCSI driver, which produces Extended SCSI + Pass Thru Protocol instances for pvscsi devices. + + Copyright (C) 2020, Oracle and/or its affiliates. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __PVSCSI_DXE_H_ +#define __PVSCSI_DXE_H_ + +#include +#include + +#define PVSCSI_SIG SIGNATURE_32 ('P', 'S', 'C', 'S') + +typedef struct { + UINT32 Signature; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; + EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; +} PVSCSI_DEV; + +#define PVSCSI_FROM_PASS_THRU(PassThruPointer) \ + CR (PassThruPointer, PVSCSI_DEV, PassThru, PVSCSI_SIG) + +#endif // __PVSCSI_DXE_H_ diff --git a/OvmfPkg/PvScsiDxe/PvScsi.inf b/OvmfPkg/PvScsiDxe/PvScsi.inf index c1f0663832ed..3a8b07872ba3 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.inf +++ b/OvmfPkg/PvScsiDxe/PvScsi.inf @@ -25,9 +25,12 @@ OvmfPkg/OvmfPkg.dec =20 [LibraryClasses] + DebugLib + MemoryAllocationLib UefiBootServicesTableLib UefiDriverEntryPoint UefiLib =20 [Protocols] - gEfiPciIoProtocolGuid ## TO_START + gEfiPciIoProtocolGuid ## TO_START + gEfiExtScsiPassThruProtocolGuid ## BY_START --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55870): https://edk2.groups.io/g/devel/message/55870 Mute This Topic: https://groups.io/mt/72001272/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55881+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55881+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373400; cv=none; d=zohomail.com; s=zohoarc; b=iUQTFW0wgAHxVNjtKh7zKJwTextaRcTo+SlzfPrlwgj57aOjti3MenctAhNagNKzQb1rqYb6sUzQPH/Aq20uScEFxpenH6PSHPzLx95MnFtzyYctSq2Zvwux6AQ/SM42a7zaE+0/f/+MFiOJMg2zHpTt2yzb+zltN+sVwej4SuU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373400; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=FVr8nyePSOnkptN/3EFFRQ4xZ4VugfkWX/0f3E6kvpc=; b=ezXLKWtU3imdIfVYADaAAU9vAJLKR34RsLu/NVuXXhnYPbOKytq+EmaMU7EBi3qnvyhPls4AD+/tPvS665Lt7o+eJX5p1ntcmlTzOUxNLFKkRf+rxQYV6qng3+0d+IrSS4cicvUTrG6emUg1STOaOjKuzLKyexvZboaDclD0P7k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55881+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373400649555.8701337379491; Mon, 16 Mar 2020 08:43:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id N27lYY1788612xi09GsVvL0T; Mon, 16 Mar 2020 08:43:20 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web11.69746.1584370822512896477 for ; Mon, 16 Mar 2020 08:00:22 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErlIm156949; Mon, 16 Mar 2020 15:00:22 GMT X-Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2120.oracle.com with ESMTP id 2yrqwmyab3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:19 +0000 X-Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEpVMu074704; Mon, 16 Mar 2020 15:00:19 GMT X-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3020.oracle.com with ESMTP id 2ys929utvj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:19 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0IHA009162; Mon, 16 Mar 2020 15:00:18 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:17 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 06/17] OvmfPkg/PvScsiDxe: Report the number of targets and LUNs Date: Mon, 16 Mar 2020 17:01:02 +0200 Message-Id: <20200316150113.104630-7-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: aPA5F61ie5B5m5t3rOM3eUvqx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373400; bh=VhzjspsQhncEw+r846rxU6MVRBYaJi1wN+97Izahv2Q=; h=Cc:Date:From:Reply-To:Subject:To; b=Ox+Mwzo+kPxVfJxxBOmHkLB0MItIQw+fL3eine1xTNVMit9UTMfKNyvav9C/LjvznMg SHhoQwwebgv40FmTd1NiXuai4wR4xBEBkEzsqdBo6WvPhyRtC+qmDz+nAFglBMlkgw42H k4wiVdyMBV8TQnfyXpZMfwE5J4dl2HJAUm8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Implement EXT_SCSI_PASS_THRU.GetNextTarget() and EXT_SCSI_PASS_THRU.GetNextTargetLun(). ScsiBusDxe scans all MaxTarget * MaxLun possible devices. This can take unnecessarily long for large number of targets. To deal with this, VirtioScsiDxe has defined PCDs to limit the MaxTarget & MaxLun to desired values which gives sufficient performance. It is very important in virtio-scsi as it can have very big MaxTarget & MaxLun. Even though a common PVSCSI device has a default MaxTarget=3D64 and MaxLun=3D0, we implement similar mechanism as virtio-scsi for completeness. This may be useful in the future when PVSCSI will have bigger values for MaxTarget and MaxLun. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/OvmfPkg.dec | 9 +++ OvmfPkg/PvScsiDxe/PvScsi.c | 122 ++++++++++++++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.h | 2 + OvmfPkg/PvScsiDxe/PvScsi.inf | 5 ++ 4 files changed, 136 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec index 4c5b6511cb97..76ce507e8bd0 100644 --- a/OvmfPkg/OvmfPkg.dec +++ b/OvmfPkg/OvmfPkg.dec @@ -121,6 +121,15 @@ gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxTargetLimit|31|UINT16|6 gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxLunLimit|7|UINT32|7 =20 + ## Sets the *inclusive* number of targets and LUNs that PvScsi exposes f= or + # scan by ScsiBusDxe. + # As specified above for VirtioScsi, ScsiBusDxe scans all MaxTarget * Ma= xLun + # possible devices, which can take extremely long. Thus, the blow consta= nts + # are used so that scanning the number of devices given by their product + # is still acceptably fast. + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxTargetLimit|64|UINT8|0x40 + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxLunLimit|0|UINT8|0x41 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase|0x0|UINT32|= 0x8 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize|0x0|UINT32|= 0x9 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize|0x0|UINT32|0xa diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index 46b430a34a57..76bb361c7c94 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -11,6 +11,7 @@ =20 #include #include +#include #include #include #include @@ -24,6 +25,30 @@ // #define PVSCSI_BINDING_VERSION 0x10 =20 +// +// Ext SCSI Pass Thru utilities +// + +// +// Check if Target argument to EXT_SCSI_PASS_THRU.GetNextTarget() and +// EXT_SCSI_PASS_THRU.GetNextTargetLun() is initialized +// +STATIC +BOOLEAN +IsTargetInitialized ( + IN UINT8 *Target + ) +{ + UINTN Idx; + + for (Idx =3D 0; Idx < TARGET_MAX_BYTES; ++Idx) { + if (Target[Idx] !=3D 0xFF) { + return TRUE; + } + } + return FALSE; +} + // // Ext SCSI Pass Thru // @@ -51,7 +76,54 @@ PvScsiGetNextTargetLun ( IN OUT UINT64 *Lun ) { - return EFI_UNSUPPORTED; + UINT8 *TargetPtr; + UINT8 LastTarget; + PVSCSI_DEV *Dev; + + if (Target =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // The TargetPointer input parameter is unnecessarily a pointer-to-point= er + // + TargetPtr =3D *Target; + + // + // If target not initialized, return first target & LUN + // + if (!IsTargetInitialized (TargetPtr)) { + ZeroMem (TargetPtr, TARGET_MAX_BYTES); + *Lun =3D 0; + return EFI_SUCCESS; + } + + // + // We only use first byte of target identifer + // + LastTarget =3D *TargetPtr; + + // + // Increment (target, LUN) pair if valid on input + // + Dev =3D PVSCSI_FROM_PASS_THRU (This); + if (LastTarget > Dev->MaxTarget || *Lun > Dev->MaxLun) { + return EFI_INVALID_PARAMETER; + } + + if (*Lun < Dev->MaxLun) { + ++*Lun; + return EFI_SUCCESS; + } + + if (LastTarget < Dev->MaxTarget) { + *Lun =3D 0; + ++LastTarget; + *TargetPtr =3D LastTarget; + return EFI_SUCCESS; + } + + return EFI_NOT_FOUND; } =20 STATIC @@ -110,7 +182,47 @@ PvScsiGetNextTarget ( IN OUT UINT8 **Target ) { - return EFI_UNSUPPORTED; + UINT8 *TargetPtr; + UINT8 LastTarget; + PVSCSI_DEV *Dev; + + if (Target =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // The Target input parameter is unnecessarily a pointer-to-pointer + // + TargetPtr =3D *Target; + + // + // If target not initialized, return first target + // + if (!IsTargetInitialized (TargetPtr)) { + ZeroMem (TargetPtr, TARGET_MAX_BYTES); + return EFI_SUCCESS; + } + + // + // We only use first byte of target identifer + // + LastTarget =3D *TargetPtr; + + // + // Increment target if valid on input + // + Dev =3D PVSCSI_FROM_PASS_THRU (This); + if (LastTarget > Dev->MaxTarget) { + return EFI_INVALID_PARAMETER; + } + + if (LastTarget < Dev->MaxTarget) { + ++LastTarget; + *TargetPtr =3D LastTarget; + return EFI_SUCCESS; + } + + return EFI_NOT_FOUND; } =20 STATIC @@ -119,6 +231,12 @@ PvScsiInit ( IN OUT PVSCSI_DEV *Dev ) { + // + // Init configuration + // + Dev->MaxTarget =3D PcdGet8 (PcdPvScsiMaxTargetLimit); + Dev->MaxLun =3D PcdGet8 (PcdPvScsiMaxLunLimit); + // // Populate the exported interface's attributes // diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h index 3940b4c20019..dd3e0c68e6da 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.h +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -19,6 +19,8 @@ =20 typedef struct { UINT32 Signature; + UINT8 MaxTarget; + UINT8 MaxLun; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; } PVSCSI_DEV; diff --git a/OvmfPkg/PvScsiDxe/PvScsi.inf b/OvmfPkg/PvScsiDxe/PvScsi.inf index 3a8b07872ba3..96bd4e4a9a8b 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.inf +++ b/OvmfPkg/PvScsiDxe/PvScsi.inf @@ -25,6 +25,7 @@ OvmfPkg/OvmfPkg.dec =20 [LibraryClasses] + BaseMemoryLib DebugLib MemoryAllocationLib UefiBootServicesTableLib @@ -34,3 +35,7 @@ [Protocols] gEfiPciIoProtocolGuid ## TO_START gEfiExtScsiPassThruProtocolGuid ## BY_START + +[Pcd] + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxTargetLimit ## CONSUMES + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxLunLimit ## CONSUMES --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55881): https://edk2.groups.io/g/devel/message/55881 Mute This Topic: https://groups.io/mt/72001283/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55874+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55874+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373399; cv=none; d=zohomail.com; s=zohoarc; b=MkRI0LCB7K3AylgQ8FGbsyIFX3H2FWnJYMaiWb6kNH1DRwYspSax2s/DbnKBU2hJzVdsBJnSjXXxjwB1Z+BXKdmC3HfKW/uxMmR0KaiPdTPCNVoGR+J45cbTPJ7+psfxEa6v7XR8pDOyNRV75ZYnr4HMcAS1/yqmBJDTMtZZgm8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373399; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=5kf4U4+PJUL7OYZQMNMFgcOjIzrQoQyxc9/5OAiY7Xw=; b=BtltWblboia8QjJYBpUcqqPMCInncLT6/lGH01nzy3Jifx0CyUlV3cPjSRqZyLupupAKtqzOnZRUZGpgW0sAVCi2BKmwIFMPKc9bw7Zu4DkjvbWZA/ZoQktTkvtUQlRillRcmr4paQM/fuzTIl8lwtpg9bXEPC3MtvXhpUCuHCM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55874+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373399290253.41327240467774; Mon, 16 Mar 2020 08:43:19 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 5F62YY1788612xQFstl95inI; Mon, 16 Mar 2020 08:43:19 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web10.69874.1584370945323435090 for ; Mon, 16 Mar 2020 08:02:25 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErgwg156914; Mon, 16 Mar 2020 15:02:25 GMT X-Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2120.oracle.com with ESMTP id 2yrqwmyavv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:02:22 +0000 X-Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEpY1H075045; Mon, 16 Mar 2020 15:00:22 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserp3020.oracle.com with ESMTP id 2ys929uu03-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:22 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0KTe011470; Mon, 16 Mar 2020 15:00:20 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:20 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 07/17] OvmfPkg/PvScsiDxe: Translate Target & LUN to/from DevicePath Date: Mon, 16 Mar 2020 17:01:03 +0200 Message-Id: <20200316150113.104630-8-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: lF0CQnjjQ3BQEA7ekVwSv68cx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373399; bh=rjPfssaD5P9r1FJwGA9klmpbO02osI3aQoPXyd0qs4c=; h=Cc:Date:From:Reply-To:Subject:To; b=f2X6psV7jted8XXSolxV1WxbCvBHnWjywxYo4xIYYCAdJJERU3lfCiAULFYxzkyZDef R3Gd3Vsmmust5Tw5MlGjHsuGhYLB9cumILyZ+4ChV4lRPdIlemgJOKp+nrTZPhLhVqWj3 jX6tOq3HUTytWFL+DnV6LtBYiXU/gLz3rss= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Implement EXT_SCSI_PASS_THRU.BuildDevicePath() and EXT_SCSI_PASS_THRU.GetTargetLun(). Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/PvScsiDxe/PvScsi.c | 60 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index 76bb361c7c94..f613870e80f2 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -136,7 +136,38 @@ PvScsiBuildDevicePath ( IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath ) { - return EFI_UNSUPPORTED; + UINT8 TargetValue; + PVSCSI_DEV *Dev; + SCSI_DEVICE_PATH *ScsiDevicePath; + + if (DevicePath =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // We only use first byte of target identifer + // + TargetValue =3D *Target; + + Dev =3D PVSCSI_FROM_PASS_THRU (This); + if (TargetValue > Dev->MaxTarget || Lun > Dev->MaxLun) { + return EFI_NOT_FOUND; + } + + ScsiDevicePath =3D AllocatePool (sizeof (*ScsiDevicePath)); + if (ScsiDevicePath =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + ScsiDevicePath->Header.Type =3D MESSAGING_DEVICE_PATH; + ScsiDevicePath->Header.SubType =3D MSG_SCSI_DP; + ScsiDevicePath->Header.Length[0] =3D (UINT8)sizeof (*ScsiDevicePath); + ScsiDevicePath->Header.Length[1] =3D (UINT8)(sizeof (*ScsiDevicePath) >>= 8); + ScsiDevicePath->Pun =3D TargetValue; + ScsiDevicePath->Lun =3D (UINT16)Lun; + + *DevicePath =3D &ScsiDevicePath->Header; + return EFI_SUCCESS; } =20 STATIC @@ -149,7 +180,32 @@ PvScsiGetTargetLun ( OUT UINT64 *Lun ) { - return EFI_UNSUPPORTED; + SCSI_DEVICE_PATH *ScsiDevicePath; + PVSCSI_DEV *Dev; + + if (DevicePath =3D=3D NULL || Target =3D=3D NULL || *Target =3D=3D NULL = || Lun =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + if (DevicePath->Type !=3D MESSAGING_DEVICE_PATH || + DevicePath->SubType !=3D MSG_SCSI_DP) { + return EFI_UNSUPPORTED; + } + + ScsiDevicePath =3D (SCSI_DEVICE_PATH *)DevicePath; + Dev =3D PVSCSI_FROM_PASS_THRU (This); + if (ScsiDevicePath->Pun > Dev->MaxTarget || + ScsiDevicePath->Lun > Dev->MaxLun) { + return EFI_NOT_FOUND; + } + + // + // We only use first byte of target identifer + // + **Target =3D (UINT8)ScsiDevicePath->Pun; + *Lun =3D ScsiDevicePath->Lun; + + return EFI_SUCCESS; } =20 STATIC --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55874): https://edk2.groups.io/g/devel/message/55874 Mute This Topic: https://groups.io/mt/72001276/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55887+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55887+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373401; cv=none; d=zohomail.com; s=zohoarc; b=jKwFm6Mr55t74SOsAwJ62DmIh+qOaqrSEkmBtk86JzLBTHVtiNc0KAWhdcdcaoi4R8DgMt7B4LA8FoUWrvtHTGeuEeuax6gXgtRkl6YGzRWQ+Vm4t6cu5e4yeo8lZ1A1QSZNl33mge3ghIoSWOS6WA+AwKZARVq6zVb5L40QamM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373401; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=6RqYPmiFLuGdOSCwsvAM/hnisIeH9d74/c6ajNNZjJc=; b=TsgmyyBkTiY/8CkfytWzuS7EIlIaaq0fKjfIhMQLxULBKzyxBDEk8wz09XJpLU1taAl4n6jVcGGO1ZxM2URn0r8xDJ9mXIeK4ePW2mCOVwBBgpw7Dq4+pBIvxDx21AJMy/qRw3ODHOCsaFGeTM/Sqmzpht59Bhhqk22I9kP21c8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55887+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373401925496.7388434775386; Mon, 16 Mar 2020 08:43:21 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id oWmMYY1788612xpdAzbuqZbz; Mon, 16 Mar 2020 08:43:21 -0700 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web10.69832.1584370825124000600 for ; Mon, 16 Mar 2020 08:00:25 -0700 X-Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqmxs088906; Mon, 16 Mar 2020 15:00:24 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2130.oracle.com with ESMTP id 2yrppqyfc8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:24 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqXD6173360; Mon, 16 Mar 2020 15:00:24 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userp3020.oracle.com with ESMTP id 2ys8yvyj26-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:24 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 02GF0N1a008929; Mon, 16 Mar 2020 15:00:23 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:22 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 08/17] OvmfPkg/PvScsiDxe: Open PciIo protocol for later use Date: Mon, 16 Mar 2020 17:01:04 +0200 Message-Id: <20200316150113.104630-9-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: FeJaU43qfwwEZ7i9I4gPVoqFx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373401; bh=imxLWfPktZ8cafKlvcx4zeQtT5vppwfWOg14JgO/fPI=; h=Cc:Date:From:Reply-To:Subject:To; b=scC1cF9modvG0S30a7nI0gZxUZ5q9LJTX3yqDscNWyXj73bnduQh6VyJM5+1nMgOCBh nhO9DgCekEUPXniob0CiO+P7hNo22TErTDFk13QTLe6BCYBNIytHeMGjKkuXHT9aCMwsR W7XpqvAcDBBWQC2r9GeCj275qCBVeZQr1hc= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" This will give us an exclusive access to the PciIo of this device after it was started and until is will be stopped. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/PvScsiDxe/PvScsi.c | 29 ++++++++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.h | 1 + 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index f613870e80f2..b6a83d73cead 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -410,11 +410,23 @@ PvScsiDriverBindingStart ( return EFI_OUT_OF_RESOURCES; } =20 - Status =3D PvScsiInit (Dev); + Status =3D gBS->OpenProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + (VOID **)&Dev->PciIo, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER + ); if (EFI_ERROR (Status)) { goto FreePvScsi; } =20 + Status =3D PvScsiInit (Dev); + if (EFI_ERROR (Status)) { + goto ClosePciIo; + } + // // Setup complete, attempt to export the driver instance's PassThru inte= rface // @@ -434,6 +446,14 @@ PvScsiDriverBindingStart ( UninitDev: PvScsiUninit (Dev); =20 +ClosePciIo: + gBS->CloseProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); + FreePvScsi: FreePool (Dev); =20 @@ -479,6 +499,13 @@ PvScsiDriverBindingStop ( =20 PvScsiUninit (Dev); =20 + gBS->CloseProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); + FreePool (Dev); =20 return EFI_SUCCESS; diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h index dd3e0c68e6da..e1e5ae18ebf2 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.h +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -19,6 +19,7 @@ =20 typedef struct { UINT32 Signature; + EFI_PCI_IO_PROTOCOL *PciIo; UINT8 MaxTarget; UINT8 MaxLun; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55887): https://edk2.groups.io/g/devel/message/55887 Mute This Topic: https://groups.io/mt/72001289/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55876+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55876+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373399; cv=none; d=zohomail.com; s=zohoarc; b=ghbhhFqLdQ7KahNkNyntyCXKGsiZGhW0vGwEHOPLFchVthjNOEfk9V543m71ZlurRTWBySh6UA1RD9xKiYsLz9lb0K41faDc01/b05fa/EXWK3jt1dbutGUzKQjUKHprgRW4g0TIba3FEvaoKznN3rUrgBzFLiIlqvaGNYr/Nos= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373399; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=+6MH8wD6suc5QoBndLECXZ0ouLUboYCWIXXiQvN3T6I=; b=bUJvYU9VP5k637lzirCfpLgelI6Re9HriH0LQiLgPL857USoF1+v4sKT2zwCC+rVStmCf9z59Iqd6heiZfwZmIc78FATP5i47PvZpFSrksVTWc0g9OCFZ1vgNUJ1+iTPIHOAlYWLZtZi7a4lxqSmHCMRZQodFNq01osdxNzKdco= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55876+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373399430224.42017776586158; Mon, 16 Mar 2020 08:43:19 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 8YgDYY1788612xlYoTQaixR5; Mon, 16 Mar 2020 08:43:19 -0700 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web10.69834.1584370829017941145 for ; Mon, 16 Mar 2020 08:00:29 -0700 X-Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqjxe149326; Mon, 16 Mar 2020 15:00:28 GMT X-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2120.oracle.com with ESMTP id 2yrq7kqd8n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:28 +0000 X-Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqXaw114389; Mon, 16 Mar 2020 15:00:28 GMT X-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 2ys8tpw9s3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:25 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0PPd009289; Mon, 16 Mar 2020 15:00:25 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:25 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 09/17] OvmfPkg/PvScsiDxe: Backup/Restore PCI attributes on Init/UnInit Date: Mon, 16 Mar 2020 17:01:05 +0200 Message-Id: <20200316150113.104630-10-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: Ql6ON6DPOvW8O7MVyakjwiDmx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373399; bh=YrkMKI8W45CW4/vnIFbOoBgJ5gBbSHLOJVmTLhvxIpE=; h=Cc:Date:From:Reply-To:Subject:To; b=m9wy0HhR6DS/nBkjtjhwP11hcAXQMpqt1g+BiHOvKw95Ljwh0BXlKrlkzm0Kj/bFf+2 ajJc4LGaQnH2mMPliOO9Elyj+m6681xbbCZazX45MzFMTXwLoL5K/5NzA1sxohldjAr0J CtUPTG/lk2pogdy0wgR3EEt3lERYPQcKelw= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" This commit doesn't change semantics. It is done as a preparation for future commits which will modify PCI attributes. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/PvScsiDxe/PvScsi.c | 53 +++++++++++++++++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.h | 1 + 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index b6a83d73cead..92e0f4a98965 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -281,18 +281,59 @@ PvScsiGetNextTarget ( return EFI_NOT_FOUND; } =20 +STATIC +EFI_STATUS +PvScsiSetPCIAttributes ( + IN OUT PVSCSI_DEV *Dev + ) +{ + EFI_STATUS Status; + + // + // Set saved original PCI attirubtes to invalid value + // such that cleanup logic could determine if it should restore + // PCI attributes or not + // + Dev->OriginalPciAttributes =3D (UINT64)(-1); + + // + // Backup original PCI Attributes + // + Status =3D Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationGet, + 0, + &Dev->OriginalPciAttributes + ); + if (EFI_ERROR (Status)) { + return Status; + } + + return EFI_SUCCESS; +} + STATIC EFI_STATUS PvScsiInit ( IN OUT PVSCSI_DEV *Dev ) { + EFI_STATUS Status; + // // Init configuration // Dev->MaxTarget =3D PcdGet8 (PcdPvScsiMaxTargetLimit); Dev->MaxLun =3D PcdGet8 (PcdPvScsiMaxLunLimit); =20 + // + // Set PCI Attributes + // + Status =3D PvScsiSetPCIAttributes (Dev); + if (EFI_ERROR (Status)) { + return Status; + } + // // Populate the exported interface's attributes // @@ -331,7 +372,17 @@ PvScsiUninit ( IN OUT PVSCSI_DEV *Dev ) { - // Currently nothing to do here + // + // Restore PCI Attributes + // + if (Dev->OriginalPciAttributes !=3D (UINT64)(-1)) { + Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationSet, + Dev->OriginalPciAttributes, + NULL + ); + } } =20 // diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h index e1e5ae18ebf2..5f611dbbc98c 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.h +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -20,6 +20,7 @@ typedef struct { UINT32 Signature; EFI_PCI_IO_PROTOCOL *PciIo; + UINT64 OriginalPciAttributes; UINT8 MaxTarget; UINT8 MaxLun; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55876): https://edk2.groups.io/g/devel/message/55876 Mute This Topic: https://groups.io/mt/72001278/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55882+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55882+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373400; cv=none; d=zohomail.com; s=zohoarc; b=ji9Khgy/OmU1h0xyiRUT3vNlhLljfqZ3kerF5SbfvJW+yUSrWbGaqWBmElI+8uc88HIAenCWO/X+r/9nNayqu8mOthy0B0rzrwTl4SYyNz4maYffFeNcmhBiwGveHss2/N3xSx0SSkmwnYPfb8RuyQN6e07zSQwgGA7QJek1eTw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373400; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=kiD31uqvb6pDDtewoFcT0NVLdYf/6BlM1iPrB7SPXPk=; b=HaccrNl6PNCfuNCymgrjTG7n/U/PEMtf64phwmjmwJJOC+gVxm94LbDpe4ud0U9aDuK6iEwEp3aDjLAuf3hIdLqs/7wmuZzkUPDrFfjY58kH/qa53BWeauVySRpNc9lAdUdfXjQCMansF/33LP5aDvjMlwhQWGOCFSXHHjPmY30= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55882+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 15843734008711007.3924393763159; Mon, 16 Mar 2020 08:43:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id SMqJYY1788612xx0WTGZD1b7; Mon, 16 Mar 2020 08:43:20 -0700 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web12.69777.1584370831169977807 for ; Mon, 16 Mar 2020 08:00:31 -0700 X-Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqfbG149298; Mon, 16 Mar 2020 15:00:30 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 2yrq7kqd8v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:30 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqLBY172490; Mon, 16 Mar 2020 15:00:29 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 2ys8yvyj90-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:29 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0STn011617; Mon, 16 Mar 2020 15:00:28 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:28 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 10/17] OvmfPkg/PvScsiDxe: Enable IOSpace & Bus-Mastering in PCI attributes Date: Mon, 16 Mar 2020 17:01:06 +0200 Message-Id: <20200316150113.104630-11-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: P9cqkimphGGME2DOxXvbqAvkx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373400; bh=Dx1jD/7D6gm0x5+K3WzPyk8WLTLn8nTTKpHiMSSkk98=; h=Cc:Date:From:Reply-To:Subject:To; b=ZdW4BtkCanGN2roRzUdClLRQ5QJQnUwxAZqmuU06G9pP7qZst8/KEl8tEbiCX9KBqop xmtrhRgGfMEkS0hEaXViuWawYs+fySXgFdsxDEPYorrUqQZemlOMNE5yKk/yclVwLGSv4 sS/dJHuNNEtalX2es8IyOD2x4p8xal0fpvI= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Enable IOSpace & Bus-Mastering PCI attributes when device is started. Note that original PCI attributes is restored when device is stopped. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/PvScsiDxe/PvScsi.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index 92e0f4a98965..ff6b50b7020f 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -309,6 +309,20 @@ PvScsiSetPCIAttributes ( return Status; } =20 + // + // Enable IOSpace & Bus-Mastering + // + Status =3D Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationEnable, + (EFI_PCI_IO_ATTRIBUTE_MEMORY | + EFI_PCI_IO_ATTRIBUTE_BUS_MASTER), + NULL + ); + if (EFI_ERROR (Status)) { + return Status; + } + return EFI_SUCCESS; } =20 --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55882): https://edk2.groups.io/g/devel/message/55882 Mute This Topic: https://groups.io/mt/72001284/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55877+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55877+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373399; cv=none; d=zohomail.com; s=zohoarc; b=lPvIzGKz4tcjDlHTIR0wrdB9RAzwp8gzPg5GtwA3pqFr8JhyS55KM/mMdmoNXOs5cmEpJcwLiXJTppx1ld1UyaZC9yOAMf+YI0LwhlzA1EbgbF4UO4ao4HpJMtC6CQR9D7/3KsIqeSLEkGAvoha893CHQoEvU9bBnvdTCMzTfyI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373399; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=bPAzSgyluN0KPJIZ2aNcfabl1mP8nCsaV/iDDEHwRJk=; b=XRAM5ylZqRgw3MQtthDek10mJe/iSBL6tRege8SGwpV4nQOntgrDIrfXwwZ19AcOnfCUh7g1Ko0VVcqeEyo2ApocwdqxGnsq8Y1l03jTozQS23zUpVsOgxBFjsaG2qkydetkokPPc4BfArbQjpV19NYclZmJp7SI0euSuDvmfGM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55877+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373399809260.83165779161766; Mon, 16 Mar 2020 08:43:19 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id H6vTYY1788612xV98lnY0wNC; Mon, 16 Mar 2020 08:43:19 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web12.69780.1584370834562562137 for ; Mon, 16 Mar 2020 08:00:34 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErif3156927; Mon, 16 Mar 2020 15:00:34 GMT X-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 2yrqwmyacc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:33 +0000 X-Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqRT9048654; Mon, 16 Mar 2020 15:00:32 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3030.oracle.com with ESMTP id 2ys8rcmr6c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:32 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0VbD011650; Mon, 16 Mar 2020 15:00:31 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:30 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 11/17] OvmfPkg/PvScsiDxe: Define device interface structures and constants Date: Mon, 16 Mar 2020 17:01:07 +0200 Message-Id: <20200316150113.104630-12-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: kSO9HguWDLXSzxxYQ10y3qmhx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373399; bh=mBb259bAPjUPfWqJwu5gaOBE24loa2v7L8JiDBUOWQU=; h=Cc:Date:From:Reply-To:Subject:To; b=bYsoXtO0gi9mfwEYEl9KUJ3lc8Uvbk604IkRWfP1yQpksPJyzmlfRtes6iubOCtmKTH cvEhP/IQD5hEZ+xjNIzsh3D/K4/1AwmX2JlMVYpIlAjXlQpyqe/NJYiG2VrpuEI9U9HIO 3jMvZVtMvcUrzq5ArJDqJSm8BQDXdIOHa+0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" These definitions will be used by the following commits to complete the implementation of PVSCSI device driver. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/Include/IndustryStandard/PvScsi.h | 162 ++++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/OvmfPkg/Include/IndustryStandard/PvScsi.h b/OvmfPkg/Include/In= dustryStandard/PvScsi.h index 004c0af84989..7bb6e664dfcd 100644 --- a/OvmfPkg/Include/IndustryStandard/PvScsi.h +++ b/OvmfPkg/Include/IndustryStandard/PvScsi.h @@ -18,4 +18,166 @@ #define PCI_VENDOR_ID_VMWARE (0x15ad) #define PCI_DEVICE_ID_VMWARE_PVSCSI (0x07c0) =20 +// +// CDB (Command Descriptor Block) with size above this constant +// should be considered out-of-band +// +#define PVSCSI_CDB_MAX_SIZE (16) + +enum PVSCSI_BAR0_OFFSETS { + PVSCSI_REG_OFFSET_COMMAND =3D 0x0, + PVSCSI_REG_OFFSET_COMMAND_DATA =3D 0x4, + PVSCSI_REG_OFFSET_COMMAND_STATUS =3D 0x8, + PVSCSI_REG_OFFSET_LAST_STS_0 =3D 0x100, + PVSCSI_REG_OFFSET_LAST_STS_1 =3D 0x104, + PVSCSI_REG_OFFSET_LAST_STS_2 =3D 0x108, + PVSCSI_REG_OFFSET_LAST_STS_3 =3D 0x10c, + PVSCSI_REG_OFFSET_INTR_STATUS =3D 0x100c, + PVSCSI_REG_OFFSET_INTR_MASK =3D 0x2010, + PVSCSI_REG_OFFSET_KICK_NON_RW_IO =3D 0x3014, + PVSCSI_REG_OFFSET_DEBUG =3D 0x3018, + PVSCSI_REG_OFFSET_KICK_RW_IO =3D 0x4018, +}; + +// +// Define Interrupt-Status register flags +// +#define PVSCSI_INTR_CMPL_0 (1 << 0) +#define PVSCSI_INTR_CMPL_1 (1 << 1) +#define PVSCSI_INTR_CMPL_MASK (PVSCSI_INTR_CMPL_0 | PVSCSI_INTR_CMPL_1) + +enum PVSCSI_COMMANDS { + PVSCSI_CMD_FIRST =3D 0, + PVSCSI_CMD_ADAPTER_RESET =3D 1, + PVSCSI_CMD_ISSUE_SCSI =3D 2, + PVSCSI_CMD_SETUP_RINGS =3D 3, + PVSCSI_CMD_RESET_BUS =3D 4, + PVSCSI_CMD_RESET_DEVICE =3D 5, + PVSCSI_CMD_ABORT_CMD =3D 6, + PVSCSI_CMD_CONFIG =3D 7, + PVSCSI_CMD_SETUP_MSG_RING =3D 8, + PVSCSI_CMD_DEVICE_UNPLUG =3D 9, + PVSCSI_CMD_LAST =3D 10 +}; + +#define PVSCSI_SETUP_RINGS_MAX_NUM_PAGES (32) + +#pragma pack (1) +typedef struct { + UINT32 ReqRingNumPages; + UINT32 CmpRingNumPages; + UINT64 RingsStatePPN; + UINT64 ReqRingPPNs[PVSCSI_SETUP_RINGS_MAX_NUM_PAGES]; + UINT64 CmpRingPPNs[PVSCSI_SETUP_RINGS_MAX_NUM_PAGES]; +} PVSCSI_CMD_DESC_SETUP_RINGS; +#pragma pack () + +#define PVSCSI_MAX_CMD_DATA_WORDS \ + (sizeof (PVSCSI_CMD_DESC_SETUP_RINGS) / sizeof (UINT32)) + +#pragma pack (1) +typedef struct { + UINT32 ReqProdIdx; + UINT32 ReqConsIdx; + UINT32 ReqNumEntriesLog2; + + UINT32 CmpProdIdx; + UINT32 CmpConsIdx; + UINT32 CmpNumEntriesLog2; + + UINT8 Pad[104]; + + UINT32 MsgProdIdx; + UINT32 MsgConsIdx; + UINT32 MsgNumEntriesLog2; +} PVSCSI_RINGS_STATE; +#pragma pack () + +// +// Define PVSCSI request descriptor tags +// +#define PVSCSI_SIMPLE_QUEUE_TAG (0x20) + +// +// Define PVSCSI request descriptor flags +// +#define PVSCSI_FLAG_CMD_WITH_SG_LIST (1 << 0) +#define PVSCSI_FLAG_CMD_OUT_OF_BAND_CDB (1 << 1) +#define PVSCSI_FLAG_CMD_DIR_NONE (1 << 2) +#define PVSCSI_FLAG_CMD_DIR_TOHOST (1 << 3) +#define PVSCSI_FLAG_CMD_DIR_TODEVICE (1 << 4) + +#pragma pack (1) +typedef struct { + UINT64 Context; + UINT64 DataAddr; + UINT64 DataLen; + UINT64 SenseAddr; + UINT32 SenseLen; + UINT32 Flags; + UINT8 Cdb[16]; + UINT8 CdbLen; + UINT8 Lun[8]; + UINT8 Tag; + UINT8 Bus; + UINT8 Target; + UINT8 vCPUHint; + UINT8 Unused[59]; +} PVSCSI_RING_REQ_DESC; +#pragma pack () + +// +// Host adapter status/error codes +// +enum PVSCSI_HOST_BUS_ADAPTER_STATUS { + BTSTAT_SUCCESS =3D 0x00, // CCB complete normally with no errors + BTSTAT_LINKED_COMMAND_COMPLETED =3D 0x0a, + BTSTAT_LINKED_COMMAND_COMPLETED_WITH_FLAG =3D 0x0b, + BTSTAT_DATA_UNDERRUN =3D 0x0c, + BTSTAT_SELTIMEO =3D 0x11, // SCSI selection timeout + BTSTAT_DATARUN =3D 0x12, // Data overrun/underrun + BTSTAT_BUSFREE =3D 0x13, // Unexpected bus free + BTSTAT_INVPHASE =3D 0x14, // + // Invalid bus phase or sequence requeste= d by + // target + // + BTSTAT_LUNMISMATCH =3D 0x17, // Linked CCB has different LUN from fi= rst CCB + BTSTAT_SENSFAILED =3D 0x1b, // Auto request sense failed + BTSTAT_TAGREJECT =3D 0x1c, // + // SCSI II tagged queueing message reject= ed by + // target + // + BTSTAT_BADMSG =3D 0x1d, // + // Unsupported message received by the ho= st + // adapter + // + BTSTAT_HAHARDWARE =3D 0x20, // Host adapter hardware failed + BTSTAT_NORESPONSE =3D 0x21, // + // Target did not respond to SCSI ATN sen= t a + // SCSI RST + // + BTSTAT_SENTRST =3D 0x22, // Host adapter asserted a SCSI RST + BTSTAT_RECVRST =3D 0x23, // Other SCSI devices asserted a SCSI R= ST + BTSTAT_DISCONNECT =3D 0x24, // + // Target device reconnected improperly + // (w/o tag) + // + BTSTAT_BUSRESET =3D 0x25, // Host adapter issued BUS device reset + BTSTAT_ABORTQUEUE =3D 0x26, // Abort queue generated + BTSTAT_HASOFTWARE =3D 0x27, // Host adapter software error + BTSTAT_HATIMEOUT =3D 0x30, // Host adapter hardware timeout error + BTSTAT_SCSIPARITY =3D 0x34, // SCSI parity error detected +}; + +#pragma pack (1) +typedef struct { + UINT64 Context; + UINT64 DataLen; + UINT32 SenseLen; + UINT16 HostStatus; + UINT16 ScsiStatus; + UINT32 Pad[2]; +} PVSCSI_RING_CMP_DESC; +#pragma pack () + #endif // __PVSCSI_H_ --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55877): https://edk2.groups.io/g/devel/message/55877 Mute This Topic: https://groups.io/mt/72001279/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55878+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55878+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373400; cv=none; d=zohomail.com; s=zohoarc; b=cX2zt/W4vcC5VOUbqb7Tm4x+6eVBTeFa8BKHQVCKTBBRKKJjgddjOyqaqWHrkXW8OKNIf9NgDVMIxeZZmGbyjPMhRMaL0Q1EgT11T/CWLqWHe7Aw0ReKRt43GL9JOiaWaH8Fqv9LDXK5rt9d7sNUXCW0is5h7oBELxCOctINk6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373400; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=2YbvKePTryHqbVfqP6+GRsZD49Tew8bNQg7fSkwGfdg=; b=HpcIYqZx001I96uJ1lDTXNHDY+71KvtpPPrYMEDK39ok32JfV+fj5hJboi02TD3QkyGcS5Yr9jL9DIVDfXAjsl0kVmn++J/RluTafh9dpsbH4Xh7cLhFrlWylCP1JOg1JzZhvtjnSfKkWkau9zSY419nop6u54sfdzRBLhEHzOE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55878+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373400045525.40911287208; Mon, 16 Mar 2020 08:43:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id mwJHYY1788612xAJL5jKGUaT; Mon, 16 Mar 2020 08:43:19 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web10.69835.1584370836341176802 for ; Mon, 16 Mar 2020 08:00:36 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErlIo156949; Mon, 16 Mar 2020 15:00:36 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 2yrqwmyacm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:36 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqM1J172706; Mon, 16 Mar 2020 15:00:35 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userp3020.oracle.com with ESMTP id 2ys8yvyjev-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:34 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 02GF0XcM009070; Mon, 16 Mar 2020 15:00:33 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:33 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 12/17] OvmfPkg/PvScsiDxe: Reset adapter on init Date: Mon, 16 Mar 2020 17:01:08 +0200 Message-Id: <20200316150113.104630-13-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: xpk63ZmH0UXDUdNKC8JOp76Qx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373399; bh=sbKVtwat92DOWc//XA43OeeOBJxMA6/VTzxH5KJCnbM=; h=Cc:Date:From:Reply-To:Subject:To; b=Uevc2Ol8FUI2FPBZJPgppngLxppd9RuipRL5/V3KbHSX5M8BYHzlwtxlW1RGMnCEhkU dc+Ap0yOuED4PQE0NfKpRdhAgcLvhr7D8fdDphHWl5EEAP/xFHzZiludFMdANE1wr4F+r EwDHv/40Rl/wOLUFiXI6nkSv+zdcYxTLGzs= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" The following commits will complete the implementation of device initialization. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/PvScsiDxe/PvScsi.c | 77 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index ff6b50b7020f..fb2407d2adb2 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -29,6 +29,76 @@ // Ext SCSI Pass Thru utilities // =20 + +// +// Writes a 32-bit value into BAR0 using MMIO +// +STATIC +EFI_STATUS +PvScsiMmioWrite32 ( + IN CONST PVSCSI_DEV *Dev, + IN UINT64 Offset, + IN UINT32 Value + ) +{ + return Dev->PciIo->Mem.Write( + Dev->PciIo, + EfiPciIoWidthUint32, + 0, // BarIndex + Offset, + 1, // Count + &Value + ); +} + +// +// Send PVSCSI command to device +// +STATIC +EFI_STATUS +PvScsiWriteCmdDesc ( + IN CONST PVSCSI_DEV *Dev, + IN UINT32 Cmd, + IN VOID *Desc, + IN UINTN Length + ) +{ + EFI_STATUS Status; + UINTN LengthInWords; + UINT8 *WordPtr; + UINT8 *DescEndPtr; + UINT32 Word; + + LengthInWords =3D Length / sizeof (UINT32); + + if (LengthInWords > PVSCSI_MAX_CMD_DATA_WORDS) { + return EFI_INVALID_PARAMETER; + } + + Status =3D PvScsiMmioWrite32 (Dev, PVSCSI_REG_OFFSET_COMMAND, Cmd); + if (EFI_ERROR (Status)) { + return Status; + } + + WordPtr =3D Desc; + DescEndPtr =3D WordPtr + Length; + + while (WordPtr !=3D DescEndPtr) { + // + // CopyMem() is used to avoid strict-aliasing issues + // + CopyMem (&Word, WordPtr, sizeof (UINT32)); + + Status =3D PvScsiMmioWrite32 (Dev, PVSCSI_REG_OFFSET_COMMAND_DATA, Wor= d); + if (EFI_ERROR (Status)) { + return Status; + } + + WordPtr +=3D sizeof (UINT32); + } + + return EFI_SUCCESS; +} // // Check if Target argument to EXT_SCSI_PASS_THRU.GetNextTarget() and // EXT_SCSI_PASS_THRU.GetNextTargetLun() is initialized @@ -348,6 +418,13 @@ PvScsiInit ( return Status; } =20 + // + // Reset adapter + // + Status =3D PvScsiWriteCmdDesc (Dev, PVSCSI_CMD_ADAPTER_RESET, NULL, 0); + if (EFI_ERROR (Status)) { + return Status; + } // // Populate the exported interface's attributes // --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55878): https://edk2.groups.io/g/devel/message/55878 Mute This Topic: https://groups.io/mt/72001280/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55879+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55879+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373400; cv=none; d=zohomail.com; s=zohoarc; b=GK7XmKyUMH8Ezf4UpSLwoRfpCtBmTcP91utivRpnS3dclrwdTwdnswuB0F2+tDyMi35FmJZMqZJksqfQq2+Qw2M8IhLtADTA94M4Ewe8UUi1MAXE3o/qUgud/hPgdBvNJ4vlMTWNsRDm3fTAHD4NZRst6WwF+nEayctjj7rT3cc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373400; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=X5ZqHsiDz5F+3PHtbYkDnLkHZBgekQwWzC2smRew7Ek=; b=E8yXKSeXykbmBpn6HOwbNUDgcS/eD/hodWgQvKhe5Z0a5TC9O4w1kAKA967DjaetQ2vsbJVHajTuAde1o+MNitNK7fgBtgLirEV6cdoAiZBEorpL9v5dZ6vZaFQrcrx370KCYwmaGFZk41A0RxRwDgQLLiHPFblmnqvpgpAM/18= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55879+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373400188934.4529300134054; Mon, 16 Mar 2020 08:43:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 4TrdYY1788612xCaH4LSFeKZ; Mon, 16 Mar 2020 08:43:19 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web10.69877.1584370958442879360 for ; Mon, 16 Mar 2020 08:02:38 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErlJ7156949; Mon, 16 Mar 2020 15:02:38 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 2yrqwmyayk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:02:36 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqWR7173329; Mon, 16 Mar 2020 15:00:36 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 2ys8yvyjjg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:36 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0ZwC011674; Mon, 16 Mar 2020 15:00:35 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:35 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 13/17] OvmfPkg/PvScsiDxe: Setup requests and completions rings Date: Mon, 16 Mar 2020 17:01:09 +0200 Message-Id: <20200316150113.104630-14-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: 32riO3I1XANkCr9QrMYItAZBx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373399; bh=QR2HjUyeofGH7niKmZdEsirDFgGQpMpWDpGcoDjAv+k=; h=Cc:Date:From:Reply-To:Subject:To; b=oNCEJtDs0sCeB/mU7Q0aBFF/IvBB5rXPf1OgV6+yva3O8g5q9dRu492LZhMDC7CmGr9 9kI65ERWkoEH/aOXkGR+8za5pfdNiXnr6qu04lRe3UWGQiuQOiu7rsIVkEUIlJmM87DJc Y743xddL15+TsnkH+/qx62jvhVfOoEP0KdY= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" These rings are shared memory buffers between host and device in which a cyclic buffer is managed to send request descriptors from host to device and receive completion descriptors from device to host. Note that because device may be constrained by IOMMU or guest may be run under AMD SEV, we make sure to map these rings to device by using PciIo->Map(). Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/PvScsiDxe/PvScsi.c | 235 +++++++++++++++++++++++++++++++++++++ OvmfPkg/PvScsiDxe/PvScsi.h | 17 +++ 2 files changed, 252 insertions(+) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index fb2407d2adb2..c3f5d38f3d30 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -16,6 +16,7 @@ #include #include #include +#include =20 #include "PvScsi.h" =20 @@ -396,6 +397,209 @@ PvScsiSetPCIAttributes ( return EFI_SUCCESS; } =20 +STATIC +EFI_STATUS +PvScsiAllocatePages ( + IN PVSCSI_DEV *Dev, + IN UINTN Pages, + IN OUT VOID **HostAddress + ) +{ + return Dev->PciIo->AllocateBuffer ( + Dev->PciIo, + AllocateAnyPages, + EfiBootServicesData, + Pages, + HostAddress, + EFI_PCI_ATTRIBUTE_MEMORY_CACHED + ); +} + +STATIC +VOID +PvScsiFreePages ( + IN PVSCSI_DEV *Dev, + IN UINTN Pages, + IN VOID *HostAddress + ) +{ + Dev->PciIo->FreeBuffer ( + Dev->PciIo, + Pages, + HostAddress + ); +} + +STATIC +EFI_STATUS +PvScsiMapBuffer ( + IN PVSCSI_DEV *Dev, + IN EFI_PCI_IO_PROTOCOL_OPERATION PciIoOperation, + IN VOID *HostAddress, + IN UINTN NumberOfBytes, + OUT PVSCSI_DMA_DESC *DmaDesc + ) +{ + EFI_STATUS Status; + UINTN BytesMapped; + + BytesMapped =3D NumberOfBytes; + Status =3D Dev->PciIo->Map ( + Dev->PciIo, + PciIoOperation, + HostAddress, + &BytesMapped, + &DmaDesc->DeviceAddress, + &DmaDesc->Mapping + ); + if (EFI_ERROR (Status)) { + return Status; + } + + if (BytesMapped !=3D NumberOfBytes) { + Status =3D EFI_OUT_OF_RESOURCES; + goto Unmap; + } + + return EFI_SUCCESS; + +Unmap: + Dev->PciIo->Unmap (Dev->PciIo, DmaDesc->Mapping); + DmaDesc->Mapping =3D NULL; + + return Status; +} + +STATIC +VOID +PvScsiUnmapBuffer ( + IN PVSCSI_DEV *Dev, + IN OUT PVSCSI_DMA_DESC *DmaDesc) +{ + Dev->PciIo->Unmap (Dev->PciIo, DmaDesc->Mapping); +} + +STATIC +EFI_STATUS +PvScsiAllocateSharedPages ( + IN PVSCSI_DEV *Dev, + IN UINTN Pages, + IN EFI_PCI_IO_PROTOCOL_OPERATION PciIoOperation, + OUT VOID **HostAddress, + OUT PVSCSI_DMA_DESC *DmaDesc + ) +{ + EFI_STATUS Status; + + *HostAddress =3D NULL; + DmaDesc->Mapping =3D NULL; + + Status =3D PvScsiAllocatePages (Dev, Pages, HostAddress); + if (EFI_ERROR (Status)) { + return Status; + } + + Status =3D PvScsiMapBuffer ( + Dev, + PciIoOperation, + *HostAddress, + Pages * EFI_PAGE_SIZE, + DmaDesc + ); + if (EFI_ERROR (Status)) { + goto FreePages; + } + + return EFI_SUCCESS; + +FreePages: + PvScsiFreePages (Dev, Pages, *HostAddress); + *HostAddress =3D NULL; + + return Status; +} + +STATIC +VOID +PvScsiFreeSharedPages ( + IN PVSCSI_DEV *Dev, + IN UINTN Pages, + IN OUT VOID **HostAddress, + IN OUT PVSCSI_DMA_DESC *DmaDesc + ) +{ + if (*HostAddress) { + if (DmaDesc->Mapping) { + PvScsiUnmapBuffer (Dev, DmaDesc); + DmaDesc->Mapping =3D NULL; + } + + PvScsiFreePages (Dev, Pages, *HostAddress); + *HostAddress =3D NULL; + } +} + +STATIC +EFI_STATUS +PvScsiInitRings ( + IN OUT PVSCSI_DEV *Dev + ) +{ + EFI_STATUS Status; + PVSCSI_CMD_DESC_SETUP_RINGS Cmd; + + Status =3D PvScsiAllocateSharedPages ( + Dev, + 1, + EfiPciIoOperationBusMasterCommonBuffer, + (VOID **)&Dev->RingDesc.RingState, + &Dev->RingDesc.RingStateDmaDesc + ); + if (EFI_ERROR (Status)) { + return Status; + } + ZeroMem (Dev->RingDesc.RingState, EFI_PAGE_SIZE); + + Status =3D PvScsiAllocateSharedPages ( + Dev, + 1, + EfiPciIoOperationBusMasterCommonBuffer, + (VOID **)&Dev->RingDesc.RingReqs, + &Dev->RingDesc.RingReqsDmaDesc + ); + if (EFI_ERROR (Status)) { + return Status; + } + ZeroMem (Dev->RingDesc.RingReqs, EFI_PAGE_SIZE); + + Status =3D PvScsiAllocateSharedPages ( + Dev, + 1, + EfiPciIoOperationBusMasterCommonBuffer, + (VOID **)&Dev->RingDesc.RingCmps, + &Dev->RingDesc.RingCmpsDmaDesc + ); + if (EFI_ERROR (Status)) { + return Status; + } + ZeroMem (Dev->RingDesc.RingCmps, EFI_PAGE_SIZE); + + ZeroMem (&Cmd, sizeof Cmd); + Cmd.ReqRingNumPages =3D 1; + Cmd.CmpRingNumPages =3D 1; + Cmd.RingsStatePPN =3D + ((UINT64) Dev->RingDesc.RingStateDmaDesc.DeviceAddress) >> + EFI_PAGE_SHIFT; + Cmd.ReqRingPPNs[0] =3D + ((UINT64) Dev->RingDesc.RingReqsDmaDesc.DeviceAddress) >> + EFI_PAGE_SHIFT; + Cmd.CmpRingPPNs[0] =3D + ((UINT64) Dev->RingDesc.RingCmpsDmaDesc.DeviceAddress) >> + EFI_PAGE_SHIFT; + + return PvScsiWriteCmdDesc(Dev, PVSCSI_CMD_SETUP_RINGS, &Cmd, sizeof Cmd); +} + STATIC EFI_STATUS PvScsiInit ( @@ -425,6 +629,15 @@ PvScsiInit ( if (EFI_ERROR (Status)) { return Status; } + + // + // Init PVSCSI rings + // + Status =3D PvScsiInitRings (Dev); + if (EFI_ERROR (Status)) { + return Status; + } + // // Populate the exported interface's attributes // @@ -463,6 +676,28 @@ PvScsiUninit ( IN OUT PVSCSI_DEV *Dev ) { + // + // Free PVSCSI rings + // + PvScsiFreeSharedPages ( + Dev, + 1, + (VOID **)&Dev->RingDesc.RingCmps, + &Dev->RingDesc.RingCmpsDmaDesc + ); + PvScsiFreeSharedPages ( + Dev, + 1, + (VOID **)&Dev->RingDesc.RingReqs, + &Dev->RingDesc.RingReqsDmaDesc + ); + PvScsiFreeSharedPages ( + Dev, + 1, + (VOID **)&Dev->RingDesc.RingState, + &Dev->RingDesc.RingStateDmaDesc + ); + // // Restore PCI Attributes // diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h index 5f611dbbc98c..6d23b6e1eccf 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.h +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -15,12 +15,29 @@ #include #include =20 +typedef struct { + EFI_PHYSICAL_ADDRESS DeviceAddress; + VOID *Mapping; +} PVSCSI_DMA_DESC; + +typedef struct { + PVSCSI_RINGS_STATE *RingState; + PVSCSI_DMA_DESC RingStateDmaDesc; + + PVSCSI_RING_REQ_DESC *RingReqs; + PVSCSI_DMA_DESC RingReqsDmaDesc; + + PVSCSI_RING_CMP_DESC *RingCmps; + PVSCSI_DMA_DESC RingCmpsDmaDesc; +} PVSCSI_RING_DESC; + #define PVSCSI_SIG SIGNATURE_32 ('P', 'S', 'C', 'S') =20 typedef struct { UINT32 Signature; EFI_PCI_IO_PROTOCOL *PciIo; UINT64 OriginalPciAttributes; + PVSCSI_RING_DESC RingDesc; UINT8 MaxTarget; UINT8 MaxLun; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55879): https://edk2.groups.io/g/devel/message/55879 Mute This Topic: https://groups.io/mt/72001281/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55884+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55884+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373401; cv=none; d=zohomail.com; s=zohoarc; b=VYmfipMc6lbItPL7RRO8Hp040LALnRa12aqxf6VJD2oirFhhmKLPKJ/0SxEIFhSTgqqOBU1OzixJ57cNUzb8POo+sAknbjB0EyNCaqE3aXmnDyV8ZcKY/I5/JVtPmpyl0M8NdzLz6+g1oKw81NNc8P6qM+uzq4K5PLpuUl6bLVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373401; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=kOSXFbDDtdlciHkYg5f4Atwe1AnYJ5JbTZO0G/GNEbc=; b=PEYL2YEum02NLwZBlNr68gXgstqu4n096UKXkoOvDtNF1Cdp1XhoihrI6zuGBs5iTv41Ypk2PhqUpoN5uJxf73yrM3jtrSY7DtMXEMm8bXlqtB0E8FZGv27LCCwX0QlljtuKKUY5EnirhwPnyvx+uiUyLgKL/xzb3PNsI37yzlM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55884+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373401037818.0416397472459; Mon, 16 Mar 2020 08:43:21 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id FiNDYY1788612xIwOquA0nr2; Mon, 16 Mar 2020 08:43:20 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web11.69806.1584370960020988001 for ; Mon, 16 Mar 2020 08:02:40 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErYVV156629; Mon, 16 Mar 2020 15:02:39 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 2yrqwmyb01-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:02:39 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqLBa172490; Mon, 16 Mar 2020 15:00:39 GMT X-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3020.oracle.com with ESMTP id 2ys8yvyjnn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:39 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0cGF009389; Mon, 16 Mar 2020 15:00:38 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:37 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 14/17] OvmfPkg/PvScsiDxe: Introduce DMA communication buffer Date: Mon, 16 Mar 2020 17:01:10 +0200 Message-Id: <20200316150113.104630-15-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: H7U2pbuQCkN5p5SIJp8hkvssx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373400; bh=8iviz2l0mMP5GQzb1XI2WHCy+N2PWQNhJfXHlrPTyZg=; h=Cc:Date:From:Reply-To:Subject:To; b=CSXLjIqYIwZuoBzWyLdW0DoIAcQAaMBGAW9hFoPXYJFxxqfzYkqaRM3zJVdJsLsZV3o redFcw6Y9FE6ykirPPARykq+skI/rT8n/kIr/O2OCOXSczkyTQGcXYQ+SwyIEZ/reearW mO0XcOt9Du5RmNgb99bKGtT1KOJ9Ki2Vq2U= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" In case device is constrained by IOMMU or guest is running under AMD SEV, input/output buffers provided to device (DataBuffer and SenseData) needs to be explicitly mapped to device by PciIo->Map(). To avoid the overhead of mapping/unmapping the DataBuffer and SenseData to the device for every SCSI requst (And to simplify code), introduce a single DMA communication buffer that will be mapped to device on initialization. When a SCSI request needs to be sent to device, the DataBuffer and SenseData will be copied from/to the DMA communication buffer as required. This will be done by the following commits. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/PvScsiDxe/PvScsi.c | 24 ++++++++++++++++++++++++ OvmfPkg/PvScsiDxe/PvScsi.h | 10 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index c3f5d38f3d30..e48929bf044c 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -638,6 +638,20 @@ PvScsiInit ( return Status; } =20 + // + // Allocate DMA communication buffer + // + Status =3D PvScsiAllocateSharedPages ( + Dev, + EFI_SIZE_TO_PAGES (sizeof (*Dev->DmaBuf)), + EfiPciIoOperationBusMasterCommonBuffer, + (VOID **)&Dev->DmaBuf, + &Dev->DmaBufDmaDesc + ); + if (EFI_ERROR (Status)) { + return Status; + } + // // Populate the exported interface's attributes // @@ -676,6 +690,16 @@ PvScsiUninit ( IN OUT PVSCSI_DEV *Dev ) { + // + // Free DMA communication buffer + // + PvScsiFreeSharedPages ( + Dev, + EFI_SIZE_TO_PAGES (sizeof (*Dev->DmaBuf)), + (VOID **)&Dev->DmaBuf, + &Dev->DmaBufDmaDesc + ); + // // Free PVSCSI rings // diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h index 6d23b6e1eccf..7f91d70fec79 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.h +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -31,6 +31,11 @@ typedef struct { PVSCSI_DMA_DESC RingCmpsDmaDesc; } PVSCSI_RING_DESC; =20 +typedef struct { + UINT8 SenseData[MAX_UINT8]; + UINT8 Data[0x2000]; +} PVSCSI_DMA_BUFFER; + #define PVSCSI_SIG SIGNATURE_32 ('P', 'S', 'C', 'S') =20 typedef struct { @@ -38,6 +43,8 @@ typedef struct { EFI_PCI_IO_PROTOCOL *PciIo; UINT64 OriginalPciAttributes; PVSCSI_RING_DESC RingDesc; + PVSCSI_DMA_BUFFER *DmaBuf; + PVSCSI_DMA_DESC DmaBufDmaDesc; UINT8 MaxTarget; UINT8 MaxLun; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; @@ -47,4 +54,7 @@ typedef struct { #define PVSCSI_FROM_PASS_THRU(PassThruPointer) \ CR (PassThruPointer, PVSCSI_DEV, PassThru, PVSCSI_SIG) =20 +#define PVSCSI_DMA_BUF_DEV_ADDR(Dev, MemberName) \ + (Dev->DmaBufDmaDesc.DeviceAddress + OFFSET_OF(PVSCSI_DMA_BUFFER, MemberN= ame)) + #endif // __PVSCSI_DXE_H_ --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55884): https://edk2.groups.io/g/devel/message/55884 Mute This Topic: https://groups.io/mt/72001286/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55883+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55883+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373400; cv=none; d=zohomail.com; s=zohoarc; b=c2XSM61d9YWYYQDFFBi+24S6iHx3NY1ExVgZPxEP2aGFNWnN1cXQKZbkhsnLk7+dsoGkMkPGdsM3j6d+jDmATaSuhqAEHOJJdsTKEjyRL4tQa0hRDkz8KewcpAo94Z1Jv6V1jnUYs1z6Etlv89NgIpAD2ll4DFERxf/JREQYdCE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373400; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=NL8rvFG4z3lyBC4o2eh120uhT/eYTaFMbOv9/EXbBAo=; b=MAlSYYv7ia4aVp4SwOb0dxq5E/vQVVsQzqX6phRvAg//7NqPeHGnkwiIDnWsBiecIbyieCmY4+vzUMXzh1j5LzqVyxbBthb1svBtmRXrkJ4udW9bld0pAe9mBoOcOjm2qlSCKyOUCogFrGzJVpqOQa3eoSOA53I6tbzA+Qj2xec= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55883+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373400893492.4790582971075; Mon, 16 Mar 2020 08:43:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id TOc5YY1788612xg2HK50tOiv; Mon, 16 Mar 2020 08:43:20 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web12.69786.1584370844263267524 for ; Mon, 16 Mar 2020 08:00:44 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErZGb156741; Mon, 16 Mar 2020 15:00:43 GMT X-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2120.oracle.com with ESMTP id 2yrqwmyadg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:42 +0000 X-Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEr7Qb115765; Mon, 16 Mar 2020 15:00:41 GMT X-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 2ys8tpwacf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:41 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0e75009428; Mon, 16 Mar 2020 15:00:40 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:39 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 15/17] OvmfPkg/PvScsiDxe: Support sending SCSI request and receive response Date: Mon, 16 Mar 2020 17:01:11 +0200 Message-Id: <20200316150113.104630-16-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: SWTRW4rbIYXc9QkWdbpZB6Ftx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373400; bh=Gpg+wSjJUSdz3yVhuxZibKzxfQwUc2sE/Gr+ZZXyd34=; h=Cc:Date:From:Reply-To:Subject:To; b=KmG1sjVp01vn1Bw2xmpT5KEcCy0i9TNoEx0hHTgPyBYogjeV3nSOBWbTfjmJ4lGBp0X mqAiZ209pXZcYF19mwLh06sJQLwGQAgL/al8T8MtljBcDPEfTgyk98B9xjdkiXnqgzp/R sQ49zChMa/PNA8s6WVxuf8wfBWo3fPxcKi8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Implement EXT_SCSI_PASS_THRU.PassThru(). Machines should be able to boot after this commit. Tested with Ubuntu 16.04 guest. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/OvmfPkg.dec | 6 + OvmfPkg/PvScsiDxe/PvScsi.c | 423 ++++++++++++++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.h | 1 + OvmfPkg/PvScsiDxe/PvScsi.inf | 5 +- 4 files changed, 432 insertions(+), 3 deletions(-) diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec index 76ce507e8bd0..e78c771f53e9 100644 --- a/OvmfPkg/OvmfPkg.dec +++ b/OvmfPkg/OvmfPkg.dec @@ -130,6 +130,12 @@ gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxTargetLimit|64|UINT8|0x40 gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxLunLimit|0|UINT8|0x41 =20 + ## After PvScsiDxe sends a SCSI request to the device, it waits for + # the request completion in a polling loop. + # This constant defines how many micro-seconds to wait between each + # polling loop iteration. + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiWaitForCmpStallInUsecs|5|UINT32|0x42 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase|0x0|UINT32|= 0x8 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize|0x0|UINT32|= 0x9 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize|0x0|UINT32|0xa diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index e48929bf044c..e7d0a23db6ab 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -30,6 +30,26 @@ // Ext SCSI Pass Thru utilities // =20 +// +// Reads a 32-bit value into BAR0 using MMIO +// +STATIC +EFI_STATUS +PvScsiMmioRead32 ( + IN CONST PVSCSI_DEV *Dev, + IN UINT64 Offset, + OUT UINT32 *Value + ) +{ + return Dev->PciIo->Mem.Read( + Dev->PciIo, + EfiPciIoWidthUint32, + 0, // BarIndex + Offset, + 1, // Count + Value + ); +} =20 // // Writes a 32-bit value into BAR0 using MMIO @@ -100,6 +120,343 @@ PvScsiWriteCmdDesc ( =20 return EFI_SUCCESS; } + +// +// Returns if PVSCSI request ring is full +// +STATIC +BOOLEAN +PvScsiIsReqRingFull ( + IN CONST PVSCSI_DEV *Dev + ) +{ + PVSCSI_RINGS_STATE *RingsState; + UINT64 ReqNumEntries; + + RingsState =3D Dev->RingDesc.RingState; + ReqNumEntries =3D 1 << RingsState->ReqNumEntriesLog2; + return (RingsState->ReqProdIdx - RingsState->CmpConsIdx) >=3D ReqNumEntr= ies; +} + +// +// Returns pointer to current request descriptor to produce +// +STATIC +PVSCSI_RING_REQ_DESC * +PvScsiGetCurrentRequest ( + IN CONST PVSCSI_DEV *Dev + ) +{ + PVSCSI_RINGS_STATE *RingState; + UINT64 ReqNumEntries; + + RingState =3D Dev->RingDesc.RingState; + ReqNumEntries =3D 1 << RingState->ReqNumEntriesLog2; + return Dev->RingDesc.RingReqs + + (RingState->ReqProdIdx & (ReqNumEntries - 1)); +} + +// +// Returns pointer to current completion descriptor to consume +// +STATIC +PVSCSI_RING_CMP_DESC * +PvScsiGetCurrentResponse ( + IN CONST PVSCSI_DEV *Dev + ) +{ + PVSCSI_RINGS_STATE *RingState; + UINT64 CmpNumEntries; + + RingState =3D Dev->RingDesc.RingState; + CmpNumEntries =3D 1 << RingState->CmpNumEntriesLog2; + return Dev->RingDesc.RingCmps + + (RingState->CmpConsIdx & (CmpNumEntries - 1)); +} + +// +// Wait for device to signal completion of submitted requests +// +STATIC +EFI_STATUS +PvScsiWaitForRequestCompletion ( + IN CONST PVSCSI_DEV *Dev + ) +{ + EFI_STATUS Status; + UINT32 IntrStatus; + + // + // Note: We don't yet support Timeout according to + // EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET.Timeout. + // + // This is consistent with some other Scsi PassThru drivers + // such as VirtioScsi. + // + for (;;) { + Status =3D PvScsiMmioRead32 (Dev, PVSCSI_REG_OFFSET_INTR_STATUS, &Intr= Status); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // PVSCSI_INTR_CMPL_MASK is set if device completed submitted requests + // + if (IntrStatus & PVSCSI_INTR_CMPL_MASK) { + break; + } + + gBS->Stall (Dev->WaitForCmpStallInUsecs); + } + + // + // Acknowledge PVSCSI_INTR_CMPL_MASK in device interrupt-status register + // + return PvScsiMmioWrite32 ( + Dev, + PVSCSI_REG_OFFSET_INTR_STATUS, + PVSCSI_INTR_CMPL_MASK + ); +} + +// +// Populate a PVSCSI request descriptor from the Extended SCSI Pass Thru +// Protocol packet. +// +STATIC +EFI_STATUS +PopulateRequest ( + IN CONST PVSCSI_DEV *Dev, + IN UINT8 *Target, + IN UINT64 Lun, + IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, + OUT PVSCSI_RING_REQ_DESC *Request + ) +{ + UINT8 TargetValue; + + // + // We only use first byte of target identifer + // + TargetValue =3D *Target; + + // + // Check for unsupported requests + // + if ( + // Bidirectional transfer was requested + (Packet->InTransferLength > 0 && Packet->OutTransferLength > 0) || + (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_BIDIRECTIO= NAL) || + // Command Descriptor Block bigger than this constant should be cons= idered + // out-of-band. We currently don't support these CDBs. + (Packet->CdbLength > PVSCSI_CDB_MAX_SIZE) + ) { + + // + // This error code doesn't require updates to the Packet output fields + // + return EFI_UNSUPPORTED; + } + + // + // Check for invalid parameters + // + if ( + // Addressed invalid device + (TargetValue > Dev->MaxTarget) || (Lun > Dev->MaxLun) || + // Invalid direction (there doesn't seem to be a macro for the "no d= ata + // transferred" "direction", eg. for TEST UNIT READY) + (Packet->DataDirection > EFI_EXT_SCSI_DATA_DIRECTION_BIDIRECTIONAL) = || + // Trying to receive, but destination pointer is NULL, or contradict= ing + // transfer direction + ((Packet->InTransferLength > 0) && + ((Packet->InDataBuffer =3D=3D NULL) || + (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_WRITE) + ) + ) || + + // + // Trying to send, but source pointer is NULL, or contradicting + // transfer direction + // + ((Packet->OutTransferLength > 0) && + ((Packet->OutDataBuffer =3D=3D NULL) || + (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_READ) + ) + ) + ) { + + // + // This error code doesn't require updates to the Packet output fields + // + return EFI_INVALID_PARAMETER; + } + + // + // Check for input/output buffer too large for DMA communication buffer + // + if (Packet->InTransferLength > sizeof (Dev->DmaBuf->Data)) { + Packet->InTransferLength =3D sizeof (Dev->DmaBuf->Data); + return EFI_BAD_BUFFER_SIZE; + } + if (Packet->OutTransferLength > sizeof (Dev->DmaBuf->Data)) { + Packet->OutTransferLength =3D sizeof (Dev->DmaBuf->Data); + return EFI_BAD_BUFFER_SIZE; + } + + // + // Encode PVSCSI request + // + ZeroMem (Request, sizeof (*Request)); + + Request->Bus =3D 0; + Request->Target =3D TargetValue; + // + // This cast is safe as MaxLun is defined as UINT8 + // + Request->Lun[1] =3D (UINT8)Lun; + Request->SenseLen =3D Packet->SenseDataLength; + Request->SenseAddr =3D (UINT64)PVSCSI_DMA_BUF_DEV_ADDR (Dev, SenseData); + Request->CdbLen =3D Packet->CdbLength; + CopyMem (Request->Cdb, Packet->Cdb, Packet->CdbLength); + Request->vCPUHint =3D 0; + Request->Tag =3D PVSCSI_SIMPLE_QUEUE_TAG; + if (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_READ) { + Request->Flags =3D PVSCSI_FLAG_CMD_DIR_TOHOST; + Request->DataLen =3D Packet->InTransferLength; + } else { + Request->Flags =3D PVSCSI_FLAG_CMD_DIR_TODEVICE; + Request->DataLen =3D Packet->OutTransferLength; + CopyMem ( + Dev->DmaBuf->Data, + Packet->OutDataBuffer, + Packet->OutTransferLength); + } + Request->DataAddr =3D (UINT64)PVSCSI_DMA_BUF_DEV_ADDR (Dev, Data); + + return EFI_SUCCESS; +} + +// +// Handle the PVSCSI device response: +// - Copy returned data from DMA communication buffer. +// - Update fields in Extended SCSI Pass Thru Protocol packet as required. +// - Translate response code to EFI status code and host adapter status. +// +STATIC +EFI_STATUS +HandleResponse ( + IN PVSCSI_DEV *Dev, + IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, + IN CONST PVSCSI_RING_CMP_DESC *Response + ) +{ + // + // Check if device returned sense data + // + if (Response->ScsiStatus =3D=3D EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITI= ON) { + // + // Fix SenseDataLength to amount of data returned + // + if (Packet->SenseDataLength > Response->SenseLen) { + Packet->SenseDataLength =3D (UINT8)Response->SenseLen; + } + // + // Copy sense data from DMA communication buffer + // + CopyMem ( + Packet->SenseData, + Dev->DmaBuf->SenseData, + Packet->SenseDataLength + ); + } else { + // + // Signal no sense data returned + // + Packet->SenseDataLength =3D 0; + } + + // + // Copy device output from DMA communication buffer + // + if (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_READ) { + CopyMem (Packet->InDataBuffer, Dev->DmaBuf->Data, Packet->InTransferLe= ngth); + } + + // + // Report target status + // + Packet->TargetStatus =3D Response->ScsiStatus; + + // + // Host adapter status and function return value depend on + // device response's host status + // + switch (Response->HostStatus) { + case BTSTAT_SUCCESS: + case BTSTAT_LINKED_COMMAND_COMPLETED: + case BTSTAT_LINKED_COMMAND_COMPLETED_WITH_FLAG: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK; + return EFI_SUCCESS; + + case BTSTAT_SELTIMEO: + Packet->HostAdapterStatus =3D + EFI_EXT_SCSI_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT; + return EFI_TIMEOUT; + + case BTSTAT_DATARUN: + case BTSTAT_DATA_UNDERRUN: + // + // Report residual data in overrun/underrun + // + if (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_READ) { + Packet->InTransferLength =3D Response->DataLen; + } else { + Packet->OutTransferLength =3D Response->DataLen; + } + Packet->HostAdapterStatus =3D + EFI_EXT_SCSI_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN; + return EFI_BAD_BUFFER_SIZE; + + case BTSTAT_BUSFREE: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_BUS_F= REE; + break; + + case BTSTAT_INVPHASE: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_PHASE= _ERROR; + break; + + case BTSTAT_SENSFAILED: + Packet->HostAdapterStatus =3D + EFI_EXT_SCSI_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED; + break; + + case BTSTAT_TAGREJECT: + case BTSTAT_BADMSG: + Packet->HostAdapterStatus =3D + EFI_EXT_SCSI_STATUS_HOST_ADAPTER_MESSAGE_REJECT; + break; + + case BTSTAT_BUSRESET: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_BUS_R= ESET; + break; + + case BTSTAT_HATIMEOUT: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_TIMEO= UT; + return EFI_TIMEOUT; + + case BTSTAT_SCSIPARITY: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_PARIT= Y_ERROR; + break; + + default: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OTHER; + break; + } + + return EFI_DEVICE_ERROR; +} + // // Check if Target argument to EXT_SCSI_PASS_THRU.GetNextTarget() and // EXT_SCSI_PASS_THRU.GetNextTargetLun() is initialized @@ -135,7 +492,70 @@ PvScsiPassThru ( IN EFI_EVENT Event OPTIONAL ) { - return EFI_UNSUPPORTED; + PVSCSI_DEV *Dev; + EFI_STATUS Status; + PVSCSI_RING_REQ_DESC *Request; + PVSCSI_RING_CMP_DESC *Response; + + Dev =3D PVSCSI_FROM_PASS_THRU (This); + + if (PvScsiIsReqRingFull (Dev)) { + return EFI_NOT_READY; + } + + Request =3D PvScsiGetCurrentRequest (Dev); + + Status =3D PopulateRequest (Dev, Target, Lun, Packet, Request); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Writes to Request must be globally visible before making request + // available to device + // + MemoryFence(); + Dev->RingDesc.RingState->ReqProdIdx++; + + Status =3D PvScsiMmioWrite32 (Dev, PVSCSI_REG_OFFSET_KICK_RW_IO, 0); + if (EFI_ERROR (Status)) { + // + // If kicking the host fails, we must fake a host adapter error. + // EFI_NOT_READY would save us the effort, but it would also suggest t= hat + // the caller retry. + // + goto FakeHostAdapterError; + } + + Status =3D PvScsiWaitForRequestCompletion (Dev); + if (EFI_ERROR (Status)) { + // + // If waiting for request completion fails, we must fake a host adapter + // error. EFI_NOT_READY would save us the effort, but it would also su= ggest + // that the caller retry. + // + goto FakeHostAdapterError; + } + + Response =3D PvScsiGetCurrentResponse (Dev); + Status =3D HandleResponse (Dev, Packet, Response); + + // + // Reads from response must complete before releasing completion entry + // to device + // + MemoryFence(); + Dev->RingDesc.RingState->CmpConsIdx++; + + return Status; + +FakeHostAdapterError: + Packet->InTransferLength =3D 0; + Packet->OutTransferLength =3D 0; + Packet->SenseDataLength =3D 0; + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OTHER; + Packet->TargetStatus =3D EFI_EXT_SCSI_STATUS_TARGET_GOOD; + return EFI_DEVICE_ERROR; } =20 STATIC @@ -613,6 +1033,7 @@ PvScsiInit ( // Dev->MaxTarget =3D PcdGet8 (PcdPvScsiMaxTargetLimit); Dev->MaxLun =3D PcdGet8 (PcdPvScsiMaxLunLimit); + Dev->WaitForCmpStallInUsecs =3D PcdGet32 (PcdPvScsiWaitForCmpStallInUsec= s); =20 // // Set PCI Attributes diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h index 7f91d70fec79..08e876b75930 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.h +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -47,6 +47,7 @@ typedef struct { PVSCSI_DMA_DESC DmaBufDmaDesc; UINT8 MaxTarget; UINT8 MaxLun; + UINTN WaitForCmpStallInUsecs; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; } PVSCSI_DEV; diff --git a/OvmfPkg/PvScsiDxe/PvScsi.inf b/OvmfPkg/PvScsiDxe/PvScsi.inf index 96bd4e4a9a8b..e3a85eba8dac 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.inf +++ b/OvmfPkg/PvScsiDxe/PvScsi.inf @@ -37,5 +37,6 @@ gEfiExtScsiPassThruProtocolGuid ## BY_START =20 [Pcd] - gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxTargetLimit ## CONSUMES - gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxLunLimit ## CONSUMES + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxTargetLimit ## CONSUMES + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiMaxLunLimit ## CONSUMES + gUefiOvmfPkgTokenSpaceGuid.PcdPvScsiWaitForCmpStallInUsecs ## CONSUMES --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55883): https://edk2.groups.io/g/devel/message/55883 Mute This Topic: https://groups.io/mt/72001285/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55871+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55871+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373398; cv=none; d=zohomail.com; s=zohoarc; b=JNb2f63D5pENMubVegaWEDWIFscfoDc9Vq4Kb+vXWl3CLf4Yx96jGNFL5NBOUTvFecpGNNJRrMyaPCkdd4Zt8FJ1eZXXDO3rEkD6/xbAGSp3bTEi3dcNBgDZPpQfFVIAkHbOryuKFwHR7Fq0+nqCD4ypaxZHv3fl6XSJUhUrKGc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373398; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=pF5eAJ8AdazSkD+pyWG0VYo+sJ9H//Q1RT2IewRYGnQ=; b=j17GOWaFOcWyrZ+bpJlqRtHmCoUOabU1+Vp58hwornvXsKDwm9kJa2WvdS3IZ9qlrk5ivY4lx15YocV2jVycLRpPReJ/EK5ySEfCTsOXUP2GHu7hJGzcTntml/ZfkEV3F0PG9WQJJHhEKWEeAPifBT0uEXu63tpWMFZwqk7AnD4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55871+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373398707193.51974830036158; Mon, 16 Mar 2020 08:43:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id KZmEYY1788612xWzt3e60X7a; Mon, 16 Mar 2020 08:43:18 -0700 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web12.69788.1584370847580385851 for ; Mon, 16 Mar 2020 08:00:47 -0700 X-Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqiOK088812; Mon, 16 Mar 2020 15:00:47 GMT X-Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2130.oracle.com with ESMTP id 2yrppqyfep-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:45 +0000 X-Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEpSq7074323; Mon, 16 Mar 2020 15:00:44 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserp3020.oracle.com with ESMTP id 2ys929uur7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:44 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0gKA011699; Mon, 16 Mar 2020 15:00:43 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:42 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 16/17] OvmfPkg/PvScsiDxe: Reset device on ExitBootServices() Date: Mon, 16 Mar 2020 17:01:12 +0200 Message-Id: <20200316150113.104630-17-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: Ffu5wMczPOII9ZWAtyPL1pSix1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373398; bh=zYAfo29kldkeuEs7iTizZD5KKjGVcP2iCd1RQH1SDYc=; h=Cc:Date:From:Reply-To:Subject:To; b=FVc/GUzbaz6xRPhsvlLdXowxksywU0K9E3Qk0XxgOb8F/jmZ3Is4ZaMuj8NZ+UtxlhQ y/VpjKp7wr6XLaTWk3y1903x3vY9MxcyHltHjy5acTeLY7zVm1RQBqAVmTJilGIoXVpAa TOc5afT3IoC5CRFTxpvHcEGXw74eo8/n5i8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" This causes the device to forget about the request/completion rings. We allocated said rings in EfiBootServicesData type memory, and code executing after ExitBootServices() is permitted to overwrite it. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon Reviewed-by: Laszlo Ersek --- OvmfPkg/PvScsiDxe/PvScsi.c | 42 +++++++++++++++++++++++++++++++++++++- OvmfPkg/PvScsiDxe/PvScsi.h | 1 + 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index e7d0a23db6ab..33167c177b42 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -1156,6 +1156,30 @@ PvScsiUninit ( } } =20 +// +// Event notification called by ExitBootServices() +// +STATIC +VOID +EFIAPI +PvScsiExitBoot ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + PVSCSI_DEV *Dev; + + Dev =3D Context; + + // + // Reset the device. This causes the device to forget about the + // request/completion rings. We allocated said rings in EfiBootServicesD= ata + // type memory, and code executing after ExitBootServices() is permitted= to + // overwrite it. + // + PvScsiWriteCmdDesc (Dev, PVSCSI_CMD_ADAPTER_RESET, NULL, 0); +} + // // Driver Binding // @@ -1249,6 +1273,17 @@ PvScsiDriverBindingStart ( goto ClosePciIo; } =20 + Status =3D gBS->CreateEvent ( + EVT_SIGNAL_EXIT_BOOT_SERVICES, + TPL_CALLBACK, + &PvScsiExitBoot, + Dev, + &Dev->ExitBoot + ); + if (EFI_ERROR (Status)) { + goto UninitDev; + } + // // Setup complete, attempt to export the driver instance's PassThru inte= rface // @@ -1260,11 +1295,14 @@ PvScsiDriverBindingStart ( &Dev->PassThru ); if (EFI_ERROR (Status)) { - goto UninitDev; + goto CloseExitBoot; } =20 return EFI_SUCCESS; =20 +CloseExitBoot: + gBS->CloseEvent (Dev->ExitBoot); + UninitDev: PvScsiUninit (Dev); =20 @@ -1319,6 +1357,8 @@ PvScsiDriverBindingStop ( return Status; } =20 + gBS->CloseEvent (Dev->ExitBoot); + PvScsiUninit (Dev); =20 gBS->CloseProtocol ( diff --git a/OvmfPkg/PvScsiDxe/PvScsi.h b/OvmfPkg/PvScsiDxe/PvScsi.h index 08e876b75930..e68a7dedf71f 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.h +++ b/OvmfPkg/PvScsiDxe/PvScsi.h @@ -41,6 +41,7 @@ typedef struct { typedef struct { UINT32 Signature; EFI_PCI_IO_PROTOCOL *PciIo; + EFI_EVENT ExitBoot; UINT64 OriginalPciAttributes; PVSCSI_RING_DESC RingDesc; PVSCSI_DMA_BUFFER *DmaBuf; --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55871): https://edk2.groups.io/g/devel/message/55871 Mute This Topic: https://groups.io/mt/72001273/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 8 15:39:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55872+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55872+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373398; cv=none; d=zohomail.com; s=zohoarc; b=UGFMsvfrZ6xUd+aLlCBS33KBGmTAkp2eYqY9/Gm9lm4NjZI8v47/yAfqQsOov/u1b7z9NQfVuj5RG21M+GabchLzZA5N/gEZ6LxCdbPsQ7lqzEWgDfaIpsrFbOHrfikvLFiA/myM9Pj6NB4k91T0ZCWWbzAdJVmBUDgVwVUwDj0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373398; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=pGQbcNB3cFtSsO+4AtoSTksYRDcfPe8y95BOKkdE2+Q=; b=mR8jyIoTaPY8gJ7TwdJVarX9LNMAxC5tWS2G6dmzcOZ4gLaU2nvsxCdu57gKlSsBf2pZapoK1GZsoVsqj9saRFW6E6ZTeZuDa71uVGJBcFvQ9KHpOU1XZ9fPrMxCWyHxDWCm9NIWQf4cuDO+nMd+jNSkvaVGCAW6ATb8SEoImZY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55872+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373398712151.5732848527989; Mon, 16 Mar 2020 08:43:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id ba9hYY1788612x6oeNPgiCAa; Mon, 16 Mar 2020 08:43:18 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web12.69791.1584370848817954452 for ; Mon, 16 Mar 2020 08:00:48 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErgwS156914; Mon, 16 Mar 2020 15:00:48 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 2yrqwmyady-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:46 +0000 X-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqN4o172778; Mon, 16 Mar 2020 15:00:46 GMT X-Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userp3020.oracle.com with ESMTP id 2ys8yvyk1k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:46 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 02GF0jcd030368; Mon, 16 Mar 2020 15:00:45 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:44 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 17/17] OvmfPkg/PvScsiDxe: Enable device 64-bit DMA addresses Date: Mon, 16 Mar 2020 17:01:13 +0200 Message-Id: <20200316150113.104630-18-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: xTwVEa6fguZnBIA3jLf5gRmex1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373398; bh=nGrrAlZ1Dob5KHetdsJsDnS2Hx/RmbB1by/9lEU2nyo=; h=Cc:Date:From:Reply-To:Subject:To; b=aLYjWYLAatLoey5Zk29cPZaYc8+1AN+qcuGtFHrGfe6pX4n2erJ3CvDkgzC3AfUxaQv /gcGQxzjLZu6lJ0JNxo2zC2uyyuwpSqDuZaUytFaBF4MGnMVX8rJz0ZYbPaX9m3r7RcR+ 6MGJe+iBvgukxeQpQUdsXrkKxrxShzCI5XM= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Enable PCI dual-address cycle attribute to signal device supports 64-bit DMA addresses. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/PvScsiDxe/PvScsi.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c index 33167c177b42..e673ed8ba6a0 100644 --- a/OvmfPkg/PvScsiDxe/PvScsi.c +++ b/OvmfPkg/PvScsiDxe/PvScsi.c @@ -814,6 +814,27 @@ PvScsiSetPCIAttributes ( return Status; } =20 + // + // Signal device supports 64-bit DMA addresses + // + Status =3D Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationEnable, + EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE, + NULL + ); + if (EFI_ERROR (Status)) { + // + // Warn user device will only be using 32-bit DMA addresses. + // + // Note that this does not prevent device/driver from working + // and therefore we only warn and continue as usual. + // + DEBUG ((DEBUG_WARN, + "%a: failed to enable 64-bit DMA addresses\n", + __FUNCTION__)); + } + return EFI_SUCCESS; } =20 --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55872): https://edk2.groups.io/g/devel/message/55872 Mute This Topic: https://groups.io/mt/72001274/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-