7 #include <metadata_hash.h>
13 #include "fmap_config.h"
22 #define print_once(...) do { \
23 if (!fmap_print_once) \
24 printk(__VA_ARGS__); \
37 static bool done =
false;
72 "WARNING: Post-RAM FMAP access too early for cache!\n");
85 die(
"TOCTOU safety relies on FMAP cache");
111 size_t offset = FMAP_OFFSET;
278 const struct cbmem_entry *e;
void * memcpy(void *dest, const void *src, size_t n)
void * memset(void *dstpp, int c, size_t len)
int boot_device_rw_subregion(const struct region *sub, struct region_device *subrd)
int boot_device_ro_subregion(const struct region *sub, struct region_device *subrd)
void boot_device_init(void)
void * cbmem_entry_start(const struct cbmem_entry *entry)
int cbmem_entry_remove(const struct cbmem_entry *entry)
const struct cbmem_entry * cbmem_entry_find(u32 id)
void * cbmem_add(u32 id, u64 size)
u64 cbmem_entry_size(const struct cbmem_entry *entry)
#define ROMSTAGE_CBMEM_INIT_HOOK(init_fn_)
#define printk(level,...)
void __noreturn die(const char *fmt,...)
POSTCAR_CBMEM_INIT_HOOK(migrate_ehci_debug)
RAMSTAGE_CBMEM_INIT_HOOK(migrate_ehci_debug)
static struct region_device rdev
ssize_t fmap_overwrite_area(const char *name, const void *buffer, size_t size)
static void setup_preram_cache(struct region_device *cache_rdev)
static int find_fmap_directory(struct region_device *fmrd)
static int fmap_print_once
static void fmap_register_cbmem_cache(void)
static int verify_fmap(const struct fmap *fmap)
static void report(const struct fmap *fmap)
uint64_t get_fmap_flash_offset(void)
ssize_t fmap_read_area(const char *name, void *buffer, size_t size)
static void fmap_add_cbmem_cache(void)
int fmap_find_region_name(const struct region *const ar, char name[FMAP_STRLEN])
int fmap_locate_area_as_rdev(const char *name, struct region_device *area)
int fmap_locate_area(const char *name, struct region *ar)
static struct region_device fmap_cache
static void fmap_setup_cbmem_cache(int unused)
int fmap_locate_area_as_rdev_rw(const char *name, struct region_device *area)
static uint16_t le16toh(uint16_t little_endian_16bits)
static uint32_t le32toh(uint32_t little_endian_32bits)
static uint64_t le64toh(uint64_t little_endian_64bits)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define BIOS_WARNING
BIOS_WARNING - Bad configuration.
u8 buffer[C2P_BUFFER_MAXSIZE]
ssize_t rdev_eraseat(const struct region_device *rd, size_t offset, size_t size)
int rdev_munmap(const struct region_device *rd, void *mapping)
static size_t region_device_sz(const struct region_device *rdev)
int rdev_chain_mem(struct region_device *child, const void *base, size_t size)
static int rdev_chain_full(struct region_device *child, const struct region_device *parent)
ssize_t rdev_writeat(const struct region_device *rd, const void *b, size_t offset, size_t size)
void * rdev_mmap(const struct region_device *rd, size_t offset, size_t size)
int rdev_chain(struct region_device *child, const struct region_device *parent, size_t offset, size_t size)
ssize_t rdev_readat(const struct region_device *rd, void *b, size_t offset, size_t size)
#define ENV_INITIAL_STAGE
#define ENV_ROMSTAGE_OR_BEFORE
unsigned long long uint64_t
int strcmp(const char *s1, const char *s2)
int memcmp(const void *s1, const void *s2, size_t n)
uint8_t name[FMAP_STRLEN]
uint8_t name[FMAP_STRLEN]
#define s(param, src_bits, pmcreg, dst_bits)