From nobody Tue Feb 10 03:39:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55877+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55877+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1584373399; cv=none; d=zohomail.com; s=zohoarc; b=lPvIzGKz4tcjDlHTIR0wrdB9RAzwp8gzPg5GtwA3pqFr8JhyS55KM/mMdmoNXOs5cmEpJcwLiXJTppx1ld1UyaZC9yOAMf+YI0LwhlzA1EbgbF4UO4ao4HpJMtC6CQR9D7/3KsIqeSLEkGAvoha893CHQoEvU9bBnvdTCMzTfyI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584373399; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=bPAzSgyluN0KPJIZ2aNcfabl1mP8nCsaV/iDDEHwRJk=; b=XRAM5ylZqRgw3MQtthDek10mJe/iSBL6tRege8SGwpV4nQOntgrDIrfXwwZ19AcOnfCUh7g1Ko0VVcqeEyo2ApocwdqxGnsq8Y1l03jTozQS23zUpVsOgxBFjsaG2qkydetkokPPc4BfArbQjpV19NYclZmJp7SI0euSuDvmfGM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55877+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1584373399809260.83165779161766; Mon, 16 Mar 2020 08:43:19 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id H6vTYY1788612xV98lnY0wNC; Mon, 16 Mar 2020 08:43:19 -0700 X-Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by mx.groups.io with SMTP id smtpd.web12.69780.1584370834562562137 for ; Mon, 16 Mar 2020 08:00:34 -0700 X-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GErif3156927; Mon, 16 Mar 2020 15:00:34 GMT X-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 2yrqwmyacc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:33 +0000 X-Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 02GEqRT9048654; Mon, 16 Mar 2020 15:00:32 GMT X-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3030.oracle.com with ESMTP id 2ys8rcmr6c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Mar 2020 15:00:32 +0000 X-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 02GF0VbD011650; Mon, 16 Mar 2020 15:00:31 GMT X-Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Mar 2020 08:00:30 -0700 From: "Liran Alon" To: devel@edk2.groups.io, lersek@redhat.com Cc: nikita.leshchenko@oracle.com, aaron.young@oracle.com, jordan.l.justen@intel.com, ard.biesheuvel@linaro.org, Liran Alon Subject: [edk2-devel] [PATCH 11/17] OvmfPkg/PvScsiDxe: Define device interface structures and constants Date: Mon, 16 Mar 2020 17:01:07 +0200 Message-Id: <20200316150113.104630-12-liran.alon@oracle.com> In-Reply-To: <20200316150113.104630-1-liran.alon@oracle.com> References: <20200316150113.104630-1-liran.alon@oracle.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,liran.alon@oracle.com X-Gm-Message-State: kSO9HguWDLXSzxxYQ10y3qmhx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1584373399; bh=mBb259bAPjUPfWqJwu5gaOBE24loa2v7L8JiDBUOWQU=; h=Cc:Date:From:Reply-To:Subject:To; b=bYsoXtO0gi9mfwEYEl9KUJ3lc8Uvbk604IkRWfP1yQpksPJyzmlfRtes6iubOCtmKTH cvEhP/IQD5hEZ+xjNIzsh3D/K4/1AwmX2JlMVYpIlAjXlQpyqe/NJYiG2VrpuEI9U9HIO 3jMvZVtMvcUrzq5ArJDqJSm8BQDXdIOHa+0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" These definitions will be used by the following commits to complete the implementation of PVSCSI device driver. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2567 Reviewed-by: Nikita Leshenko Signed-off-by: Liran Alon --- OvmfPkg/Include/IndustryStandard/PvScsi.h | 162 ++++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/OvmfPkg/Include/IndustryStandard/PvScsi.h b/OvmfPkg/Include/In= dustryStandard/PvScsi.h index 004c0af84989..7bb6e664dfcd 100644 --- a/OvmfPkg/Include/IndustryStandard/PvScsi.h +++ b/OvmfPkg/Include/IndustryStandard/PvScsi.h @@ -18,4 +18,166 @@ #define PCI_VENDOR_ID_VMWARE (0x15ad) #define PCI_DEVICE_ID_VMWARE_PVSCSI (0x07c0) =20 +// +// CDB (Command Descriptor Block) with size above this constant +// should be considered out-of-band +// +#define PVSCSI_CDB_MAX_SIZE (16) + +enum PVSCSI_BAR0_OFFSETS { + PVSCSI_REG_OFFSET_COMMAND =3D 0x0, + PVSCSI_REG_OFFSET_COMMAND_DATA =3D 0x4, + PVSCSI_REG_OFFSET_COMMAND_STATUS =3D 0x8, + PVSCSI_REG_OFFSET_LAST_STS_0 =3D 0x100, + PVSCSI_REG_OFFSET_LAST_STS_1 =3D 0x104, + PVSCSI_REG_OFFSET_LAST_STS_2 =3D 0x108, + PVSCSI_REG_OFFSET_LAST_STS_3 =3D 0x10c, + PVSCSI_REG_OFFSET_INTR_STATUS =3D 0x100c, + PVSCSI_REG_OFFSET_INTR_MASK =3D 0x2010, + PVSCSI_REG_OFFSET_KICK_NON_RW_IO =3D 0x3014, + PVSCSI_REG_OFFSET_DEBUG =3D 0x3018, + PVSCSI_REG_OFFSET_KICK_RW_IO =3D 0x4018, +}; + +// +// Define Interrupt-Status register flags +// +#define PVSCSI_INTR_CMPL_0 (1 << 0) +#define PVSCSI_INTR_CMPL_1 (1 << 1) +#define PVSCSI_INTR_CMPL_MASK (PVSCSI_INTR_CMPL_0 | PVSCSI_INTR_CMPL_1) + +enum PVSCSI_COMMANDS { + PVSCSI_CMD_FIRST =3D 0, + PVSCSI_CMD_ADAPTER_RESET =3D 1, + PVSCSI_CMD_ISSUE_SCSI =3D 2, + PVSCSI_CMD_SETUP_RINGS =3D 3, + PVSCSI_CMD_RESET_BUS =3D 4, + PVSCSI_CMD_RESET_DEVICE =3D 5, + PVSCSI_CMD_ABORT_CMD =3D 6, + PVSCSI_CMD_CONFIG =3D 7, + PVSCSI_CMD_SETUP_MSG_RING =3D 8, + PVSCSI_CMD_DEVICE_UNPLUG =3D 9, + PVSCSI_CMD_LAST =3D 10 +}; + +#define PVSCSI_SETUP_RINGS_MAX_NUM_PAGES (32) + +#pragma pack (1) +typedef struct { + UINT32 ReqRingNumPages; + UINT32 CmpRingNumPages; + UINT64 RingsStatePPN; + UINT64 ReqRingPPNs[PVSCSI_SETUP_RINGS_MAX_NUM_PAGES]; + UINT64 CmpRingPPNs[PVSCSI_SETUP_RINGS_MAX_NUM_PAGES]; +} PVSCSI_CMD_DESC_SETUP_RINGS; +#pragma pack () + +#define PVSCSI_MAX_CMD_DATA_WORDS \ + (sizeof (PVSCSI_CMD_DESC_SETUP_RINGS) / sizeof (UINT32)) + +#pragma pack (1) +typedef struct { + UINT32 ReqProdIdx; + UINT32 ReqConsIdx; + UINT32 ReqNumEntriesLog2; + + UINT32 CmpProdIdx; + UINT32 CmpConsIdx; + UINT32 CmpNumEntriesLog2; + + UINT8 Pad[104]; + + UINT32 MsgProdIdx; + UINT32 MsgConsIdx; + UINT32 MsgNumEntriesLog2; +} PVSCSI_RINGS_STATE; +#pragma pack () + +// +// Define PVSCSI request descriptor tags +// +#define PVSCSI_SIMPLE_QUEUE_TAG (0x20) + +// +// Define PVSCSI request descriptor flags +// +#define PVSCSI_FLAG_CMD_WITH_SG_LIST (1 << 0) +#define PVSCSI_FLAG_CMD_OUT_OF_BAND_CDB (1 << 1) +#define PVSCSI_FLAG_CMD_DIR_NONE (1 << 2) +#define PVSCSI_FLAG_CMD_DIR_TOHOST (1 << 3) +#define PVSCSI_FLAG_CMD_DIR_TODEVICE (1 << 4) + +#pragma pack (1) +typedef struct { + UINT64 Context; + UINT64 DataAddr; + UINT64 DataLen; + UINT64 SenseAddr; + UINT32 SenseLen; + UINT32 Flags; + UINT8 Cdb[16]; + UINT8 CdbLen; + UINT8 Lun[8]; + UINT8 Tag; + UINT8 Bus; + UINT8 Target; + UINT8 vCPUHint; + UINT8 Unused[59]; +} PVSCSI_RING_REQ_DESC; +#pragma pack () + +// +// Host adapter status/error codes +// +enum PVSCSI_HOST_BUS_ADAPTER_STATUS { + BTSTAT_SUCCESS =3D 0x00, // CCB complete normally with no errors + BTSTAT_LINKED_COMMAND_COMPLETED =3D 0x0a, + BTSTAT_LINKED_COMMAND_COMPLETED_WITH_FLAG =3D 0x0b, + BTSTAT_DATA_UNDERRUN =3D 0x0c, + BTSTAT_SELTIMEO =3D 0x11, // SCSI selection timeout + BTSTAT_DATARUN =3D 0x12, // Data overrun/underrun + BTSTAT_BUSFREE =3D 0x13, // Unexpected bus free + BTSTAT_INVPHASE =3D 0x14, // + // Invalid bus phase or sequence requeste= d by + // target + // + BTSTAT_LUNMISMATCH =3D 0x17, // Linked CCB has different LUN from fi= rst CCB + BTSTAT_SENSFAILED =3D 0x1b, // Auto request sense failed + BTSTAT_TAGREJECT =3D 0x1c, // + // SCSI II tagged queueing message reject= ed by + // target + // + BTSTAT_BADMSG =3D 0x1d, // + // Unsupported message received by the ho= st + // adapter + // + BTSTAT_HAHARDWARE =3D 0x20, // Host adapter hardware failed + BTSTAT_NORESPONSE =3D 0x21, // + // Target did not respond to SCSI ATN sen= t a + // SCSI RST + // + BTSTAT_SENTRST =3D 0x22, // Host adapter asserted a SCSI RST + BTSTAT_RECVRST =3D 0x23, // Other SCSI devices asserted a SCSI R= ST + BTSTAT_DISCONNECT =3D 0x24, // + // Target device reconnected improperly + // (w/o tag) + // + BTSTAT_BUSRESET =3D 0x25, // Host adapter issued BUS device reset + BTSTAT_ABORTQUEUE =3D 0x26, // Abort queue generated + BTSTAT_HASOFTWARE =3D 0x27, // Host adapter software error + BTSTAT_HATIMEOUT =3D 0x30, // Host adapter hardware timeout error + BTSTAT_SCSIPARITY =3D 0x34, // SCSI parity error detected +}; + +#pragma pack (1) +typedef struct { + UINT64 Context; + UINT64 DataLen; + UINT32 SenseLen; + UINT16 HostStatus; + UINT16 ScsiStatus; + UINT32 Pad[2]; +} PVSCSI_RING_CMP_DESC; +#pragma pack () + #endif // __PVSCSI_H_ --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55877): https://edk2.groups.io/g/devel/message/55877 Mute This Topic: https://groups.io/mt/72001279/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-