On Mon, Aug 15, 2022 at 05:32:02PM +0200, Ahmad Fatoum wrote: > We use request_sdram_regions both for code that barebox wants to use for > itself (e.g. barebox stack or initrd) and to reserve regions for secure > firmware that barebox shouldn't overwrite. We need to differentiate > between them, so we can apply difference caching flags depending on s/difference/different/ Sascha > region, so add a new reserve_sdram_region helper that may be used and > also add an for_each_reserved_region iterator for use in the MMU code > that applied the different caching flags later on. > > Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > include/memory.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/include/memory.h b/include/memory.h > index 31da5d74d568..ffd66db02ba0 100644 > --- a/include/memory.h > +++ b/include/memory.h > @@ -4,6 +4,7 @@ > > #include <linux/types.h> > #include <linux/list.h> > +#include <linux/ioport.h> > > void mem_malloc_init(void *start, void *end); > ulong mem_malloc_start(void); > @@ -22,6 +23,9 @@ int barebox_add_memory_bank(const char *name, resource_size_t start, > resource_size_t size); > > #define for_each_memory_bank(mem) list_for_each_entry(mem, &memory_banks, list) > +#define for_each_reserved_region(mem, rsv) \ > + list_for_each_entry(rsv, &(mem)->res->children, sibling) \ > + if (((rsv)->flags & IORESOURCE_BUSY)) > > struct resource *__request_sdram_region(const char *name, unsigned flags, > resource_size_t start, resource_size_t size); > @@ -34,6 +38,14 @@ static inline struct resource *request_sdram_region(const char *name, > return __request_sdram_region(name, 0, start, size); > } > > +/* use for secure firmware to inhibit speculation */ > +static inline struct resource *reserve_sdram_region(const char *name, > + resource_size_t start, > + resource_size_t size) > +{ > + return __request_sdram_region(name, IORESOURCE_BUSY, start, size); > +} > + > int release_sdram_region(struct resource *res); > > void memory_bank_find_space(struct memory_bank *bank, resource_size_t *retstart, > -- > 2.30.2 > > > -- 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 |