From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0BDAA2094552E for ; Thu, 8 Jun 2017 10:12:28 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C4F8B23E6D2; Thu, 8 Jun 2017 17:13:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C4F8B23E6D2 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=lersek@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C4F8B23E6D2 Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-122.phx2.redhat.com [10.3.116.122]) by smtp.corp.redhat.com (Postfix) with ESMTP id 06DD27F1C3; Thu, 8 Jun 2017 17:13:35 +0000 (UTC) From: Laszlo Ersek To: edk2-devel-01 Cc: Jordan Justen Date: Thu, 8 Jun 2017 19:13:28 +0200 Message-Id: <20170608171333.17937-1-lersek@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 08 Jun 2017 17:13:36 +0000 (UTC) Subject: [PATCH 0/5] OvmfPkg: recognize an extended TSEG when QEMU offers it X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Jun 2017 17:12:28 -0000 In we found that the SMM_REQUIRE build of OVMF cannot boot with as many VCPUs as we'd like, due to SMRAM exhaustion (even with the largest TSEG, 8MB). Related thread on edk2-devel: . The QEMU patch at adds a new device property / PCI config register to the Q35 board's DRAM controller. The property allows the user (and new Q35 machine types by default) to specify an arbitrary TSEG size (expressed as a number of megabytes). The register enables the firmware to query the size / availability of the feature. The extended size, when available, can be selected by writing the "11" bitmask to the ESMRAMC.TSEG_SZ register bit-field. This bitmask (similarly to the invented register's location in PCI config space) is defined as reserved in the original Q35/MCH spec. This series adds support for the feature to OVMF. When an extended TSEG is offered, OVMF will choose it. The first four patches extract Q35TsegSizeLib, centralizing the interpretation of ESMRAMC.TSEG_SZ between PlatformPei, SmmAccessPei and SmmAccess2Dxe. This subset of patches incurs no observable change in behavior. The last patch implements the feature in Q35TsegSizeLib. Repo: https://github.com/lersek/edk2.git Branch: extended_tseg_bz1447027 Cc: Jordan Justen Thanks Laszlo Laszlo Ersek (5): OvmfPkg: introduce Q35TsegSizeLib (class header and sole lib instance) OvmfPkg/PlatformPei: rebase to Q35TsegSizeLib OvmfPkg/SmmAccess: rebase code unique to SmmAccessPei to Q35TsegSizeLib OvmfPkg/SmmAccess: rebase shared PEIM/DXE code to Q35TsegSizeLib OvmfPkg/Q35TsegSizeLib: recognize an extended TSEG when QEMU offers it OvmfPkg/Include/IndustryStandard/Q35MchIch9.h | 4 + OvmfPkg/Include/Library/Q35TsegSizeLib.h | 74 +++++++ OvmfPkg/Library/Q35TsegSizeLib/Q35TsegSizeLib.c | 230 ++++++++++++++++++++ OvmfPkg/Library/Q35TsegSizeLib/Q35TsegSizeLib.inf | 47 ++++ OvmfPkg/OvmfPkg.dec | 13 +- OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/PlatformPei/MemDetect.c | 7 +- OvmfPkg/PlatformPei/PlatformPei.inf | 2 +- OvmfPkg/SmmAccess/SmmAccess2Dxe.inf | 1 + OvmfPkg/SmmAccess/SmmAccessPei.c | 7 +- OvmfPkg/SmmAccess/SmmAccessPei.inf | 4 +- OvmfPkg/SmmAccess/SmramInternal.c | 13 +- 14 files changed, 384 insertions(+), 21 deletions(-) create mode 100644 OvmfPkg/Include/Library/Q35TsegSizeLib.h create mode 100644 OvmfPkg/Library/Q35TsegSizeLib/Q35TsegSizeLib.c create mode 100644 OvmfPkg/Library/Q35TsegSizeLib/Q35TsegSizeLib.inf -- 2.9.3