From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Sascha Hauer <s.hauer@pengutronix.de>,
BAREBOX <barebox@lists.infradead.org>
Cc: "Claude Sonnet 4.5" <noreply@anthropic.com>
Subject: Re: [PATCH 11/19] mmu: introduce pbl_remap_range()
Date: Tue, 6 Jan 2026 09:50:04 +0100 [thread overview]
Message-ID: <4885c971-49b7-4912-89f5-9d401dd5e39d@pengutronix.de> (raw)
In-Reply-To: <0a85c1df-8960-440b-b901-1c338db1f003@pengutronix.de>
On 1/5/26 13:15, Ahmad Fatoum wrote:
> On 1/5/26 12:26 PM, Sascha Hauer wrote:
>> Add PBL-specific memory remapping function that always uses page-wise
>> mapping (ARCH_MAP_FLAG_PAGEWISE) for fine-grained permissions on
>> adjacent ELF segments with different protection requirements.
>>
>> Wraps arch-specific __arch_remap_range() for ARMv7 (4KB pages) and
>> ARMv8 (page tables with BBM). Needed for ELF segment permission setup.
>>
>> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
>
> Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Hmm, a question: Why do we need to preemptively break up pages?
Doesn't normal remapping do that already? My understanding was
that we only did it here to allow remapping while executing from
it, but in the PBL ELF loader we are not executing from there,
so there should not be an issue.
Thanks,
Ahmad
>
>> ---
>> arch/arm/cpu/mmu_32.c | 7 +++++++
>> arch/arm/cpu/mmu_64.c | 8 ++++++++
>> include/mmu.h | 3 +++
>> 3 files changed, 18 insertions(+)
>>
>> diff --git a/arch/arm/cpu/mmu_32.c b/arch/arm/cpu/mmu_32.c
>> index 97c7107290ce95ddb21a322a5d0e74f3d324c528..86a55d165ba3cec5154c345a1a3a9cb959f0996f 100644
>> --- a/arch/arm/cpu/mmu_32.c
>> +++ b/arch/arm/cpu/mmu_32.c
>> @@ -435,6 +435,13 @@ static void early_remap_range(u32 addr, size_t size, maptype_t map_type)
>> __arch_remap_range((void *)addr, addr, size, map_type);
>> }
>>
>> +void pbl_remap_range(void *virt_addr, phys_addr_t phys_addr, size_t size,
>> + maptype_t map_type)
>> +{
>> + __arch_remap_range(virt_addr, phys_addr, size,
>> + map_type | ARCH_MAP_FLAG_PAGEWISE);
>> +}
>> +
>> static bool pte_is_cacheable(uint32_t pte, int level)
>> {
>> return (level == 2 && (pte & PTE_CACHEABLE)) ||
>> diff --git a/arch/arm/cpu/mmu_64.c b/arch/arm/cpu/mmu_64.c
>> index afb3d2d7efd0bc7ecde1177d1544f54d751b5dc1..63faaa46703697e527eae766392e7ea7ae186b3d 100644
>> --- a/arch/arm/cpu/mmu_64.c
>> +++ b/arch/arm/cpu/mmu_64.c
>> @@ -282,6 +282,14 @@ static void early_remap_range(uint64_t addr, size_t size, maptype_t map_type)
>> __arch_remap_range(addr, addr, size, map_type, false);
>> }
>>
>> +void pbl_remap_range(void *virt_addr, phys_addr_t phys_addr, size_t size,
>> + maptype_t map_type)
>> +{
>> + __arch_remap_range((uint64_t)virt_addr, phys_addr,
>> + (uint64_t)size, map_type | ARCH_MAP_FLAG_PAGEWISE,
>> + true);
>> +}
>> +
>> int arch_remap_range(void *virt_addr, phys_addr_t phys_addr, size_t size, maptype_t map_type)
>> {
>> map_type = arm_mmu_maybe_skip_permissions(map_type);
>> diff --git a/include/mmu.h b/include/mmu.h
>> index 53603b7956c229b4c715c57b19d0398931eb2d6b..37df7b482e1d83e94e61997db6cf9834d8cf7f3c 100644
>> --- a/include/mmu.h
>> +++ b/include/mmu.h
>> @@ -64,6 +64,9 @@ static inline bool arch_can_remap(void)
>> }
>> #endif
>>
>> +void pbl_remap_range(void *virt_addr, phys_addr_t phys_addr, size_t size,
>> + maptype_t map_type);
>> +
>> static inline int remap_range(void *start, size_t size, maptype_t map_type)
>> {
>> return arch_remap_range(start, virt_to_phys(start), size, map_type);
>>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2026-01-06 8:50 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-05 11:26 [PATCH 00/19] PBL: Add PBL ELF loading support with dynamic relocations Sascha Hauer
2026-01-05 11:26 ` [PATCH 01/19] elf: Use memcmp to make suitable for PBL Sascha Hauer
2026-01-05 11:46 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 02/19] elf: build for PBL as well Sascha Hauer
2026-01-05 11:26 ` [PATCH 03/19] elf: add dynamic relocation support Sascha Hauer
2026-01-05 14:05 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 04/19] ARM: implement elf_apply_relocations() for ELF " Sascha Hauer
2026-01-05 11:58 ` Ahmad Fatoum
2026-01-05 19:53 ` Sascha Hauer
2026-01-05 11:26 ` [PATCH 05/19] riscv: " Sascha Hauer
2026-01-05 11:26 ` [PATCH 06/19] elf: implement elf_load_inplace() Sascha Hauer
2026-01-05 13:37 ` Ahmad Fatoum
2026-01-05 22:42 ` Sascha Hauer
2026-01-06 8:18 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 07/19] elf: create elf_open_binary_into() Sascha Hauer
2026-01-05 11:26 ` [PATCH 08/19] Makefile: add barebox.elf build target Sascha Hauer
2026-01-05 12:22 ` Ahmad Fatoum
2026-01-05 15:43 ` Sascha Hauer
2026-01-05 17:11 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 09/19] PBL: allow to link ELF image into PBL Sascha Hauer
2026-01-05 12:11 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 10/19] mmu: add MAP_CACHED_RO mapping type Sascha Hauer
2026-01-05 12:14 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 11/19] mmu: introduce pbl_remap_range() Sascha Hauer
2026-01-05 12:15 ` Ahmad Fatoum
2026-01-06 8:50 ` Ahmad Fatoum [this message]
2026-01-06 9:25 ` Sascha Hauer
2026-01-05 11:26 ` [PATCH 12/19] ARM: use relative jumps in exception table Sascha Hauer
2026-01-05 11:44 ` Ahmad Fatoum
2026-01-05 12:29 ` Sascha Hauer
2026-01-05 12:31 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 13/19] ARM: exceptions: make in-binary exception table const Sascha Hauer
2026-01-05 11:26 ` [PATCH 14/19] ARM: linker script: create separate PT_LOAD segments for text, rodata, and data Sascha Hauer
2026-01-05 13:11 ` Ahmad Fatoum
2026-01-05 23:01 ` Sascha Hauer
2026-01-06 7:59 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 15/19] ARM: link ELF image into PBL Sascha Hauer
2026-01-05 12:27 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 16/19] ARM: PBL: setup MMU with proper permissions from ELF segments Sascha Hauer
2026-01-05 12:58 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 17/19] riscv: link ELF image into PBL Sascha Hauer
2026-01-05 13:12 ` Ahmad Fatoum
2026-01-05 11:26 ` [PATCH 18/19] riscv: linker script: create separate PT_LOAD segments for text, rodata, and data Sascha Hauer
2026-01-05 13:40 ` Ahmad Fatoum
2026-01-05 11:27 ` [PATCH 19/19] riscv: add ELF segment-based memory protection with MMU Sascha Hauer
2026-01-05 13:58 ` Ahmad Fatoum
2026-01-05 14:08 ` [PATCH 00/19] PBL: Add PBL ELF loading support with dynamic relocations Ahmad Fatoum
2026-01-05 16:47 ` Sascha Hauer
2026-01-06 8:35 ` Ahmad Fatoum
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=4885c971-49b7-4912-89f5-9d401dd5e39d@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=noreply@anthropic.com \
--cc=s.hauer@pengutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox