Message ID | 20181128143357.991-8-ard.biesheuvel@linaro.org |
---|---|
State | New |
Headers | show |
Series | Pkg: lift 40-bit IPA space limit | expand |
On 28/11/18 15:33, Ard Biesheuvel wrote: > Use the new ArmLib helper to read the CPU's physical address limit > so we can drop our own homecooked one. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf | 6 --- > ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c | 11 +++--- > ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S | 39 -------------------- > ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S | 24 ------------ Good diffstat :) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > 4 files changed, 5 insertions(+), 75 deletions(-) > > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf > index cd4c805a4db9..ae107810e927 100644 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf > +++ b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf > @@ -24,12 +24,6 @@ [Defines] > [Sources] > XenVirtMemInfoLib.c > > -[Sources.ARM] > - Arm/PhysAddrTop.S > - > -[Sources.AARCH64] > - AArch64/PhysAddrTop.S > - > [Packages] > ArmPkg/ArmPkg.dec > ArmVirtPkg/ArmVirtPkg.dec > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c > index 88ff3167cbfd..6701dec50ea8 100644 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c > +++ b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c > @@ -18,11 +18,6 @@ > > STATIC ARM_MEMORY_REGION_DESCRIPTOR mVirtualMemoryTable[2]; > > -EFI_PHYSICAL_ADDRESS > -ArmGetPhysAddrTop ( > - VOID > - ); > - > /** > Return the Virtual Memory Map of your platform > > @@ -42,8 +37,12 @@ ArmVirtGetMemoryMap ( > OUT ARM_MEMORY_REGION_DESCRIPTOR **VirtualMemoryMap > ) > { > + EFI_PHYSICAL_ADDRESS TopOfAddressSpace; > + > ASSERT (VirtualMemoryMap != NULL); > > + TopOfAddressSpace = LShiftU64 (1ULL, ArmGetPhysicalAddressBits ()); > + > // > // Map the entire physical memory space as cached. The only device > // we care about is the GIC, which will be stage 2 mapped as a device > @@ -51,7 +50,7 @@ ArmVirtGetMemoryMap ( > // > mVirtualMemoryTable[0].PhysicalBase = 0x0; > mVirtualMemoryTable[0].VirtualBase = 0x0; > - mVirtualMemoryTable[0].Length = ArmGetPhysAddrTop (); > + mVirtualMemoryTable[0].Length = TopOfAddressSpace; > mVirtualMemoryTable[0].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK; > > mVirtualMemoryTable[1].PhysicalBase = 0x0; > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S > deleted file mode 100644 > index a1f6a194d59b..000000000000 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S > +++ /dev/null > @@ -1,39 +0,0 @@ > -# > -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. > -# Copyright (c) 2016-2017, Linaro Limited. All rights reserved. > -# > -# This program and the accompanying materials > -# are licensed and made available under the terms and conditions of the BSD License > -# which accompanies this distribution. The full text of the license may be found at > -# http://opensource.org/licenses/bsd-license.php > -# > -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > -# > -# > - > -#include <AsmMacroIoLibV8.h> > - > -//EFI_PHYSICAL_ADDRESS > -//GetPhysAddrTop ( > -// VOID > -// ); > -ASM_FUNC(ArmGetPhysAddrTop) > - mrs x0, id_aa64mmfr0_el1 > - adr x1, .LPARanges > - and x0, x0, #7 > - ldrb w1, [x1, x0] > - mov x0, #1 > - lsl x0, x0, x1 > - ret > - > -// > -// Bits 0..2 of the AA64MFR0_EL1 system register encode the size of the > -// physical address space support on this CPU: > -// 0 == 32 bits, 1 == 36 bits, etc etc > -// 6 and 7 are reserved > -// > -.LPARanges: > - .byte 32, 36, 40, 42, 44, 48, -1, -1 > - > -ASM_FUNCTION_REMOVE_IF_UNREFERENCED > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S > deleted file mode 100644 > index 9cd81529fb3d..000000000000 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S > +++ /dev/null > @@ -1,24 +0,0 @@ > -# > -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. > -# Copyright (c) 2014-2017, Linaro Limited. All rights reserved. > -# > -# This program and the accompanying materials > -# are licensed and made available under the terms and conditions of the BSD License > -# which accompanies this distribution. The full text of the license may be found at > -# http://opensource.org/licenses/bsd-license.php > -# > -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > -# > -# > - > -#include <AsmMacroIoLib.h> > - > -//EFI_PHYSICAL_ADDRESS > -//GetPhysAddrTop ( > -// VOID > -// ); > -ASM_FUNC(ArmGetPhysAddrTop) > - mov r0, #0x00000000 > - mov r1, #0x10000 > - bx lr >
On 11/28/18 15:33, Ard Biesheuvel wrote: > Use the new ArmLib helper to read the CPU's physical address limit > so we can drop our own homecooked one. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf | 6 --- > ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c | 11 +++--- > ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S | 39 -------------------- > ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S | 24 ------------ > 4 files changed, 5 insertions(+), 75 deletions(-) Reviewed-by: Laszlo Ersek <lersek@redhat.com> Thanks Laszlo > > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf > index cd4c805a4db9..ae107810e927 100644 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf > +++ b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf > @@ -24,12 +24,6 @@ [Defines] > [Sources] > XenVirtMemInfoLib.c > > -[Sources.ARM] > - Arm/PhysAddrTop.S > - > -[Sources.AARCH64] > - AArch64/PhysAddrTop.S > - > [Packages] > ArmPkg/ArmPkg.dec > ArmVirtPkg/ArmVirtPkg.dec > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c > index 88ff3167cbfd..6701dec50ea8 100644 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c > +++ b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c > @@ -18,11 +18,6 @@ > > STATIC ARM_MEMORY_REGION_DESCRIPTOR mVirtualMemoryTable[2]; > > -EFI_PHYSICAL_ADDRESS > -ArmGetPhysAddrTop ( > - VOID > - ); > - > /** > Return the Virtual Memory Map of your platform > > @@ -42,8 +37,12 @@ ArmVirtGetMemoryMap ( > OUT ARM_MEMORY_REGION_DESCRIPTOR **VirtualMemoryMap > ) > { > + EFI_PHYSICAL_ADDRESS TopOfAddressSpace; > + > ASSERT (VirtualMemoryMap != NULL); > > + TopOfAddressSpace = LShiftU64 (1ULL, ArmGetPhysicalAddressBits ()); > + > // > // Map the entire physical memory space as cached. The only device > // we care about is the GIC, which will be stage 2 mapped as a device > @@ -51,7 +50,7 @@ ArmVirtGetMemoryMap ( > // > mVirtualMemoryTable[0].PhysicalBase = 0x0; > mVirtualMemoryTable[0].VirtualBase = 0x0; > - mVirtualMemoryTable[0].Length = ArmGetPhysAddrTop (); > + mVirtualMemoryTable[0].Length = TopOfAddressSpace; > mVirtualMemoryTable[0].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK; > > mVirtualMemoryTable[1].PhysicalBase = 0x0; > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S > deleted file mode 100644 > index a1f6a194d59b..000000000000 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S > +++ /dev/null > @@ -1,39 +0,0 @@ > -# > -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. > -# Copyright (c) 2016-2017, Linaro Limited. All rights reserved. > -# > -# This program and the accompanying materials > -# are licensed and made available under the terms and conditions of the BSD License > -# which accompanies this distribution. The full text of the license may be found at > -# http://opensource.org/licenses/bsd-license.php > -# > -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > -# > -# > - > -#include <AsmMacroIoLibV8.h> > - > -//EFI_PHYSICAL_ADDRESS > -//GetPhysAddrTop ( > -// VOID > -// ); > -ASM_FUNC(ArmGetPhysAddrTop) > - mrs x0, id_aa64mmfr0_el1 > - adr x1, .LPARanges > - and x0, x0, #7 > - ldrb w1, [x1, x0] > - mov x0, #1 > - lsl x0, x0, x1 > - ret > - > -// > -// Bits 0..2 of the AA64MFR0_EL1 system register encode the size of the > -// physical address space support on this CPU: > -// 0 == 32 bits, 1 == 36 bits, etc etc > -// 6 and 7 are reserved > -// > -.LPARanges: > - .byte 32, 36, 40, 42, 44, 48, -1, -1 > - > -ASM_FUNCTION_REMOVE_IF_UNREFERENCED > diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S > deleted file mode 100644 > index 9cd81529fb3d..000000000000 > --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S > +++ /dev/null > @@ -1,24 +0,0 @@ > -# > -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. > -# Copyright (c) 2014-2017, Linaro Limited. All rights reserved. > -# > -# This program and the accompanying materials > -# are licensed and made available under the terms and conditions of the BSD License > -# which accompanies this distribution. The full text of the license may be found at > -# http://opensource.org/licenses/bsd-license.php > -# > -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > -# > -# > - > -#include <AsmMacroIoLib.h> > - > -//EFI_PHYSICAL_ADDRESS > -//GetPhysAddrTop ( > -// VOID > -// ); > -ASM_FUNC(ArmGetPhysAddrTop) > - mov r0, #0x00000000 > - mov r1, #0x10000 > - bx lr > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf index cd4c805a4db9..ae107810e927 100644 --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf +++ b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf @@ -24,12 +24,6 @@ [Defines] [Sources] XenVirtMemInfoLib.c -[Sources.ARM] - Arm/PhysAddrTop.S - -[Sources.AARCH64] - AArch64/PhysAddrTop.S - [Packages] ArmPkg/ArmPkg.dec ArmVirtPkg/ArmVirtPkg.dec diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c index 88ff3167cbfd..6701dec50ea8 100644 --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c +++ b/ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c @@ -18,11 +18,6 @@ STATIC ARM_MEMORY_REGION_DESCRIPTOR mVirtualMemoryTable[2]; -EFI_PHYSICAL_ADDRESS -ArmGetPhysAddrTop ( - VOID - ); - /** Return the Virtual Memory Map of your platform @@ -42,8 +37,12 @@ ArmVirtGetMemoryMap ( OUT ARM_MEMORY_REGION_DESCRIPTOR **VirtualMemoryMap ) { + EFI_PHYSICAL_ADDRESS TopOfAddressSpace; + ASSERT (VirtualMemoryMap != NULL); + TopOfAddressSpace = LShiftU64 (1ULL, ArmGetPhysicalAddressBits ()); + // // Map the entire physical memory space as cached. The only device // we care about is the GIC, which will be stage 2 mapped as a device @@ -51,7 +50,7 @@ ArmVirtGetMemoryMap ( // mVirtualMemoryTable[0].PhysicalBase = 0x0; mVirtualMemoryTable[0].VirtualBase = 0x0; - mVirtualMemoryTable[0].Length = ArmGetPhysAddrTop (); + mVirtualMemoryTable[0].Length = TopOfAddressSpace; mVirtualMemoryTable[0].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK; mVirtualMemoryTable[1].PhysicalBase = 0x0; diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S deleted file mode 100644 index a1f6a194d59b..000000000000 --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. -# Copyright (c) 2016-2017, Linaro Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# - -#include <AsmMacroIoLibV8.h> - -//EFI_PHYSICAL_ADDRESS -//GetPhysAddrTop ( -// VOID -// ); -ASM_FUNC(ArmGetPhysAddrTop) - mrs x0, id_aa64mmfr0_el1 - adr x1, .LPARanges - and x0, x0, #7 - ldrb w1, [x1, x0] - mov x0, #1 - lsl x0, x0, x1 - ret - -// -// Bits 0..2 of the AA64MFR0_EL1 system register encode the size of the -// physical address space support on this CPU: -// 0 == 32 bits, 1 == 36 bits, etc etc -// 6 and 7 are reserved -// -.LPARanges: - .byte 32, 36, 40, 42, 44, 48, -1, -1 - -ASM_FUNCTION_REMOVE_IF_UNREFERENCED diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S deleted file mode 100644 index 9cd81529fb3d..000000000000 --- a/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S +++ /dev/null @@ -1,24 +0,0 @@ -# -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. -# Copyright (c) 2014-2017, Linaro Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# - -#include <AsmMacroIoLib.h> - -//EFI_PHYSICAL_ADDRESS -//GetPhysAddrTop ( -// VOID -// ); -ASM_FUNC(ArmGetPhysAddrTop) - mov r0, #0x00000000 - mov r1, #0x10000 - bx lr
Use the new ArmLib helper to read the CPU's physical address limit so we can drop our own homecooked one. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf | 6 --- ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c | 11 +++--- ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S | 39 -------------------- ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S | 24 ------------ 4 files changed, 5 insertions(+), 75 deletions(-) -- 2.19.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel