From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web09.24128.1629120967309181929 for ; Mon, 16 Aug 2021 06:36:07 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=xWiIxDmh; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: jiewen.yao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10077"; a="301445630" X-IronPort-AV: E=Sophos;i="5.84,326,1620716400"; d="scan'208";a="301445630" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Aug 2021 06:36:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,326,1620716400"; d="scan'208";a="504891479" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga001.jf.intel.com with ESMTP; 16 Aug 2021 06:36:00 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 16 Aug 2021 06:36:00 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Mon, 16 Aug 2021 06:36:00 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Mon, 16 Aug 2021 06:35:59 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xe94k+swxfpMNPznUUddVUmPEN/6qS/KQnPzV0iHaKRl7gaixh1z9sYxRG1Zk/75zBf1+yPJEqQaI9KarRg7qhE5XTwsmAVfPZCcK3JWf0oD+o9tZnFqRLXsxGGGcm9P0VmL0M1mhs2HXoZJHtf5de4HQv1R7oguDiL45q/kIAfB9r2kPmEJ4K2+vyArkWhHCviT6uWnCquewj7qH6LoqgJppx8fbUF2/wu+z400S19zGrwMDYuLQzKpk5PSPPp5UnyKWv9qvmgI2eVU7r6AV+jC8XqPu31WKMtJXP7Gu9otZIkVG6D/+DShzE1VfAaVQqtyZ1o66s8M7eDSCnjt0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vKZy6QI6DTA4MeilqNptcRD9XcES/TuwY5nU3gnWOCQ=; b=BvGMaUaPGjm0J3StSbB1HWAsECzvjTOpKDihsXoq0CQ5xBPdXxkCbvAGA6YbDfF8GW1UJxXfIsBmpATR4Uvze0wG5sTIF+dcWaMtPJDqbzSDyTb+9f50PbqZ3xUoY6KGKwhAXlw72SHHapvhym8h6tAyjYo8Nnjp+WjFk9HckuvGk2CWTMXcX+9my6GBRf7Xcl2C5gNg4VNiWC/MdmlpSa9RugBtXNVfwMCU+SHAr3nEbQOZEIC+r3kDUj0oQGY9tl8+lrXIkRzR6R4NOZHGCKwe1xIGEcz0T4g6r5hfeT1WG0X1mzAO07p90W7YiFBs2FYSreMF2yRpXXS1sM40rg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vKZy6QI6DTA4MeilqNptcRD9XcES/TuwY5nU3gnWOCQ=; b=xWiIxDmhqHvKn8PCXrjXYGBD18jlXo4I03KJaONpXay0f2BGD2wlZx8FGBURKBHzFeF88BkkkjnUCZJSbZxYhlEfv+G87/N9chobhqm6dHfkGu8lKrIjsRRxplFFraCuTkKYgnpU25KESnNmiYgunPzJQVUTQvg+rGOO19ypITw= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB4854.namprd11.prod.outlook.com (2603:10b6:510:35::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.18; Mon, 16 Aug 2021 13:35:58 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::e97b:e466:268f:fb79]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::e97b:e466:268f:fb79%5]) with mapi id 15.20.4415.023; Mon, 16 Aug 2021 13:35:58 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "kraxel@redhat.com" CC: Philippe Mathieu-Daude Subject: Re: [edk2-devel] [PATCH v2 2/4] OvmfPkg/VirtioMmioDeviceLib: Add virtio 1.0 support. Thread-Topic: [edk2-devel] [PATCH v2 2/4] OvmfPkg/VirtioMmioDeviceLib: Add virtio 1.0 support. Thread-Index: AQHXkoxfA4nPPyXdu0SiKt+R0kRtkKt2Ic1g Date: Mon, 16 Aug 2021 13:35:58 +0000 Message-ID: References: <20210816071109.101122-1-kraxel@redhat.com> <20210816071109.101122-3-kraxel@redhat.com> In-Reply-To: <20210816071109.101122-3-kraxel@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 56bb5ab2-c8d7-4f1b-c623-08d960bac828 x-ms-traffictypediagnostic: PH0PR11MB4854: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ntBtXUbyB6l79EQFICJxZb7AnRsMS4NbTI5/dLHqhBlNtlVyhixM5sQcGdcgWixoAIOjUDO/qCi1/1yzLq3phK2QxdsH3MbY+49xBR2rGk1gqy4LfjSolvkF4sMNUYk61vZ8h9LtfPdP8EiYqNuRvz9UMfA9/ZtqDLWSbUfxuSwhp3OsQx+rWkE++gcvEpOvd1qBULK1RK4t/etoe+ehU0iVE8exU0Pa0Df+Q491wlyiF4Su9w6Itm2vkdd9W5v7Fp9TQ0QTJOrsp9qucy60NHO9vMorCMdsyGL+jJyTXh/bjAOdmvUn89gICo2KdZ45Nb8PiDBoJZp2fXMR9RdPLwh8QZmmIuFCjNISgPwIe/rkcqBcOTxw295h/pGquWBjYp644/n6KAJfRwStA64LbfLSYKOHCN0kqmwhq2fwGgQJGJpU2I7ip/Bh+Kzo3AL7ZYXxvUs9XxPeDuhSsWc8iTcF51vTOUnHFOkcyMLM/fld3vgBJ0CjXoW0lfkctO5RU8hw5hUnY/ZwpKaPOCU8yWMKuyfgoA2ndtKLuv+wENt0iuKxe7bhRjoD2eH0p5KvJZcv/kwc6YerGTsJRdftLzG4Hb9bbLvx240j4x0MGk9k7BAQ3AuDqjVinXNb6X/cG42pf4oX6zfcGhTup7vm7cd3THklgWxQqT4WV8hUJ/5RkPruQLNODSm+sCyRVs7WJba2dh8IvrpwOfNYrGSA3zPT6ahIaoww9FAMvA0W0G3YNYllxsFMLnIkkH1fs5pSfjhlRnJtorDvyEuEMm/+nwTJ4W+EddLriVhfrU29wY6HYviK8Gj5661RdicyPPv1DSfuUjE7Y+zNrXph4cTn0w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(366004)(136003)(39860400002)(346002)(396003)(86362001)(26005)(76116006)(966005)(66446008)(66556008)(66476007)(66946007)(64756008)(7696005)(8936002)(2906002)(110136005)(38100700002)(122000001)(4326008)(52536014)(55016002)(186003)(478600001)(9686003)(6506007)(53546011)(5660300002)(38070700005)(83380400001)(316002)(8676002)(71200400001)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?q7J3OkJHQJsm0DcyiAutGqnsRI160NFQfZXHk9nhptrYruIaJIXroVmebZ4/?= =?us-ascii?Q?h1XDWBe/uTHZIGR6YN6yeHp2IOnLS/UfamnMnY8fT7cp0cRuoBbkpxjN2MF/?= =?us-ascii?Q?8gqDGMQPC8T3Smk2CrDe8vWi26dl6CvXIRz+YO8p61PLLC233gKnRl3b+qZ0?= =?us-ascii?Q?VtD2W9YciU/8yc9qGtAOpa+KxWeWFQ6/OK7QqBnKzSbBB0Us9i9ARz5vI8S+?= =?us-ascii?Q?m0CbeQ1nZ1mBHlnIF71KXFNv3Oa0SNwh5T+OUoImCDDl9viIXY0ubYJcQoVT?= =?us-ascii?Q?jli+03tvxcfgnYbBVrtqU4ItTx3vS3z1QKV2s/JApq/rWi4x8z+azitNRjiN?= =?us-ascii?Q?7Fl1MUkQDJsY7NmM7BZ+4MP0qj3fmBK9SmP5diKHx8zANp58AHtusHs++5tV?= =?us-ascii?Q?rtiGN0AxTHkC1ZQYH2GUrDoRn2QFn5PMXJFhoRDSFjKs24osIqCzKDh74rCO?= =?us-ascii?Q?mys83t0Ard5vyc4yLOh9gCDVJ/1K370O9r9zCP7qMe+SkMu8STFN4tzvWnZR?= =?us-ascii?Q?4/UoM4WsJBEU7mYcR2xnzkiStJneQ6QvzvvKp3LSzy7lPOdpw4YVV6brcXah?= =?us-ascii?Q?istSrOtlet4fK69l3M76jxUpxkKm5pkw7G33ruevAfafR7SiXXVQUo23Koe9?= =?us-ascii?Q?Ieg9r9tBHpfG0nCYnMsckEmrPsqWNed8LXSg6Z9G/kURrQaaZDFvRdWgwD1o?= =?us-ascii?Q?rSYREe9GD2husP/uGMV6BQTRSZrHREURPVUQ5T88H6FrkqtK1va1BNv+NqQG?= =?us-ascii?Q?F7Wlob5nmcQaj74QaO20ArPzSYRstXrFFzfnHcaraNbwJE66s/ShFvoDgWGm?= =?us-ascii?Q?4uiMm6UoXEg/27UeUyZUsyumDxGU2SHO5H/S1Vpxsc8StbcTfdkMo6WKCMrG?= =?us-ascii?Q?BKnqkPuHwGM/vPqejCjksZmu5O7SOg9VQAKgpdyrPye3NbUbD9A3pkQRzzO/?= =?us-ascii?Q?pcxF29SPrcjia3Ke1GBNPPABq+pMYyGfBuYCAadPlZnEDRvyG/7EE+Bg/WAB?= =?us-ascii?Q?cInR893umv+IliG7AMGtJsjr3VPO5dQV8ZOTNLbccG0NGP0VjSWGf3nAOPGa?= =?us-ascii?Q?ZIPdliJJsL7+CNXXLeWcxPyPQk9QITKd+37S51396KdVZVNOUNtet1Nz9tCI?= =?us-ascii?Q?8f1she0fU1M3O0o29n9dr/Z2mVhMHWbCFZqNw/n0/DQmv4Do8dsDwlT9JzLp?= =?us-ascii?Q?PK+zB13iIaxpWjkfRDCfoCFOlKYIVltgRovOiN78j8/o3Jfxmnb2s27MEioh?= =?us-ascii?Q?fwXVFYgLuFeu7V6fD4SHLTd/jCkbnz3srPj8McyVRbJyea8pMvg0sAUpvU7J?= =?us-ascii?Q?1c06eqXY6FHZbE5ZvCPI0ulm?= x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56bb5ab2-c8d7-4f1b-c623-08d960bac828 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Aug 2021 13:35:58.6859 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: o0OrF4RVO1t6QzfdVqpYo4dk5pogRye/4uGeKAIe8vy9FbyJlLSR9VkwSHb7bwTLaYduzJ8pqVDWQxz5lJq9XA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4854 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Greg Can we define MACRO to replace 1 or 2? That is very confusing. For example,=20 #define VIRT_IO_DEVICE_VERSION_0_95 1 #define VIRT_IO_DEVICE_VERSION_1_00 2 Thank you Yao Jiewen > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Gerd > Hoffmann > Sent: Monday, August 16, 2021 3:11 PM > To: devel@edk2.groups.io > Cc: Gerd Hoffmann ; Philippe Mathieu-Daude > > Subject: [edk2-devel] [PATCH v2 2/4] OvmfPkg/VirtioMmioDeviceLib: Add vir= tio > 1.0 support. >=20 > Add support for virtio 1.0 to the mmio transport. virtio 0.9.5 uses > page size, page frame number and a fixed layout for the ring. virtio > 1.0 uses the physical addresses for base address, used bits and > available bits instead. >=20 > The ring layout is not changed, so a 0.9.5 compatible layout is used in > both 0.9.5 and 1.0 mode to to keep the code differences as small as > possible. >=20 > Signed-off-by: Gerd Hoffmann > Reviewed-by: Philippe Mathieu-Daude > --- > .../VirtioMmioDeviceLib/VirtioMmioDevice.h | 1 + > .../VirtioMmioDeviceLib/VirtioMmioDevice.c | 17 +++++++--- > .../VirtioMmioDeviceFunctions.c | 31 +++++++++++++++++-- > 3 files changed, 42 insertions(+), 7 deletions(-) >=20 > diff --git a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h > b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h > index ab53b90d51c9..8b19996b716f 100644 > --- a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h > +++ b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h > @@ -26,6 +26,7 @@ >=20 > typedef struct { > UINT32 Signature; > + UINT32 Version; > VIRTIO_DEVICE_PROTOCOL VirtioDevice; > PHYSICAL_ADDRESS BaseAddress; > } VIRTIO_MMIO_DEVICE; > diff --git a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.c > b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.c > index 6dbbba008c75..a8f78a50861b 100644 > --- a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.c > +++ b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.c > @@ -58,7 +58,6 @@ VirtioMmioInit ( > ) > { > UINT32 MagicValue; > - UINT32 Version; >=20 > // > // Initialize VirtIo Mmio Device > @@ -66,7 +65,6 @@ VirtioMmioInit ( > CopyMem (&Device->VirtioDevice, &mMmioDeviceProtocolTemplate, > sizeof (VIRTIO_DEVICE_PROTOCOL)); > Device->BaseAddress =3D BaseAddress; > - Device->VirtioDevice.Revision =3D VIRTIO_SPEC_REVISION (0, 9, 5); > Device->VirtioDevice.SubSystemDeviceId =3D > MmioRead32 (BaseAddress + VIRTIO_MMIO_OFFSET_DEVICE_ID); >=20 > @@ -78,8 +76,19 @@ VirtioMmioInit ( > return EFI_UNSUPPORTED; > } >=20 > - Version =3D VIRTIO_CFG_READ (Device, VIRTIO_MMIO_OFFSET_VERSION); > - if (Version !=3D 1) { > + Device->Version =3D VIRTIO_CFG_READ (Device, > VIRTIO_MMIO_OFFSET_VERSION); > + switch (Device->Version) { > + case 1: > + DEBUG ((DEBUG_INFO, "%a virtio 0.9.5, id %d\n", __FUNCTION__, > + Device->VirtioDevice.SubSystemDeviceId)); > + Device->VirtioDevice.Revision =3D VIRTIO_SPEC_REVISION (0, 9, 5); > + break; > + case 2: > + DEBUG ((DEBUG_INFO, "%a virtio 1.0, id %d\n", __FUNCTION__, > + Device->VirtioDevice.SubSystemDeviceId)); > + Device->VirtioDevice.Revision =3D VIRTIO_SPEC_REVISION (1, 0, 0); > + break; > + default: > return EFI_UNSUPPORTED; > } >=20 > diff --git a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceFunction= s.c > b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceFunctions.c > index b0d75fb1dd24..bf8523a6fb3b 100644 > --- a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceFunctions.c > +++ b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceFunctions.c > @@ -151,7 +151,9 @@ VirtioMmioSetPageSize ( >=20 > Device =3D VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE (This); >=20 > - VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_GUEST_PAGE_SIZE, > PageSize); > + if (Device->Version =3D=3D 1) { > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_GUEST_PAGE_SIZE, > PageSize); > + } >=20 > return EFI_SUCCESS; > } > @@ -181,13 +183,36 @@ VirtioMmioSetQueueAddress ( > ) > { > VIRTIO_MMIO_DEVICE *Device; > + UINT64 Address; >=20 > ASSERT (RingBaseShift =3D=3D 0); >=20 > Device =3D VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE (This); >=20 > - VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_PFN, > - (UINT32)((UINTN)Ring->Base >> EFI_PAGE_SHIFT)); > + if (Device->Version =3D=3D 1) { > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_PFN, > + (UINT32)((UINTN)Ring->Base >> EFI_PAGE_SHIFT)); > + } else { > + Address =3D (UINT64)Ring->Base; > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_DESC_LO, > + (UINT32)Address); > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_DESC_HI, > + (UINT32)RShiftU64(Address, 32)); > + > + Address =3D (UINT64)Ring->Avail.Flags; > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_AVAIL_LO, > + (UINT32)Address); > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_AVAIL_HI, > + (UINT32)RShiftU64(Address, 32)); > + > + Address =3D (UINT64)Ring->Used.Flags; > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_USED_LO, > + (UINT32)Address); > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_USED_HI, > + (UINT32)RShiftU64(Address, 32)); > + > + VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_READY, 1); > + } >=20 > return EFI_SUCCESS; > } > -- > 2.31.1 >=20 >=20 >=20 >=20 >=20