From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=helo; client-ip=104.47.38.56; helo=nam02-bl2-obe.outbound.protection.outlook.com; envelope-from=brijesh.singh@amd.com; receiver=edk2-devel@lists.01.org Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0056.outbound.protection.outlook.com [104.47.38.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id F3A4D211F8866 for ; Thu, 28 Jun 2018 06:27:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vrmr2bIOonP+jDW182XHcS36CRnrMSrGrxsSAYBpbcY=; b=XUZvgn+WqzlZIimJGr0JWiQyEKJmQ0ldOS22Uvo5jGTkqroZmA8IOc+Toe9dnTY1LJDoIFDzNBmjN7YqG82CkEBPA8Lf6ZesbmyhjKh0cueOzv3SiDc5Oq1iDihbRE15WPlFv6/KGYAOMT8IO7JjjY5niDRsC13CrewGwKyOCZQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from [10.236.136.62] (165.204.77.1) by BL0PR12MB2449.namprd12.prod.outlook.com (2603:10b6:207:4d::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20; Thu, 28 Jun 2018 13:27:32 +0000 Cc: brijesh.singh@amd.com, Tom Lendacky , Star Zeng , Eric Dong , "Jordan Justen (Intel address)" To: Laszlo Ersek , edk2-devel@lists.01.org References: <1530042365-9979-1-git-send-email-brijesh.singh@amd.com> <272c4a0f-fcc1-2899-e31d-a3207feb51ed@redhat.com> <2a662245-bb03-e742-1403-4d0a47bffda7@amd.com> From: Brijesh Singh Message-ID: Date: Thu, 28 Jun 2018 08:27:28 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0501CA0083.namprd05.prod.outlook.com (2603:10b6:803:22::21) To BL0PR12MB2449.namprd12.prod.outlook.com (2603:10b6:207:4d::31) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eb430ea5-43b5-4d74-7db2-08d5dcfae7b5 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:BL0PR12MB2449; X-Microsoft-Exchange-Diagnostics: 1; BL0PR12MB2449; 3:RkNsWqLtNAKAT6fkCP8AMmzYsUOB/gzSGfznULZoBj//EE7lBaQa7SCzclkDhLbwc88Qh1gVWCFn5OSG/sbVZTaguDJnDLyYo9o3vFZj9h05BWJOHEcTmAoslU86+FaPeBEoiYXp7ceMAM/naKMHLfGBD+BLobMAAwa2ZrQK4hmrNX+NOMfGFejPkv87Xy2cZjXWs7k4i0NEaJy4OfJ5YaVC5eU4gE7CkjOCV0iwpm7VuXvA/vbG73R1Nhu5f89F; 25:iGJGzpn5FxCCSAQdW9PL008NhNOqunvoikxd2qqoUh7J5rw780DcAeaQ/tJ/Ic+Lz0X2l1BK4koKGGHfuV20kfH4gmhiODShViUERB1LkCcJKLiOpviiKhgBZ0qIXVenTQ2I7dwWvOYmTMUFwvhQj02u2GdncrY49xejxTSjKuPEPucy6316N1xeyAOm6SrOLiMvRR3wkdJuJN36BDmrWnR0CuGxFiX9CAAB5Lnv19aDJmFw8F6i2gsOSwrfrWd0efz70st81s5wA5cpe+xx/BnG3t6UQML36oskq4fhET+9Hf9NkipFO/tfXlhCfkhjQPBhChi94IQhNAtfC9vSJw==; 31:jVCmeCdtk89DiPkGmEqzbHozkXcx/TnxFDUalq6LUGbC4H/5z5KUuw54w1bQcTpe9r7xCO33Y4IpuGO0RAmjVUamYHULE77Huywqt9M1YAK5yenV2F74H19mvv+a1rCpEA5E680IxWwZRLxFgMPlwmEQKwcKPeLG563nVwP3wbl6rTSt/Z+DZzmIL6X25Dt1iaZsjOuQG1wBPZ4pakW1r4KDHsx2PcUExif15g/gLPo= X-MS-TrafficTypeDiagnostic: BL0PR12MB2449: X-Microsoft-Exchange-Diagnostics: 1; BL0PR12MB2449; 20:ps3HdE6hawCSvBbjWwbJ3leKkZj/vKM8Dej5Bv8SM6/sDoAY3bmNQX2WzaQAAxIm12iZbPJTAQmJagEbTKTretYimWBK4yf0i4RMc0qRn+4aGd2sPIg5E4rEQjh1WbnhRz2dVcU8WAEX9yMTlaS4swPjZdrnJvB0TJMGfL1Lz3E15r2Dw61zpur0nwoJBZ45CTRQAxdAJAl4MbxPSKEO/nttCH3t7Bjp7UHBS6NX2tUgCVsNz34/Ba34284SvOnpf5Dv6MRz0b9ZJVGwDaFDRKGNPQYRxPKAbWb5CxAOKna+iwNvBEeUf9CVohX0HiK78TpBGHSUCC8ytF0c15aPLe5Q4ogbxcHof+kn72sT4rPRqA+D0lE0XPP9RBreEDBd6b1kJlAK4Z4nlVYmCZc7jWd9qV/i/BmzTUKnnVEtrTScVdMOqEcJ2LGIYBnrAu9fzSYY6IZcg/RInKnvIeR2J4xZlDuvvCUJ90gXR9zNGAbXM6wRUxfEtaOQ5k/xm95c; 4:F2nzSyHIoC5HWOErmvmNO5B60nb2PJVHOxhtyOCpMoAR8M2bs1Gem+/GOS0zTdBf7JB0JlMm4BC+FEXV4KssfSk312xTzKWuuV2NlcdDT9shV66Wh1Cd9HCwXDGG2cQIc+hxTRSFpOKs96RaCmKv26nsEPsChWDcM3tbfAnue94N3ZExRb3CMAvFS4oVYCRYcX3RrLYebFyd5ulQscvfokev1tCfxIBHtE1+hrd4Gut4CL7LTiq1RIF1zhbXDLOXPMpCjZSHTGpd6C+k9mJtYKNVC9FLk+Taa2iI55Sc5nXwL6BeptchfoT6mea7MojF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:BL0PR12MB2449; BCL:0; PCL:0; RULEID:; SRVR:BL0PR12MB2449; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(136003)(366004)(346002)(376002)(396003)(39860400002)(31014005)(199004)(189003)(16526019)(65826007)(229853002)(8936002)(486006)(81166006)(44832011)(2616005)(956004)(6246003)(11346002)(186003)(446003)(476003)(25786009)(8676002)(4326008)(67846002)(54906003)(2486003)(23676004)(53936002)(316002)(52146003)(36756003)(81156014)(3846002)(16576012)(31686004)(86362001)(5660300001)(47776003)(77096007)(14444005)(53546011)(6116002)(58126008)(50466002)(31696002)(93886005)(105586002)(305945005)(65956001)(65806001)(2906002)(106356001)(76176011)(2870700001)(6666003)(478600001)(6486002)(7736002)(52116002)(64126003)(386003)(66066001)(68736007)(26005)(97736004)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:BL0PR12MB2449; H:[10.236.136.62]; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTDBQUjEyTUIyNDQ5OzIzOkxWYithbUU3NEkvUDQ2UDVnOXJGS29SN0xt?= =?utf-8?B?THlsdVlYbENWTFZDaUx4c0tDL1ordmhmU1dYVEZveEdpRHFSdURMZnFqbGEw?= =?utf-8?B?Qm1obVY2NkJieUJWRHQzNm1MZmh6MDNXZzBsNzNLckRtQm5CTnNHb3I5cnJ0?= =?utf-8?B?eFdjNUtuMXJCdElzdzAyUWF4QVA1RVBtbjYvM1g5VUsxMUVLZDBadkJqcDU1?= =?utf-8?B?WGRleE01cDRURTgrQXVwNHo0bDRRdGk1VVp2eTFTcUNCVUZsVUdBOTFjVGFz?= =?utf-8?B?eGhLSzFrS00vT2VjbGU2T1l5bnVvT01rbW5teXF3RWc0THVWZ3NpSVJFbzE5?= =?utf-8?B?R2lXWEdGZ3lkdHNBcDZIQlNWN1JJZHFkV3BLRzRMTDdtNGxPMlc4YVRHTUg1?= =?utf-8?B?cjJQZ2xZSDZHYXhPOUR0TURWeTcwNXM2WXRTRnRnVEEvaDRjQU9qTjhHRVE4?= =?utf-8?B?SXVrOVlKR2hzaHkvZG5jcU51UVkvenJmSk05QlhWdUdHOGpIallGenFIOW5s?= =?utf-8?B?T3pwL0hkdjJXcHFhN2VVZm10TDZQQ0k4SFNtMjk5V1dmTzVIcTdGV1Y0bzBD?= =?utf-8?B?UURIZDd3WVc3ekk2WlMzbUFuaUNhcTVjMHAweG5PZ2lkbXlXN05WaGVwVUlH?= =?utf-8?B?WHJoWDVZd0h2ZVRYWE16eUVCK2x5M09xcFE5QWV1bWJJNjRMQWVPSjJ0Y1c2?= =?utf-8?B?ZGxFUVdhOWo1Rzl6VVIzaFFMd0ZkM2dJVmZyUTFCZm83WGdyekpjUjR3RXRB?= =?utf-8?B?K3ZJbTR1ZDBHMGZxb2VyVEsram9ROHp5VHlyMHQzL2FwSWtWeDRCUlZxYVF4?= =?utf-8?B?OFFXWmRKcnVPaDA0QmoxWWFZZjNCaGcvTE9zU244aHVTbjloK25VQVhXaVND?= =?utf-8?B?RnA5MEpBb29Bb243OVRUN1c2RW1BNWxFcUk5VU9iVFRFVER6MDlGUDhtOG96?= =?utf-8?B?TlJocUYxWUVCUnBSWGdMWXp1bG9wY1dCY3FCd3l6N3BCMmkvQ2doWWhNNWJQ?= =?utf-8?B?ckNjcmk2YjZ6TDVrcFdDaWpLRXp6b2lJckI2MnQwQTlqY2JzSTNNQ3JMTndu?= =?utf-8?B?S0tTRVZjcjhvdTJ4NXhwSm1wa1ZueDhlaHNnMG9SNVNmcUhkd2M1RUIxUThH?= =?utf-8?B?dGJtV2NGZ3k5aW5ERGJxZkdPVHVvd0Z3cnI5VGJTL2pCRW5mUlZQbm11ZW9r?= =?utf-8?B?WFNXYWZWMmhJenA0TFliUlJTOXYxOWxFdHY3dmtpL2lKNjdxa0NjZVE2UkZC?= =?utf-8?B?MUZ0N3BNNThPaFJYNWNuRGFPNzRUQ2IxNlZMaWtsU1FVOHorbHV1VHMvY2Vk?= =?utf-8?B?N2QrLzRtVmErV05waU80Q0NRcXViSHIya0lsZGRmSC9MRmVqQ3JTTXZkYjZY?= =?utf-8?B?QTdsWTh4UlpyUElqTk11aTlJaXRudkJxVkV5SHpYc2xLMWxPT1VqQXp1Q2k2?= =?utf-8?B?OHF1SHRVMjkxcGFEbmZqU1hML2pHWE9ZRnVlRi9GUXFaZ3V2Z3YrWEwxTTJl?= =?utf-8?B?TUlOSTJ5MjRUSHgrVThBZXJKekJwN25wZU1LbVRzdXlybTBsbkFWZXBVdjhW?= =?utf-8?B?bzFiRUd2M3FtdmJSL2VSUXY5VTZRbFFDSkh6czlnSWZsVVF3YVlFUUVDUHdl?= =?utf-8?B?SFdRamxKQWZoVE5YR3I1M1lxL2pLUmo3aUphR2xqazZOQXM3Mk1IV0p3UWVL?= =?utf-8?B?YWRRZkFIVUthaCtZdVZud2FaakE5SDBuYUFzY0NBVzJUd0tEdXVOczlSMUQ3?= =?utf-8?B?cllvTjk5YkJxNnozMG5ieGlUcTRFRVNxUTNlM0N3aGxwSy9ULzNTbEw1T1Qw?= =?utf-8?B?VktETFpSUnRWRWVjemIxblRQNUk2WndrMXRzUjJPcnBadHdvcDZiRHkvUjB2?= =?utf-8?B?eituQkhySUZwY1NDTmNYY3NLV3FnWm1FdlhpVDVQVTVvbDUwQnU4YldydmQv?= =?utf-8?B?bm1pMnM2bndhMFNPRHVyQ2gxbWphaXJUWmk5TTJtcHd3V3g0WERza3M4TjVJ?= =?utf-8?B?VU5qbGZyKysxc3VmK1VFVVRvTzRCb2EvOFVUdmNYZjJhSCsxMzVKNWlKa29V?= =?utf-8?Q?6uie3iCGEsw1wgvpYfgmfRLOz?= X-Microsoft-Antispam-Message-Info: qLUjwluuOnBoEcrdCv00hsYuA+APKTbgCCDW946BWh71Qlgf4cpcXGbse3uP3o/htpOKbs0RekH0rl6wu+qfCE4Qs5UF3JYWhgnFr8U/1Up+dJjPMwlSeE7MHu/tlCPc1Go6QOx3iP7eJPZouAEmYtTrqhhSpzX4UkKJK0+tcURVDgYl7zxmHYn/NZZJr2XnbvTwtwv+fYEtEZOXtivPQRhiGtFvmNXpIraiL+guH2ozbt3zUUo3uMpItlqxmplZL30Pk5l1b4uO/fKsrxV2SrCl8NKJEyvIeKnAPrzYTUUlnIHEwjaDwLAO/7iPAxojSRvj7Y3p9S/ySfTUkiX75EJRdjcT6/Xj7NYdAOMZ+ic= X-Microsoft-Exchange-Diagnostics: 1; BL0PR12MB2449; 6:DI5UtEeN7BUNA6S762Ig7WnPdlX/1Yn7gxpj6FTs6Ic8rRxTQjRk3BmCT4GfGBJQ2HBn9yhMHtq7XTq5/QwAigwmN6MfYZ7gowJ8vg9HzrJ3xbgMPfMxo52JjY96a0oCYY4qpLauwk9qN5ULI66yus8NH+nvqJKp3uiOg4DcK7GMSBZE8JPMJSSIXP4kGsO63ze1jH73LKrIUbuYu8RBtRwlkVRCgxjfpWN3UfgIZpcPAhT4py3PDBJmEuKjE4ivcs3STDodPsQA42CE5OYPkiAckoqnzqCGw5DBhtpv8dFm/lRQS2HCmGeARE1DmcPNYXczlltWl3LQPw2DUVXqeotcGqhewZzxH8vtRKvRQVqdtflyTfwtz/j/pmqzg1vGDRN7wLj8P58QhF5XeEevSrrdWiRNGq6hk5/Bvk34O7adGOHZVAaBb4ow+gu+37N79Loxw5u6N2f8ViaWcprPxA==; 5:Zw7Hc//pVm1jiT4KaWJ/FhchFTEAYUBPpuVOE15KeAE5Y8/hfAgH7YqhWrG9jqWADdo+GbV5Uzx7+zHV6El++RABXE/KeBMg4t95qB5P3/FLcDGL/KscSCK/yaZtj3+O4ev+a0ZU0wd2m2o5IGTUzjP7jF8zw3f12ER32MbSCSw=; 24:HQERDcZltQN+IFMthvBFLI1SES7XI+CpZD775iQ804l4r1Y1LHG1lI9ALJ+QeiPshSWHPKOGXjiAp68uMwtUnyWNhZ7Uyqg1APsGbVgXBFQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL0PR12MB2449; 7:aP4sXbqPnhbmIqA3lGnQ6eT4qkj4QNnZOnMTA5pLy4DuYAIVqIEnNbK2cobfOXpFNVdXwCXWhpEIVS8r9RMsTvCjRU0cumblitit2NTNyCoEVDT3cp2CSOfjakpmkUGEFGx6w11LW7K2ncGR/gdChcFsIWfxfnyn3PHW4BpGl4TSNHNz6p0UW2pkmk14UQEGJzo9BrG2m46yXQAMjlYWxSgwy5g+HaTo5776RZQy90IyxfwW7MLkEv76oEdRWS1l; 20:gK6i0wIJwqyTK1gKa56XPkP+avIB9SHEpXoCQgjoao+gFl91p0/RcFojWbmvnfN09ZoblFpg7rnapuGCO9kl1DuT/VAolULpR0LohzIT6O5RSIC0o5WlFy9GrRwwPibpMmHsKMNz167/UJp2l1M9gzZTtOQmaIyI+Nwx/XHeLBWOGhytcuqYmYY8Sa/mp5zaBhZ8FWsRz8kasv9vPTbqIcNx8AHJMI9ncgR1CZstjOEnzvEI9232QUDWeo3EJ8uo X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 13:27:32.5158 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eb430ea5-43b5-4d74-7db2-08d5dcfae7b5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB2449 Subject: Re: [RFC PATCH 1/1] OvmfPkg/QemuFlash: Fix Runtime variable access when SEV is enabled X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jun 2018 13:27:36 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit On 06/28/2018 07:57 AM, Laszlo Ersek wrote: [...] >> >> --- a/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.c >> +++ b/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.c >> @@ -847,7 +847,7 @@ MarkMemoryRangeForRuntimeAccess ( >>                    ); >> >>    Status = gDS->AddMemorySpace ( >> -                  EfiGcdMemoryTypeSystemMemory, >> +                  EfiGcdMemoryTypeMemoryMappedIo, >>                    BaseAddress, >>                    Length, >>                    EFI_MEMORY_UC | EFI_MEMORY_RUNTIME >> @@ -856,7 +856,7 @@ MarkMemoryRangeForRuntimeAccess ( >> >>    Status = gBS->AllocatePages ( >>                    AllocateAddress, >> -                  EfiRuntimeServicesData, >> +                  EfiMemoryMappedIO, >>                    EFI_SIZE_TO_PAGES (Length), >>                    &BaseAddress >>                    ); >> >> I am still getting the error assertion failure. I can debug to see what >> is going on. > > Hmmm. Indeed, memory space added to GCD need not immediately show up in > the UEFI memory map, for the UEFI memory allocation services to allocate > from. IIRC, the PI spec says that *system memory* added like this *may* > show up immediately: > > """ > If the memory range specified by BaseAddress and Length is of type > EfiGcdMemoryTypeSystemMemory or EfiGcdMemoryTypeMoreReliable, then the > memory range may be automatically allocated for use by the UEFI memory > services. > """ > > and, indeed in edk2, it happens at once; but it doesn't apply to MMIO at > all. > > So, can you replace the AllocatePages call with the following: > > Status = gDS->AllocateMemorySpace ( > EfiGcdAllocateAddress, > EfiGcdMemoryTypeMemoryMappedIo, > 0, // Alignment > EFI_SIZE_TO_PAGES (Length), > &BaseAddress, > gImageHandle, > NULL // DeviceHandle > ); > I did realized this in my yesterday's debug. I was looking at other drivers (mainly PciBridge...) on how it adds the MMIO. I no longer get the ASSERT. thank you ! After changing this system boots fine but I am getting Linux kernel crashes when we attempt to update the UEFI runtime variables. I am still debugging and trying to to root cause it. >> >> Good point, I will try it and let you know. As you say since SMM uses >> UEFI page table > > More correctly: SMM drivers use, at runtime as well, the page table in > SMRAM that was created by the firmware. > >> hence after fixing FtwNotificationEvent(..) we should be >> good. > > No, that's not precise -- FtwNotificationEvent() is not used in SMM *at > all*. > > I checked that before I sent my previous email; namely, > FtwNotificationEvent() is in > "MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c", which is not > built into the SMM variant of the variable driver. > > Please see the variable driver stacks in OVMF: > > - non-SMM: > > OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > > In the non-SMM case, we have a normal runtime driver, > VariableRuntimeDxe.inf, that implements the variable service. It relies > on the FTW driver (another runtime driver) for the FTW protocol. > Finally, both the variable driver and the FTW driver rely on the FVB > (firmware volume block) protocol, which may come from the QEMU flash > driver, or from the emulation driver. Again, all of these are runtime > drivers. "VariableRuntimeDxe.inf" includes the "VariableDxe.c" file, > hence FtwNotificationEvent() is relevant. > > - SMM: > > OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > > In the SMM case, we have a *split* variable driver, > "VariableSmmRuntimeDxe.inf" (which is a normal runtime driver) and > "VariableSmm.inf" (a "traditional SMM" driver). The runtime half is > unprivileged and only formats a message for the privileged SMM half, > submits the message, and then parses the response. The rest of the > variable stack, namely the privileged half of the variable driver, and > the FTW driver, and the QEMU flash (FVB) driver, all stay within SMM -- > they are traditional SMM drivers too. > > "VariableSmmRuntimeDxe.inf" does not include "VariableDxe.c". Instead, > "VariableSmm.inf" (the privileged half) includes "VariableSmm.c", and > that source file waits for the *SMM* FVB protocol, in the > SmmFtwNotificationEvent() function. But, this notification function, > unlike the DXE counterpart FtwNotificationEvent(), does not care about > the GCD entry attributes -- because in SMM, separate (protected) page > tables are used anyway. > > If you put FtwNotificationEvent() and SmmFtwNotificationEvent() side by > side, you'll see that they perform almost identical steps: > - "Ensure [SMM] FTW protocol is installed" > - "Find the proper [SMM] FVB protocol for variable" > - "Mark the variable storage region of the FLASH as RUNTIME" -- this is > DXE only! > - VariableWriteServiceInitialize > - "Install the Variable Write Architectural protocol" > > (I skipped RecordSecureBootPolicyVarData(), because that always happens > in the DXE half. Anyway it's irrelevant here.) > > Thus, my expectation is that the current issue manifests itself only if > you build OVMF without -D SMM_REQUIRE. > Actually I was not aware that there are two different stack (SMM vs non-SMM). And you are absolutely right. The issue does not happen when using -D SMM_REQUIRE flag. So, I think we just need to focus on making non SMM work. -Brijesh