From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 12EFF7803CC for ; Tue, 2 Apr 2024 04:19:13 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=bJXtAoNHvGFpoYDjhrcTdmO1odBVCPLNNyI9F+Me9Ow=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20240206; t=1712031552; v=1; b=2tAWRnERX2n2FttDQzSGrSm4e3auZeEsLBDnWuUHHzpzWcIPnicxt3VOECANr3F3UvvACkZt 8U3L+n/uKeYoS/z2aFX4UmacQG87JWUP9Jl8OwuLr8JwQyyLaDcmUcTtin02j9cDvHVfaauoK9i VxMJpvtUX2oAUfHLWAnBYcUtFe6sgN+m/exbMBLoLecZ6zjt1SdHaOR3WTdgYfjI0DjpYypqHPC U8CUdzoSZ68gw0I5L+bMr2tuXTG/grLOWdjA3DRfFFsazpKcTggAyi7qUWyeg0adcHE9Tb2nUri XyWVmhBMkZR6aAgGOV87H+AeZkb6FirdOvCyky0wQ7jyA== X-Received: by 127.0.0.2 with SMTP id uu4UYY7687511xanxygDfnrE; Mon, 01 Apr 2024 21:19:12 -0700 X-Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.110]) by mx.groups.io with SMTP id smtpd.web10.5813.1712011252711619511 for ; Mon, 01 Apr 2024 15:40:54 -0700 X-Received: from BL3PR10MB6161.namprd10.prod.outlook.com (2603:10b6:208:3bc::16) by SN4PR10MB5558.namprd10.prod.outlook.com (2603:10b6:806:201::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Mon, 1 Apr 2024 22:40:51 +0000 X-Received: from BL3PR10MB6161.namprd10.prod.outlook.com ([fe80::eba0:e25a:464b:436b]) by BL3PR10MB6161.namprd10.prod.outlook.com ([fe80::eba0:e25a:464b:436b%3]) with mapi id 15.20.7409.042; Mon, 1 Apr 2024 22:40:50 +0000 From: "Sachin Ganesh via groups.io" To: "devel@edk2.groups.io" CC: Liming Gao , Felix Polyudov , Dhanaraj V Subject: [edk2-devel] [PATCH 3/5] MdePkg: Use newly defined Unaccepted Memory Type Thread-Topic: [PATCH 3/5] MdePkg: Use newly defined Unaccepted Memory Type Thread-Index: AQHahIWl1d2Bt5nl40e+goUoNqMsgA== Date: Mon, 1 Apr 2024 22:40:50 +0000 Message-ID: <20240401224002.254-4-sachinganesh@ami.com> References: <20240401224002.254-1-sachinganesh@ami.com> In-Reply-To: <20240401224002.254-1-sachinganesh@ami.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL3PR10MB6161:EE_|SN4PR10MB5558:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: kTQn/diIEHdqwaWg3qBEKwngKdhqgmz4l1pUgE9ikU/fooBtsEzWRyBXniEs1og9GcrJq9LAh8ArBqwpYDWPzZJg7pKv8MTixuE071Ki8iU8FKw1LWKfPG00VYTm4Bxre97hrtSJnkdd9hS8Fou8Y3RlxxQG4EdA3xzzH5vHcUxuxqV4ehTZ/um4g9bY3s7Fuo+u2RSey/aOiYpUdb9JjjVnu7lVUeqBvTMKKROYx9QHOETkD836FSs4lBntPI4q4LjsbMG4ShH2WH8tKIJGTPmBL1nDz49Q9RDeV5NIF8W50EYFCCVbfSGzISx06sXxXDhNyMoeZl8bxUtX4RlwZtPnaz67WY+D1kbbzK54ZAeBKRbLSk6Ge/SuyHUSdvELLb/cZFB7UnpfNUqUFxZeNMWp/PeSWN033N3zzDDuZhoG7JG4uZHEw0kElQefb7R1OSmY7NUIO8loVeKw+yU/Vkse7Qec+i2rLUySJgwtRO3t4cxW4jIca4iTfB3+1GDVRJflUMDj2xx2xvlFhUa4/3/6S5m/G4BlRUajUgk/8vT6EbsoIa0TOlZZjf81Dsu52bn8uKklPwu2m/DcnHEzqtI/Xj9z8pEeoa3MdoyGOiUMFj9z8SaQa4/ZEnuXzImC5N2ME6RspHJvWWQm53hfE8c6KWBYM8EfIgUiEI1WTmQ= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Zb7EnvmXVj/9pesYzopKE3NLO1J/rtc6uJPVqigQDbi1UzlR1UhT8qJdWm?= =?iso-8859-1?Q?tzjaBBrOcaxYKo/p+8TyOQAr21bGXn/LL4GNPOk4A9io1tu98zt2BkMvAJ?= =?iso-8859-1?Q?YrBpcY8yZ4Dw8M8lJbNdre9ITZu/OnFOBNtSZU1n73D1ZOJm8R9Ak3eT2F?= =?iso-8859-1?Q?2caDmkzO2IFdFiUr2sO5quBLYAkOO8RJWZgkg0v7HxN5jjkYZu70ngJWJv?= =?iso-8859-1?Q?+WyGnLkEYLOpvQ/URdkBhf+SKTp1E+z0rsfz53tVRH57YUevdV1Qu97/On?= =?iso-8859-1?Q?IsuZ8SNGxir7fknCQP4dHgOyXdSRn3tH0dsEHdRXyvzB45/w4OhbptD0RK?= =?iso-8859-1?Q?6X8ZtzdRbpaHINFOue1l5mfFyfHjJkxIY9xgxuUcWlYAsV8q9OW+VoSLAs?= =?iso-8859-1?Q?9K3hvdf5qkGqHGBa03EG1RhDkgPlPSE0GVV5bd2zH1wdUJ/ZJxDG2eIsnq?= =?iso-8859-1?Q?VPGA5/gGPMoPf+DT/GAUo4mGK2oWNPq7T45K5H1NMyO0Srun+ueqxolNBe?= =?iso-8859-1?Q?LXvxg8bSI1jhFHtEzhb7P5R1ykaRylzbuMe9JQK4kFsiHDIdHUPB4R3KfB?= =?iso-8859-1?Q?1NS41zfHeqmtmAYcyHEWpfCWNvLqdkWXQULN/z4Z7WPSHEe9KospV9tjcK?= =?iso-8859-1?Q?l2E+b8qsvQs6s37BZskgux5HGAdO0hfw03sTQB9LVg8lwipJvL4h8UoenS?= =?iso-8859-1?Q?6cdnaAsN17waI6U0gpjI+u1AVLPnPr++p2HygOOYokVyC43NLgAASjlRkU?= =?iso-8859-1?Q?ZhL8NQ+3sWSUHFDne94LFEM7tcSuLTAN9TDlhA4T9enjKJ1Bh9u2nUAKWJ?= =?iso-8859-1?Q?QFHq1C2tq3s9QxPM0i4YX3P8mze+/Ml/6vdX+qi+WhFGaUNcklEI81Mms9?= =?iso-8859-1?Q?klFDC0KNmazAVeSWjLiBEzdrpfTo2jP+zmzb/Sghz8UVJGHmw1u/EkJb4D?= =?iso-8859-1?Q?aceFjECkBEkSsAR/ZZvdQH1pnPakC5IahfGOmBIhXBmeSJPIJfRQ0pJFeW?= =?iso-8859-1?Q?MQqtxOXJuyhFxWqoc2DbxCw4MKq6i7SOu8NJ9QxADjezXbxRbbz5zwhTjB?= =?iso-8859-1?Q?FJ8Hu1GcE3J0I0NsrxIwwzrh1UllY4qrTu+6E4vXhfJuxUT446KEGIc35M?= =?iso-8859-1?Q?LDGNe6ojFoVk93DyWLzstamo/QjpOwAsc8vmqJlzJOGmmhv4B45L3TIkbd?= =?iso-8859-1?Q?rvcy9WDRzGbf9el2Ova+poROKUjdR/bc68Z/zK7/h2kThadzHIexUUrbee?= =?iso-8859-1?Q?dSGXhAulEjMECqV5Uny0r9G197r9ezO/R7Cuf1fcFmQSL+ByyLD9UPlxoJ?= =?iso-8859-1?Q?ro3t3pprKCiREJ/FTrh6EDMK5xpYIO01gcBg6zqQXRDdyrgLOpRnCYVFmP?= =?iso-8859-1?Q?Bag6wx2xbJRfBTr7iwpVDKzJ9BRESCRZCSi00v+gx18Tu8y7IHTcsFQiH5?= =?iso-8859-1?Q?wm2P+yGvmC0S2IgEPMSK/LYzchHDHp5GfLjx410rIuTHlLBiAF2dQmIqho?= =?iso-8859-1?Q?o2bHH1J2kpdL8sLUTOXJGe0ySQWwfIouBNTHT6b/hlesBpC3X67IfnTaAe?= =?iso-8859-1?Q?T+v5U2vPdoVN+Mbwmx5/sVoYD5FDB2lz/qx9a42dSJ8jlpOAROMGRX5oPd?= =?iso-8859-1?Q?9geltWPLYytEOUqsSzVicE0lOqfS33nFHN?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL3PR10MB6161.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f4539f6-f4bf-43fd-cc37-08dc529cc853 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2024 22:40:50.3788 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pUwsjj5KspDRy0Lb7CPgl7HoJP1e5fVg5cLE8oTgGdtQqQeBUgnbBgwtwLUzkseMC3xX6TIfGC45seL9uWB2tw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5558 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Mon, 01 Apr 2024 21:19:10 -0700 Resent-From: sachinganesh@ami.com Reply-To: devel@edk2.groups.io,sachinganesh@ami.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 0iAHp3YUeUsYATJUYj0sT6Qmx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=2tAWRnER; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io EFI_RESOURCE_MEMORY_UNACCEPTED has been officially defined in the PI 1.8 specification. So all temporary solutions have been replaced with the actual definition. Cc: Liming Gao Cc: Felix Polyudov Cc: Dhanaraj V Signed-off-by: Sachin Ganesh --- MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 10 +++---- MdeModulePkg/Core/Dxe/Mem/Page.c | 38 +++++++++++++-------------- MdeModulePkg/Include/Pi/PrePiDxeCis.h | 25 ------------------ MdeModulePkg/Include/Pi/PrePiHob.h | 20 -------------- MdePkg/Include/Pi/PiDxeCis.h | 13 ++++----- MdePkg/Include/Pi/PiHob.h | 12 ++------- 6 files changed, 31 insertions(+), 87 deletions(-) delete mode 100644 MdeModulePkg/Include/Pi/PrePiDxeCis.h delete mode 100644 MdeModulePkg/Include/Pi/PrePiHob.h diff --git a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c b/MdeModulePkg/Core/Dxe/Gcd/Gc= d.c index c450d1bf25..fe1bbd6974 100644 --- a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c +++ b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c @@ -8,8 +8,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ -#include -#include +#include +#include #include "DxeMain.h" #include "Gcd.h" #include "Mem/HeapGuard.h" @@ -105,7 +105,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mGcdMemoryT= ypeNames[] =3D { "MMIO ", // EfiGcdMemoryTypeMemoryMappedIo "PersisMem", // EfiGcdMemoryTypePersistent "MoreRelia", // EfiGcdMemoryTypeMoreReliable - "Unaccepte", // EFI_GCD_MEMORY_TYPE_UNACCEPTED + "Unaccepte", // EfiGcdMemoryTypeUnaccepted "Unknown " // EfiGcdMemoryTypeMaximum }; @@ -2669,8 +2669,8 @@ CoreInitializeGcdServices ( case EFI_RESOURCE_MEMORY_RESERVED: GcdMemoryType =3D EfiGcdMemoryTypeReserved; break; - case BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED: - GcdMemoryType =3D EFI_GCD_MEMORY_TYPE_UNACCEPTED; + case EFI_RESOURCE_MEMORY_UNACCEPTED: + GcdMemoryType =3D EfiGcdMemoryTypeUnaccepted; break; case EFI_RESOURCE_IO: GcdIoType =3D EfiGcdIoTypeIo; diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c b/MdeModulePkg/Core/Dxe/Mem/P= age.c index 26584648c2..5a51d9df1a 100644 --- a/MdeModulePkg/Core/Dxe/Mem/Page.c +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c @@ -9,7 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "DxeMain.h" #include "Imem.h" #include "HeapGuard.h" -#include +#include // // Entry for tracking the memory regions for each memory type to coalesce = similar memory types @@ -70,23 +70,23 @@ EFI_PHYSICAL_ADDRESS mDefaultMaximumAddress =3D MAX_AL= LOC_ADDRESS; EFI_PHYSICAL_ADDRESS mDefaultBaseAddress =3D MAX_ALLOC_ADDRESS; EFI_MEMORY_TYPE_INFORMATION gMemoryTypeInformation[EfiMaxMemoryType + 1] = =3D { - { EfiReservedMemoryType, 0 }, - { EfiLoaderCode, 0 }, - { EfiLoaderData, 0 }, - { EfiBootServicesCode, 0 }, - { EfiBootServicesData, 0 }, - { EfiRuntimeServicesCode, 0 }, - { EfiRuntimeServicesData, 0 }, - { EfiConventionalMemory, 0 }, - { EfiUnusableMemory, 0 }, - { EfiACPIReclaimMemory, 0 }, - { EfiACPIMemoryNVS, 0 }, - { EfiMemoryMappedIO, 0 }, - { EfiMemoryMappedIOPortSpace, 0 }, - { EfiPalCode, 0 }, - { EfiPersistentMemory, 0 }, - { EFI_GCD_MEMORY_TYPE_UNACCEPTED, 0 }, - { EfiMaxMemoryType, 0 } + { EfiReservedMemoryType, 0 }, + { EfiLoaderCode, 0 }, + { EfiLoaderData, 0 }, + { EfiBootServicesCode, 0 }, + { EfiBootServicesData, 0 }, + { EfiRuntimeServicesCode, 0 }, + { EfiRuntimeServicesData, 0 }, + { EfiConventionalMemory, 0 }, + { EfiUnusableMemory, 0 }, + { EfiACPIReclaimMemory, 0 }, + { EfiACPIMemoryNVS, 0 }, + { EfiMemoryMappedIO, 0 }, + { EfiMemoryMappedIOPortSpace, 0 }, + { EfiPalCode, 0 }, + { EfiPersistentMemory, 0 }, + { EfiGcdMemoryTypeUnaccepted, 0 }, + { EfiMaxMemoryType, 0 } }; // // Only used when load module at fixed address feature is enabled. True me= ans the memory is alreay successfully allocated @@ -2083,7 +2083,7 @@ CoreGetMemoryMap ( MemoryMap =3D MergeMemoryMapDescriptor (MemoryMapStart, MemoryMap, S= ize); } - if (MergeGcdMapEntry.GcdMemoryType =3D=3D EFI_GCD_MEMORY_TYPE_UNACCEPT= ED) { + if (MergeGcdMapEntry.GcdMemoryType =3D=3D EfiGcdMemoryTypeUnaccepted) = { // // Page Align GCD range is required. When it is converted to EFI_MEM= ORY_DESCRIPTOR, // it will be recorded as page PhysicalStart and NumberOfPages. diff --git a/MdeModulePkg/Include/Pi/PrePiDxeCis.h b/MdeModulePkg/Include/P= i/PrePiDxeCis.h deleted file mode 100644 index 9be71d2618..0000000000 --- a/MdeModulePkg/Include/Pi/PrePiDxeCis.h +++ /dev/null @@ -1,25 +0,0 @@ -/** @file - Include file matches things in PI. - -Copyright (c) 2022, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef MDE_MODULEPKG_PRE_PI_DXE_CIS_H_ -#define MDE_MODULEPKG_PRE_PI_DXE_CIS_H_ - -/// -/// A memory region that describes system memory that has not been accepte= d -/// by a corresponding call to the underlying isolation architecture. -/// -/// This memory region has not been defined in PI spec, so it is defined i= n -/// PrePiDxeCis.h. And it is defined in the format of captial letters -/// because only capital letters are allowed to be used for #define declar= ations. -/// -/// After this memory region is defined in PI spec, it should be a value i= n -/// EFI_GCD_MEMORY_TYPE in PiDxeCis.h. -/// -#define EFI_GCD_MEMORY_TYPE_UNACCEPTED 6 - -#endif diff --git a/MdeModulePkg/Include/Pi/PrePiHob.h b/MdeModulePkg/Include/Pi/P= rePiHob.h deleted file mode 100644 index ac575e5972..0000000000 --- a/MdeModulePkg/Include/Pi/PrePiHob.h +++ /dev/null @@ -1,20 +0,0 @@ -/** @file - HOB related definitions which has not been officially published in PI. - -Copyright (c) 2022, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef MDE_MODULEPKG_PRE_PI_HOB_H_ -#define MDE_MODULEPKG_PRE_PI_HOB_H_ - -// -// BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED is defined for unaccepted memory. -// But this defitinion has not been officially in the PI spec. Base -// on the code-first we define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED at -// MdeModulePkg/Include/Pi/PrePiHob.h. -// -#define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED 0x00000007 - -#endif diff --git a/MdePkg/Include/Pi/PiDxeCis.h b/MdePkg/Include/Pi/PiDxeCis.h index bb7fb2c38a..04410c5a1a 100644 --- a/MdePkg/Include/Pi/PiDxeCis.h +++ b/MdePkg/Include/Pi/PiDxeCis.h @@ -56,14 +56,11 @@ typedef enum { /// system. If all memory has the same reliability, then this bit is not= used. /// EfiGcdMemoryTypeMoreReliable, - // /// - // /// A memory region that describes system memory that has not been ac= cepted - // /// by a corresponding call to the underlying isolation architecture. - // /// - // /// Please be noted: - // /// EfiGcdMemoryTypeUnaccepted is defined in PrePiDxeCis.h because it= has not been - // /// defined in PI spec. - // EfiGcdMemoryTypeUnaccepted, + /// + /// A memory region that describes system memory that has not been accep= ted + /// by a corresponding call to the underlying isolation architecture. + /// + EfiGcdMemoryTypeUnaccepted, EfiGcdMemoryTypeMaximum =3D 7 } EFI_GCD_MEMORY_TYPE; diff --git a/MdePkg/Include/Pi/PiHob.h b/MdePkg/Include/Pi/PiHob.h index f730520e8c..9e49421afa 100644 --- a/MdePkg/Include/Pi/PiHob.h +++ b/MdePkg/Include/Pi/PiHob.h @@ -232,16 +232,8 @@ typedef UINT32 EFI_RESOURCE_TYPE; #define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 0x00000004 #define EFI_RESOURCE_MEMORY_RESERVED 0x00000005 #define EFI_RESOURCE_IO_RESERVED 0x00000006 -// -// BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED is defined for unaccepted memory. -// But this defitinion has not been officially in the PI spec. Base -// on the code-first we define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED at -// MdeModulePkg/Include/Pi/PrePiHob.h and update EFI_RESOURCE_MAX_MEMORY_T= YPE -// to 8. After BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED is officially publish= ed -// in PI spec, we will re-visit here. -// -// #define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED 0x00000007 -#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000008 +#define EFI_RESOURCE_MEMORY_UNACCEPTED 0x00000007 +#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000008 /// /// A type of recount attribute type. -- 2.24.1.windows.2 -The information contained in this message may be confidential and propriet= ary to American Megatrends (AMI). This communication is intended to be read= only by the individual or entity to whom it is addressed or by their desig= nee. If the reader of this message is not the intended recipient, you are o= n notice that any distribution of this message, in any form, is strictly pr= ohibited. Please promptly notify the sender by reply e-mail or by telephone= at 770-246-8600, and then delete or destroy all copies of the transmission= . -=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 (#117321): https://edk2.groups.io/g/devel/message/117321 Mute This Topic: https://groups.io/mt/105282241/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-