From: Rouven Czerwinski <r.czerwinski@pengutronix.de> To: barebox@lists.infradead.org Cc: Rouven Czerwinski <r.czerwinski@pengutronix.de> Subject: [PATCH v2 1/8] of: reserve: add xn flag mem entries Date: Tue, 3 Aug 2021 11:44:11 +0200 [thread overview] Message-ID: <20210803094418.475609-2-r.czerwinski@pengutronix.de> (raw) In-Reply-To: <20210803094418.475609-1-r.czerwinski@pengutronix.de> If the OF_RESERVE_ENTRY_FLAG_XN flag is passed while creating the entry, a subsequent commit will use this information in the mmu to map the area as non-executable. Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de> --- arch/arm/cpu/sm.c | 2 +- arch/arm/cpu/start.c | 2 +- arch/arm/mach-layerscape/ppa.c | 2 +- common/bootm.c | 3 ++- drivers/of/fdt.c | 6 +++++- drivers/video/fb.c | 3 ++- drivers/video/simplefb-fixup.c | 2 +- fs/pstore/ram.c | 3 ++- include/of.h | 6 +++++- 9 files changed, 20 insertions(+), 9 deletions(-) diff --git a/arch/arm/cpu/sm.c b/arch/arm/cpu/sm.c index f5a1edbd4f..ebd5f76e14 100644 --- a/arch/arm/cpu/sm.c +++ b/arch/arm/cpu/sm.c @@ -203,7 +203,7 @@ static int of_secure_monitor_fixup(struct device_node *root, void *unused) res_start = (unsigned long)_stext; res_end = (unsigned long)__bss_stop; - of_add_reserve_entry(res_start, res_end); + of_add_reserve_entry(res_start, res_end, 0); pr_debug("Reserved memory range from 0x%08lx to 0x%08lx\n", res_start, res_end); diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index c61db66865..10ac070fe3 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -227,7 +227,7 @@ __noreturn __no_sanitize_address void barebox_non_pbl_start(unsigned long membas mem_malloc_init((void *)malloc_start, (void *)malloc_end - 1); if (IS_ENABLED(CONFIG_BOOTM_OPTEE)) - of_add_reserve_entry(endmem - OPTEE_SIZE, endmem - 1); + of_add_reserve_entry(endmem - OPTEE_SIZE, endmem - 1, OF_RESERVE_ENTRY_FLAG_XN); pr_debug("starting barebox...\n"); diff --git a/arch/arm/mach-layerscape/ppa.c b/arch/arm/mach-layerscape/ppa.c index d962fba751..6e61766e54 100644 --- a/arch/arm/mach-layerscape/ppa.c +++ b/arch/arm/mach-layerscape/ppa.c @@ -130,7 +130,7 @@ int ls1046a_ppa_init(resource_size_t ppa_start, resource_size_t ppa_size) if (ret) return ret; - of_add_reserve_entry(ppa_start, ppa_end); + of_add_reserve_entry(ppa_start, ppa_end, 0); return 0; } diff --git a/common/bootm.c b/common/bootm.c index 89e3e93f2c..82f07b5139 100644 --- a/common/bootm.c +++ b/common/bootm.c @@ -411,7 +411,8 @@ void *bootm_get_devicetree(struct image_data *data) if (data->initrd_res) { of_add_initrd(data->of_root_node, data->initrd_res->start, data->initrd_res->end); - of_add_reserve_entry(data->initrd_res->start, data->initrd_res->end); + of_add_reserve_entry(data->initrd_res->start, + data->initrd_res->end, 0); } oftree = of_get_fixed_tree(data->of_root_node); diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index f72f5e3a30..9356a92c5c 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -544,7 +544,8 @@ out_free: static struct of_reserve_map of_reserve_map; -int of_add_reserve_entry(resource_size_t start, resource_size_t end) +int of_add_reserve_entry(resource_size_t start, resource_size_t end, + int flags) { int e = of_reserve_map.num_entries; @@ -555,6 +556,9 @@ int of_add_reserve_entry(resource_size_t start, resource_size_t end) of_reserve_map.end[e] = end; of_reserve_map.num_entries++; + if (flags & OF_RESERVE_ENTRY_FLAG_XN) + of_reserve_map.xn |= BIT(e); + return 0; } diff --git a/drivers/video/fb.c b/drivers/video/fb.c index 113c1419a1..8aa4a77ef3 100644 --- a/drivers/video/fb.c +++ b/drivers/video/fb.c @@ -202,7 +202,8 @@ static int fb_of_reserve_fixup(struct device_node *root, void *context) return 0; of_add_reserve_entry((unsigned long)info->screen_base, - (unsigned long)info->screen_base + info->screen_size); + (unsigned long)info->screen_base + info->screen_size, + 0); return 0; } diff --git a/drivers/video/simplefb-fixup.c b/drivers/video/simplefb-fixup.c index a2c59de364..af7554d10f 100644 --- a/drivers/video/simplefb-fixup.c +++ b/drivers/video/simplefb-fixup.c @@ -131,7 +131,7 @@ static int simplefb_create_node(struct device_node *root, return ret; of_add_reserve_entry((u32)fbi->screen_base, - (u32)fbi->screen_base + fbi->screen_size); + (u32)fbi->screen_base + fbi->screen_size, 0); return of_property_write_string(node, "status", "okay"); } diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index 958f46b0ea..e404187c83 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -639,7 +639,8 @@ static int ramoops_probe(struct device_d *dev) ramoops_ecc); globalvar_add_simple("linux.bootargs.ramoops", kernelargs); } else { - of_add_reserve_entry(cxt->phys_addr, cxt->phys_addr + mem_size); + of_add_reserve_entry(cxt->phys_addr, cxt->phys_addr + mem_size, + 0); of_register_fixup(ramoops_of_fixup, pdata); } diff --git a/include/of.h b/include/of.h index f9c2b283de..4844e800b4 100644 --- a/include/of.h +++ b/include/of.h @@ -55,9 +55,13 @@ struct of_reserve_map { uint64_t start[OF_MAX_RESERVE_MAP]; uint64_t end[OF_MAX_RESERVE_MAP]; int num_entries; + u16 xn; }; -int of_add_reserve_entry(resource_size_t start, resource_size_t end); +#define OF_RESERVE_ENTRY_FLAG_XN BIT(0) + +int of_add_reserve_entry(resource_size_t start, resource_size_t end, + int flags); struct of_reserve_map *of_get_reserve_map(void); void of_clean_reserve_map(void); void fdt_add_reserve_map(void *fdt); -- 2.32.0 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2021-08-03 9:46 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-03 9:44 [PATCH v2 0/8] XN Support for reserved-memory areas Rouven Czerwinski 2021-08-03 9:44 ` Rouven Czerwinski [this message] 2021-08-05 13:54 ` [PATCH v2 1/8] of: reserve: add xn flag mem entries Ahmad Fatoum 2021-08-09 18:26 ` Sascha Hauer 2021-08-03 9:44 ` [PATCH v2 2/8] of: add of_get_reserve_map stub for !CONFIG_OFTREE Rouven Czerwinski 2021-08-05 13:55 ` Ahmad Fatoum 2021-08-03 9:44 ` [PATCH v2 3/8] ARM: mmu: use reserve mem entries to modify maps Rouven Czerwinski 2021-08-05 14:06 ` Ahmad Fatoum 2021-08-09 18:30 ` Sascha Hauer 2021-08-24 7:09 ` Ahmad Fatoum 2021-08-03 9:44 ` [PATCH v2 4/8] of: add flag to not create resmem DT entries Rouven Czerwinski 2021-08-05 14:09 ` Ahmad Fatoum 2021-08-03 9:44 ` [PATCH v2 5/8] of: add reserved_mem_read initcall Rouven Czerwinski 2021-08-05 14:14 ` Ahmad Fatoum 2021-08-03 9:44 ` [PATCH v2 6/8] pbl: fdt: add support to parse reserved mem Rouven Czerwinski 2021-08-05 14:20 ` Ahmad Fatoum 2021-08-03 9:44 ` [PATCH v2 7/8] ARM: mmu-early: map no-map entries XN & uncached Rouven Czerwinski 2021-08-05 14:24 ` Ahmad Fatoum 2021-08-03 9:44 ` [PATCH v2 8/8] PBL: enable LIBFDT for OP-TEE early loading Rouven Czerwinski 2021-08-05 13:53 ` Ahmad Fatoum 2021-08-24 6:47 ` Rouven Czerwinski
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=20210803094418.475609-2-r.czerwinski@pengutronix.de \ --to=r.czerwinski@pengutronix.de \ --cc=barebox@lists.infradead.org \ --subject='Re: [PATCH v2 1/8] of: reserve: add xn flag mem entries' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox