From 973f8636d78e947da65881bcbfd627bb0035f29d Mon Sep 17 00:00:00 2001 From: Andrei Vagin Date: Thu, 31 Mar 2022 14:57:15 -0700 Subject: [PATCH] platform/kvm: limit virtual address space size to 256TB This is maximum that can be addressed with 4-level paging. PiperOrigin-RevId: 438668768 --- pkg/ring0/lib_amd64.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/ring0/lib_amd64.go b/pkg/ring0/lib_amd64.go index 5c12f6b4a..c134fcb7f 100644 --- a/pkg/ring0/lib_amd64.go +++ b/pkg/ring0/lib_amd64.go @@ -84,6 +84,12 @@ var ( func Init(fs cpuid.FeatureSet) { // Initialize all sizes. VirtualAddressBits = uintptr(fs.VirtualAddressBits()) + // TODO(gvisor.dev/issue/7349): introduce support for 5-level paging. + // Four-level page tables allows to address up to 48-bit virtual + // addresses. + if VirtualAddressBits > 48 { + VirtualAddressBits = 48 + } PhysicalAddressBits = uintptr(fs.PhysicalAddressBits()) UserspaceSize = uintptr(1) << (VirtualAddressBits - 1) MaximumUserAddress = (UserspaceSize - 1) & ^uintptr(hostarch.PageSize-1)