memmap
int (*__rex_getbitmap)(memmap *);
memmap *bm;
bm = (memmap *)CKSEG0ADDR(0x28000);
int __DEC_PROM_O32(_rex_getbitmap, (int (*)(memmap *), void *, memmap *));
extern int (*__rex_getbitmap)(memmap *);
WARN(efi.memmap.desc_version != 1,
efi.memmap.desc_version);
memblock_reserve(pmap, efi.memmap.nr_map * efi.memmap.desc_size);
efi_memory_desc_t *out = efi.memmap.map;
const efi_memory_desc_t *end = efi.memmap.map_end;
memcpy(out, in, efi.memmap.desc_size);
out = (void *)out + efi.memmap.desc_size;
in = (void *)in + efi.memmap.desc_size;
.phys_map = efi.memmap.phys_map,
.desc_version = efi.memmap.desc_version,
.desc_size = efi.memmap.desc_size,
.size = efi.memmap.desc_size * (efi.memmap.nr_map - n_removal),
return efi.memmap.map_end - efi.memmap.desc_size;
entry -= efi.memmap.desc_size;
if (entry < efi.memmap.map)
return efi.memmap.map;
entry += efi.memmap.desc_size;
if (entry >= efi.memmap.map_end)
desc_size = efi.memmap.desc_size;
if (efi_memmap_init_late(efi.memmap.phys_map,
efi.memmap.desc_size * efi.memmap.nr_map)) {
num_pages = ALIGN(efi.memmap.nr_map * efi.memmap.desc_size, PAGE_SIZE);
if (efi_setup_page_tables(efi.memmap.phys_map, num_pages)) {
if (efi_memmap_init_late(pa, efi.memmap.desc_size * count)) {
status = efi_set_virtual_address_map(efi.memmap.desc_size * count,
efi.memmap.desc_size,
efi.memmap.desc_version,
data->size = num_entries * efi.memmap.desc_size;
data->desc_version = efi.memmap.desc_version;
data->desc_size = efi.memmap.desc_size;
data->flags |= efi.memmap.flags & EFI_MEMMAP_LATE;
unsigned long size = efi.memmap.desc_size * efi.memmap.nr_map;
unsigned long flags = efi.memmap.flags;
u64 phys = efi.memmap.phys_map;
num_entries += efi.memmap.nr_map;
efi_memmap_insert(&efi.memmap, new, &mr);
sz = sizeof(*ranges_to_free) * (efi.memmap.nr_map + 1);
memcpy(new_md, md, efi.memmap.desc_size);
new_md += efi.memmap.desc_size;
return efi.memmap.nr_map * efi.memmap.desc_size;
return efi.memmap.desc_size;
memcpy(buf, efi.memmap.map, sz);
map_entries = kzalloc_objs(entry, efi.memmap.nr_map);
struct xen_memory_map memmap;
memmap.nr_entries = ARRAY_SIZE(boot_params_p->e820_table);
set_xen_guest_handle(memmap.buffer, boot_params_p->e820_table);
rc = HYPERVISOR_memory_op(XENMEM_memory_map, &memmap);
boot_params_p->e820_entries = memmap.nr_entries;
struct xen_memory_map memmap;
memmap.nr_entries = ARRAY_SIZE(xen_e820_table.entries);
set_xen_guest_handle(memmap.buffer, xen_e820_table.entries);
rc = HYPERVISOR_memory_op(op, &memmap);
memmap.nr_entries = 1;
BUG_ON(memmap.nr_entries == 0);
xen_e820_table.nr_entries = memmap.nr_entries;
if (efi_memmap_init_late(efi.memmap.phys_map, mapsize)) {
mapsize = efi.memmap.desc_size * efi.memmap.nr_map;
WARN(efi.memmap.desc_version != 1,
efi.memmap.desc_version);
tbl->desc_size > efi.memmap.desc_size) {
tbl->desc_size, efi.memmap.desc_size);
WARN_ON(efi.memmap.map);
WARN_ON(efi.memmap.flags & EFI_MEMMAP_LATE);
data.desc_version = efi.memmap.desc_version;
data.desc_size = efi.memmap.desc_size;
efi.memmap = map;
WARN_ON(efi.memmap.flags & EFI_MEMMAP_LATE);
if (!(efi.memmap.flags & EFI_MEMMAP_LATE)) {
size = efi.memmap.desc_size * efi.memmap.nr_map;
early_memunmap(efi.memmap.map, size);
memunmap(efi.memmap.map);
efi.memmap.map = NULL;
mapsize = efi.memmap.desc_size * efi.memmap.nr_map;
if (efi_memmap_init_late(efi.memmap.phys_map, mapsize)) {
ioc->memmap = mem;
iounmap(ioc->memmap);
iounmap(ioc->memmap);
if (ioc->memmap != NULL) {
iounmap(ioc->memmap);
ioc->memmap = NULL;
u8 __iomem *memmap; /* mmap address */
struct wl1271_acx_mem_map *memmap = wl->target_mem_map;
ret = wlcore_read(wl, le32_to_cpu(memmap->tx_result),
ret = wlcore_write32(wl, le32_to_cpu(memmap->tx_result) +
int acrn_vm_memseg_map(struct acrn_vm *vm, struct acrn_vm_memmap *memmap);
int acrn_vm_memseg_unmap(struct acrn_vm *vm, struct acrn_vm_memmap *memmap);
int acrn_vm_ram_map(struct acrn_vm *vm, struct acrn_vm_memmap *memmap);
struct acrn_vm_memmap memmap;
if (copy_from_user(&memmap, (void __user *)ioctl_param,
sizeof(memmap)))
ret = acrn_vm_memseg_map(vm, &memmap);
if (copy_from_user(&memmap, (void __user *)ioctl_param,
sizeof(memmap)))
ret = acrn_vm_memseg_unmap(vm, &memmap);
int acrn_vm_memseg_map(struct acrn_vm *vm, struct acrn_vm_memmap *memmap)
if (memmap->type == ACRN_MEMMAP_RAM)
return acrn_vm_ram_map(vm, memmap);
if (memmap->type != ACRN_MEMMAP_MMIO) {
"Invalid memmap type: %u\n", memmap->type);
ret = acrn_mm_region_add(vm, memmap->user_vm_pa,
memmap->service_vm_pa, memmap->len,
ACRN_MEM_TYPE_UC, memmap->attr);
int acrn_vm_memseg_unmap(struct acrn_vm *vm, struct acrn_vm_memmap *memmap)
if (memmap->type != ACRN_MEMMAP_MMIO) {
"Invalid memmap type: %u\n", memmap->type);
ret = acrn_mm_region_del(vm, memmap->user_vm_pa, memmap->len);
int acrn_vm_ram_map(struct acrn_vm *vm, struct acrn_vm_memmap *memmap)
if (!vm || !memmap)
nr_pages = memmap->len >> PAGE_SHIFT;
vma = vma_lookup(current->mm, memmap->vma_base);
if ((memmap->vma_base + memmap->len) > vma->vm_end) {
.address = memmap->vma_base + i * PAGE_SIZE,
(memmap->attr & ACRN_MEM_ACCESS_WRITE)) {
"Failed to lookup PFN at VMA:%p.\n", (void *)memmap->vma_base);
return acrn_mm_region_add(vm, memmap->user_vm_pa,
PFN_PHYS(start_pfn), memmap->len,
ACRN_MEM_TYPE_WB, memmap->attr);
pinned = pin_user_pages_fast(memmap->vma_base,
region_mapping->size = memmap->len;
region_mapping->user_vm_pa = memmap->user_vm_pa;
user_vm_pa = memmap->user_vm_pa;
(memmap->attr & ACRN_MEM_ACCESS_RIGHT_MASK);
remap_vaddr, (void *)memmap->user_vm_pa, memmap->len);
struct efi_memory_map memmap;
for_each_efi_memory_desc_in_map(&efi.memmap, md)
static void free_map_bootmem(struct page *memmap)
unsigned long start = (unsigned long)memmap;
unsigned long end = (unsigned long)(memmap + PAGES_PER_SECTION);
unsigned long pfn = page_to_pfn(memmap);
struct page *memmap = NULL;
memmap = pfn_to_page(SECTION_ALIGN_DOWN(pfn));
else if (memmap)
free_map_bootmem(memmap);
struct page *memmap;
memmap = populate_section_memmap(pfn, nr_pages, nid, altmap, pgmap);
if (!memmap) {
return memmap;
struct page *memmap;
memmap = section_activate(nid, start_pfn, nr_pages, altmap, pgmap);
if (IS_ERR(memmap))
return PTR_ERR(memmap);
page_init_poison(memmap, sizeof(struct page) * nr_pages);
memmap = pfn_to_page(section_nr_to_pfn(section_nr));
sparse_init_one_section(ms, section_nr, memmap, ms->usage, 0);