From: Chris Packham <judge.packham@gmail.com>
To: u-boot@lists.denx.de
Cc: "Chris Packham" <judge.packham@gmail.com>,
"Bin Meng" <bmeng.cn@gmail.com>, "Marc Zyngier" <maz@kernel.org>,
"Peng Fan" <peng.fan@nxp.com>,
"Pierre-Clément Tosi" <ptosi@google.com>,
"Simon Glass" <sjg@chromium.org>, "Ye Li" <ye.li@nxp.com>,
"Ying-Chun Liu (PaulLiu)" <paul.liu@linaro.org>,
meitao <meitaogao@asrmicro.com>
Subject: [PATCH 3/3] Revert "arm64: Use FEAT_HAFDBS to track dirty pages when available"
Date: Fri, 27 Oct 2023 13:23:54 +1300 [thread overview]
Message-ID: <20231027002409.430285-4-judge.packham@gmail.com> (raw)
In-Reply-To: <20231027002409.430285-1-judge.packham@gmail.com>
This reverts commit 6cdf6b7a340db4ddd008516181de7e08e3f8c213. This is
part of a series trying to make use of the arm64 hardware features for
tracking dirty pages. Unfortunately this series causes problems for the
AC5/AC5X SoCs. Having exhausted other options the consensus seems to be
reverting this series is the best course of action.
Signed-off-by: Chris Packham <judge.packham@gmail.com>
---
arch/arm/cpu/armv8/cache_v8.c | 16 +---------------
arch/arm/include/asm/armv8/mmu.h | 14 ++++----------
arch/arm/include/asm/global_data.h | 1 -
3 files changed, 5 insertions(+), 26 deletions(-)
diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
index 4760064ee18f..697334086fdc 100644
--- a/arch/arm/cpu/armv8/cache_v8.c
+++ b/arch/arm/cpu/armv8/cache_v8.c
@@ -93,8 +93,6 @@ u64 get_tcr(u64 *pips, u64 *pva_bits)
if (el == 1) {
tcr = TCR_EL1_RSVD | (ips << 32) | TCR_EPD1_DISABLE;
- if (gd->arch.has_hafdbs)
- tcr |= TCR_HA | TCR_HD;
} else if (el == 2) {
tcr = TCR_EL2_RSVD | (ips << 16);
} else {
@@ -202,9 +200,6 @@ static void __cmo_on_leaves(void (*cmo_fn)(unsigned long, unsigned long),
attrs != PTE_BLOCK_MEMTYPE(MT_NORMAL_NC))
continue;
- if (gd->arch.has_hafdbs && (pte & (PTE_RDONLY | PTE_DBM)) != PTE_DBM)
- continue;
-
end = va + BIT(level2shift(level)) - 1;
/* No intersection with RAM? */
@@ -353,9 +348,6 @@ static void add_map(struct mm_region *map)
if (va_bits < 39)
level = 1;
- if (gd->arch.has_hafdbs)
- attrs |= PTE_DBM | PTE_RDONLY;
-
map_range(map->virt, map->phys, map->size, level,
(u64 *)gd->arch.tlb_addr, attrs);
}
@@ -407,13 +399,7 @@ static int count_ranges(void)
__weak u64 get_page_table_size(void)
{
u64 one_pt = MAX_PTE_ENTRIES * sizeof(u64);
- u64 size, mmfr1;
-
- asm volatile("mrs %0, id_aa64mmfr1_el1" : "=r" (mmfr1));
- if ((mmfr1 & 0xf) == 2)
- gd->arch.has_hafdbs = true;
- else
- gd->arch.has_hafdbs = false;
+ u64 size;
/* Account for all page tables we would need to cover our memory map */
size = one_pt * count_ranges();
diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h
index 98a27db3166b..9f58cedb650c 100644
--- a/arch/arm/include/asm/armv8/mmu.h
+++ b/arch/arm/include/asm/armv8/mmu.h
@@ -49,13 +49,10 @@
#define PTE_TYPE_BLOCK (1 << 0)
#define PTE_TYPE_VALID (1 << 0)
-#define PTE_RDONLY BIT(7)
-#define PTE_DBM BIT(51)
-
-#define PTE_TABLE_PXN BIT(59)
-#define PTE_TABLE_XN BIT(60)
-#define PTE_TABLE_AP BIT(61)
-#define PTE_TABLE_NS BIT(63)
+#define PTE_TABLE_PXN (1UL << 59)
+#define PTE_TABLE_XN (1UL << 60)
+#define PTE_TABLE_AP (1UL << 61)
+#define PTE_TABLE_NS (1UL << 63)
/*
* Block
@@ -102,9 +99,6 @@
#define TCR_TG0_16K (2 << 14)
#define TCR_EPD1_DISABLE (1 << 23)
-#define TCR_HA BIT(39)
-#define TCR_HD BIT(40)
-
#define TCR_EL1_RSVD (1U << 31)
#define TCR_EL2_RSVD (1U << 31 | 1 << 23)
#define TCR_EL3_RSVD (1U << 31 | 1 << 23)
diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h
index 1325b0644248..75bd9d56f893 100644
--- a/arch/arm/include/asm/global_data.h
+++ b/arch/arm/include/asm/global_data.h
@@ -52,7 +52,6 @@ struct arch_global_data {
#if defined(CONFIG_ARM64)
unsigned long tlb_fillptr;
unsigned long tlb_emerg;
- bool has_hafdbs;
#endif
#endif
#ifdef CFG_SYS_MEM_RESERVE_SECURE
--
2.42.0
next prev parent reply other threads:[~2023-10-27 0:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-27 0:23 [PATCH 0/3] Revert HAFDBS changes Chris Packham
2023-10-27 0:23 ` [PATCH 1/3] Revert "armv8: enable HAFDBS for other ELx when FEAT_HAFDBS is present" Chris Packham
2023-11-17 19:42 ` Tom Rini
2023-10-27 0:23 ` [PATCH 2/3] Revert "arm64: Use level-2 for largest block mappings " Chris Packham
2023-11-17 19:42 ` Tom Rini
2023-10-27 0:23 ` Chris Packham [this message]
2023-11-17 19:42 ` [PATCH 3/3] Revert "arm64: Use FEAT_HAFDBS to track dirty pages when available" Tom Rini
2023-10-27 9:49 ` [PATCH 0/3] Revert HAFDBS changes Pierre-Clément Tosi
2023-10-27 17:22 ` Tom Rini
2023-11-09 21:33 ` Tom Rini
2023-11-10 5:38 ` Chris Packham
2023-11-17 19:41 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231027002409.430285-4-judge.packham@gmail.com \
--to=judge.packham@gmail.com \
--cc=bmeng.cn@gmail.com \
--cc=maz@kernel.org \
--cc=meitaogao@asrmicro.com \
--cc=paul.liu@linaro.org \
--cc=peng.fan@nxp.com \
--cc=ptosi@google.com \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=ye.li@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.