![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <sys/types.h>
#include <stddef.h>
#include <stdbool.h>
#include <commonlib/bsd/helpers.h>
#include <commonlib/mem_pool.h>
Go to the source code of this file.
Data Structures | |
struct | region_device_ops |
struct | region |
struct | region_device |
struct | mem_region_device |
struct | mmap_helper_region_device |
struct | xlate_window |
struct | xlate_region_device |
struct | incoherent_rdev |
Macros | |
#define | REGION_DEV_INIT(ops_, offset_, size_) |
#define | MEM_REGION_DEV_INIT(base_, size_, ops_) |
#define | MEM_REGION_DEV_RO_INIT(base_, size_) MEM_REGION_DEV_INIT(base_, size_, &mem_rdev_ro_ops) \ |
#define | MEM_REGION_DEV_RW_INIT(base_, size_) MEM_REGION_DEV_INIT(base_, size_, &mem_rdev_rw_ops) \ |
#define | MMAP_HELPER_DEV_INIT(ops_, offset_, size_, mpool_) |
#define | XLATE_REGION_DEV_INIT(window_arr_, parent_sz_, ops_) |
#define | XLATE_REGION_DEV_RO_INIT(window_arr_, parent_sz_) XLATE_REGION_DEV_INIT(window_arr_, parent_sz_, &xlate_rdev_ro_ops) |
#define | XLATE_REGION_DEV_RW_INIT(window_count_, window_arr_, parent_sz_) XLATE_REGION_DEV_INIT(window_arr_, parent_sz_, &xlate_rdev_rw_ops) |
Variables | |
const struct region_device_ops | mem_rdev_ro_ops |
const struct region_device_ops | mem_rdev_rw_ops |
const struct region_device_ops | xlate_rdev_ro_ops |
const struct region_device_ops | xlate_rdev_rw_ops |
#define MEM_REGION_DEV_INIT | ( | base_, | |
size_, | |||
ops_ | |||
) |
#define MEM_REGION_DEV_RO_INIT | ( | base_, | |
size_ | |||
) | MEM_REGION_DEV_INIT(base_, size_, &mem_rdev_ro_ops) \ |
#define MEM_REGION_DEV_RW_INIT | ( | base_, | |
size_ | |||
) | MEM_REGION_DEV_INIT(base_, size_, &mem_rdev_rw_ops) \ |
#define MMAP_HELPER_DEV_INIT | ( | ops_, | |
offset_, | |||
size_, | |||
mpool_ | |||
) |
#define REGION_DEV_INIT | ( | ops_, | |
offset_, | |||
size_ | |||
) |
#define XLATE_REGION_DEV_INIT | ( | window_arr_, | |
parent_sz_, | |||
ops_ | |||
) |
#define XLATE_REGION_DEV_RO_INIT | ( | window_arr_, | |
parent_sz_ | |||
) | XLATE_REGION_DEV_INIT(window_arr_, parent_sz_, &xlate_rdev_ro_ops) |
#define XLATE_REGION_DEV_RW_INIT | ( | window_count_, | |
window_arr_, | |||
parent_sz_ | |||
) | XLATE_REGION_DEV_INIT(window_arr_, parent_sz_, &xlate_rdev_rw_ops) |
const struct region_device* incoherent_rdev_init | ( | struct incoherent_rdev * | irdev, |
const struct region * | r, | ||
const struct region_device * | read, | ||
const struct region_device * | write | ||
) |
Definition at line 517 of file region.c.
References incoherent_rdev_ops, NULL, incoherent_rdev::rdev, incoherent_rdev::read, region_device_init(), region_device_sz(), region_sz(), and incoherent_rdev::write.
Referenced by lookup_store(), and update_mrc_cache_by_type().
void mem_region_device_ro_init | ( | struct mem_region_device * | mdev, |
void * | base, | ||
size_t | size | ||
) |
Definition at line 166 of file region.c.
References base, mdev, mem_rdev_ro_ops, mem_region_device_init(), and region::size.
Referenced by initialize_window().
void mem_region_device_rw_init | ( | struct mem_region_device * | mdev, |
void * | base, | ||
size_t | size | ||
) |
Definition at line 172 of file region.c.
References base, mdev, mem_rdev_rw_ops, mem_region_device_init(), and region::size.
void* mmap_helper_rdev_mmap | ( | const struct region_device * | rd, |
size_t | offset, | ||
size_t | size | ||
) |
Definition at line 303 of file region.c.
References container_of, mdev, mem_pool_alloc(), mem_pool_free(), NULL, offset, region_device::ops, mmap_helper_region_device::pool, rdev, and region_device_ops::readat.
Referenced by exynos_spi_map().
int mmap_helper_rdev_munmap | ( | const struct region_device * | rd, |
void * | mapping | ||
) |
Definition at line 324 of file region.c.
References container_of, mdev, mem_pool_free(), mmap_helper_region_device::pool, and rdev.
int rdev_chain | ( | struct region_device * | child, |
const struct region_device * | parent, | ||
size_t | offset, | ||
size_t | size | ||
) |
Definition at line 136 of file region.c.
References normalize_and_ok(), NULL, region::offset, offset, region_device::ops, rdev_root(), region_device::region, region_device::root, and region::size.
Referenced by _cbfs_unverified_area_alloc(), allocate_metadata(), boot_device_subregion(), cse_get_target_rdev(), cse_locate_area_as_rdev_rw(), cse_sub_part_get_target_rdev(), elog_find_flash(), fill_data_boundaries(), find_fmap_directory(), init_vpd_rdev(), lookup_store(), mrc_cache_find_current(), mrc_cache_get_latest_slot_info(), mrc_header_valid(), rdev_chain_full(), rdev_chain_mem(), rdev_chain_mem_rw(), region_file_data(), region_file_init(), smmstore_append_data(), smmstore_rawwrite_region(), and vboot_locate_firmware().
|
inlinestatic |
Definition at line 153 of file region.h.
References rdev_chain(), and region_device_sz().
Referenced by find_fmap_directory(), region_file_init(), and smmstore_rdev_chain().
int rdev_chain_mem | ( | struct region_device * | child, |
const void * | base, | ||
size_t | size | ||
) |
Definition at line 293 of file region.c.
References base, mem_rdev, mem_region_device::rdev, and rdev_chain().
Referenced by bios_mmap_init(), fmap_register_cbmem_cache(), init_vpd_rdevs_from_cbmem(), prog_chain_rdev(), and setup_preram_cache().
int rdev_chain_mem_rw | ( | struct region_device * | child, |
void * | base, | ||
size_t | size | ||
) |
Definition at line 298 of file region.c.
References base, mem_rdev_rw, mem_region_device::rdev, and rdev_chain().
Referenced by elog_init(), and smmstore_init().
ssize_t rdev_eraseat | ( | const struct region_device * | rd, |
size_t | offset, | ||
size_t | size | ||
) |
Definition at line 114 of file region.c.
References region_device_ops::eraseat, normalize_and_ok(), NULL, region::offset, offset, region_device::ops, rdev, rdev_root(), region_device::region, and region::size.
Referenced by configure_descriptor(), cse_erase_rw_region(), elog_nv_erase(), erase_nvram(), fmap_overwrite_area(), handle_need_to_empty(), incoherent_eraseat(), load_spd_cache(), smmstore_clear_region(), smmstore_rawclear_region(), soc_update_apob_cache(), and xlate_eraseat().
void* rdev_mmap | ( | const struct region_device * | rd, |
size_t | offset, | ||
size_t | size | ||
) |
Definition at line 46 of file region.c.
References region_device_ops::mmap, normalize_and_ok(), NULL, region::offset, offset, region_device::ops, rdev, rdev_root(), region_device::region, and region::size.
Referenced by efs_is_valid(), elog_flash_offset_to_address(), elog_get_event_buffer(), elog_is_buffer_clear(), elog_is_header_valid(), elog_move_events_to_front(), elog_nv_write(), find_fmap_directory(), fmap_find_region_name(), fmap_locate_area(), incoherent_mmap(), mmap_com_buf(), rdev_mmap_full(), and xlate_mmap().
|
inlinestatic |
Definition at line 148 of file region.h.
References rdev_mmap(), and region_device_sz().
Referenced by _cbfs_alloc(), cbfs_load_and_decompress(), do_alloc(), elog_debug_dump_buffer(), elog_scan_flash(), fast_spi_get_ext_bios_window(), get_apob_from_nv_rdev(), Main(), mainboard_init(), mrc_cache_current_mmap_leak(), mrc_cache_needs_update(), program_mac_address(), spi_flash_get_mmap_windows(), update_boot_region(), and vpd_find_in().
int rdev_munmap | ( | const struct region_device * | rd, |
void * | mapping | ||
) |
Definition at line 65 of file region.c.
References region_device_ops::munmap, NULL, region_device::ops, rdev, and rdev_root().
Referenced by cbfs_load_and_decompress(), do_alloc(), elog_debug_dump_buffer(), elog_is_buffer_clear(), elog_move_events_to_front(), elog_nv_write(), elog_put_event_buffer(), elog_scan_flash(), find_fmap_directory(), fmap_find_region_name(), fmap_locate_area(), incoherent_munmap(), mrc_cache_needs_update(), smmstore_rawread_region(), smmstore_rawwrite_region(), and vpd_find_in().
|
inlinestatic |
Definition at line 166 of file region.h.
References rdev_readat(), and region_device_sz().
ssize_t rdev_readat | ( | const struct region_device * | rd, |
void * | b, | ||
size_t | offset, | ||
size_t | size | ||
) |
Definition at line 77 of file region.c.
References normalize_and_ok(), region::offset, offset, region_device::ops, rdev, rdev_root(), region_device_ops::readat, region_device::region, and region::size.
Referenced by cbfs_dev_read(), cbfs_load_and_decompress(), cbmem_add_cros_vpd(), configure_descriptor(), cse_get_sub_part_fw_version(), cse_is_rw_bp_sign_valid(), cse_sub_part_get_target_rdev(), elog_do_shrink(), elog_is_event_valid(), elog_scan_flash(), elog_smbios_write_type15(), elog_update_event_buffer_state(), fill_data_boundaries(), flashconsole_init(), fmap_add_cbmem_cache(), fmap_read_area(), get_apob_from_nv_rdev(), hash_body(), incoherent_readat(), init_vbnv(), init_vpd_rdev(), mrc_cache_load_current(), mrc_header_valid(), rdev_read_full(), read_mb(), region_file_init(), scan_end(), setup_preram_cache(), smmstore_rawread_region(), vb2ex_read_resource(), and xlate_readat().
ssize_t rdev_relative_offset | ( | const struct region_device * | p, |
const struct region_device * | c | ||
) |
Definition at line 34 of file region.c.
References c, rdev_root(), region_device::region, region_device_offset(), and region_is_subregion().
ssize_t rdev_writeat | ( | const struct region_device * | rd, |
const void * | b, | ||
size_t | offset, | ||
size_t | size | ||
) |
Definition at line 94 of file region.c.
References normalize_and_ok(), NULL, region::offset, offset, region_device::ops, rdev, rdev_root(), region_device::region, region::size, and region_device_ops::writeat.
Referenced by allocate_metadata(), commit_data(), commit_data_allocation(), configure_descriptor(), cse_copy_rw(), elog_nv_write(), elog_write_header_in_mirror(), flashconsole_tx_flush(), fmap_overwrite_area(), incoherent_writeat(), load_spd_cache(), save_fpf_state(), save_vbnv_flash(), smmstore_append_data(), smmstore_rawwrite_region(), soc_update_apob_cache(), and xlate_writeat().
|
inlinestatic |
Definition at line 142 of file region.h.
References rdev, region_device_region(), and region_end().
void region_device_init | ( | struct region_device * | rdev, |
const struct region_device_ops * | ops, | ||
size_t | offset, | ||
size_t | size | ||
) |
Definition at line 178 of file region.c.
References memset(), NULL, region::offset, offset, region_device::ops, ops, rdev, region_device::region, region_device::root, and region::size.
Referenced by incoherent_rdev_init(), and xlate_region_device_init().
|
inlinestatic |
Definition at line 137 of file region.h.
References rdev, region_device_region(), and region_offset().
Referenced by elog_find_flash(), elog_flash_offset_to_address(), lb_boot_media_params(), rdev_relative_offset(), smmstore_append_data(), and soc_update_apob_cache().
|
inlinestatic |
Definition at line 126 of file region.h.
References rdev, and region_device::region.
Referenced by boot_device_wp_region(), region_device_end(), region_device_offset(), and region_device_sz().
|
inlinestatic |
Definition at line 132 of file region.h.
References rdev, region_device_region(), and region_sz().
Referenced by allocate_metadata(), cbfs_dev_size(), cbfs_get_boot_device(), cbfs_load_and_decompress(), cbfs_preload(), cbmem_add_cros_vpd(), cse_erase_rw_region(), cse_sub_part_trigger_update(), do_alloc(), elog_debug_dump_buffer(), elog_events_total_space(), elog_find_flash(), elog_flash_offset_to_address(), elog_init(), elog_is_buffer_clear(), elog_move_events_to_front(), elog_nv_erase(), elog_scan_flash(), elog_smbios_write_type15(), erase_nvram(), fast_spi_get_ext_bios_window(), fill_data_boundaries(), find_fmap_directory(), flashconsole_init(), flashconsole_tx_byte(), flashconsole_tx_flush(), fmap_add_cbmem_cache(), fmap_overwrite_area(), fmap_read_area(), handle_empty(), handle_need_to_empty(), hash_body(), incoherent_rdev_init(), init_vbnv(), init_vpd_rdev(), lb_boot_media_params(), load_spd_cache(), lookup_block_in_store(), lookup_store(), mainboard_init(), mmap_com_buf(), mrc_cache_current_mmap_leak(), mrc_cache_load_current(), mrc_cache_needs_update(), mrc_header_valid(), program_mac_address(), rdev_chain_full(), rdev_mmap_full(), rdev_read_full(), scan_end(), smmstore_append_data(), smmstore_clear_region(), soc_update_apob_cache(), start_apob_cache_read(), update_can_fit(), vboot_get_cbfs_boot_device(), and vpd_find_in().
Definition at line 115 of file region.h.
References region_offset(), and region_sz().
Referenced by region_device_end(), region_is_subregion(), region_overlap(), and winbond_get_write_protection().
Definition at line 7 of file region.c.
References c, region_end(), and region_offset().
Referenced by bios_mmap_init(), normalize_and_ok(), rdev_relative_offset(), report_fsp_output(), report_fspt_output(), spi_flash_ctrlr_protect_region(), spi_flash_is_write_protected(), spi_flash_set_write_protected(), winbond_get_write_protection(), and xlate_find_window().
Definition at line 105 of file region.h.
References region::offset.
Referenced by bios_mmap_init(), boot_device_subregion(), ec_flash_write(), ec_update_image(), normalize_and_ok(), qclib_load_and_run(), region_device_offset(), region_end(), region_is_subregion(), region_overlap(), spi_flash_get_mmap_windows(), spi_flash_protect(), winbond_get_write_protection(), xlate_eraseat(), xlate_mmap(), xlate_readat(), and xlate_writeat().
Definition at line 120 of file region.h.
References region_end(), and region_offset().
Referenced by smm_region_overlaps_handler().
Definition at line 110 of file region.h.
References region::size.
Referenced by bios_mmap_init(), boot_device_subregion(), incoherent_rdev_init(), qclib_load_and_run(), region_device_sz(), region_end(), spi_flash_get_mmap_windows(), spi_flash_protect(), and winbond_get_write_protection().
void xlate_region_device_ro_init | ( | struct xlate_region_device * | xdev, |
size_t | window_count, | ||
const struct xlate_window * | window_arr, | ||
size_t | parent_size | ||
) |
Definition at line 200 of file region.c.
References xlate_rdev_ro_ops, and xlate_region_device_init().
Referenced by bios_mmap_init().
void xlate_region_device_rw_init | ( | struct xlate_region_device * | xdev, |
size_t | window_count, | ||
const struct xlate_window * | window_arr, | ||
size_t | parent_size | ||
) |
Definition at line 208 of file region.c.
References xlate_rdev_rw_ops, and xlate_region_device_init().
void xlate_window_init | ( | struct xlate_window * | window, |
const struct region_device * | access_dev, | ||
size_t | sub_region_offset, | ||
size_t | sub_region_size | ||
) |
Definition at line 216 of file region.c.
References xlate_window::access_dev, region::offset, region::size, and xlate_window::sub_region.
Referenced by bios_mmap_init(), and initialize_window().
|
extern |
Definition at line 264 of file region.c.
Referenced by mem_region_device_ro_init().
|
extern |
Definition at line 264 of file region.c.
Referenced by mem_region_device_rw_init().
|
extern |
Definition at line 425 of file region.c.
Referenced by xlate_region_device_ro_init().
|
extern |
Definition at line 425 of file region.c.
Referenced by xlate_region_device_rw_init().