From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.82]) by mx.groups.io with SMTP id smtpd.web09.6915.1620139709834749751 for ; Tue, 04 May 2021 07:48:30 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=G9Ilnm9z; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.223.82, mailfrom: thomas.lendacky@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oEChXGOxBz6Ybm71yS8CXjIlWg8mP6rBfmxhOUD8U2qC6RljC+aj0Up8RZtLIDjKMSWgvGHBFCXcTyhkiSZUhIDqmYWMmH4BxDnRMdMGEU79psKnm0xO+GZ4FFtLjlLVmdhFHOV5E72TthxoYzjs9MMIJfA2hDWzA4FWbds67DABm1sKrN8MQzpqFlApGvOLLvzVSGsS5sHYwB7aj5wGTUlpgxWDDYak6bDVWFUpVRK/wSK6NlenMXixR+XWfdOVqGLG6V/3sR+dvNEZBooiDP7a0xpRw0YpM3U15d8SDS9euc+Ev4RZC/5+IuvIg3u7Z4S1CgKN2yF83b0o6oU7JA== 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=nnO9grX1Mepl+9Jv9NvOi401anD44AJiWUxOtD+KPcU=; b=gDeYwbMLq5lc3NS7XuRXPHSbvIbXsttvGc89ggSfjf655K/shPvvwc5L+BZMhfdfmBMd94dxDqla+WWZxmhyus3LK5mgaZ5hKLgRBeCqlCfQV3OMczYMkRS7Ay24iXWBIdkvyui8ipuRS/MilZa9pK+JG+tQLyH3SrYS6Hm4XcFTRTdxOBjv9y/6hB8JHl21y1E9g2rRnXoKTVp2PxTSl50iG/SLlHNmlZwZFMC/WhBraw40PV2QDezawsOy29GbJk6TXnPJ2wNXpT9PX+wxc+0RgmB+UOa7D01g30K9QAdYwrlUOEgTzbqNc9Z0m72Z6aD0tH68oRuqYCadox+xfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nnO9grX1Mepl+9Jv9NvOi401anD44AJiWUxOtD+KPcU=; b=G9Ilnm9zdG22LBJFhVFivuAN/2SXynB51qr/1wQn+FYR1dAONXavDGAkXnVQjqIjnNbkhhlc+dZ4RxbtzODjeFhvyZxDWal8VRoZwq9gJjb4xTuZ53Bp9SCr2uzrJ3Bl9HTFD9h1IjzTonhVOiPuehtatFQkANASu+29M1t6nbg= Authentication-Results: google.com; dkim=none (message not signed) header.d=none;google.com; dmarc=none action=none header.from=amd.com; Received: from DM5PR12MB1355.namprd12.prod.outlook.com (2603:10b6:3:6e::7) by DM6PR12MB4218.namprd12.prod.outlook.com (2603:10b6:5:21b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.39; Tue, 4 May 2021 14:48:28 +0000 Received: from DM5PR12MB1355.namprd12.prod.outlook.com ([fe80::b914:4704:ad6f:aba9]) by DM5PR12MB1355.namprd12.prod.outlook.com ([fe80::b914:4704:ad6f:aba9%12]) with mapi id 15.20.4087.044; Tue, 4 May 2021 14:48:28 +0000 Subject: Re: [edk2-devel] [PATCH RFC v2 04/28] MdePkg: Define the Page State Change VMGEXIT structures To: Laszlo Ersek , devel@edk2.groups.io, brijesh.singh@amd.com Cc: James Bottomley , Min Xu , Jiewen Yao , Jordan Justen , Ard Biesheuvel , Erdem Aktas References: <20210430115148.22267-1-brijesh.singh@amd.com> <20210430115148.22267-5-brijesh.singh@amd.com> <47d74104-dd86-8bb9-ba5e-6c0e7371d5e4@redhat.com> <3782d6d7-bb52-5112-06f9-d05f8d404560@redhat.com> From: "Lendacky, Thomas" Message-ID: <09508b98-b72e-73bd-1b9a-6e4e4599d64d@amd.com> Date: Tue, 4 May 2021 09:48:25 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 In-Reply-To: <3782d6d7-bb52-5112-06f9-d05f8d404560@redhat.com> X-Originating-IP: [67.79.209.213] X-ClientProxiedBy: SA9PR10CA0020.namprd10.prod.outlook.com (2603:10b6:806:a7::25) To DM5PR12MB1355.namprd12.prod.outlook.com (2603:10b6:3:6e::7) Return-Path: thomas.lendacky@amd.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from office-linux.texastahm.com (67.79.209.213) by SA9PR10CA0020.namprd10.prod.outlook.com (2603:10b6:806:a7::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 14:48:26 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b155fc62-73c0-4941-91ce-08d90f0bad48 X-MS-TrafficTypeDiagnostic: DM6PR12MB4218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Va8hdz3kDmgnhyPtxAcfnoaQX3MN7UurTOEIcolJIFv3mgQeT07PjjOEvGwJ89uBt3S3725FSZ0jETJYshrSHVoW6rU3vaFPDC9Wn58zwDZpmGTIeuvATHR19rftM4dNTeykuhrUjUksl0/sHlKbWHVafMI/itHPvQzGFR3nVa0ykno9D1AI8IJCrceJyOwJ8FqIvU5lLVI3Vk1O0UGPHinq6i86b291bdekitsDLA2DLK+APPpQARRU4k689KfeSDUzksAtyktQyl+p61LumoWAhqiNqW9aCnAiD74K4XYtJ+VooaG//DBw+Xm4a/Cffb3+F4SX++oU5WxnFuZWK33rRqJEc4WNY5DKXLOMnUePWqRk0jpI1Ztg1MRERGLVQ0QFXUWg5uq45k3pdApO1PGos7trNbWs4rZolwmG7gI/T9C10rXG9UmnYNUAKCzJ8ICXcnsl+khKMDENgzinQgEl6z1FqNh6+hRWChDbY35Lidhznj3p950baIwXn9WX4ynltfPJtjrkDnDAseI2p8uT1uoJ27kdUFXqbxh6Z3GoN5yQTtQnIhAarLYlRy9zRrR2LtsX4W64qLUnFOL33c1y8T4mhd8YLxojIdFGIjS4I+kPprz/bA0RhBqL6sMJtVBOPtNZQrhcUrbag1w1XuFT0JPm8EhLYuR2SWVVXktTLfvPOAIKEYLicYc4IGatmvmrpYnxQ6fdynFCq8mzVCWL4N8zDb3HF1FCtfze35onIiK8FNc7Uv15uIaXH+9+NIfeKDThmO+LFou/ZPQMdw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR12MB1355.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(376002)(366004)(346002)(39850400004)(26005)(5660300002)(19627235002)(6486002)(38100700002)(4326008)(31686004)(6506007)(2906002)(53546011)(186003)(956004)(16526019)(2616005)(8676002)(66476007)(6636002)(6512007)(66946007)(66556008)(316002)(83380400001)(478600001)(31696002)(966005)(54906003)(36756003)(86362001)(8936002)(45080400002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?emR5ZWs3SXVxeHZBSVFpbERrQkJLOEdoV1dzeHFzMmNLTzYydTVlcTFaTGV3?= =?utf-8?B?NFYyY3hwV3ZxNFRxVHFpYWtWTEtBSjdQWmh4SldHQ01PTGxUclJqbnhpMFd2?= =?utf-8?B?SGExemdxa3NSSFN1Z1JCY0o3UkJndW1QdVlkL1BTV1dVS1JQWU0yMWY3czBR?= =?utf-8?B?UmtZekpGWWtzWVA2MDY4VTlxTWhXS0dlMTdEN3daS1RTZEpTTmkwdDF3MWxB?= =?utf-8?B?S1E0TjZuTlFyNHZkVU1qQ2lLeGQybU9VSGV5dXBwQkNoY1hVa0RaSVZvNTJN?= =?utf-8?B?OVVLUEdESWJ4bDVqc1d5emduNlBTbW9vTmZSL3hyb21FOFNDLzBkYWNKT3Z6?= =?utf-8?B?Wm1xeTNvL2MreUZ0cE9yaWFSK21SZmJuK1YrclptYVVUNHVqaG5NeldOZTRT?= =?utf-8?B?UHNFSjlXeTgxQVc4aEtJcHdhVTc2d0RGNitrbGxNYURuZDNyV1dseC9LNmRz?= =?utf-8?B?UTdBNG04Y2NJTkRydFdFV0g0cUtlUVBzQjZUcFVtUFg2Rkt4WEx2YnB3UnQr?= =?utf-8?B?c2FwQktyQlRqNlFycWxPN2JvQ296d0lRaGVnckluaXIrOUFYSzcwbzZUMlpG?= =?utf-8?B?b3RlS0FXdWdxSkRZTEZMOWVRQk0rZlhidnowbmJ5dHRmSlQxVmxabXRTUTNY?= =?utf-8?B?MGNRSldaVzNYdE9EMlZVdUxEOVZoYk9aNGJ1V1puNnFuOVdKSVpoT2plUWk4?= =?utf-8?B?bnNUdmdPbWVCc0dnNWFuMG5RVWVxd0RyU05NcjhFYXd1RXlUL01QYlRSSkhG?= =?utf-8?B?RUZTYkptVkJJKzFFQ3VDcDlJZm5oRTlIbS9kUW5kQXRFcjh4NUtMN2JpU2FB?= =?utf-8?B?blB2N243TktYYVNMRmpMUi9MUW5ERjBQbDVncUV5TFI2R0RVak9lSnh6QXY3?= =?utf-8?B?S3lMMmVodFFaR1hnMDFvTFR1QStKeHBJTEJkSE5peFhZOEtEanpibHBvWFRs?= =?utf-8?B?dGRKd2pwT2h3ckJycWkvZVh5K3BzQU90WmtDUU1FK1BvaGQzcHVNSFd0NlJG?= =?utf-8?B?VEZsbkRxNTh4Y3BZUWIwSUtkeHJ1RFlrdVk4V1hDNkljc2xNTnRVL3RqQW0w?= =?utf-8?B?QkcwQU51ZG1yNmQ1NWNxcGtZT2Y3Q3NjUld5ejVaZko4VW1iRkJmSFBMczFL?= =?utf-8?B?VTAyTWtvV1lOTHJJcTQxcGZZMVFDZEZKTmg3dGJBMGVEdnlBWVh1R0VuOWkx?= =?utf-8?B?MFNxUHdDWnhQdldrdFpaMXFOcnc5OTBabkx3dTZRZVF0TERaZkRyTDNWOWFp?= =?utf-8?B?bWtYOEd5SUFiWk5zNTg0ZHhocm5saHR4NGhIRkFjTCtwUGdyKzRUZVI2ZDI0?= =?utf-8?B?TkV5MjlMRmdRc1piMFliVHQzTk9lTUUvV1N2cGJGMXRqV2FSSHE0VitZdnNQ?= =?utf-8?B?NVFtV2U3dldqOXhlTDU5RU1LeDJONG9UNS9lOWY2TlB1RmpENHlSaGI1dGto?= =?utf-8?B?Y0JTNmp0N1p1YUlkWjIxTHVhbUwxZTJUZTRUTUcwa1VYQkgrdW5vbFZtbDVa?= =?utf-8?B?a0ROOVFXcEVCNWVCMWljaEFDcjdHNVBJOEc2VUtKcjQ5YVJJeXBpTmpHcTRp?= =?utf-8?B?MVpNZyt4OGhQUk1iVTNVd0RxRno0bHlNWWtIckZZNlY2NTdRcXVQNWcrMTcz?= =?utf-8?B?L3VaQWJtZ3hxSDNMbWoyUHhLcStheGtsak1LbUt1T0lMV2R3dDRJbWpxcmdR?= =?utf-8?B?MCtPNHNzcUk5Qm1EUCthSnFmOUZiQWNxRGsxSkNla2NDMHd0YzhwMW5pTTFh?= =?utf-8?Q?UXsftPenAvBOPb3NZd4kNm0S2653Y0oMp6ge+lE?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: b155fc62-73c0-4941-91ce-08d90f0bad48 X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB1355.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 14:48:27.8545 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: G1H5jTkZg5+qzrDVFJvd7gmvC/nrnCy19EP2RSbBdPrwUJHgfFxB2aVFeJvgbwqT14qfpPtNflJlqkp/S00Hjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4218 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 5/4/21 8:59 AM, Laszlo Ersek wrote: > On 05/04/21 14:33, Laszlo Ersek wrote: >> On 04/30/21 13:51, Brijesh Singh wrote: >>> BZ: https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D3275&data=04%7C01%7Cthomas.lendacky%40amd.com%7Cf400bca14b6f4f138a1908d90f05090f%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637557336582189771%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=bjXNVWGpurRGUZkjemvDQR%2FYnEQRG9ENN22jUjtkNP0%3D&reserved=0 >>> >>> The Page State Change NAE exit will be used by the SEV-SNP guest to >>> request a page state change using the GHCB protocol. See the GHCB >>> spec section 4.1.6 and 2.3.1 for more detail on the structure >>> definitions. >>> >>> Cc: James Bottomley >>> Cc: Min Xu >>> Cc: Jiewen Yao >>> Cc: Tom Lendacky >>> Cc: Jordan Justen >>> Cc: Ard Biesheuvel >>> Cc: Laszlo Ersek >>> Cc: Erdem Aktas >>> Signed-off-by: Brijesh Singh >>> --- >>> MdePkg/Include/Register/Amd/Fam17Msr.h | 15 ++++++++++ >>> MdePkg/Include/Register/Amd/Ghcb.h | 29 ++++++++++++++++++++ >>> 2 files changed, 44 insertions(+) >>> >>> diff --git a/MdePkg/Include/Register/Amd/Fam17Msr.h b/MdePkg/Include/Register/Amd/Fam17Msr.h >>> index e19bd04b6c..432cee2feb 100644 >>> --- a/MdePkg/Include/Register/Amd/Fam17Msr.h >>> +++ b/MdePkg/Include/Register/Amd/Fam17Msr.h >>> @@ -58,6 +58,19 @@ typedef union { >>> UINT64 GuestFrameNumber:52; >>> } GhcbGpaRegister; >>> >>> + struct { >>> + UINT64 Function:12; >>> + UINT64 GuestFrameNumber:40; >>> + UINT64 Operation:4; >>> + UINT64 Reserved:8; >>> + } SnpPageStateChangeRequest; >>> + >>> + struct { >>> + UINT32 Function:12; >>> + UINT32 Reserved:20; >>> + UINT32 ErrorCode; >>> + } SnpPageStateChangeResponse; >>> + >>> VOID *Ghcb; >>> >> This matches section 2.3.1 in rev 2.00. >> >>> UINT64 GhcbPhysicalAddress; >>> @@ -69,6 +82,8 @@ typedef union { >>> #define GHCB_INFO_CPUID_RESPONSE 5 >>> #define GHCB_INFO_GHCB_GPA_REGISTER_REQUEST 18 >>> #define GHCB_INFO_GHCB_GPA_REGISTER_RESPONSE 19 >>> +#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_REQUEST 20 >>> +#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_RESPONSE 21 >>> #define GHCB_HYPERVISOR_FEATURES_REQUEST 128 >>> #define GHCB_HYPERVISOR_FEATURES_RESPONSE 129 >>> #define GHCB_INFO_TERMINATE_REQUEST 256 >> >> Matches section 2.3.1. >> >>> diff --git a/MdePkg/Include/Register/Amd/Ghcb.h b/MdePkg/Include/Register/Amd/Ghcb.h >>> index 2d64a4c28f..1e7c0daed3 100644 >>> --- a/MdePkg/Include/Register/Amd/Ghcb.h >>> +++ b/MdePkg/Include/Register/Amd/Ghcb.h >>> @@ -54,6 +54,7 @@ >>> #define SVM_EXIT_NMI_COMPLETE 0x80000003ULL >>> #define SVM_EXIT_AP_RESET_HOLD 0x80000004ULL >>> #define SVM_EXIT_AP_JUMP_TABLE 0x80000005ULL >>> +#define SVM_EXIT_SNP_PAGE_STATE_CHANGE 0x80000010ULL >>> #define SVM_EXIT_HYPERVISOR_FEATURES 0x8000FFFDULL >>> #define SVM_EXIT_UNSUPPORTED 0x8000FFFFULL >>> >> >> Matches "Table 5. List of Supported Non-Automatic Events". >> >>> @@ -160,4 +161,32 @@ typedef union { >>> #define GHCB_HV_FEATURES_SNP_AP_CREATE (GHCB_HV_FEATURES_SNP | BIT1) >>> #define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION (GHCB_HV_FEATURES_SNP_AP_CREATE | BIT2) >>> #define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION_TIMER (GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION | BIT3) >>> + >>> +// SNP Page State Change >> >> (1) Comment style. >> >>> +#define SNP_PAGE_STATE_MAX_NPAGES 4095 >>> +#define SNP_PAGE_STATE_MAX_ENTRY 253 >>> +#define SNP_PAGE_STATE_PRIVATE 1 >>> +#define SNP_PAGE_STATE_SHARED 2 >>> +#define SNP_PAGE_STATE_PSMASH 3 >>> +#define SNP_PAGE_STATE_UNSMASH 4 >> >> (2) The PSMASH and UNSMASH operations are not documented in the rev 2.00 >> spec, in the GHCB MSR protocol. That's probably because PSMASH and >> UNSMASH can only be defined in terms of 2MB pages, and >> GHCB_INFO_SNP_PAGE_STATE_CHANGE_REQUEST is suitable only for individual, >> 4KB pages. I think it would be useful to point out somehow here that >> PSMASH and UNSMASH are restricted to the GHCB shared area protocol >> (perhaps extend the leading comment on this block of macros). >> >> (3) I don't understand what "MAX_NPAGES" stands for (4095). The rest of >> the series never uses the macro, and I can't associate it with anything >> from the spec. If the macro is supposed to relate to the 4KB / 2MB page >> smashing / splitting, then its replacement text should be 512. Unless >> the macro corresponds to a definition in the spec, I think we should >> drop it. >> >>> + >>> +typedef PACKED struct { >>> + UINT64 CurrentPage:12; >>> + UINT64 GuestFrameNumber:40; >>> + UINT64 Op:4; >>> + UINT64 PageSize:1; >>> + UINT64 Rsvd: 7; >>> +} SNP_PAGE_STATE_ENTRY; >>> + >>> +typedef PACKED struct { >>> + UINT16 CurrentEntry; >>> + UINT16 EndEntry; >>> + UINT32 Rsvd; >>> +} SNP_PAGE_STATE_HEADER; >> >> (4) We tend to write >> >> #pragma pack (1) >> ... >> #pragma pack () >> >> rather than PACKED -- but anyway, is packing really necessary? "Natural >> alignment" is required in edk2. I'm OK with packing, but I think the >> pragma is the preferred form. >> >> (5) Please spell out both "Rsvd" fields above as "Reserved". >> >> (6) Stray space character in "Rsvd: 7". >> >> (7) The field name "Op" is inconsistent with the other field name >> "Operation". >> >> (8) I think there is a bug (typo) in the rev 2.00 spec, in 4.1.6 "SNP >> Page State Change": it says >> >> ... calculated from the supplied guest physical frame number (GFN) for >> the requested page size (GPA = GFN << 12). >> >> But, if you can choose 2MB page size in the request, then the (GPA = GFN >> << 12) formula is not g > > Sorry, unfinished sentence: I meant that the formula was not generally > correct. Actually, for any page size, the GPA for any GFN is GFN << 12. For the SNP Page State Change NAE event, it is up to the hypervisor to ensure that the GFN/GPA supplied is aligned appropriately for the requested page size (see 4.1.6 of the GHCB spec where the page operations are defined). A GFN is naturally 4K aligned, so only a 2MB page size needs GFN/GPA alignment validation. For the SNP Page State Change MSR protocol, only a 4K page size is supported. Thanks, Tom > > Thanks > Laszlo > >> >> (9) If my understanding of the spec is correct, "EndEntry" has >> *inclusive* meaning. That's unusual. Any particular reason for not >> making "EndEntry" exclusive (in the spec)? >> >>> + >>> +typedef struct { >>> + SNP_PAGE_STATE_HEADER Header; >>> + SNP_PAGE_STATE_ENTRY Entry[SNP_PAGE_STATE_MAX_ENTRY]; >>> +} SNP_PAGE_STATE_CHANGE_INFO; >>> + >>> #endif >>> >> >> Yes, this looks OK. Size is 2+2+4+253*8 = 2032 bytes, which matches the >> size of GHCB.SharedBuffer. >> >> (10) However, *if* you decide to declare SNP_PAGE_STATE_ENTRY and >> SNP_PAGE_STATE_HEADER explicitly as packed, then you should do the same >> for SNP_PAGE_STATE_CHANGE_INFO. >> >> (11) Like I mentioned earlier, it's probably helpful if you start the >> subject line with >> >> MdePkg/Register/Amd: ... >> >> on all of these MdePkg patches. If that becomes too tight, for some of >> the MdePkg patches, then I suggest "MdePkg/Amd: ..." (i.e., drop >> "Register"). >> >> Thanks >> Laszlo >> >