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.web08.1423.1624926681529718204 for ; Mon, 28 Jun 2021 17:31:26 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=RrnuTM5Q; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: hao.a.wu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10029"; a="293696346" X-IronPort-AV: E=Sophos;i="5.83,307,1616482800"; d="scan'208";a="293696346" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2021 17:31:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,307,1616482800"; d="scan'208";a="419366027" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga007.fm.intel.com with ESMTP; 28 Jun 2021 17:31:05 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 28 Jun 2021 17:31:05 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) 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.4; Mon, 28 Jun 2021 17:31:04 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Mon, 28 Jun 2021 17:31:04 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) 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.4; Mon, 28 Jun 2021 17:31:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZVr6/BzfxyrB+XQFT4kUluzIxpVh70U0/RRov3W0uVfdk7MOujNr3qVsskFYzxFAn0EflMcAOJeHsXCjiQfTizuv19mXvvostnMaWbsqT0gK5A7Oa8Vg7gNi7TIozaHFalkPF8SADT0NYcr/N7Go7qVH2Hmh8PWUlvT11gTmNdyh8iGBjt8hia/IzsvP16ArX0GaqHGaitTQmIOfkU6SRaUIOXHwgEsDSUcZELcErQi3uQQEqe+TNNS9MQPHr4+walL6O9Y/Zzw6Kvgo9o933RGmzDJTOh+B/SNbos76IUOIB7024Rtmbrom+kB68GdihY/3TNVLtTt01JL0boYI1g== 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=cjmXarrx9QhHz1mCMVRc+jh1APOvMmZNi5Riaic/h7Q=; b=Kil/uwzFSo/LEbWH3+ZG4IO5EfIMXCw3CnG4+RfXuBRle4cgekIKjxjBfFov7dmP66mfhEI/2xUdRry8cA2QEmO4iAGtTPoz23Yk1MBTxsKg/D9ikiSti+Qe0MCKsMYTSgM9Bs/T0NoNPRaQ8EtURzmbECENiStZc6p3z6FPsfqW0VHQk2EJpm5hiayIcfmrnPfIv+D7aRJvch//JlZiYx1KvHs2JYr0OfDrDXn3PAYSkILv+90Iv/6CZQv8/0BjRGP3iZ20dqx7omtjugv7Yty7tpFYSmlIWZ1gQQ8y76SaY+8R6hld077ZADZISbIlrngLOkRco4KpETTgG1uyUw== 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=cjmXarrx9QhHz1mCMVRc+jh1APOvMmZNi5Riaic/h7Q=; b=RrnuTM5QFJ3LEFHDRfBBM6hPtBwfCArz5owSnUejtwnkYpXhZzXgCUiZdJ3PQfb84ZhpHkalsg6SGXbzFr9Qh+LkcFcs0pqLcbVA3emi3C/0BEmZMevCLIQl86JQcJMtyUkH6xZEIyXaWByCF2OuI6/lBEqqXyr0IPG+a5inbyg= Received: from BN8PR11MB3666.namprd11.prod.outlook.com (2603:10b6:408:8c::19) by BN6PR1101MB2307.namprd11.prod.outlook.com (2603:10b6:405:53::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Tue, 29 Jun 2021 00:31:03 +0000 Received: from BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::cd58:25ce:5017:619d]) by BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::cd58:25ce:5017:619d%5]) with mapi id 15.20.4264.026; Tue, 29 Jun 2021 00:31:03 +0000 From: "Wu, Hao A" To: "devel@edk2.groups.io" , "Wu, Hao A" , "Bassa, Damian" CC: "Rusocki, Krzysztof" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/RamDiskDxe: RamDisk driver to assign non-zero SPA range index Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/RamDiskDxe: RamDisk driver to assign non-zero SPA range index Thread-Index: AddsONUgby5jzvH7RlyOzRrwimnSFAAQ1plAAABpbIA= Date: Tue, 29 Jun 2021 00:31:03 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 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-originating-ip: [192.198.142.16] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fb0203fe-ea74-4d3a-3f0b-08d93a952d50 x-ms-traffictypediagnostic: BN6PR1101MB2307: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7itUHM/0GUH8922gLaiiQl3+wckyWlfS/O8yS3AlTDyDCzrGodrCYu4wIhFeEp5xomIhjAVYMc1FVM2nI8pEIfGQ0rhtwhRveFRPjnqGbLOA99h7aBQGCZjFweoCs5Q8sdmKV1dzq8VbvC1fggsd531ZPx6jd4dvE8Hl0SrHAOvOv/mJN9F34GtH8WixSPZrtMxf+z/43YtrrUlNMiCQyfzYdNYBqw7BOWL3J9cSf323eFhcVFODfk4QaCyyWK7dmT1dvx163aEtmtu0d0JXfL5KQaLX35a7te36pO/R7pOa0NkKdBZ7ob7ZTVf2/iCvVFF7DnfZWrbFt3FRM+xK9Qtb3cL4qYcbg4SCQgRNLs9LE6sFzNGraNq/Gf+3TqZXsz6jVmZabmxZc810lUKgHt1HEhYD2ZtJOE97kR5+ascxtP+JLaWtcYsHZFqbtC87uZaEXkWqlh7eKa+Y5h1C7QHrWPcC30jxpWHcF2qEDGEoug4bQMSLRtr1iPtZ/QtQHDWGrOusqAVky/hZTtJaRFBfcbwG6sDogRyLF9njabFyOkwEvR6CsILW7vOVTmN/xoLBk69IC3hKTsDPqwdJC/1uNRmQ6v19QyDcY7SUFboDX5mOSkV9bN7hjBMx8anhtrZNkgd+56Y7aZzesJA1oXXd5lJgKfOef7x5pCAASMsSu/2E7RbmTVdyxsXIqZyDohg2WyMHgDQn/4DxLJfqRe7MCmIdHEnzzO/Aswtw0mK99qAhmrL3El35pewOLlHHxx2T/C//3vxZogt38u+yWz+LKyHBVJwmSVef6mD1gCTZjRwpTSprzFeLCFQoEnvVajaoxw4ROFKkxhaZpXoDSVHk51ArObK694TvSdZscfc= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR11MB3666.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(39860400002)(376002)(136003)(346002)(366004)(396003)(966005)(316002)(6636002)(38100700002)(33656002)(2940100002)(122000001)(8936002)(478600001)(4326008)(26005)(86362001)(107886003)(110136005)(66476007)(2906002)(66446008)(64756008)(66556008)(66946007)(76116006)(52536014)(8676002)(7696005)(9686003)(186003)(83380400001)(53546011)(5660300002)(71200400001)(6506007)(55016002)(44824005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Ssb6c6u2Tv43ZZx377ADTdPcb+E/eY5vegrT6GpQVyE6MTUuX9l3R/6R1Pu7?= =?us-ascii?Q?FAUUxIsz/DY+Nz7Wt8k6lBqxpge3RcZHoX49IgJxc1n3bHqBQ4212ilzG529?= =?us-ascii?Q?9CWO3/+AwgGx46E0+ZrnTECbwv41LYm/ucRRBErwtBtQR40baDgpkVA7cuCQ?= =?us-ascii?Q?6FZmMnheQEuBwUSIiA/khLZXuhTfeYNvGBKOvGr8rm9LEWLxwmOij59z4TY4?= =?us-ascii?Q?rxPULxC++NB3WhEEf4ckqYCMttn75Pc6XNavf6iyucq3UpRKl1xa040oe+Lc?= =?us-ascii?Q?mzcfp2gbnvbC8+NWf2j9OwYupbZ0aoO85rKuVEPxbqbirKzT0QR7uBwzE6Ge?= =?us-ascii?Q?MdsjlttHy9eg6GAKnkp71FVcm6gw1PO1cdsVocnF7vhMQF2OMEyw6vMbPh5v?= =?us-ascii?Q?1ZxTXUJJAf3ms5K7RiA74+JITKtaGULOiTdFlSCGFBXX5A+nuVavDOHdXZQE?= =?us-ascii?Q?cJPyeF1X4UTfY68Tm76UWO78h6Az7hVCjj5zwCPC4ArDohWB+2xkosdJjYXT?= =?us-ascii?Q?+FOL6eWzpac4kFJyYgQzStE4xPptu0qEq/3bKou4aPjQ2R26Ie1mJppfrs1W?= =?us-ascii?Q?o/+myxRjdbhXOTB8m/Keaao/s1Y2lLFk5mP7zpKDpX7e6l3kkTej1NfvErWN?= =?us-ascii?Q?VYcxT610ylugfznSmyLMP2FHHsdAnKwG9Ii9oIGOtHEnR1dS7lC1MiaAIdAL?= =?us-ascii?Q?S3laZlttRN9eat2jEo2q/2K17g5yj6mn0TxLoKOzWcOkH4nBv60DcstWpNF1?= =?us-ascii?Q?rqPozpEkZbRM8os1W1/KTs5zX+1L6tz1sQ751JomZ6WQyetABWJZTYFQi2n0?= =?us-ascii?Q?uVq/giSIY+fyg1zuN1twXL0fwg/EhMpcEkw0HU87ODfL19sXnPPi5gZw0hkN?= =?us-ascii?Q?iVAm60PhrGZUVN+KIWwhswGIQ5Rq/XUz3LCk0Fg0OguAKTsN53FtBriwiILY?= =?us-ascii?Q?TOsAbOtDCzgUWtvdjo+4/M/7f6EQuGeTmLOkl0O1Llw/v9pcR3SEvCQJpXCl?= =?us-ascii?Q?Ejrci6/hp281nT0OdJexZptZ0hh5agNjV+jqyzz3+5YEWOFGZ3hcikQ73Iju?= =?us-ascii?Q?vmnWQj7ysf18ybl5s5qymfXVOy/JBjz7zxLQkiuM3+UqDp8EcgLdXMhyxBAq?= =?us-ascii?Q?wZ01hnHK39v9nI1b9Q90G565uBFLf5qN1z1hT+z+3iebpNeWWO2JIhcZZh6f?= =?us-ascii?Q?ssIu9n2Itgf63erFe9ShQs7INc66xxRdWAeQGJq7pfIDlWHIKOt0T7oVnqSq?= =?us-ascii?Q?6QGJ95Dn5qGCunUHhr7ZzfVbgBpD0htC1vngZYGUONrj4zLbcUDhZBrLveCj?= =?us-ascii?Q?FIqgHvb62Y+QHOgULAmdXmUN?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR11MB3666.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb0203fe-ea74-4d3a-3f0b-08d93a952d50 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2021 00:31:03.3028 (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: +REbzIPxqxJdNOAOBTiaj+5UUE4xDT4rgU8qeNT8jn6+Ky8UYMZW5nthBO0qgwTNsPZydL4VhXx/eyKyzC3BOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1101MB2307 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Wu, Hao A > Sent: Tuesday, June 29, 2021 8:24 AM > To: devel@edk2.groups.io; Bassa, Damian > Cc: Rusocki, Krzysztof > Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/RamDiskDxe: RamDisk drive= r > to assign non-zero SPA range index >=20 > > -----Original Message----- > > From: devel@edk2.groups.io On Behalf Of Bassa, > > Damian > > Sent: Tuesday, June 29, 2021 2:22 AM > > To: devel@edk2.groups.io > > Cc: Rusocki, Krzysztof > > Subject: [edk2-devel] [PATCH] MdeModulePkg/RamDiskDxe: RamDisk driver > > to assign non-zero SPA range index > > > > Driver should not use default zero value to assign SPA range since it > > is invalid value according to ACPI spec. > > After the change driver will look for highest index existing in the ta= ble. > > If maximum number is already taken it will look for holes in table. >=20 >=20 > Hello Damian Bassa, >=20 > Thanks a lot for the patch. >=20 > The reason the current implementation leave the 'SPARangeStructureIndex'= field > as value 0 for RamDisk is that in Section 5.2.25.2 of the ACPI 6.1 speci= fication > (also applies for ACPI 6.3): Fix a typo: "also applies for ACPI 6.4" Best Regards, Hao Wu >=20 > |> For Virtual CD Region and Virtual Disk Region (both volatile and > |> persistent), the following fields - Proximity Domain, SPA Range > |> Structure Index, Flags, and Address Range Memory Mapping Attribute, a= re > not relevant and shall be set to 0. >=20 > Assigning a non-zero value proposed in this patch seems not following th= e above > statement. >=20 > Best Regards, > Hao Wu >=20 >=20 > > > > Signed-off-by: Damian Bassa > > --- > > .../Disk/RamDiskDxe/RamDiskProtocol.c | 131 +++++++++++++++++= + > > 1 file changed, 131 insertions(+) > > > > diff --git a/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c > > b/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c > > index 4333e00053..b47e3af929 100644 > > --- a/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c > > +++ b/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c > > @@ -116,6 +116,136 @@ RamDiskPublishSsdt ( > > return Status; > > } > > > > +/** > > + Finds highest Spa Range Index in Nfit table. > > + > > + @param[in] TableHeader Points to Nfit table. > > + > > + @retval Index Highest Spa range index > > + @retval 0 Free index not found > > +**/ > > +UINT16 > > +GetHighestSpaRangeIndex ( > > + VOID *TableHeader > > + ) > > +{ > > + INT32 Length; > > + UINT16 HighestIndex; > > + > > + HighestIndex =3D 0; > > + > > + EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER *NfitStru= ctHeader; > > + EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE > > *SpaRange; > > + > > + Length =3D ((EFI_ACPI_DESCRIPTION_HEADER *)TableHeader)->Length - > > + sizeof (EFI_ACPI_6_1_NVDIMM_FIRMWARE_INTERFACE_TABLE); > > + NfitStructHeader =3D (EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER *) > > + ((UINT8 *)TableHeader + sizeof > > + (EFI_ACPI_6_1_NVDIMM_FIRMWARE_INTERFACE_TABLE)); > > + > > + while (Length > sizeof(EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER)) { > > + if (NfitStructHeader->Length < > > sizeof(EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER)) { > > + break; > > + } > > + if ((NfitStructHeader->Type =3D=3D > > EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE) > > && > > + (NfitStructHeader->Length >=3D sizeof > > (EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE))) { > > + SpaRange =3D > > (EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE > > *)NfitStructHeader; > > + if (SpaRange->SPARangeStructureIndex > HighestIndex) { > > + HighestIndex =3D SpaRange->SPARangeStructureIndex; > > + } > > + } > > + > > + // > > + // Move to the header of next NFIT structure. > > + // > > + Length -=3D NfitStructHeader->Length; > > + NfitStructHeader =3D (EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER *) > > + ((UINT8 *)NfitStructHeader + > > +NfitStructHeader->Length); > > + } > > + return HighestIndex; > > +} > > + > > +/** > > + Finds if Spa range index exists in Nfit table. > > + > > + @param[in] SpaRangeIndex Number of index to look for. > > + @param[in] TableHeader Points to Nfit table. > > + > > + @retval TRUE Index number already exists in th= e table > > + @retval FALSE Index number doesn't exist in the= table > > +**/ > > +BOOLEAN > > +DoesSpaIndexExist ( > > + UINT16 SpaRangeIndex, > > + VOID *TableHeader > > + ) > > +{ > > + INT32 Length; > > + EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER *NfitStru= ctHeader; > > + EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE > > *SpaRange; > > + > > + Length =3D ((EFI_ACPI_DESCRIPTION_HEADER *)TableHeader)->Length - = + > > + sizeof (EFI_ACPI_6_1_NVDIMM_FIRMWARE_INTERFACE_TABLE); > > + NfitStructHeader =3D (EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER *) > > + ((UINT8 *)TableHeader + sizeof > > + (EFI_ACPI_6_1_NVDIMM_FIRMWARE_INTERFACE_TABLE)); > > + > > + while (Length > sizeof(EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER)) { > > + if (NfitStructHeader->Length < > > sizeof(EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER)) { > > + break; > > + } > > + if ((NfitStructHeader->Type =3D=3D > > EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE) > > && > > + (NfitStructHeader->Length >=3D sizeof > > (EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE))) { > > + SpaRange =3D > > (EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE > > *)NfitStructHeader; > > + if (SpaRange->SPARangeStructureIndex =3D=3D SpaRangeIndex) { > > + return TRUE; > > + } > > + } > > + > > + // > > + // Move to the header of next NFIT structure. > > + // > > + Length -=3D NfitStructHeader->Length; > > + NfitStructHeader =3D (EFI_ACPI_6_1_NFIT_STRUCTURE_HEADER *) > > + ((UINT8 *)NfitStructHeader + > > +NfitStructHeader->Length); > > + } > > + return FALSE; > > +} > > + > > +/** > > + Finds lowest available Spa range index in Nfit table. > > + > > + @param[in] TableHeader Points to Nfit table. > > + > > + @retval Index Lowest free Spa range index > > + @retval 0 Free index not found > > +**/ > > +UINT16 > > +GetFreeSpaIndex ( > > + VOID *TableHeader > > + ) > > +{ > > + UINT16 Index; > > + > > + Index =3D GetHighestSpaRangeIndex (TableHeader); > > + > > + // > > + // If highest range found is not maximum allowed number use value > > +increased by 1 > > + // > > + if (Index !=3D MAX_UINT16) { > > + return Index + 1; > > + } > > + // > > + // If highest possible index value is already used, see if there is > > +any that is not taken > > + // > > + for (Index =3D 1; Index < MAX_UINT16; Index++) > > + { > > + if (!DoesSpaIndexExist(Index, TableHeader)) { > > + return Index; > > + } > > + } > > + DEBUG (( > > + EFI_D_ERROR, > > + "GetFreeSpaIndex: Nfit index not found, table is full\n" > > + )); > > + return 0; > > +} > > > > /** > > Publish the RAM disk NVDIMM Firmware Interface Table (NFIT) to the > > ACPI @@ -334,6 +464,7 @@ RamDiskPublishNfit ( > > SpaRange->Length =3D sizeof > > (EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE); > > SpaRange->SystemPhysicalAddressRangeBase =3D PrivateData->Startin= gAddr; > > SpaRange->SystemPhysicalAddressRangeLength =3D PrivateData->Size; > > + SpaRange->SPARangeStructureIndex =3D GetFreeSpaIndex (Nfit); > > CopyGuid (&SpaRange->AddressRangeTypeGUID, &PrivateData->TypeGuid); > > > > Checksum =3D CalculateCheckSum8((UINT8 *)Nfit, NfitHead= er->Length); > > -- > > 2.27.0.windows.1 > > > > Intel Technology Poland sp. z o.o. > > ul. Sowackiego 173 | 80-298 Gdask | Sd Rejonowy Gdask Pnoc | VII > > Wydzia Gospodarczy Krajowego Rejestru Sdowego - KRS 101882 | NIP > > 957-07-52-316 | Kapita zakadowy 200.000 PLN. > > Ta wiadomo wraz z zacznikami jest przeznaczona dla okrelonego adresata > > i moe zawiera informacje poufne. W razie przypadkowego otrzymania tej > > wiadomoci, prosimy o powiadomienie nadawcy oraz trwae jej usunicie; > > jakiekolwiek przegldanie lub rozpowszechnianie jest zabronione. > > This e-mail and any attachments may contain confidential material for > > the sole use of the intended recipient(s). If you are not the intended > > recipient, please contact the sender and delete all copies; any review > > or distribution by others is strictly prohibited. > > > > > > > > > > >=20 >=20 >=20 >=20 >=20