From nobody Mon Feb 9 16:45:07 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+47931+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+47931+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1569324934; cv=none; d=zoho.com; s=zohoarc; b=mJuOIVKExEV3aTRD1yHYYHbdG/00G8M6ClS6qJC9s4kHZHaoTSw783QMtJq5Xc2hY5nhFlMlDr2yS9g2oZ23TdWEVQ8aGOI8HUhd8Il7XAI9CGncWCM6gc7zDA47Fi0Wiu4pikBXcGiIoL1DNmxj/98fmLJNArTpWX8ycgE/Tbs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569324934; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=wvwnHvGy9fm6O2iH67xNxRUq9Jl5yDsIGcJ+PknQq4I=; b=N0c3RA24jgdL7qhuynYC8gqG8lWVau/0Ej4g6iaZbyfmlqV9OOMLH9OCnCHUFr/zZnqop+yC1i57HGcF9lvfj7yo6Np9aiqIL0D+SruHGC0EuHsrhFtPHXv1Yc6Pa5kpYCVlJodDyKwKiP2QEvCnnXGf5ioSbTxmS/XknJqbOOA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+47931+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1569324934068864.3155955024117; Tue, 24 Sep 2019 04:35:34 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id vCzcYY1788612xwKJspISsvH; Tue, 24 Sep 2019 04:35:33 -0700 X-Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by groups.io with SMTP; Tue, 24 Sep 2019 04:35:32 -0700 X-Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 19C4A8BA2DA; Tue, 24 Sep 2019 11:35:32 +0000 (UTC) X-Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-118.rdu2.redhat.com [10.10.120.118]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6E681600CC; Tue, 24 Sep 2019 11:35:29 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Boris Ostrovsky , Brijesh Singh , Igor Mammedov , Jiewen Yao , Joao M Martins , Jordan Justen , Jun Nakajima , Michael Kinney , Paolo Bonzini , Phillip Goerl , Yingwen Chen Subject: [edk2-devel] [PATCH wave 1 07/10] OvmfPkg/PlatformPei: reserve the SMRAM at the default SMBASE, if it exists Date: Tue, 24 Sep 2019 13:35:02 +0200 Message-Id: <20190924113505.27272-8-lersek@redhat.com> In-Reply-To: <20190924113505.27272-1-lersek@redhat.com> References: <20190924113505.27272-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.68]); Tue, 24 Sep 2019 11:35:32 +0000 (UTC) Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lersek@redhat.com X-Gm-Message-State: S6u9BhY73jLkhCMRlfLgb9urx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1569324933; bh=PqjAMtTRzfuSXXaLnnkeCWm7lZnLZF3liFv5LkfyUeE=; h=Cc:Date:From:Reply-To:Subject:To; b=xBUompIPCorj5t3P6jJV/h9CbWcsMZuvEhir5geJsjxOncJPxM+f7DZcH2cSsRFuite NptTb0bXeruSIIdQmyarQVBgcs4ScYGBYQbZLB3q7NmGoluop5FPEyFFdcxhQz+K6d3MF wPCgCrdZXlr1x7X88asArQTCcG1v5edz4wo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" The 128KB SMRAM at the default SMBASE will be used for protecting the initial SMI handler for hot-plugged VCPUs. After platform reset, the SMRAM in question is open (and looks just like RAM). When BDS signals EFI_DXE_MM_READY_TO_LOCK_PROTOCOL (and so TSEG is locked down), we're going to lock the SMRAM at the default SMBASE too. For this, we have to reserve said SMRAM area as early as possible, from components in PEI, DXE, and OS runtime. * QemuInitializeRam() currently produces a single resource descriptor HOB, for exposing the system RAM available under 1GB. This occurs during both normal boot and S3 resume identically (the latter only for the sake of CpuMpPei borrowing low RAM for the AP startup vector). But, the SMRAM at the default SMBASE falls in the middle of the current system RAM HOB. Split the HOB, and cover the SMRAM with a reserved memory HOB in the middle. CpuMpPei (via MpInitLib) skips reserved memory HOBs. * InitializeRamRegions() is responsible for producing memory allocation HOBs, carving out parts of the resource descriptor HOBs produced in QemuInitializeRam(). Allocate the above-introduced reserved memory region in full, similarly to how we treat TSEG, so that DXE and the OS avoid the locked SMRAM (black hole) in this area. (Note that these allocations only occur on the normal boot path, as they matter for the UEFI memory map, which cannot be changed during S3 resume.) Cc: Ard Biesheuvel Cc: Boris Ostrovsky Cc: Brijesh Singh Cc: Igor Mammedov Cc: Jiewen Yao Cc: Joao M Martins Cc: Jordan Justen Cc: Jun Nakajima Cc: Michael Kinney Cc: Paolo Bonzini Cc: Phillip Goerl Cc: Yingwen Chen Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1512 Signed-off-by: Laszlo Ersek --- OvmfPkg/PlatformPei/MemDetect.c | 37 ++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetec= t.c index 4879ee87b797..8fdc9c2ed7c9 100644 --- a/OvmfPkg/PlatformPei/MemDetect.c +++ b/OvmfPkg/PlatformPei/MemDetect.c @@ -646,6 +646,28 @@ PublishPeiMemory ( } =20 =20 +STATIC +VOID +QemuInitializeRamBelow1gb ( + VOID + ) +{ + if (FeaturePcdGet (PcdSmmSmramRequire) && mQ35SmramAtDefaultSmbase) { + AddMemoryRangeHob (0, SMM_DEFAULT_SMBASE); + AddReservedMemoryBaseSizeHob (SMM_DEFAULT_SMBASE, MCH_DEFAULT_SMBASE_S= IZE, + TRUE /* Cacheable */); + STATIC_ASSERT ( + SMM_DEFAULT_SMBASE + MCH_DEFAULT_SMBASE_SIZE < BASE_512KB + BASE_128= KB, + "end of SMRAM at default SMBASE ends at, or exceeds, 640KB" + ); + AddMemoryRangeHob (SMM_DEFAULT_SMBASE + MCH_DEFAULT_SMBASE_SIZE, + BASE_512KB + BASE_128KB); + } else { + AddMemoryRangeHob (0, BASE_512KB + BASE_128KB); + } +} + + /** Peform Memory Detection for QEMU / KVM =20 @@ -690,12 +712,12 @@ QemuInitializeRam ( // allocation HOBs, and to honor preexistent memory allocation HOBs wh= en // looking for an area to borrow. // - AddMemoryRangeHob (0, BASE_512KB + BASE_128KB); + QemuInitializeRamBelow1gb (); } else { // // Create memory HOBs // - AddMemoryRangeHob (0, BASE_512KB + BASE_128KB); + QemuInitializeRamBelow1gb (); =20 if (FeaturePcdGet (PcdSmmSmramRequire)) { UINT32 TsegSize; @@ -861,6 +883,17 @@ InitializeRamRegions ( TsegSize, EfiReservedMemoryType ); + // + // Similarly, allocate away the (already reserved) SMRAM at the defa= ult + // SMBASE, if it exists. + // + if (mQ35SmramAtDefaultSmbase) { + BuildMemoryAllocationHob ( + SMM_DEFAULT_SMBASE, + MCH_DEFAULT_SMBASE_SIZE, + EfiReservedMemoryType + ); + } } } } --=20 2.19.1.3.g30247aa5d201 -=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 (#47931): https://edk2.groups.io/g/devel/message/47931 Mute This Topic: https://groups.io/mt/34274942/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-