* [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups
@ 2020-03-07 9:10 Ard Biesheuvel
2020-03-07 9:10 ` [PATCH 1/2] ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check Ard Biesheuvel
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Ard Biesheuvel @ 2020-03-07 9:10 UTC (permalink / raw)
To: devel; +Cc: leif, Ard Biesheuvel
Some mostly cosmetic tweaks to the AArch64 MMU code that are mostly unrelated
to the actual fixes and improvements I posted earlier, so I am posting them
separately.
Ard Biesheuvel (2):
ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check
ArmPkg/ArmMmuLib AARCH64: cosmetic fixups
.../Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 71 ++++++++++---------
1 file changed, 37 insertions(+), 34 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check
2020-03-07 9:10 [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Ard Biesheuvel
@ 2020-03-07 9:10 ` Ard Biesheuvel
2020-03-07 9:10 ` [PATCH 2/2] ArmPkg/ArmMmuLib AARCH64: cosmetic fixups Ard Biesheuvel
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Ard Biesheuvel @ 2020-03-07 9:10 UTC (permalink / raw)
To: devel; +Cc: leif, Ard Biesheuvel
This is the AARCH64 counterpart of commit 1f3b1eb3082206e4, to remove
a pointless check against the memory type of the allocations that the
page tables happened to land in. On ArmV8, we use writeback cacheable
exclusively for all memory.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c
index 221175ca6535..f2eec7191328 100644
--- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c
+++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c
@@ -497,7 +497,6 @@ ArmConfigureMmu (
)
{
VOID* TranslationTable;
- UINT32 TranslationTableAttribute;
UINT64 MaxAddress;
UINTN T0SZ;
UINTN RootTableEntryCount;
@@ -618,18 +617,7 @@ ArmConfigureMmu (
RootTableEntryCount * sizeof(UINT64));
ZeroMem (TranslationTable, RootTableEntryCount * sizeof(UINT64));
- TranslationTableAttribute = TT_ATTR_INDX_INVALID;
while (MemoryTable->Length != 0) {
-
- DEBUG_CODE_BEGIN ();
- // Find the memory attribute for the Translation Table
- if ((UINTN)TranslationTable >= MemoryTable->PhysicalBase &&
- (UINTN)TranslationTable + EFI_PAGE_SIZE <= MemoryTable->PhysicalBase +
- MemoryTable->Length) {
- TranslationTableAttribute = MemoryTable->Attributes;
- }
- DEBUG_CODE_END ();
-
Status = FillTranslationTable (TranslationTable, MemoryTable);
if (EFI_ERROR (Status)) {
goto FREE_TRANSLATION_TABLE;
@@ -637,9 +625,6 @@ ArmConfigureMmu (
MemoryTable++;
}
- ASSERT (TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK ||
- TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_WRITE_BACK);
-
ArmSetMAIR (MAIR_ATTR(TT_ATTR_INDX_DEVICE_MEMORY, MAIR_ATTR_DEVICE_MEMORY) | // mapped to EFI_MEMORY_UC
MAIR_ATTR(TT_ATTR_INDX_MEMORY_NON_CACHEABLE, MAIR_ATTR_NORMAL_MEMORY_NON_CACHEABLE) | // mapped to EFI_MEMORY_WC
MAIR_ATTR(TT_ATTR_INDX_MEMORY_WRITE_THROUGH, MAIR_ATTR_NORMAL_MEMORY_WRITE_THROUGH) | // mapped to EFI_MEMORY_WT
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] ArmPkg/ArmMmuLib AARCH64: cosmetic fixups
2020-03-07 9:10 [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Ard Biesheuvel
2020-03-07 9:10 ` [PATCH 1/2] ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check Ard Biesheuvel
@ 2020-03-07 9:10 ` Ard Biesheuvel
2020-03-07 11:55 ` [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Leif Lindholm
2020-03-10 0:34 ` [edk2-devel] " Laszlo Ersek
3 siblings, 0 replies; 5+ messages in thread
From: Ard Biesheuvel @ 2020-03-07 9:10 UTC (permalink / raw)
To: devel; +Cc: leif, Ard Biesheuvel
Some cosmetic fixups to the AArch64 MMU code:
- reflow overly long lines unless it hurts legibility
- add/remove whitespace according to the [de facto] coding style
- use camel case for goto labels
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 56 +++++++++++++-------
1 file changed, 37 insertions(+), 19 deletions(-)
diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c
index f2eec7191328..a43d468b73ca 100644
--- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c
+++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c
@@ -47,7 +47,7 @@ ArmMemoryAttributeToPageAttribute (
return TT_ATTR_INDX_MEMORY_NON_CACHEABLE;
default:
- ASSERT(0);
+ ASSERT (0);
case ARM_MEMORY_REGION_ATTRIBUTE_DEVICE:
case ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_DEVICE:
if (ArmReadCurrentEL () == AARCH64_EL2)
@@ -78,7 +78,9 @@ PageAttributeToGcdAttribute (
GcdAttributes = EFI_MEMORY_WB;
break;
default:
- DEBUG ((EFI_D_ERROR, "PageAttributeToGcdAttribute: PageAttributes:0x%lX not supported.\n", PageAttributes));
+ DEBUG ((DEBUG_ERROR,
+ "PageAttributeToGcdAttribute: PageAttributes:0x%lX not supported.\n",
+ PageAttributes));
ASSERT (0);
// The Global Coherency Domain (GCD) value is defined as a bit set.
// Returning 0 means no attribute has been set.
@@ -86,13 +88,14 @@ PageAttributeToGcdAttribute (
}
// Determine protection attributes
- if (((PageAttributes & TT_AP_MASK) == TT_AP_NO_RO) || ((PageAttributes & TT_AP_MASK) == TT_AP_RO_RO)) {
+ if (((PageAttributes & TT_AP_MASK) == TT_AP_NO_RO) ||
+ ((PageAttributes & TT_AP_MASK) == TT_AP_RO_RO)) {
// Read only cases map to write-protect
GcdAttributes |= EFI_MEMORY_RO;
}
// Process eXecute Never attribute
- if ((PageAttributes & (TT_PXN_MASK | TT_UXN_MASK)) != 0 ) {
+ if ((PageAttributes & (TT_PXN_MASK | TT_UXN_MASK)) != 0) {
GcdAttributes |= EFI_MEMORY_XP;
}
@@ -503,7 +506,7 @@ ArmConfigureMmu (
UINT64 TCR;
EFI_STATUS Status;
- if(MemoryTable == NULL) {
+ if (MemoryTable == NULL) {
ASSERT (MemoryTable != NULL);
return EFI_INVALID_PARAMETER;
}
@@ -544,7 +547,9 @@ ArmConfigureMmu (
} else if (MaxAddress < SIZE_256TB) {
TCR |= TCR_PS_256TB;
} else {
- DEBUG ((EFI_D_ERROR, "ArmConfigureMmu: The MaxAddress 0x%lX is not supported by this MMU configuration.\n", MaxAddress));
+ DEBUG ((DEBUG_ERROR,
+ "ArmConfigureMmu: The MaxAddress 0x%lX is not supported by this MMU configuration.\n",
+ MaxAddress));
ASSERT (0); // Bigger than 48-bit memory space are not supported
return EFI_UNSUPPORTED;
}
@@ -566,7 +571,9 @@ ArmConfigureMmu (
} else if (MaxAddress < SIZE_256TB) {
TCR |= TCR_IPS_256TB;
} else {
- DEBUG ((EFI_D_ERROR, "ArmConfigureMmu: The MaxAddress 0x%lX is not supported by this MMU configuration.\n", MaxAddress));
+ DEBUG ((DEBUG_ERROR,
+ "ArmConfigureMmu: The MaxAddress 0x%lX is not supported by this MMU configuration.\n",
+ MaxAddress));
ASSERT (0); // Bigger than 48-bit memory space are not supported
return EFI_UNSUPPORTED;
}
@@ -596,9 +603,12 @@ ArmConfigureMmu (
if (TranslationTable == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- // We set TTBR0 just after allocating the table to retrieve its location from the subsequent
- // functions without needing to pass this value across the functions. The MMU is only enabled
- // after the translation tables are populated.
+ //
+ // We set TTBR0 just after allocating the table to retrieve its location from
+ // the subsequent functions without needing to pass this value across the
+ // functions. The MMU is only enabled after the translation tables are
+ // populated.
+ //
ArmSetTTBR0 (TranslationTable);
if (TranslationTableBase != NULL) {
@@ -606,7 +616,7 @@ ArmConfigureMmu (
}
if (TranslationTableSize != NULL) {
- *TranslationTableSize = RootTableEntryCount * sizeof(UINT64);
+ *TranslationTableSize = RootTableEntryCount * sizeof (UINT64);
}
//
@@ -614,21 +624,29 @@ ArmConfigureMmu (
// when populating the page tables.
//
InvalidateDataCacheRange (TranslationTable,
- RootTableEntryCount * sizeof(UINT64));
- ZeroMem (TranslationTable, RootTableEntryCount * sizeof(UINT64));
+ RootTableEntryCount * sizeof (UINT64));
+ ZeroMem (TranslationTable, RootTableEntryCount * sizeof (UINT64));
while (MemoryTable->Length != 0) {
Status = FillTranslationTable (TranslationTable, MemoryTable);
if (EFI_ERROR (Status)) {
- goto FREE_TRANSLATION_TABLE;
+ goto FreeTranslationTable;
}
MemoryTable++;
}
- ArmSetMAIR (MAIR_ATTR(TT_ATTR_INDX_DEVICE_MEMORY, MAIR_ATTR_DEVICE_MEMORY) | // mapped to EFI_MEMORY_UC
- MAIR_ATTR(TT_ATTR_INDX_MEMORY_NON_CACHEABLE, MAIR_ATTR_NORMAL_MEMORY_NON_CACHEABLE) | // mapped to EFI_MEMORY_WC
- MAIR_ATTR(TT_ATTR_INDX_MEMORY_WRITE_THROUGH, MAIR_ATTR_NORMAL_MEMORY_WRITE_THROUGH) | // mapped to EFI_MEMORY_WT
- MAIR_ATTR(TT_ATTR_INDX_MEMORY_WRITE_BACK, MAIR_ATTR_NORMAL_MEMORY_WRITE_BACK)); // mapped to EFI_MEMORY_WB
+ //
+ // EFI_MEMORY_UC ==> MAIR_ATTR_DEVICE_MEMORY
+ // EFI_MEMORY_WC ==> MAIR_ATTR_NORMAL_MEMORY_NON_CACHEABLE
+ // EFI_MEMORY_WT ==> MAIR_ATTR_NORMAL_MEMORY_WRITE_THROUGH
+ // EFI_MEMORY_WB ==> MAIR_ATTR_NORMAL_MEMORY_WRITE_BACK
+ //
+ ArmSetMAIR (
+ MAIR_ATTR (TT_ATTR_INDX_DEVICE_MEMORY, MAIR_ATTR_DEVICE_MEMORY) |
+ MAIR_ATTR (TT_ATTR_INDX_MEMORY_NON_CACHEABLE, MAIR_ATTR_NORMAL_MEMORY_NON_CACHEABLE) |
+ MAIR_ATTR (TT_ATTR_INDX_MEMORY_WRITE_THROUGH, MAIR_ATTR_NORMAL_MEMORY_WRITE_THROUGH) |
+ MAIR_ATTR (TT_ATTR_INDX_MEMORY_WRITE_BACK, MAIR_ATTR_NORMAL_MEMORY_WRITE_BACK)
+ );
ArmDisableAlignmentCheck ();
ArmEnableStackAlignmentCheck ();
@@ -638,7 +656,7 @@ ArmConfigureMmu (
ArmEnableMmu ();
return EFI_SUCCESS;
-FREE_TRANSLATION_TABLE:
+FreeTranslationTable:
FreePages (TranslationTable, 1);
return Status;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups
2020-03-07 9:10 [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Ard Biesheuvel
2020-03-07 9:10 ` [PATCH 1/2] ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check Ard Biesheuvel
2020-03-07 9:10 ` [PATCH 2/2] ArmPkg/ArmMmuLib AARCH64: cosmetic fixups Ard Biesheuvel
@ 2020-03-07 11:55 ` Leif Lindholm
2020-03-10 0:34 ` [edk2-devel] " Laszlo Ersek
3 siblings, 0 replies; 5+ messages in thread
From: Leif Lindholm @ 2020-03-07 11:55 UTC (permalink / raw)
To: Ard Biesheuvel; +Cc: devel
On Sat, Mar 07, 2020 at 10:10:06 +0100, Ard Biesheuvel wrote:
> Some mostly cosmetic tweaks to the AArch64 MMU code that are mostly unrelated
> to the actual fixes and improvements I posted earlier, so I am posting them
> separately.
For the series:
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
Thanks!
> Ard Biesheuvel (2):
> ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check
> ArmPkg/ArmMmuLib AARCH64: cosmetic fixups
>
> .../Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 71 ++++++++++---------
> 1 file changed, 37 insertions(+), 34 deletions(-)
>
> --
> 2.17.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [edk2-devel] [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups
2020-03-07 9:10 [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Ard Biesheuvel
` (2 preceding siblings ...)
2020-03-07 11:55 ` [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Leif Lindholm
@ 2020-03-10 0:34 ` Laszlo Ersek
3 siblings, 0 replies; 5+ messages in thread
From: Laszlo Ersek @ 2020-03-10 0:34 UTC (permalink / raw)
To: devel, ard.biesheuvel; +Cc: leif
On 03/07/20 10:10, Ard Biesheuvel wrote:
> Some mostly cosmetic tweaks to the AArch64 MMU code that are mostly unrelated
> to the actual fixes and improvements I posted earlier, so I am posting them
> separately.
>
> Ard Biesheuvel (2):
> ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check
> ArmPkg/ArmMmuLib AARCH64: cosmetic fixups
>
> .../Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 71 ++++++++++---------
> 1 file changed, 37 insertions(+), 34 deletions(-)
>
Commit range
748fea6279efc20de3fef483deb4b774f3c34906..4249278aa686a695c0904b08801134ab289a0b3e,
via <https://github.com/tianocore/edk2/pull/431>.
Thanks
Laszlo
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-03-10 0:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-07 9:10 [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Ard Biesheuvel
2020-03-07 9:10 ` [PATCH 1/2] ArmPkg/ArmMmuLib AARCH64: drop pointless page table memory type check Ard Biesheuvel
2020-03-07 9:10 ` [PATCH 2/2] ArmPkg/ArmMmuLib AARCH64: cosmetic fixups Ard Biesheuvel
2020-03-07 11:55 ` [PATCH 0/2] ArmPkg/ArmMmuLib AARCH64: final cleanups Leif Lindholm
2020-03-10 0:34 ` [edk2-devel] " Laszlo Ersek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox