From nobody Sun May 5 15:10:59 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+55445+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+55445+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349707; cv=none; d=zohomail.com; s=zohoarc; b=TPydyJY341Do5pgds2L/aMvUSJEnJm2JZ/3iCWZSSbosJU8xeMOveN5DJn1R6/W/7QIXNCfrTibQnHQoN2naIJD8L+u1s433ewHtW7PVDjxXneJpuBv+vmTgqP6OdA1xbf3B19ZbGcgDDnOZhxJjqt/qrxwh+NYXzS/UJcWV/rk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349707; 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=LgqdihxRCSowziQw42odlPN3+by2ecVee9NkZtRiwAA=; b=STgbqwH1yEaHqx3K4uUfi1RdWrog/OjY57fXEH8n4GBf03MOzga2ZCoZuAhD/Ezu1O7oVGm48/6RwcgaTFU/B5vsMp5AF4phq1M5RoSJwv9BsZaGWxPU511cVi92RNGbXE9MPDdZSLMaaJe4Ex2G20lTCN1VnD3GfiON34L9nRU= 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+55445+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 1583349707890464.41405091786464; Wed, 4 Mar 2020 11:21:47 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 7xGkYY1788612xAWChurry5L; Wed, 04 Mar 2020 11:21:47 -0800 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web09.16644.1583349707088839969 for ; Wed, 04 Mar 2020 11:21:47 -0800 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 024IvlJf038501; Wed, 4 Mar 2020 19:21:46 GMT X-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2130.oracle.com with ESMTP id 2yffcurgst-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:21:46 +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 024JEnDu145299; Wed, 4 Mar 2020 19:21:46 GMT X-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3030.oracle.com with ESMTP id 2yg1eqkkuh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:21:45 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 024JLiYh006461; Wed, 4 Mar 2020 19:21:44 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:21:43 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 01/13] OvmfPkg/MptScsiDxe: Create empty driver Date: Wed, 4 Mar 2020 21:22:45 +0200 Message-Id: <20200304192257.96736-2-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: Zu1qocyxwZiYe43xesZ5Hl4Rx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349707; bh=EJGVrD0rv0VmdC1EYwU8NNNGsuQRSFLkf06Tcg5EVq4=; h=Cc:Date:From:Reply-To:Subject:To; b=DLvBt4V8ptZS6v9YKJ4hsZ1rJEajGPuocBES1hN6sncdOYxYLtz9inM+6EOZOUkHDxq 3zCHJn2T+qiiWH+slNYZFbOpfsrFZkQBWwK3+SOJ2YEpfa+6xQ++G9I/yCbfz5bvEaPmn aWT4QKjp9oD7SOYD5XAJrd3dFnpcjPFhx2c= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" In preparation for implementing LSI Fusion MPT SCSI devices, create a basic scaffolding for a driver. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 30 +++++++++++++++++++++++++++++ OvmfPkg/MptScsiDxe/MptScsiDxe.inf | 32 +++++++++++++++++++++++++++++++ OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32.fdf | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.fdf | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/OvmfPkgX64.fdf | 1 + 8 files changed, 68 insertions(+) create mode 100644 OvmfPkg/MptScsiDxe/MptScsi.c create mode 100644 OvmfPkg/MptScsiDxe/MptScsiDxe.inf diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c new file mode 100644 index 000000000000..e1ad0b16b81b --- /dev/null +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -0,0 +1,30 @@ +/** @file + + This driver produces Extended SCSI Pass Thru Protocol instances for + LSI Fusion MPT SCSI devices. + + Copyright (C) 2020, Oracle and/or its affiliates. + + This program and the accompanying materials are licensed and made availa= ble + under the terms and conditions of the BSD License which accompanies this + distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WI= THOUT + WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +// +// Entry Point +// + +EFI_STATUS +EFIAPI +MptScsiEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + return EFI_UNSUPPORTED; +} diff --git a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf b/OvmfPkg/MptScsiDxe/MptScsi= Dxe.inf new file mode 100644 index 000000000000..91f7e8aa9ea5 --- /dev/null +++ b/OvmfPkg/MptScsiDxe/MptScsiDxe.inf @@ -0,0 +1,32 @@ +## @file +# This driver produces Extended SCSI Pass Thru Protocol instances for +# LSI Fusion MPT SCSI devices. +# +# Copyright (C) 2020, Oracle and/or its affiliates. +# +# This program and the accompanying materials are licensed and made availa= ble +# under the terms and conditions of the BSD License which accompanies this +# distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WI= THOUT +# WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Defines] + INF_VERSION =3D 1.29 + BASE_NAME =3D MptScsiDxe + FILE_GUID =3D 2B3DB5DD-B315-4961-8454-0AFF3C811B19 + MODULE_TYPE =3D UEFI_DRIVER + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D MptScsiEntryPoint + +[Sources] + MptScsi.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + UefiDriverEntryPoint diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 19728f20b34e..6d9c7c92dbd9 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -718,6 +718,7 @@ [Components] OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf OvmfPkg/XenBusDxe/XenBusDxe.inf OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf + OvmfPkg/MptScsiDxe/MptScsiDxe.inf 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..548ce0b614dc 100644 --- a/OvmfPkg/OvmfPkgIa32.fdf +++ b/OvmfPkg/OvmfPkgIa32.fdf @@ -227,6 +227,7 @@ [FV.DXEFV] INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf INF OvmfPkg/XenBusDxe/XenBusDxe.inf INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +INF OvmfPkg/MptScsiDxe/MptScsiDxe.inf =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..fdaebef73d28 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -731,6 +731,7 @@ [Components.X64] OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf OvmfPkg/XenBusDxe/XenBusDxe.inf OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf + OvmfPkg/MptScsiDxe/MptScsiDxe.inf 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..09364102dea6 100644 --- a/OvmfPkg/OvmfPkgIa32X64.fdf +++ b/OvmfPkg/OvmfPkgIa32X64.fdf @@ -228,6 +228,7 @@ [FV.DXEFV] INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf INF OvmfPkg/XenBusDxe/XenBusDxe.inf INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +INF OvmfPkg/MptScsiDxe/MptScsiDxe.inf =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..ee43202e09c0 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -729,6 +729,7 @@ [Components] OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf OvmfPkg/XenBusDxe/XenBusDxe.inf OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf + OvmfPkg/MptScsiDxe/MptScsiDxe.inf 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..09364102dea6 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -228,6 +228,7 @@ [FV.DXEFV] INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf INF OvmfPkg/XenBusDxe/XenBusDxe.inf INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +INF OvmfPkg/MptScsiDxe/MptScsiDxe.inf =20 !if $(SECURE_BOOT_ENABLE) =3D=3D TRUE INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootCon= figDxe.inf --=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 (#55445): https://edk2.groups.io/g/devel/message/55445 Mute This Topic: https://groups.io/mt/71733487/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 Sun May 5 15:10:59 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+55446+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+55446+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349721; cv=none; d=zohomail.com; s=zohoarc; b=M9cdX88nE134PCvbgCrBxflL0Mj5IFxrZZzzoqNGEmcmeONHymLvPikCCPe4JyASlcqJTvakFF5H6Ao5VcqMpUTRsQm7s54HcTmm3mzNF2TX0mfmXyU58GTWJirPmHaf+m/DNN7VwrEOaBq1Sj1JfYRBhrv+m0SUTEw49OfLdCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349721; 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=kKam1Ehtqo2KhlehloEDc7baQ0vaG79ovJISzA/2/MI=; b=W2F/vBh3opoZPPZ/Gxfs1nOWOafK5diNwp2wyEU8CCtTLk0yBjr4mniqAfgUbWMRyhyJKT76iymtFxQ4ojnZ6tgliwIfgFjdhTf0Off6HNjJpLYw5wU+PLMy71XQ3mQOnyeZGja0hM1qjnfBzApt3a0GkpaCs5VhGTmqj/9sBZs= 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+55446+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 1583349721816749.4906609453016; Wed, 4 Mar 2020 11:22:01 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id APgRYY1788612x7qJmLQVD15; Wed, 04 Mar 2020 11:22:01 -0800 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web10.16864.1583349720922703389 for ; Wed, 04 Mar 2020 11:22:01 -0800 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 024Ix0Jo092482; Wed, 4 Mar 2020 19:22:00 GMT X-Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2120.oracle.com with ESMTP id 2yghn3c746-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:00 +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 024JCnAR029234; Wed, 4 Mar 2020 19:21:59 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserp3020.oracle.com with ESMTP id 2yg1rryg0f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:21:59 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JLwOx024418; Wed, 4 Mar 2020 19:21:58 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:21:58 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 02/13] OvmfPkg/MptScsiDxe: Install DriverBinding Protocol Date: Wed, 4 Mar 2020 21:22:46 +0200 Message-Id: <20200304192257.96736-3-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: 7P7bcy7fhlmBR5bf7laY3eL4x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349721; bh=h6wu6IHVzM8oBskynyWLvY2UlJ2x6+D8mpvRWcbMmFw=; h=Cc:Date:From:Reply-To:Subject:To; b=goK3onsx+Fg6EzIXxgsw9U0ku+xtl3nSxs0a2q7cj92qg8aNNahgPN9eN4a1I0J/kZt OqyL3wHDrPKvJGEG8bkPNsJXoBqhA0OoAkqFH8k60TpRIb/AQTA7ZUrj3mOytSvdYLzdn DIB/MMpJ0cKfrVTFExWJjBFucRT0UKIpxeQ= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" In order to probe and connect to the MptScsi device we need this protocol. Currently it does nothing. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Laszlo Ersek Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 68 ++++++++++++++++++++++++++++++- OvmfPkg/MptScsiDxe/MptScsiDxe.inf | 1 + 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index e1ad0b16b81b..087822f71b0f 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -15,6 +15,65 @@ =20 **/ =20 +#include + +// +// Higher versions will be used before lower, 0x10-0xffffffef is the versi= on +// range for IVH (Indie Hardware Vendors) +// +#define MPT_SCSI_BINDING_VERSION 0x10 + +// +// Driver Binding +// + +STATIC +EFI_STATUS +EFIAPI +MptScsiControllerSupported ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +MptScsiControllerStart ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +MptScsiControllerStop ( + 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 mMptScsiDriverBinding =3D { + &MptScsiControllerSupported, + &MptScsiControllerStart, + &MptScsiControllerStop, + MPT_SCSI_BINDING_VERSION, + NULL, // ImageHandle, filled by EfiLibInstallDriverBindingComponentName2 + NULL, // DriverBindingHandle, filled as well +}; + // // Entry Point // @@ -26,5 +85,12 @@ MptScsiEntryPoint ( IN EFI_SYSTEM_TABLE *SystemTable ) { - return EFI_UNSUPPORTED; + return EfiLibInstallDriverBindingComponentName2 ( + ImageHandle, + SystemTable, + &mMptScsiDriverBinding, + ImageHandle, // The handle to install onto + NULL, // TODO Component name + NULL // TODO Component name + ); } diff --git a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf b/OvmfPkg/MptScsiDxe/MptScsi= Dxe.inf index 91f7e8aa9ea5..cf072a0b2e75 100644 --- a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf +++ b/OvmfPkg/MptScsiDxe/MptScsiDxe.inf @@ -30,3 +30,4 @@ [Packages] =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 (#55446): https://edk2.groups.io/g/devel/message/55446 Mute This Topic: https://groups.io/mt/71733489/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 Sun May 5 15:10:59 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+55447+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+55447+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349728; cv=none; d=zohomail.com; s=zohoarc; b=I3luhmg+KHMVQS9/MhnhW22engHzDLq0LOK4xgmHifY1CdEwEWq5cTct6Izsh2rDHqJQ7eIXQSHKWe8AZ6UfuhK5H0qD9BNYMRO66LNSFUHg650HcB7zkCA6OqAdusKywJ1HysBI9ADn2x/Xe4gyYyfkCj8IqSluD67G27HQBH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349728; 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=hRxxv2B3DsoYq2HHQk5GAkIyC0xmzvq2JDERBbwtNhk=; b=fiSSODpcFSA5gq/MuxXkPrWLzgpEwYGQyq5AHPvsR+O0S4/wNfz27eixbT0VSjjgtP8pqpYm4BzuudOmKCTNW1Hf0cQrAG0Sv6Xy1ySxE8q4ICsTPyflzsQQRgrzPfTd8/+CDMNx6C2DZHSQAEfmHK3lmVRFveB6RtsOdfR9IC4= 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+55447+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 1583349728141604.9978775030534; Wed, 4 Mar 2020 11:22:08 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id QiMxYY1788612xGPLB38Si2P; Wed, 04 Mar 2020 11:22:07 -0800 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web11.16603.1583349727267417191 for ; Wed, 04 Mar 2020 11:22:07 -0800 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 024Ix16x093521; Wed, 4 Mar 2020 19:22:07 GMT X-Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2120.oracle.com with ESMTP id 2yghn3c74s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:06 +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 024JCruW029572; Wed, 4 Mar 2020 19:22:06 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserp3020.oracle.com with ESMTP id 2yg1rrygb5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:06 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JM5MF024454; Wed, 4 Mar 2020 19:22:05 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:04 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org, Jaben Carsey Subject: [edk2-devel] [PATCH v3 03/13] OvmfPkg/MptScsiDxe: Report name of driver Date: Wed, 4 Mar 2020 21:22:47 +0200 Message-Id: <20200304192257.96736-4-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: Qg5WzI73brqUU9TDZbPr7F7Bx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349727; bh=xM7NuqgpanjhyehTxDKFP6zchLchqq9/fR4t8tBCGPY=; h=Cc:Date:From:Reply-To:Subject:To; b=JQlGiskYTrbEMBaoy7I1ND0aHagdpjLXJitodbyxY4GKnkZz32xPt1UKo9PNR004iwC f98QkAlGw0mjVB9PMw+F1jXNd4hqdAylMzAJlU//jchcNgxROQ+hTCKwm0/VQqCFoh3iT H6CXmyLny3PfIxtdqzS3PtMkMEqjkK0ahxI= 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=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Laszlo Ersek Reviewed-by: Jaben Carsey Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 61 ++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index 087822f71b0f..2961c3df3c45 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -74,6 +74,63 @@ EFI_DRIVER_BINDING_PROTOCOL mMptScsiDriverBinding =3D { NULL, // DriverBindingHandle, filled as well }; =20 +// +// Component Name +// + +STATIC +EFI_UNICODE_STRING_TABLE mDriverNameTable[] =3D { + { "eng;en", L"LSI Fusion MPT SCSI Driver" }, + { NULL, NULL } +}; + +STATIC +EFI_COMPONENT_NAME_PROTOCOL mComponentName; + +EFI_STATUS +EFIAPI +MptScsiGetDriverName ( + 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 + ); +} + +EFI_STATUS +EFIAPI +MptScsiGetDeviceName ( + 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 { + &MptScsiGetDriverName, + &MptScsiGetDeviceName, + "eng" // SupportedLanguages, ISO 639-2 language codes +}; + +STATIC +EFI_COMPONENT_NAME2_PROTOCOL mComponentName2 =3D { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) &MptScsiGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) &MptScsiGetDeviceName, + "en" // SupportedLanguages, RFC 4646 language codes +}; + // // Entry Point // @@ -90,7 +147,7 @@ MptScsiEntryPoint ( SystemTable, &mMptScsiDriverBinding, ImageHandle, // The handle to install onto - 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 (#55447): https://edk2.groups.io/g/devel/message/55447 Mute This Topic: https://groups.io/mt/71733494/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 Sun May 5 15:10:59 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+55448+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+55448+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349730; cv=none; d=zohomail.com; s=zohoarc; b=GVLKd2459yvZUmgCCKNKqvVXbvoAT8LlI5HHRDtLlrMEld5G5YIfBeKWNR6izQjpGk6r/1W4aaK/6oX5Hrh9fgbb9FG5nn/zlkGYga0vdFrtR4JLe7IISWSY/WinpH7gcLLSaN69mWAMTlkOXSdDXNP9qUt7KZXOYpUn5gR5z18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349730; 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=CvDZdZBce23K17prpYB1MgGlGxGmz3MOgpEajNLYOQ4=; b=QGe0CCZ1VS/7kKxyRP5aCXwZ3oielQU79oUpXsyNAVM9xgqbE2P0/WWJ+r+rmIdWrGEyoaPwoKHprJcZcypdBlKcTS6sOOUdI6zL/8nCf4dPNZusKNuaW/KUg4vBa6dU1jNLqjJNickuPJvE1la2QowFu8q0ydlPIcqIpjXxYC8= 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+55448+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 1583349730853279.53656095779365; Wed, 4 Mar 2020 11:22:10 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id paYDYY1788612x7Ppl6OoSl7; Wed, 04 Mar 2020 11:22:10 -0800 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web09.16646.1583349730046816353 for ; Wed, 04 Mar 2020 11:22:10 -0800 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 024Iw6Lc027799; Wed, 4 Mar 2020 19:22:09 GMT X-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by aserp2120.oracle.com with ESMTP id 2yffwr0e2w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:09 +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 024JElhr145054; Wed, 4 Mar 2020 19:22:08 GMT X-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3030.oracle.com with ESMTP id 2yg1eqkmft-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:08 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 024JM7sF006672; Wed, 4 Mar 2020 19:22:07 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:07 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 04/13] OvmfPkg/MptScsiDxe: Probe PCI devices and look for MptScsi Date: Wed, 4 Mar 2020 21:22:48 +0200 Message-Id: <20200304192257.96736-5-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: Xphz8LFzOEOYKBSeRR1b1ihDx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349730; bh=ZTJqyFfz6qhNHp2R1xMVQ+lsHdOYvH02iE3pFpdO8Jo=; h=Cc:Date:From:Reply-To:Subject:To; b=kN+bxlXGn8i0BqGP6aPxACPAHlpctBDttoc1jdTvLLebiQNs5Ud17NvGsmLzOS3SSK5 0UDNyf38UVC/I7O0J9+gZ3vL3yDCyn9N4REVrM09HVK7jIamI6jTfRXpUOgJkuu9h7Bh9 Tlx2K9Ao7Vfmh0s6dYpBVm3DQ/pu3EWfwwQ= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" The MptScsiControllerSupported function is called on handles passed in by the ConnectController() boot service and if the handle is the lsi53c1030 controller the function would return success. A successful return value will attach our driver to the device. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Laszlo Ersek Reviewed-by: Liran Alon --- .../Include/IndustryStandard/FusionMptScsi.h | 29 +++++++++++ OvmfPkg/MptScsiDxe/MptScsi.c | 49 ++++++++++++++++++- OvmfPkg/MptScsiDxe/MptScsiDxe.inf | 5 ++ 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 OvmfPkg/Include/IndustryStandard/FusionMptScsi.h diff --git a/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h b/OvmfPkg/Inc= lude/IndustryStandard/FusionMptScsi.h new file mode 100644 index 000000000000..1bd65ed40b1c --- /dev/null +++ b/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h @@ -0,0 +1,29 @@ +/** @file + + Macros and type definitions for LSI Fusion MPT SCSI devices. + + Copyright (C) 2020, Oracle and/or its affiliates. + + This program and the accompanying materials are licensed and made avai= lable + under the terms and conditions of the BSD License which accompanies th= is + distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, = WITHOUT + WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __FUSION_MPT_SCSI_H__ +#define __FUSION_MPT_SCSI_H__ + +// +// Device offsets and constants +// + +#define LSI_LOGIC_PCI_VENDOR_ID 0x1000 +#define LSI_53C1030_PCI_DEVICE_ID 0x0030 +#define LSI_SAS1068_PCI_DEVICE_ID 0x0054 +#define LSI_SAS1068E_PCI_DEVICE_ID 0x0058 + +#endif // __FUSION_MPT_SCSI_H__ diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index 2961c3df3c45..07f8fe267fc2 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -15,7 +15,11 @@ =20 **/ =20 +#include +#include +#include #include +#include =20 // // Higher versions will be used before lower, 0x10-0xffffffef is the versi= on @@ -36,7 +40,50 @@ MptScsiControllerSupported ( 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=3D LSI_LOGIC_PCI_VENDOR_ID && + (Pci.Hdr.DeviceId =3D=3D LSI_53C1030_PCI_DEVICE_ID || + Pci.Hdr.DeviceId =3D=3D LSI_SAS1068_PCI_DEVICE_ID || + Pci.Hdr.DeviceId =3D=3D LSI_SAS1068E_PCI_DEVICE_ID)) { + Status =3D EFI_SUCCESS; + } else { + Status =3D EFI_UNSUPPORTED; + } + +Done: + gBS->CloseProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); + return Status; } =20 STATIC diff --git a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf b/OvmfPkg/MptScsiDxe/MptScsi= Dxe.inf index cf072a0b2e75..105af20f325f 100644 --- a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf +++ b/OvmfPkg/MptScsiDxe/MptScsiDxe.inf @@ -27,7 +27,12 @@ [Sources] =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 (#55448): https://edk2.groups.io/g/devel/message/55448 Mute This Topic: https://groups.io/mt/71733496/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 Sun May 5 15:10:59 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+55449+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+55449+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349732; cv=none; d=zohomail.com; s=zohoarc; b=GGjpVQUoJBRPk+xvPtIxHas++vu7WTgcCdPLAOIi5MR2uXLAWGL5Dg/RmQLaXnSm4B0MK+mph7XuqGvFG65LySAUenoO5BWWJqj0ZCvcxkyYGhz3Lx6kx/fhihVqUb8cpQi2/LXrWQGGxVzuJOf+inA++/JyMvW9MskJ3AtPRdA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349732; 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=I1HAhAj9MXqwS/KicYc79hplLjx15rYQ3dr7dcUesvQ=; b=Uf+BBqMjvUfTHeAcHWZxihUUSfEkDouHIp2vnZquqedbX8qq8B2SxzJFZlSHDPs+5yc6HX1ppmMfi5J8RO6oQAlRuSIX3W8IKR/6qm3UolaFF7EBW1+1hvKTMzEIbr5H3hyfibjDBBHDDWsF1GZ5s3JGV1WwgwPl6KPT7uM1nVU= 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+55449+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 1583349732709844.4211830458825; Wed, 4 Mar 2020 11:22:12 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 7EVJYY1788612xjQQXNcO3Kb; Wed, 04 Mar 2020 11:22:12 -0800 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web11.16605.1583349731968664568 for ; Wed, 04 Mar 2020 11:22:12 -0800 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 024Ivlt4038228; Wed, 4 Mar 2020 19:22:11 GMT X-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2130.oracle.com with ESMTP id 2yffcurgua-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:11 +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 024JDCjg149039; Wed, 4 Mar 2020 19:22:10 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserp3030.oracle.com with ESMTP id 2yg1h1h4ra-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:10 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JM9SS024472; Wed, 4 Mar 2020 19:22:09 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:09 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 05/13] OvmfPkg/MptScsiDxe: Install stubbed EXT_SCSI_PASS_THRU Date: Wed, 4 Mar 2020 21:22:49 +0200 Message-Id: <20200304192257.96736-6-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: KajtkEGUHG2joOXZCyvNn3l9x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349732; bh=DP8E6usEk9zwV+Eb+GwDtBnC0Q2A7CIvz2V8DSj/13Q=; h=Cc:Date:From:Reply-To:Subject:To; b=xNJpWJYdaMV2Ag16nwylSIx2fK9Fen10Btl9kUJwPkCPPHgBjH8rcQaLQgYgeDIFAQG kS+zBntyMBFS9F+Rg/T8IYx3Yi8xXG6bb45AUZkGngBcVVABxnJcOZyGHKrtRaFVVvxwH oDtpXSrjMo4DCOcq4S7OjR1Wnt3rHaz2aJ8= 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=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Laszlo Ersek --- OvmfPkg/MptScsiDxe/MptScsi.c | 179 +++++++++++++++++++++++++++++- OvmfPkg/MptScsiDxe/MptScsiDxe.inf | 5 +- 2 files changed, 181 insertions(+), 3 deletions(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index 07f8fe267fc2..9598b82fda53 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -17,9 +17,12 @@ =20 #include #include +#include +#include #include #include #include +#include =20 // // Higher versions will be used before lower, 0x10-0xffffffef is the versi= on @@ -27,6 +30,109 @@ // #define MPT_SCSI_BINDING_VERSION 0x10 =20 +// +// Runtime Structures +// + +#define MPT_SCSI_DEV_SIGNATURE SIGNATURE_32 ('M','P','T','S') +typedef struct { + UINT32 Signature; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; + EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; +} MPT_SCSI_DEV; + +#define MPT_SCSI_FROM_PASS_THRU(PassThruPtr) \ + CR (PassThruPtr, MPT_SCSI_DEV, PassThru, MPT_SCSI_DEV_SIGNATURE) + +// +// Ext SCSI Pass Thru +// + +STATIC +EFI_STATUS +EFIAPI +MptScsiPassThru ( + 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 +MptScsiGetNextTargetLun ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN OUT UINT8 **Target, + IN OUT UINT64 *Lun + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +MptScsiGetNextTarget ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN OUT UINT8 **Target + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +MptScsiBuildDevicePath ( + 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 +MptScsiGetTargetLun ( + 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 +MptScsiResetChannel ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This + ) +{ + return EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +MptScsiResetTargetLun ( + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN UINT8 *Target, + IN UINT64 Lun + ) +{ + return EFI_UNSUPPORTED; +} + // // Driver Binding // @@ -95,7 +201,49 @@ MptScsiControllerStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - return EFI_UNSUPPORTED; + EFI_STATUS Status; + MPT_SCSI_DEV *Dev; + + Dev =3D AllocateZeroPool (sizeof (*Dev)); + if (Dev =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Dev->Signature =3D MPT_SCSI_DEV_SIGNATURE; + + // + // Host adapter channel, doesn't exist + // + Dev->PassThruMode.AdapterId =3D MAX_UINT32; + Dev->PassThruMode.Attributes =3D + EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_PHYSICAL + | EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL; + + Dev->PassThru.Mode =3D &Dev->PassThruMode; + Dev->PassThru.PassThru =3D &MptScsiPassThru; + Dev->PassThru.GetNextTargetLun =3D &MptScsiGetNextTargetLun; + Dev->PassThru.BuildDevicePath =3D &MptScsiBuildDevicePath; + Dev->PassThru.GetTargetLun =3D &MptScsiGetTargetLun; + Dev->PassThru.ResetChannel =3D &MptScsiResetChannel; + Dev->PassThru.ResetTargetLun =3D &MptScsiResetTargetLun; + Dev->PassThru.GetNextTarget =3D &MptScsiGetNextTarget; + + Status =3D gBS->InstallProtocolInterface ( + &ControllerHandle, + &gEfiExtScsiPassThruProtocolGuid, + EFI_NATIVE_INTERFACE, + &Dev->PassThru + ); + if (EFI_ERROR (Status)) { + goto FreePool; + } + + return EFI_SUCCESS; + +FreePool: + FreePool (Dev); + + return Status; } =20 STATIC @@ -108,7 +256,34 @@ MptScsiControllerStop ( IN EFI_HANDLE *ChildHandleBuffer ) { - return EFI_UNSUPPORTED; + EFI_STATUS Status; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru; + MPT_SCSI_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 MPT_SCSI_FROM_PASS_THRU (PassThru); + + Status =3D gBS->UninstallProtocolInterface ( + ControllerHandle, + &gEfiExtScsiPassThruProtocolGuid, + &Dev->PassThru + ); + ASSERT_EFI_ERROR (Status); + + FreePool (Dev); + + return Status; } =20 STATIC diff --git a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf b/OvmfPkg/MptScsiDxe/MptScsi= Dxe.inf index 105af20f325f..a253c5d96916 100644 --- a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf +++ b/OvmfPkg/MptScsiDxe/MptScsiDxe.inf @@ -30,9 +30,12 @@ [Packages] 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 (#55449): https://edk2.groups.io/g/devel/message/55449 Mute This Topic: https://groups.io/mt/71733497/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 Sun May 5 15:10:59 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+55450+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+55450+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349736; cv=none; d=zohomail.com; s=zohoarc; b=ASjBeGdxlKbaPSqwS8esJIgMWPLjY/HEmwJDj9UPNWXNEDex/o0W+2WYEmq2tgO5/PsS6qAJjAQZmxb7ri9w69gpr6UVLJodWW1ya6fbPBQb6KWqbojOaYIjW6MJj/o43ORioV2QpUT9vAOpR8JDMTAGSDyks73ckPR3rWrcoPc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349736; 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=WIiv6W5SJqSF8xMQuUBK2dUSrx+XIvtpmR0Rq/6wyfU=; b=HqiSbUfQqqTp66k64pFjcBJLu4KAuRa/+yGcPQPcMa+LlESM0albHDuASCpijkBJZrDK0buWJN5HuhkGNnZ8WWFAIn4neOJ29yad9KftF51OIPmgGY9tHymLUmbbULTb3HWYT3wZG2xzIlhG+lTkhc25VWaaot5R0NC8612o+kE= 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+55450+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 1583349736013889.9395478128206; Wed, 4 Mar 2020 11:22:16 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 21m1YY1788612xrq33WE9uYi; Wed, 04 Mar 2020 11:22:15 -0800 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web12.16743.1583349734532236842 for ; Wed, 04 Mar 2020 11:22:14 -0800 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 024Iw72F028174; Wed, 4 Mar 2020 19:22:14 GMT X-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2120.oracle.com with ESMTP id 2yffwr0e39-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:13 +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 024JDB9e148935; Wed, 4 Mar 2020 19:22:13 GMT X-Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserp3030.oracle.com with ESMTP id 2yg1h1h4sp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:13 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JMCko014401; Wed, 4 Mar 2020 19:22:12 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:11 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 06/13] OvmfPkg/MptScsiDxe: Report one Target and one LUN Date: Wed, 4 Mar 2020 21:22:50 +0200 Message-Id: <20200304192257.96736-7-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: H3wmR5Xz6NXzDDYjp2UkuNJFx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349735; bh=3oX52Vev5dbRUs070T/XDQW/lHxOv9nugICSTtRJdLM=; h=Cc:Date:From:Reply-To:Subject:To; b=GnRiZzn/99pfzG2umY7aw+3MOMAa7IhR98zyxmckera2btXVUsaeW2EVcMjuBPED8Y7 2Xte0K9NNZ+NV6RR0EQS/a/E29okxG/1u6lNY6UiJbPOR/aeSDHVeh1l0G2JaeDvyJxwn FugSub97hW6s9hhV5F4NYZHJUKSgPq83Wgc= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Support for multiple targets will be implemented in a later commit in this series. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Laszlo Ersek --- OvmfPkg/MptScsiDxe/MptScsi.c | 38 +++++++++++++++++++++++++++++-- OvmfPkg/MptScsiDxe/MptScsiDxe.inf | 1 + 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index 9598b82fda53..e898a6024f73 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -17,6 +17,7 @@ =20 #include #include +#include #include #include #include @@ -62,6 +63,22 @@ MptScsiPassThru ( return EFI_UNSUPPORTED; } =20 +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; +} + STATIC EFI_STATUS EFIAPI @@ -71,7 +88,16 @@ MptScsiGetNextTargetLun ( IN OUT UINT64 *Lun ) { - return EFI_UNSUPPORTED; + // + // Currently support only target 0 LUN 0, so hardcode it + // + if (!IsTargetInitialized (*Target)) { + ZeroMem (*Target, TARGET_MAX_BYTES); + *Lun =3D 0; + return EFI_SUCCESS; + } else { + return EFI_NOT_FOUND; + } } =20 STATIC @@ -82,7 +108,15 @@ MptScsiGetNextTarget ( IN OUT UINT8 **Target ) { - return EFI_UNSUPPORTED; + // + // Currently support only target 0 LUN 0, so hardcode it + // + if (!IsTargetInitialized (*Target)) { + ZeroMem (*Target, TARGET_MAX_BYTES); + return EFI_SUCCESS; + } else { + return EFI_NOT_FOUND; + } } =20 STATIC diff --git a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf b/OvmfPkg/MptScsiDxe/MptScsi= Dxe.inf index a253c5d96916..8f366b92eb72 100644 --- a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf +++ b/OvmfPkg/MptScsiDxe/MptScsiDxe.inf @@ -30,6 +30,7 @@ [Packages] OvmfPkg/OvmfPkg.dec =20 [LibraryClasses] + BaseMemoryLib DebugLib MemoryAllocationLib UefiBootServicesTableLib --=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 (#55450): https://edk2.groups.io/g/devel/message/55450 Mute This Topic: https://groups.io/mt/71733498/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 Sun May 5 15:10:59 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+55451+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+55451+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349737; cv=none; d=zohomail.com; s=zohoarc; b=R/yk2Wljpn/UiWlgYcrZdTf3exzKnRLRmjSj9iZBQ1zmzazvwynz5fe9DMAwDuFLvgjxQY6rvXW2N9Z4JIBAr+JA7RWgGCrQ2/yexgYLmfpaKfUzGwUZgs2oIGJwT9JsO94ooXbpa4PPyQkj0QSSIIenH6i/cLHB5KWY39ojvMA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349737; 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=fsVvEMad1fMy8Wf9M8wtdK1BfWdDpGZlJiuv6IviDB8=; b=TpxrAMljbT3kJQzHQm3eoXpciP5eXm2RKHZdKsgymVSF39pzMm4Faffk8trkpIx6NV7WooxFPXpV51/1IAGWWEF/tsjdURm2dAtrBWz6uvp/eslbQVLgiMuozAdUP0imlJ9gJQ9iturLkuTM7Ab5eRj1XvF3kpz5lENyI82tXo4= 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+55451+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 1583349737026590.0618934582004; Wed, 4 Mar 2020 11:22:17 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 5OL2YY1788612xAvSTzkGrBr; Wed, 04 Mar 2020 11:22:16 -0800 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web11.16607.1583349736163500260 for ; Wed, 04 Mar 2020 11:22:16 -0800 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 024Ivxvn049091; Wed, 4 Mar 2020 19:22:15 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2130.oracle.com with ESMTP id 2yffcurguq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:15 +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 024JEdXr192512; Wed, 4 Mar 2020 19:22:15 GMT X-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3020.oracle.com with ESMTP id 2yg1p890q0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:15 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 024JMEs9006698; Wed, 4 Mar 2020 19:22:14 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:14 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 07/13] OvmfPkg/MptScsiDxe: Build DevicePath for discovered devices Date: Wed, 4 Mar 2020 21:22:51 +0200 Message-Id: <20200304192257.96736-8-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: eExe47H5rt1Sh43Ry1AAcZ01x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349736; bh=uxU+wKM1uJYAp+9FIZdr7Cnh8BhMaStT6S8bi3/ykys=; h=Cc:Date:From:Reply-To:Subject:To; b=Qt5nJsfgL/OA7poPDwDtwOhevFwK2qsRpZwq/hfpRMh1EPSVAaD5DsQstgjR8nXfDR0 SiU+iEHtVYOWVm227Uz8qbXGLLaEEA5kKeS50AjVwYI7xXPtNqAsHL575nZ5PvRTU11KJ aR9mnKZwnVadU/o2NyNvAyIKuIgWYTCHKCs= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Used to identify the individual disks in the hardware tree Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index e898a6024f73..cba564b5f648 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -129,7 +129,34 @@ MptScsiBuildDevicePath ( IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath ) { - return EFI_UNSUPPORTED; + SCSI_DEVICE_PATH *ScsiDevicePath; + + if (DevicePath =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // This device support 256 targets only, so it's enough to dereference + // the LSB of Target. + // + if (*Target > 0 || Lun > 0) { + return EFI_NOT_FOUND; + } + + ScsiDevicePath =3D AllocateZeroPool (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 *Target; + ScsiDevicePath->Lun =3D (UINT16)Lun; + + *DevicePath =3D &ScsiDevicePath->Header; + 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 (#55451): https://edk2.groups.io/g/devel/message/55451 Mute This Topic: https://groups.io/mt/71733500/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 Sun May 5 15:10:59 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+55452+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+55452+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349739; cv=none; d=zohomail.com; s=zohoarc; b=YTIjpd3WwtOMPx0/I65kzzNTwSXlfIrXaJOEeAyl7yy6VQm4acQ+k9dx52fRTDBPy1v3zM/m3WUM9iRXIzZZuv9Knith5mYeQPHZzossNDShhlQ27tkVqpzmYvWtnNGQJz2onrekh8i66onDBDw82hF7wHoIBUHffX/3G/KPIbc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349739; 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=AMM1nZBWVY5F2f8jlplE1pLy0+CY7rcRwjY4SvbGbn0=; b=cM6Wajr3lRHuj1Ankg29q1cWFMz69Q5sMZfoTnepGsIqd9zU5Nr867V+WnzgtUiCDmLNWq5ge221gf5yDjlkCjKk9mwcx/F0oEm6lYn5Hu0zCsUj6ySDp1p7D/BcjI/dfmaxDT3BGWQWZNEUTmW5zbSOsH9b9xNgMW5piysstX4= 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+55452+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 1583349739939571.3023973478844; Wed, 4 Mar 2020 11:22:19 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id XSjbYY1788612xubT1HTO4ET; Wed, 04 Mar 2020 11:22:19 -0800 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web10.16871.1583349739036559751 for ; Wed, 04 Mar 2020 11:22:19 -0800 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 024IwFGD035832; Wed, 4 Mar 2020 19:22:18 GMT X-Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2120.oracle.com with ESMTP id 2yffwr0e3v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:18 +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 024JCuPY029711; Wed, 4 Mar 2020 19:22:18 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserp3020.oracle.com with ESMTP id 2yg1rrygvs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:18 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 024JMG7e024693; Wed, 4 Mar 2020 19:22:16 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:16 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 08/13] OvmfPkg/MptScsiDxe: Implement GetTargetLun Date: Wed, 4 Mar 2020 21:22:52 +0200 Message-Id: <20200304192257.96736-9-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: OFr93tVvylbVeHmaaf14dmjEx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349739; bh=ZMEQJ/lSdqNQkAlPvDv7njnMHX10ES5keczNkeAcu3E=; h=Cc:Date:From:Reply-To:Subject:To; b=OSKbWFhEyai6BWdpj7XzL1cqaN7oBk68LLawV4JFBUBxcYKeugNrqbRAxmjUtFiT/LH 0LTEof48THMHsBTQ/85EWwmLF5+LP0R4uutUyjeKtlewaZbS+GZBcO8Rju6ipRuKX4PjN VYsA3VNdaXwRiROAze5yX1PwmiynnBM+fuM= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Currently we accept only Pun=3D0 and Lun=3D0, but we will relax this in a later patch. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index cba564b5f648..a77599dd4b27 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -169,7 +169,33 @@ MptScsiGetTargetLun ( OUT UINT64 *Lun ) { - return EFI_UNSUPPORTED; + SCSI_DEVICE_PATH *ScsiDevicePath; + + 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; + if (ScsiDevicePath->Pun > 0 || + ScsiDevicePath->Lun > 0) { + return EFI_NOT_FOUND; + } + + ZeroMem (*Target, TARGET_MAX_BYTES); + // + // This device support 256 targets only, so it's enough to set the LSB + // of Target. + // + **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 (#55452): https://edk2.groups.io/g/devel/message/55452 Mute This Topic: https://groups.io/mt/71733501/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 Sun May 5 15:10:59 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+55453+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+55453+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349742; cv=none; d=zohomail.com; s=zohoarc; b=KTJqL45u3cG06VwyvPBxBQzbPvByjlBrY9q5K5HyKS9642n7yYJ35z+Kh+EnekdblEnahkUXDkB+1XUJDYh3W6u/xuzxsbfXqccTuOh0I9bi9KJydjexezR5YcWY4509FFgg1RakGtGKcMIP8sx/29caZaEsYF/0Ml/+OcKu5oQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349742; 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=O8NvD6NOKAEyWBVNKgYMlYh5WFGuX6e9N5OblQsqGZo=; b=Kfh0Rj0O+jQgkTK8qZckrPtziNh7vJATLp9SnnocPHtMOeQ0AGs9P4j1cs0kIoVUrKTXR9kNvAB29UddGG/q9L3pBxk/06Me4k/xsiJuA+5GthBL/8hYmRWWB7mRjTfUAQuywn+djzFJFX/t7a/IrVDfrujqFzmsSWtLOTL+b58= 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+55453+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 1583349742210217.04009038371646; Wed, 4 Mar 2020 11:22:22 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id zHGWYY1788612xOuJYew6lls; Wed, 04 Mar 2020 11:22:21 -0800 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web09.16654.1583349741341290380 for ; Wed, 04 Mar 2020 11:22:21 -0800 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 024Iw7UP028900; Wed, 4 Mar 2020 19:22:20 GMT X-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 2yffwr0e47-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:20 +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 024JEdXs192512; Wed, 4 Mar 2020 19:22:20 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userp3020.oracle.com with ESMTP id 2yg1p890st-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:19 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JMIqp024500; Wed, 4 Mar 2020 19:22:18 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:18 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 09/13] OvmfPkg/MptScsiDxe: Open PciIo protocol for later use Date: Wed, 4 Mar 2020 21:22:53 +0200 Message-Id: <20200304192257.96736-10-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: ctKeFKVBckMj2jSxGLaBSaQKx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349741; bh=BrKEUpEifyeaIODA2kj7kv0SL2VU4pPJTW7Uq31VV7U=; h=Cc:Date:From:Reply-To:Subject:To; b=MPEkzp8PrZFevbdlnl12i8jAM+V4LcvsSnLWfMW1CLbQbsAGefHJ+xEyY1dRWDstF7b IvmUjaSCSL3OQANx/6frVHH4Kd9uxIvwDXDSUKCQQ1ICzazXjn952vL9iiGAeciq9Xl9g gVxy8BGH5JrB3ggLrdxuAKFtSxFeLGPxzSk= 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=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index a77599dd4b27..f05383e479b6 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -40,6 +40,7 @@ typedef struct { UINT32 Signature; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; + EFI_PCI_IO_PROTOCOL *PciIo; } MPT_SCSI_DEV; =20 #define MPT_SCSI_FROM_PASS_THRU(PassThruPtr) \ @@ -298,6 +299,18 @@ MptScsiControllerStart ( =20 Dev->Signature =3D MPT_SCSI_DEV_SIGNATURE; =20 + Status =3D gBS->OpenProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + (VOID **)&Dev->PciIo, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status)) { + goto FreePool; + } + // // Host adapter channel, doesn't exist // @@ -322,11 +335,19 @@ MptScsiControllerStart ( &Dev->PassThru ); if (EFI_ERROR (Status)) { - goto FreePool; + goto CloseProtocol; } =20 return EFI_SUCCESS; =20 +CloseProtocol: + gBS->CloseProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); + FreePool: FreePool (Dev); =20 @@ -368,6 +389,13 @@ MptScsiControllerStop ( ); ASSERT_EFI_ERROR (Status); =20 + gBS->CloseProtocol ( + ControllerHandle, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); + FreePool (Dev); =20 return Status; --=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 (#55453): https://edk2.groups.io/g/devel/message/55453 Mute This Topic: https://groups.io/mt/71733503/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 Sun May 5 15:10:59 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+55454+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+55454+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349744; cv=none; d=zohomail.com; s=zohoarc; b=X0VF3/ENb0IUmT6p9cUUEv+RCoa4FMjqdtLzZ7Zl8/hS4auv7X+FZdJuTCu9Eg23EC1j920vH588fJQAcLTu2JSosz8lc3bCSw9d1Eo6SWO7xCuw+dSfzpJ6WHNkepqOUMPtQW9sV16hHBBhNwbrab3rphsqnBavGdv8nishuL4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349744; 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=O2WueDNsQEWex7pP8A2LCUa7Tu5wCvZEWDdQbD8HiIE=; b=Zd565d/yVYN0brss+jXyjeqxvEOUvaNVSCBmhiYfzZ9ndimzyJxWr/9brlVCKJnqSVcDhAugPgA9jeA5HY1v1nHcPISiT+VL2xM8H0MXOfXRfarNodBpgtbKDw9J1RUJcpEOgxwkrJ+mMpEJVJkgwSYkFmhYEy3gi/EMwY4gf6c= 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+55454+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 1583349744305660.7003008411968; Wed, 4 Mar 2020 11:22:24 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id V8xlYY1788612xKnIDQGB2tS; Wed, 04 Mar 2020 11:22:23 -0800 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web10.16873.1583349743109864239 for ; Wed, 04 Mar 2020 11:22:23 -0800 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 024Ix0J8092258; Wed, 4 Mar 2020 19:22:22 GMT X-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 2yghn3c76a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:22 +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 024JF1jZ145994; Wed, 4 Mar 2020 19:22:22 GMT X-Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userp3030.oracle.com with ESMTP id 2yg1eqkmtx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:22 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JMLrm014455; Wed, 4 Mar 2020 19:22:21 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:20 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 10/13] OvmfPkg/MptScsiDxe: Set and restore PCI attributes Date: Wed, 4 Mar 2020 21:22:54 +0200 Message-Id: <20200304192257.96736-11-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: 0ppkDEEZQo3LwP9UbWNoYEA4x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349743; bh=tDd5oiyxJBNcHGRa8NEE6tEh0st8wXRB/f/8M+dNP70=; h=Cc:Date:From:Reply-To:Subject:To; b=qe79uiUjbomCXjae9a5xZ3Hf6hWfp0pXZwv1RFRrEzNxx5OJjbwouOQdr+HGFoTQMW3 YNSyHSpCa9Z+S5qpjTSAhYiU5y+XytjBJuV3Pfs2+Q6BDi6eRFZVqBzyQ4iNLtEAuCoq4 qTlYpVEuqFhM/O4e20r6b8OUb9Co1HWaVSE= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Enable the IO Space and Bus Mastering and restore the original values when the device is stopped. This is a standard procedure in PCI drivers. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 42 +++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index f05383e479b6..4a52dee902c7 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -41,6 +41,7 @@ typedef struct { EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; EFI_PCI_IO_PROTOCOL *PciIo; + UINT64 OriginalPciAttributes; } MPT_SCSI_DEV; =20 #define MPT_SCSI_FROM_PASS_THRU(PassThruPtr) \ @@ -311,6 +312,30 @@ MptScsiControllerStart ( goto FreePool; } =20 + Status =3D Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationGet, + 0, + &Dev->OriginalPciAttributes + ); + if (EFI_ERROR (Status)) { + goto CloseProtocol; + } + + // + // Enable I/O Space & Bus-Mastering + // + Status =3D Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationEnable, + (EFI_PCI_IO_ATTRIBUTE_IO | + EFI_PCI_IO_ATTRIBUTE_BUS_MASTER), + NULL + ); + if (EFI_ERROR (Status)) { + goto CloseProtocol; + } + // // Host adapter channel, doesn't exist // @@ -335,11 +360,19 @@ MptScsiControllerStart ( &Dev->PassThru ); if (EFI_ERROR (Status)) { - goto CloseProtocol; + goto RestoreAttributes; } =20 return EFI_SUCCESS; =20 +RestoreAttributes: + Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationEnable, + Dev->OriginalPciAttributes, + NULL + ); + CloseProtocol: gBS->CloseProtocol ( ControllerHandle, @@ -389,6 +422,13 @@ MptScsiControllerStop ( ); ASSERT_EFI_ERROR (Status); =20 + Dev->PciIo->Attributes ( + Dev->PciIo, + EfiPciIoAttributeOperationEnable, + Dev->OriginalPciAttributes, + NULL + ); + gBS->CloseProtocol ( ControllerHandle, &gEfiPciIoProtocolGuid, --=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 (#55454): https://edk2.groups.io/g/devel/message/55454 Mute This Topic: https://groups.io/mt/71733505/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 Sun May 5 15:10:59 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+55455+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+55455+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349748; cv=none; d=zohomail.com; s=zohoarc; b=OMCcKdVoLAc5Akh9oH2xuwSEKVO0EFwKXX4Naw6IjfY31c8yKFQvr50uWZdjEwq31gDY0hDa1OMz9nNDbfMp+9fVWkD7Dh8Z8gc2fblJkb/bOedlJBv1SKfnKjHYIRCx5yWJsG0LbMs+C4cmjrgv35pxBXHy2XGicd31czs64zA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349748; 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=EIkaulKnnHImbLZR+EMNsa7NMZrgD1Qgno0rbgGGz34=; b=IOe5Ed/YHzKkSDgKF++tXQviqyI/ZLkMy5kMW6/xaHFWK8y12j2Aaz2Oi2yvh2pKi4YMqouYd29SPR3gOgZoAlXCP/SEWMYlnCOBDv6Gt649jZ8dm8attbJMTRIZp7YIxdik/dKT4D5bL8qb/CkkQiW7kR8s4CHFyvIuDqNSH2U= 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+55455+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 1583349748071747.8498466872177; Wed, 4 Mar 2020 11:22:28 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id LugCYY1788612xUVObmmigeu; Wed, 04 Mar 2020 11:22:26 -0800 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web12.16748.1583349746209538052 for ; Wed, 04 Mar 2020 11:22:26 -0800 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 024Iw8YW028989; Wed, 4 Mar 2020 19:22:25 GMT X-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by aserp2120.oracle.com with ESMTP id 2yffwr0e4n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:25 +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 024JEmj3145223; Wed, 4 Mar 2020 19:22:24 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userp3030.oracle.com with ESMTP id 2yg1eqkmvg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:24 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JMNW8024584; Wed, 4 Mar 2020 19:22:23 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:23 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 11/13] OvmfPkg/MptScsiDxe: Initialize hardware Date: Wed, 4 Mar 2020 21:22:55 +0200 Message-Id: <20200304192257.96736-12-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: tUodhX7q69yy89V8QmLhUJs4x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349746; bh=wsXGUYf5f8V1FgN1rRUD+71ByB9MwmhKv+yb4Ia85iw=; h=Cc:Date:From:Reply-To:Subject:To; b=sZAa2IqukT4qzCjvv0pQ8u3dYvEOokDmIIK+MDfYjkVvVlqRti3g6hL/4Sm6dVQBgaF z6j9Os7XiACQm8QFwnheCdoiaJ0yT4oZoShVmXETK3514s8f/5m+PWek2ScQGcY7yELg3 Sp6uveqD8SE3dtis23qK2DFT7+vHbPAmzek= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Reset and send the IO controller initialization request. The reply is read back to complete the doorbell function but it isn't useful to us because it doesn't contain relevant data or status codes. See "LSI53C1030 PCI-X to Dual Channel Ultra320 SCSI Multifunction Controller" technical manual for more information. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko --- .../Include/IndustryStandard/FusionMptScsi.h | 115 ++++++++++++ OvmfPkg/MptScsiDxe/MptScsi.c | 168 ++++++++++++++++++ 2 files changed, 283 insertions(+) diff --git a/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h b/OvmfPkg/Inc= lude/IndustryStandard/FusionMptScsi.h index 1bd65ed40b1c..1ce2432bd3c2 100644 --- a/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h +++ b/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h @@ -26,4 +26,119 @@ #define LSI_SAS1068_PCI_DEVICE_ID 0x0054 #define LSI_SAS1068E_PCI_DEVICE_ID 0x0058 =20 +#define MPT_REG_DOORBELL 0x00 +#define MPT_REG_WRITE_SEQ 0x04 +#define MPT_REG_HOST_DIAG 0x08 +#define MPT_REG_TEST 0x0c +#define MPT_REG_DIAG_DATA 0x10 +#define MPT_REG_DIAG_ADDR 0x14 +#define MPT_REG_ISTATUS 0x30 +#define MPT_REG_IMASK 0x34 +#define MPT_REG_REQ_Q 0x40 +#define MPT_REG_REP_Q 0x44 + +#define MPT_DOORBELL_RESET 0x40 +#define MPT_DOORBELL_HANDSHAKE 0x42 + +#define MPT_IMASK_DOORBELL 0x01 +#define MPT_IMASK_REPLY 0x08 + +#define MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST 0x00 +#define MPT_MESSAGE_HDR_FUNCTION_IOC_INIT 0x02 + +#define MPT_SG_ENTRY_TYPE_SIMPLE 0x01 + +#define MPT_IOC_WHOINIT_ROM_BIOS 0x02 + +// +// Device structures +// + +typedef struct { +#pragma pack (1) + struct { + UINT8 WhoInit; + UINT8 Reserved1; + UINT8 ChainOffset; + UINT8 Function; + UINT8 Flags; + UINT8 MaxDevices; + UINT8 MaxBuses; + UINT8 MessageFlags; + UINT32 MessageContext; + UINT16 ReplyFrameSize; + UINT16 Reserved2; + UINT32 HostMfaHighAddr; + UINT32 SenseBufferHighAddr; + } Data; +#pragma pack () + UINT64 Uint64; // 8 byte alignment required by HW +} MPT_IO_CONTROLLER_INIT_REQUEST; +#pragma pack (1) +typedef struct { + UINT8 WhoInit; + UINT8 Reserved1; + UINT8 MessageLength; + UINT8 Function; + UINT8 Flags; + UINT8 MaxDevices; + UINT8 MaxBuses; + UINT8 MessageFlags; + UINT32 MessageContext; + UINT16 Reserved2; + UINT16 IOCStatus; + UINT32 IOCLogInfo; +} MPT_IO_CONTROLLER_INIT_REPLY; +typedef struct { + UINT8 TargetID; + UINT8 Bus; + UINT8 ChainOffset; + UINT8 Function; + UINT8 CDBLength; + UINT8 SenseBufferLength; + UINT8 Reserved; + UINT8 MessageFlags; + UINT32 MessageContext; + UINT8 LUN[8]; + UINT32 Control; + UINT8 CDB[16]; + UINT32 DataLength; + UINT32 SenseBufferLowAddress; +} MPT_SCSI_IO_REQUEST; +typedef struct { + UINT32 Length: 24; + UINT32 EndOfList: 1; + UINT32 Is64BitAddress: 1; + UINT32 BufferContainsData: 1; + UINT32 LocalAddress: 1; + UINT32 ElementType: 2; + UINT32 EndOfBuffer: 1; + UINT32 LastElement: 1; + UINT64 DataBufferAddress; +} MPT_SG_ENTRY_SIMPLE; +#pragma pack () +typedef struct { +#pragma pack (1) + struct { + UINT8 TargetID; + UINT8 Bus; + UINT8 MessageLength; + UINT8 Function; + UINT8 CDBLength; + UINT8 SenseBufferLength; + UINT8 Reserved; + UINT8 MessageFlags; + UINT32 MessageContext; + UINT8 SCSIStatus; + UINT8 SCSIState; + UINT16 IOCStatus; + UINT32 IOCLogInfo; + UINT32 TransferCount; + UINT32 SenseCount; + UINT32 ResponseInfo; + } Data; +#pragma pack () + UINT64 Uint64; // 8 byte alignment required by HW +} MPT_SCSI_IO_ERROR_REPLY; + #endif // __FUSION_MPT_SCSI_H__ diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index 4a52dee902c7..37f1ea4b3506 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -47,6 +47,167 @@ typedef struct { #define MPT_SCSI_FROM_PASS_THRU(PassThruPtr) \ CR (PassThruPtr, MPT_SCSI_DEV, PassThru, MPT_SCSI_DEV_SIGNATURE) =20 +// +// Hardware functions +// + +STATIC +EFI_STATUS +Out32 ( + IN MPT_SCSI_DEV *Dev, + IN UINT32 Addr, + IN UINT32 Data + ) +{ + return Dev->PciIo->Io.Write ( + Dev->PciIo, + EfiPciIoWidthUint32, + 0, // BAR0 + Addr, + 1, + &Data + ); +} + +STATIC +EFI_STATUS +In32 ( + IN MPT_SCSI_DEV *Dev, + IN UINT32 Addr, + OUT UINT32 *Data + ) +{ + return Dev->PciIo->Io.Read ( + Dev->PciIo, + EfiPciIoWidthUint32, + 0, // BAR0 + Addr, + 1, + Data + ); +} + +STATIC +EFI_STATUS +MptDoorbell ( + IN MPT_SCSI_DEV *Dev, + IN UINT8 DoorbellFunc, + IN UINT8 DoorbellArg + ) +{ + return Out32 ( + Dev, + MPT_REG_DOORBELL, + (((UINT32)DoorbellFunc) << 24) | (DoorbellArg << 16) + ); +} + +STATIC +EFI_STATUS +MptScsiReset ( + IN MPT_SCSI_DEV *Dev + ) +{ + EFI_STATUS Status; + + // + // Reset hardware + // + Status =3D MptDoorbell (Dev, MPT_DOORBELL_RESET, 0); + if (EFI_ERROR (Status)) { + return Status; + } + // + // Mask interrupts + // + Status =3D Out32 (Dev, MPT_REG_IMASK, MPT_IMASK_DOORBELL|MPT_IMASK_REPLY= ); + if (EFI_ERROR (Status)) { + return Status; + } + // + // Clear interrupt status + // + Status =3D Out32 (Dev, MPT_REG_ISTATUS, 0); + if (EFI_ERROR (Status)) { + return Status; + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +MptScsiInit ( + IN MPT_SCSI_DEV *Dev + ) +{ + EFI_STATUS Status; + MPT_IO_CONTROLLER_INIT_REQUEST Req; + MPT_IO_CONTROLLER_INIT_REPLY Reply; + UINT8 *ReplyBytes; + UINT32 Reply32; + + Status =3D MptScsiReset (Dev); + if (EFI_ERROR (Status)) { + return Status; + } + + ZeroMem (&Req, sizeof (Req)); + ZeroMem (&Reply, sizeof (Reply)); + Req.Data.WhoInit =3D MPT_IOC_WHOINIT_ROM_BIOS; + Req.Data.Function =3D MPT_MESSAGE_HDR_FUNCTION_IOC_INIT; + Req.Data.MaxDevices =3D 1; + Req.Data.MaxBuses =3D 1; + Req.Data.ReplyFrameSize =3D sizeof (MPT_SCSI_IO_ERROR_REPLY); + + // + // Send controller init through doorbell + // + Status =3D MptDoorbell ( + Dev, + MPT_DOORBELL_HANDSHAKE, + sizeof (Req) / sizeof (UINT32) + ); + if (EFI_ERROR (Status)) { + return Status; + } + Status =3D Dev->PciIo->Io.Write ( + Dev->PciIo, + EfiPciIoWidthFifoUint32, + 0, + MPT_REG_DOORBELL, + sizeof (Req) / sizeof (UINT32), + &Req + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Read reply through doorbell + // Each 32bit read produces 16bit of data + // + ReplyBytes =3D (UINT8 *)&Reply; + while (ReplyBytes !=3D (UINT8 *)(&Reply + 1)) { + Status =3D In32 (Dev, MPT_REG_DOORBELL, &Reply32); + if (EFI_ERROR (Status)) { + return Status; + } + CopyMem (ReplyBytes, &Reply32, sizeof (UINT16)); + ReplyBytes +=3D sizeof (UINT16); + } + + // + // Clear interrupts generated by doorbell reply + // + Status =3D Out32 (Dev, MPT_REG_ISTATUS, 0); + if (EFI_ERROR (Status)) { + return Status; + } + + return EFI_SUCCESS; +} + // // Ext SCSI Pass Thru // @@ -336,6 +497,11 @@ MptScsiControllerStart ( goto CloseProtocol; } =20 + Status =3D MptScsiInit (Dev); + if (EFI_ERROR (Status)) { + goto CloseProtocol; + } + // // Host adapter channel, doesn't exist // @@ -422,6 +588,8 @@ MptScsiControllerStop ( ); ASSERT_EFI_ERROR (Status); =20 + MptScsiReset (Dev); + Dev->PciIo->Attributes ( Dev->PciIo, EfiPciIoAttributeOperationEnable, --=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 (#55455): https://edk2.groups.io/g/devel/message/55455 Mute This Topic: https://groups.io/mt/71733506/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 Sun May 5 15:10:59 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+55456+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+55456+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349749; cv=none; d=zohomail.com; s=zohoarc; b=XCE7MVeuTPILJMd+5aSnd6p4f02/9s6OWp8ry1b2jvq+W1aNpNPtUBZMxRrqD194Iu/y/HpCiOg5wcJ7tbAaWMUf8uquaOeCMdImXq1ofyoxVbEynV3+PneGFda4wRcntfS5+OM8xwy4SjF/PrnngzYyxer0eGOkXoVBwAqQRjM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349749; 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=WtXfg5LOe15eAnC8guZs+vgCwoPurhOTv+Us9Gxj8Ss=; b=CduarfqWLBxRqbHa6NlMGwTkry0SuoD2caoqNWlRosCASQebS/99XCFfb1pCwJghQ+/MhQolQz1sTVA4cRJA4vBgW34UTrAvTFBOdSMg8SVmz2/giDuL2F70B46NzWyF4DLJjw9j5VJ0CaJeCgv8qBXCi6KCrMZ+4K7UJvvqjGg= 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+55456+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 1583349749100425.02207239374707; Wed, 4 Mar 2020 11:22:29 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id xyxBYY1788612xRtkXiUs0tj; Wed, 04 Mar 2020 11:22:28 -0800 X-Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) by mx.groups.io with SMTP id smtpd.web09.16657.1583349748158356832 for ; Wed, 04 Mar 2020 11:22:28 -0800 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 024Iw9aE058148; Wed, 4 Mar 2020 19:22:27 GMT X-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2130.oracle.com with ESMTP id 2yffcurgvs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:27 +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 024JDEoh149393; Wed, 4 Mar 2020 19:22:26 GMT X-Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserp3030.oracle.com with ESMTP id 2yg1h1h4xv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:26 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 024JMQ2f024634; Wed, 4 Mar 2020 19:22:26 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:25 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 12/13] OvmfPkg/MptScsiDxe: Implement the PassThru method Date: Wed, 4 Mar 2020 21:22:56 +0200 Message-Id: <20200304192257.96736-13-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: jQB2bWW3cbcrEGNubsvOgTFAx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349748; bh=/AM5w4I47jOa1DhA+266HBC0guiHil8YlKTb0uQNFkE=; h=Cc:Date:From:Reply-To:Subject:To; b=PFXaUJXQyTpyRjzgxczEhWGU1vGvZW85EHgBAuGq7PSlSa6azhpLlt0FqKckpnDh3Q+ rkVMf1OXrd8wFbbqrgJwGcRirgOYyAEFi1De3M1zjmN/fi8xPKsybTU6MPAf4tL7iBJnz LMz95odV/imvQeHuROrykusOCohkzFliYqY= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Machines should be able to boot after this commit. Tested with different Linux distributions (Ubuntu, CentOS) and different Windows versions (Windows 7, Windows 10, Server 2016). Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko --- .../Include/IndustryStandard/FusionMptScsi.h | 18 + OvmfPkg/MptScsiDxe/MptScsi.c | 344 +++++++++++++++++- OvmfPkg/MptScsiDxe/MptScsiDxe.inf | 3 + OvmfPkg/OvmfPkg.dec | 3 + 4 files changed, 365 insertions(+), 3 deletions(-) diff --git a/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h b/OvmfPkg/Inc= lude/IndustryStandard/FusionMptScsi.h index 1ce2432bd3c2..e793f4856d0b 100644 --- a/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h +++ b/OvmfPkg/Include/IndustryStandard/FusionMptScsi.h @@ -50,6 +50,12 @@ =20 #define MPT_IOC_WHOINIT_ROM_BIOS 0x02 =20 +#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_NONE (0x00 << 24) +#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE (0x01 << 24) +#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ (0x02 << 24) + +#define MPT_SCSI_IO_ERROR_IOCSTATUS_DEVICE_NOT_THERE 0x0043 + // // Device structures // @@ -109,6 +115,10 @@ typedef struct { UINT32 Length: 24; UINT32 EndOfList: 1; UINT32 Is64BitAddress: 1; + // + // True when the buffer contains data to be transfered. Otherwise it's t= he + // destination buffer + // UINT32 BufferContainsData: 1; UINT32 LocalAddress: 1; UINT32 ElementType: 2; @@ -141,4 +151,12 @@ typedef struct { UINT64 Uint64; // 8 byte alignment required by HW } MPT_SCSI_IO_ERROR_REPLY; =20 +typedef union { + struct { + MPT_SCSI_IO_REQUEST Header; + MPT_SG_ENTRY_SIMPLE Sg; + } Data; + UINT64 Uint64; // 8 byte alignment required by HW +} MPT_SCSI_REQUEST_WITH_SG; + #endif // __FUSION_MPT_SCSI_H__ diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index 37f1ea4b3506..0985be07bc8e 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -23,6 +23,7 @@ #include #include #include +#include #include =20 // @@ -35,6 +36,13 @@ // Runtime Structures // =20 +typedef struct { + MPT_SCSI_IO_ERROR_REPLY IoErrorReply; + MPT_SCSI_REQUEST_WITH_SG IoRequest; + UINT8 Sense[MAX_UINT8]; + UINT8 Data[0x2000]; +} MPT_SCSI_DMA_BUFFER; + #define MPT_SCSI_DEV_SIGNATURE SIGNATURE_32 ('M','P','T','S') typedef struct { UINT32 Signature; @@ -42,11 +50,18 @@ typedef struct { EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; EFI_PCI_IO_PROTOCOL *PciIo; UINT64 OriginalPciAttributes; + UINT32 StallPerPollUsec; + MPT_SCSI_DMA_BUFFER *Dma; + EFI_PHYSICAL_ADDRESS DmaPhysical; + VOID *DmaMapping; } MPT_SCSI_DEV; =20 #define MPT_SCSI_FROM_PASS_THRU(PassThruPtr) \ CR (PassThruPtr, MPT_SCSI_DEV, PassThru, MPT_SCSI_DEV_SIGNATURE) =20 +#define MPT_SCSI_DMA_ADDR(Dev, MemberName) \ + (Dev->DmaPhysical + OFFSET_OF(MPT_SCSI_DMA_BUFFER, MemberName)) + // // Hardware functions // @@ -147,6 +162,8 @@ MptScsiInit ( UINT8 *ReplyBytes; UINT32 Reply32; =20 + Dev->StallPerPollUsec =3D PcdGet32 (PcdMptScsiStallPerPollUsec); + Status =3D MptScsiReset (Dev); if (EFI_ERROR (Status)) { return Status; @@ -205,6 +222,227 @@ MptScsiInit ( return Status; } =20 + // + // Put one free reply frame on the reply queue, the hardware may use it = to + // report an error to us. + // + Status =3D Out32 (Dev, MPT_REG_REP_Q, MPT_SCSI_DMA_ADDR (Dev, IoErrorRep= ly)); + if (EFI_ERROR (Status)) { + return Status; + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +MptScsiPopulateRequest ( + IN MPT_SCSI_DEV *Dev, + IN UINT8 Target, + IN UINT64 Lun, + IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet + ) +{ + MPT_SCSI_REQUEST_WITH_SG *Request; + + Request =3D &Dev->Dma->IoRequest; + + if (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_BIDIRECTION= AL || + Packet->CdbLength > sizeof (Request->Data.Header.CDB)) { + return EFI_UNSUPPORTED; + } + + if (Target > 0 || Lun > 0) { + return EFI_INVALID_PARAMETER; + } + + if (Packet->InTransferLength > sizeof (Dev->Dma->Data)) { + Packet->InTransferLength =3D sizeof (Dev->Dma->Data); + return EFI_BAD_BUFFER_SIZE; + } + if (Packet->OutTransferLength > sizeof (Dev->Dma->Data)) { + Packet->OutTransferLength =3D sizeof (Dev->Dma->Data); + return EFI_BAD_BUFFER_SIZE; + } + + ZeroMem (Request, sizeof (*Request)); + Request->Data.Header.TargetID =3D Target; + // + // It's 1 and not 0, for some reason... + // + Request->Data.Header.LUN[1] =3D Lun; + Request->Data.Header.Function =3D MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUE= ST; + Request->Data.Header.MessageContext =3D 1; // We handle one request at a= time + + Request->Data.Header.CDBLength =3D Packet->CdbLength; + CopyMem (Request->Data.Header.CDB, Packet->Cdb, Packet->CdbLength); + + // + // SenseDataLength is UINT8, Sense[] is MAX_UINT8, so we can't overflow + // + ZeroMem (&Dev->Dma->Sense, Packet->SenseDataLength); + Request->Data.Header.SenseBufferLength =3D Packet->SenseDataLength; + Request->Data.Header.SenseBufferLowAddress =3D MPT_SCSI_DMA_ADDR (Dev, S= ense); + + Request->Data.Sg.EndOfList =3D 1; + Request->Data.Sg.EndOfBuffer =3D 1; + Request->Data.Sg.LastElement =3D 1; + Request->Data.Sg.ElementType =3D MPT_SG_ENTRY_TYPE_SIMPLE; + Request->Data.Sg.DataBufferAddress =3D MPT_SCSI_DMA_ADDR (Dev, Data); + + Request->Data.Header.Control =3D MPT_SCSIIO_REQUEST_CONTROL_TXDIR_NONE; + switch (Packet->DataDirection) + { + case EFI_EXT_SCSI_DATA_DIRECTION_READ: + if (Packet->InTransferLength =3D=3D 0) { + break; + } + Request->Data.Header.DataLength =3D Packet->InTransferLength; + Request->Data.Sg.Length =3D Packet->InTransferLength; + Request->Data.Header.Control =3D MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ; + break; + case EFI_EXT_SCSI_DATA_DIRECTION_WRITE: + if (Packet->OutTransferLength =3D=3D 0) { + break; + } + Request->Data.Header.DataLength =3D Packet->OutTransferLength; + Request->Data.Sg.Length =3D Packet->OutTransferLength; + Request->Data.Header.Control =3D MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRIT= E; + + CopyMem (Dev->Dma->Data, Packet->OutDataBuffer, Packet->OutTransferLen= gth); + Request->Data.Sg.BufferContainsData =3D 1; + break; + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +MptScsiSendRequest ( + IN MPT_SCSI_DEV *Dev, + IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet + ) +{ + EFI_STATUS Status; + + // + // Make sure Request is fully written + // + MemoryFence (); + + Status =3D Out32 (Dev, MPT_REG_REQ_Q, MPT_SCSI_DMA_ADDR (Dev, IoRequest)= ); + if (EFI_ERROR (Status)) { + // + // We couldn't enqueue the request, report it as an adapter error + // + Packet->InTransferLength =3D 0; + Packet->OutTransferLength =3D 0; + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OTHER; + Packet->TargetStatus =3D EFI_EXT_SCSI_STATUS_TARGET_GOOD; + Packet->SenseDataLength =3D 0; + return EFI_DEVICE_ERROR; + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +MptScsiGetReply ( + IN MPT_SCSI_DEV *Dev, + OUT UINT32 *Reply + ) +{ + EFI_STATUS Status; + UINT32 Istatus; + UINT32 EmptyReply; + + for (;;) { + Status =3D In32 (Dev, MPT_REG_ISTATUS, &Istatus); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Interrupt raised + // + if (Istatus & MPT_IMASK_REPLY) { + break; + } + + gBS->Stall (Dev->StallPerPollUsec); + } + + Status =3D In32 (Dev, MPT_REG_REP_Q, Reply); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // The driver is supposed to fetch replies until 0xffffffff is returned,= which + // will reset the interrupt status. We put only one request, so we expec= t the + // next read reply to be the last. + // + Status =3D In32 (Dev, MPT_REG_REP_Q, &EmptyReply); + if (EFI_ERROR (Status) || EmptyReply !=3D MAX_UINT32) { + return EFI_DEVICE_ERROR; + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +MptScsiHandleReply ( + IN MPT_SCSI_DEV *Dev, + IN UINT32 Reply, + OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet + ) +{ + EFI_STATUS Status; + + CopyMem (Packet->SenseData, Dev->Dma->Sense, Packet->SenseDataLength); + if (Packet->DataDirection =3D=3D EFI_EXT_SCSI_DATA_DIRECTION_READ) { + CopyMem (Packet->InDataBuffer, Dev->Dma->Data, Packet->InTransferLengt= h); + } + + if (Reply =3D=3D Dev->Dma->IoRequest.Data.Header.MessageContext) { + // + // Everything is good + // + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK; + Packet->TargetStatus =3D EFI_EXT_SCSI_STATUS_TARGET_GOOD; + + } else if (Reply & (1 << 31)) { + DEBUG ((DEBUG_ERROR, "%a: request failed\n", __FUNCTION__)); + // + // When reply MSB is set, it's an error frame. + // + + switch (Dev->Dma->IoErrorReply.Data.IOCStatus) { + case MPT_SCSI_IO_ERROR_IOCSTATUS_DEVICE_NOT_THERE: + Packet->HostAdapterStatus =3D + EFI_EXT_SCSI_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT; + break; + default: + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OTHER; + break; + } + + // + // Resubmit the reply frame to the reply queue + // + Status =3D Out32 (Dev, MPT_REG_REP_Q, MPT_SCSI_DMA_ADDR (Dev, IoErrorR= eply)); + if (EFI_ERROR (Status)) { + return Status; + } + + } else { + DEBUG ((DEBUG_ERROR, "%a: unexpected reply\n", __FUNCTION__)); + return EFI_DEVICE_ERROR; + } + return EFI_SUCCESS; } =20 @@ -223,7 +461,50 @@ MptScsiPassThru ( IN EFI_EVENT Event OPTIONAL ) { - return EFI_UNSUPPORTED; + EFI_STATUS Status; + MPT_SCSI_DEV *Dev; + UINT32 Reply; + + Dev =3D MPT_SCSI_FROM_PASS_THRU (This); + Status =3D MptScsiPopulateRequest (Dev, *Target, Lun, Packet); + if (EFI_ERROR (Status)) { + return Status; + } + + Status =3D MptScsiSendRequest (Dev, Packet); + if (EFI_ERROR (Status)) { + return Status; + } + + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK; + + Status =3D MptScsiGetReply (Dev, &Reply); + if (EFI_ERROR (Status)) { + goto Fatal; + } + + Status =3D MptScsiHandleReply (Dev, Reply, Packet); + if (EFI_ERROR (Status)) { + goto Fatal; + } + + return Status; + +Fatal: + // + // We erred in the middle of a transaction, a very serious problem has o= ccured + // and it's not clear if it's possible to recover without leaving the ha= rdware + // in an inconsistent state. Perhaps we would want to reset the device... + // + DEBUG ((DEBUG_ERROR, "%a: fatal error in scsi request\n", __FUNCTION__)); + Packet->InTransferLength =3D 0; + Packet->OutTransferLength =3D 0; + if (Packet->HostAdapterStatus =3D=3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK= ) { + Packet->HostAdapterStatus =3D EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OTHER; + } + Packet->TargetStatus =3D EFI_EXT_SCSI_STATUS_TARGET_TASK_ABORTED; + Packet->SenseDataLength =3D 0; + return EFI_DEVICE_ERROR; } =20 STATIC @@ -453,6 +734,7 @@ MptScsiControllerStart ( { EFI_STATUS Status; MPT_SCSI_DEV *Dev; + UINTN BytesMapped; =20 Dev =3D AllocateZeroPool (sizeof (*Dev)); if (Dev =3D=3D NULL) { @@ -497,9 +779,42 @@ MptScsiControllerStart ( goto CloseProtocol; } =20 + // + // Create buffers for data transfer + // + Status =3D Dev->PciIo->AllocateBuffer ( + Dev->PciIo, + AllocateAnyPages, + EfiBootServicesData, + EFI_SIZE_TO_PAGES (sizeof (*Dev->Dma)), + (VOID **)&Dev->Dma, + EFI_PCI_ATTRIBUTE_MEMORY_CACHED + ); + if (EFI_ERROR (Status)) { + goto RestoreAttributes; + } + + BytesMapped =3D sizeof (*Dev->Dma); + Status =3D Dev->PciIo->Map ( + Dev->PciIo, + EfiPciIoOperationBusMasterCommonBuffer, + Dev->Dma, + &BytesMapped, + &Dev->DmaPhysical, + &Dev->DmaMapping + ); + if (EFI_ERROR (Status)) { + goto FreeBuffer; + } + + if (BytesMapped !=3D sizeof (*Dev->Dma)) { + Status =3D EFI_OUT_OF_RESOURCES; + goto Unmap; + } + Status =3D MptScsiInit (Dev); if (EFI_ERROR (Status)) { - goto CloseProtocol; + goto Unmap; } =20 // @@ -526,11 +841,23 @@ MptScsiControllerStart ( &Dev->PassThru ); if (EFI_ERROR (Status)) { - goto RestoreAttributes; + goto Unmap; } =20 return EFI_SUCCESS; =20 +Unmap: + Dev->PciIo->Unmap ( + Dev->PciIo, + Dev->DmaMapping + ); + +FreeBuffer: + Dev->PciIo->FreeBuffer ( + Dev->PciIo, + EFI_SIZE_TO_PAGES (sizeof (*Dev->Dma)), + Dev->Dma + ); RestoreAttributes: Dev->PciIo->Attributes ( Dev->PciIo, @@ -590,6 +917,17 @@ MptScsiControllerStop ( =20 MptScsiReset (Dev); =20 + Dev->PciIo->Unmap ( + Dev->PciIo, + Dev->DmaMapping + ); + + Dev->PciIo->FreeBuffer ( + Dev->PciIo, + EFI_SIZE_TO_PAGES (sizeof (*Dev->Dma)), + Dev->Dma + ); + Dev->PciIo->Attributes ( Dev->PciIo, EfiPciIoAttributeOperationEnable, diff --git a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf b/OvmfPkg/MptScsiDxe/MptScsi= Dxe.inf index 8f366b92eb72..1ba65f2fbbdf 100644 --- a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf +++ b/OvmfPkg/MptScsiDxe/MptScsiDxe.inf @@ -40,3 +40,6 @@ [LibraryClasses] [Protocols] gEfiPciIoProtocolGuid ## TO_START gEfiExtScsiPassThruProtocolGuid ## BY_START + +[Pcd] + gUefiOvmfPkgTokenSpaceGuid.PcdMptScsiStallPerPollUsec ## CONSUMES diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec index 4c5b6511cb97..7e8097f9952e 100644 --- a/OvmfPkg/OvmfPkg.dec +++ b/OvmfPkg/OvmfPkg.dec @@ -228,6 +228,9 @@ [PcdsFixedAtBuild] ## Number of page frames to use for storing grant table entries. gUefiOvmfPkgTokenSpaceGuid.PcdXenGrantFrames|4|UINT32|0x33 =20 + ## Microseconds to stall between polling for MptScsi request result + gUefiOvmfPkgTokenSpaceGuid.PcdMptScsiStallPerPollUsec|5|UINT32|0x36 + [PcdsDynamic, PcdsDynamicEx] gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 --=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 (#55456): https://edk2.groups.io/g/devel/message/55456 Mute This Topic: https://groups.io/mt/71733507/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 Sun May 5 15:10:59 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+55457+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+55457+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1583349751; cv=none; d=zohomail.com; s=zohoarc; b=fBEJo1ytwFsWwTMHUQvIFX36unlPeZ6ITocUBkKZPL/CJkQDe2aXP/nVbrdCrTdBoCWuiyOUcxA/dnhXfe9JxGHJZw/L6n3id3p6uw2fxx72vPPJuDILQIuyfjf6n22wHboug6AXGPRTIs9bglKs60bC4AizTYeg2uh9PjItJCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583349751; 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=e1ahmlL7zWuEa7Esg3kciTJkTUyVDSvrTVQwSPlGf2Q=; b=PwlWDk4vaGCCACus/7Kaaam7uaTlYar4rL0JFY4dBVK27+419dKC9f2B6d3uEPT1lqiP0vmGhTjvO3GO9lPOvBaM/gOKIDDmbSuAQ36bUKFubIjORjkSOz5XRWhlg+TMRfZP7l+xwRKLqq7Mju35QZIZZLdrzws9X0D6RrehZT0= 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+55457+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 1583349751679140.93485576677995; Wed, 4 Mar 2020 11:22:31 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 1EGKYY1788612x8owxC4eVtB; Wed, 04 Mar 2020 11:22:31 -0800 X-Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web09.16659.1583349750674862273 for ; Wed, 04 Mar 2020 11:22:30 -0800 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 024Iw6uK027780; Wed, 4 Mar 2020 19:22:30 GMT X-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2120.oracle.com with ESMTP id 2yffwr0e4y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:30 +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 024JDCC7149081; Wed, 4 Mar 2020 19:22:29 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserp3030.oracle.com with ESMTP id 2yg1h1h4yt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Mar 2020 19:22:29 +0000 X-Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 024JMShw024859; Wed, 4 Mar 2020 19:22:28 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 04 Mar 2020 11:22:28 -0800 From: "Nikita Leshenko" To: devel@edk2.groups.io Cc: Nikita Leshenko , liran.alon@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org Subject: [edk2-devel] [PATCH v3 13/13] OvmfPkg/MptScsiDxe: Report multiple targets Date: Wed, 4 Mar 2020 21:22:57 +0200 Message-Id: <20200304192257.96736-14-nikita.leshchenko@oracle.com> In-Reply-To: <20200304192257.96736-1-nikita.leshchenko@oracle.com> References: <20200304192257.96736-1-nikita.leshchenko@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,nikita.leshchenko@oracle.com X-Gm-Message-State: SmnRpMaWKgtemvASTO9MA3hKx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583349751; bh=uDNWAWULdpUZiLiBHpgwbJVWvNxmfx/BCb0xyikvE4U=; h=Cc:Date:From:Reply-To:Subject:To; b=qJtIoZGyFU9bVs8gqjGbR5DKqpAud+f0y+z7/hqZ32uXt8JnzM1FpUC3y16hjpFLyY+ ZHPnc7c3n+R+5nSSEipDbT3zMn4jOdv/C+N3hglA+m7P9vxbUBL9A68X8CgrgL0aF8ptg bBBauRWwreMWNIpRp3b2j1ZEo+sPg3ZoOBA= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" The controller supports up to 8 targets (Not reported by the controller, but based on the implementation of the virtual device), report them in GetNextTarget and GetNextTargetLun. The firmware will then try to communicate with them and create a block device for each one that responds. Support for multiple LUNs will be implemented in another series. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2390 Signed-off-by: Nikita Leshenko Reviewed-by: Liran Alon --- OvmfPkg/MptScsiDxe/MptScsi.c | 44 ++++++++++++++++++++++++------- OvmfPkg/MptScsiDxe/MptScsiDxe.inf | 1 + OvmfPkg/OvmfPkg.dec | 4 +++ 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c index 0985be07bc8e..dbc765f94136 100644 --- a/OvmfPkg/MptScsiDxe/MptScsi.c +++ b/OvmfPkg/MptScsiDxe/MptScsi.c @@ -51,6 +51,7 @@ typedef struct { EFI_PCI_IO_PROTOCOL *PciIo; UINT64 OriginalPciAttributes; UINT32 StallPerPollUsec; + UINT8 MaxTarget; MPT_SCSI_DMA_BUFFER *Dma; EFI_PHYSICAL_ADDRESS DmaPhysical; VOID *DmaMapping; @@ -163,6 +164,7 @@ MptScsiInit ( UINT32 Reply32; =20 Dev->StallPerPollUsec =3D PcdGet32 (PcdMptScsiStallPerPollUsec); + Dev->MaxTarget =3D PcdGet8 (PcdMptScsiMaxTargetLimit); =20 Status =3D MptScsiReset (Dev); if (EFI_ERROR (Status)) { @@ -173,7 +175,7 @@ MptScsiInit ( ZeroMem (&Reply, sizeof (Reply)); Req.Data.WhoInit =3D MPT_IOC_WHOINIT_ROM_BIOS; Req.Data.Function =3D MPT_MESSAGE_HDR_FUNCTION_IOC_INIT; - Req.Data.MaxDevices =3D 1; + Req.Data.MaxDevices =3D Dev->MaxTarget + 1; Req.Data.MaxBuses =3D 1; Req.Data.ReplyFrameSize =3D sizeof (MPT_SCSI_IO_ERROR_REPLY); =20 @@ -252,7 +254,7 @@ MptScsiPopulateRequest ( return EFI_UNSUPPORTED; } =20 - if (Target > 0 || Lun > 0) { + if (Target > Dev->MaxTarget || Lun > 0) { return EFI_INVALID_PARAMETER; } =20 @@ -532,16 +534,27 @@ MptScsiGetNextTargetLun ( IN OUT UINT64 *Lun ) { + MPT_SCSI_DEV *Dev; + + Dev =3D MPT_SCSI_FROM_PASS_THRU (This); // - // Currently support only target 0 LUN 0, so hardcode it + // Currently support only LUN 0, so hardcode it // if (!IsTargetInitialized (*Target)) { ZeroMem (*Target, TARGET_MAX_BYTES); *Lun =3D 0; - return EFI_SUCCESS; + } else if (**Target < Dev->MaxTarget) { + // + // This device support 256 targets only, so it's enough to increment + // the LSB of Target, as it will never overflow. + // + **Target +=3D 1; + *Lun =3D 0; } else { return EFI_NOT_FOUND; } + + return EFI_SUCCESS; } =20 STATIC @@ -552,15 +565,22 @@ MptScsiGetNextTarget ( IN OUT UINT8 **Target ) { - // - // Currently support only target 0 LUN 0, so hardcode it - // + MPT_SCSI_DEV *Dev; + + Dev =3D MPT_SCSI_FROM_PASS_THRU (This); if (!IsTargetInitialized (*Target)) { ZeroMem (*Target, TARGET_MAX_BYTES); - return EFI_SUCCESS; + } else if (**Target < Dev->MaxTarget) { + // + // This device support 256 targets only, so it's enough to increment + // the LSB of Target, as it will never overflow. + // + **Target +=3D 1; } else { return EFI_NOT_FOUND; } + + return EFI_SUCCESS; } =20 STATIC @@ -573,6 +593,7 @@ MptScsiBuildDevicePath ( IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath ) { + MPT_SCSI_DEV *Dev; SCSI_DEVICE_PATH *ScsiDevicePath; =20 if (DevicePath =3D=3D NULL) { @@ -583,7 +604,8 @@ MptScsiBuildDevicePath ( // This device support 256 targets only, so it's enough to dereference // the LSB of Target. // - if (*Target > 0 || Lun > 0) { + Dev =3D MPT_SCSI_FROM_PASS_THRU (This); + if (*Target > Dev->MaxTarget || Lun > 0) { return EFI_NOT_FOUND; } =20 @@ -613,6 +635,7 @@ MptScsiGetTargetLun ( OUT UINT64 *Lun ) { + MPT_SCSI_DEV *Dev; SCSI_DEVICE_PATH *ScsiDevicePath; =20 if (DevicePath =3D=3D NULL || @@ -625,8 +648,9 @@ MptScsiGetTargetLun ( return EFI_UNSUPPORTED; } =20 + Dev =3D MPT_SCSI_FROM_PASS_THRU (This); ScsiDevicePath =3D (SCSI_DEVICE_PATH *)DevicePath; - if (ScsiDevicePath->Pun > 0 || + if (ScsiDevicePath->Pun > Dev->MaxTarget || ScsiDevicePath->Lun > 0) { return EFI_NOT_FOUND; } diff --git a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf b/OvmfPkg/MptScsiDxe/MptScsi= Dxe.inf index 1ba65f2fbbdf..b21655bc7f81 100644 --- a/OvmfPkg/MptScsiDxe/MptScsiDxe.inf +++ b/OvmfPkg/MptScsiDxe/MptScsiDxe.inf @@ -43,3 +43,4 @@ [Protocols] =20 [Pcd] gUefiOvmfPkgTokenSpaceGuid.PcdMptScsiStallPerPollUsec ## CONSUMES + gUefiOvmfPkgTokenSpaceGuid.PcdMptScsiMaxTargetLimit ## CONSUMES diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec index 7e8097f9952e..1e17df0316a1 100644 --- a/OvmfPkg/OvmfPkg.dec +++ b/OvmfPkg/OvmfPkg.dec @@ -231,6 +231,10 @@ [PcdsFixedAtBuild] ## Microseconds to stall between polling for MptScsi request result gUefiOvmfPkgTokenSpaceGuid.PcdMptScsiStallPerPollUsec|5|UINT32|0x36 =20 + ## Set the *inclusive* number of targets that MptScsi exposes for scan + # by ScsiBusDxe. + gUefiOvmfPkgTokenSpaceGuid.PcdMptScsiMaxTargetLimit|7|UINT8|0x37 + [PcdsDynamic, PcdsDynamicEx] gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 --=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 (#55457): https://edk2.groups.io/g/devel/message/55457 Mute This Topic: https://groups.io/mt/71733508/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-