cpu/x86: Make 1GB paging the default

This patch flips the polarity of CONFIG_USE_1G_PAGES_TLB into
CONFIG_NEED_SMALL_2MB_PAGE_TABLES which is off by default, meaning
CPUs added in the future will automatically build the smaller 1GB pages.
We can expect support for this feature to be available on all future CPU
generations (with the possible exception of embedded edge cases), so
this default setting should make mistakes less likely and keep
maintenance effort lower. (Besides, enabling the support where it
doesn't work fails fast, whereas keeping it disabled where it could work
is an inefficiency that can easily go overlooked for a long time.)

While this is technically a CPU feature, not a northbridge feature, we
support a lot more individual CPUs than northbridges in the pre-SoC era,
and they tend to be closely coupled anyway. So select the option at the
northbridge level for older CPUs to keep things simpler.

Change-Id: I2cf1237a7fb63b8904c2a3d57fead162c66bacde
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/82792
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/src/cpu/qemu-x86/Kconfig b/src/cpu/qemu-x86/Kconfig
index b5ff6f0..221a7ba 100644
--- a/src/cpu/qemu-x86/Kconfig
+++ b/src/cpu/qemu-x86/Kconfig
@@ -7,6 +7,7 @@
 	select UDELAY_TSC
 	select TSC_MONOTONIC_TIMER
 	select UNKNOWN_TSC_RATE
+	select NEED_SMALL_2MB_PAGE_TABLES	# QEMU doesn't support 1GB pages
 
 if CPU_QEMU_X86
 
diff --git a/src/cpu/x86/64bit/Makefile.mk b/src/cpu/x86/64bit/Makefile.mk
index b24e4d7..1fda087 100644
--- a/src/cpu/x86/64bit/Makefile.mk
+++ b/src/cpu/x86/64bit/Makefile.mk
@@ -3,10 +3,10 @@
 all_x86-y += mode_switch.S
 all_x86-y += mode_switch2.S
 
-ifeq ($(CONFIG_USE_1G_PAGES_TLB),y)
-PAGETABLE_SRC := pt1G.S
-else
+ifeq ($(CONFIG_NEED_SMALL_2MB_PAGE_TABLES),y)
 PAGETABLE_SRC := pt.S
+else
+PAGETABLE_SRC := pt1G.S
 endif
 
 all_x86-y += $(PAGETABLE_SRC)
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig
index ec1fa13..417989d 100644
--- a/src/cpu/x86/Kconfig
+++ b/src/cpu/x86/Kconfig
@@ -152,12 +152,12 @@
 	bool
 	default n
 
-config USE_1G_PAGES_TLB
+config NEED_SMALL_2MB_PAGE_TABLES
 	bool
 	default n
 	help
-	  Select this option to enable access to up to 512 GiB of memory
-	  by using 1 GiB large pages.
+	  Select this option from boards/SoCs that do not support the Page1GB
+	  CPUID feature (CPUID.80000001H:EDX.bit26).
 
 config SMM_ASEG
 	bool
diff --git a/src/northbridge/intel/e7505/Kconfig b/src/northbridge/intel/e7505/Kconfig
index e60ab33..039a739 100644
--- a/src/northbridge/intel/e7505/Kconfig
+++ b/src/northbridge/intel/e7505/Kconfig
@@ -6,3 +6,4 @@
 	select HAVE_DEBUG_RAM_SETUP
 	select NO_CBFS_MCACHE
 	select SMM_TSEG
+	select NEED_SMALL_2MB_PAGE_TABLES
diff --git a/src/northbridge/intel/gm45/Kconfig b/src/northbridge/intel/gm45/Kconfig
index 4fe20ee..8059e7e 100644
--- a/src/northbridge/intel/gm45/Kconfig
+++ b/src/northbridge/intel/gm45/Kconfig
@@ -10,6 +10,7 @@
 	select HAVE_X86_64_SUPPORT
 	select USE_DDR3
 	select USE_DDR2
+	select NEED_SMALL_2MB_PAGE_TABLES
 
 if NORTHBRIDGE_INTEL_GM45
 
diff --git a/src/northbridge/intel/i440bx/Kconfig b/src/northbridge/intel/i440bx/Kconfig
index 7b41f05..dbb2d74 100644
--- a/src/northbridge/intel/i440bx/Kconfig
+++ b/src/northbridge/intel/i440bx/Kconfig
@@ -5,6 +5,7 @@
 	select NO_ECAM_MMCONF_SUPPORT
 	select HAVE_DEBUG_RAM_SETUP
 	select NO_CBFS_MCACHE
+	select NEED_SMALL_2MB_PAGE_TABLES
 
 config SDRAMPWR_4DIMM
 	bool
diff --git a/src/northbridge/intel/i945/Kconfig b/src/northbridge/intel/i945/Kconfig
index 9c1a111..ef925e1 100644
--- a/src/northbridge/intel/i945/Kconfig
+++ b/src/northbridge/intel/i945/Kconfig
@@ -9,6 +9,7 @@
 	select INTEL_EDID
 	select HAVE_VGA_TEXT_FRAMEBUFFER if MAINBOARD_DO_NATIVE_VGA_INIT
 	select USE_DDR2
+	select NEED_SMALL_2MB_PAGE_TABLES
 
 if NORTHBRIDGE_INTEL_I945
 
diff --git a/src/northbridge/intel/ironlake/Kconfig b/src/northbridge/intel/ironlake/Kconfig
index 502b99b..ce705dc 100644
--- a/src/northbridge/intel/ironlake/Kconfig
+++ b/src/northbridge/intel/ironlake/Kconfig
@@ -9,6 +9,7 @@
 	select CACHE_MRC_SETTINGS
 	select HAVE_DEBUG_RAM_SETUP
 	select USE_DDR3
+	select NEED_SMALL_2MB_PAGE_TABLES
 
 if NORTHBRIDGE_INTEL_IRONLAKE
 
diff --git a/src/northbridge/intel/pineview/Kconfig b/src/northbridge/intel/pineview/Kconfig
index c652209..8778126 100644
--- a/src/northbridge/intel/pineview/Kconfig
+++ b/src/northbridge/intel/pineview/Kconfig
@@ -10,6 +10,7 @@
 	select INTEL_GMA_ACPI
 	select USE_DDR3
 	select USE_DDR2
+	select NEED_SMALL_2MB_PAGE_TABLES
 
 if NORTHBRIDGE_INTEL_PINEVIEW
 
diff --git a/src/northbridge/intel/sandybridge/Kconfig b/src/northbridge/intel/sandybridge/Kconfig
index 34a0939..f7d56c7 100644
--- a/src/northbridge/intel/sandybridge/Kconfig
+++ b/src/northbridge/intel/sandybridge/Kconfig
@@ -6,6 +6,7 @@
 	select CPU_INTEL_MODEL_206AX
 	select HAVE_DEBUG_RAM_SETUP
 	select INTEL_GMA_ACPI
+	select NEED_SMALL_2MB_PAGE_TABLES
 	select USE_DDR3
 
 if NORTHBRIDGE_INTEL_SANDYBRIDGE
diff --git a/src/northbridge/intel/x4x/Kconfig b/src/northbridge/intel/x4x/Kconfig
index 4bc12af..9af0638 100644
--- a/src/northbridge/intel/x4x/Kconfig
+++ b/src/northbridge/intel/x4x/Kconfig
@@ -10,6 +10,7 @@
 	select HAVE_X86_64_SUPPORT
 	select USE_DDR3
 	select USE_DDR2
+	select NEED_SMALL_2MB_PAGE_TABLES
 
 if NORTHBRIDGE_INTEL_X4X
 
diff --git a/src/soc/intel/baytrail/Kconfig b/src/soc/intel/baytrail/Kconfig
index 02b93c9..09fdbba 100644
--- a/src/soc/intel/baytrail/Kconfig
+++ b/src/soc/intel/baytrail/Kconfig
@@ -33,6 +33,7 @@
 	select CPU_HAS_L2_ENABLE_MSR
 	select TCO_SPACE_NOT_YET_SPLIT
 	select USE_DDR3
+	select NEED_SMALL_2MB_PAGE_TABLES
 	help
 	  Bay Trail M/D part support.
 
diff --git a/src/soc/intel/braswell/Kconfig b/src/soc/intel/braswell/Kconfig
index d9bb481..9b96d11 100644
--- a/src/soc/intel/braswell/Kconfig
+++ b/src/soc/intel/braswell/Kconfig
@@ -39,6 +39,7 @@
 	select SOUTHBRIDGE_INTEL_COMMON_SPI_SILVERMONT
 	select NO_CBFS_MCACHE
 	select TCO_SPACE_NOT_YET_SPLIT
+	select NEED_SMALL_2MB_PAGE_TABLES
 	help
 	  Braswell M/D part support.
 
diff --git a/src/soc/intel/elkhartlake/Kconfig b/src/soc/intel/elkhartlake/Kconfig
index cb080f4..9bee9be 100644
--- a/src/soc/intel/elkhartlake/Kconfig
+++ b/src/soc/intel/elkhartlake/Kconfig
@@ -24,6 +24,7 @@
 	select INTEL_GMA_ADD_VBT if RUN_FSP_GOP
 	select MP_SERVICES_PPI_V1
 	select MRC_SETTINGS_PROTECT
+	select NEED_SMALL_2MB_PAGE_TABLES
 	select PARALLEL_MP_AP_WORK
 	select PLATFORM_USES_FSP2_1
 	select PMC_GLOBAL_RESET_ENABLE_LOCK