*/
if ( is_hardware_domain(d) )
{
- struct membanks *gnttab = xzalloc_flex_struct(struct membanks, bank, 1);
+ struct membanks *gnttab = membanks_xzalloc(1, MEMORY);
/*
* Exclude the following regions:
* 1) Remove reserved memory
gnttab->bank[0].start = kinfo->gnttab_start;
gnttab->bank[0].size = kinfo->gnttab_size;
- hwdom_free_mem = xzalloc_flex_struct(struct membanks, bank,
- NR_MEM_BANKS);
+ hwdom_free_mem = membanks_xzalloc(NR_MEM_BANKS, MEMORY);
if ( !hwdom_free_mem )
goto fail;
- hwdom_free_mem->max_banks = NR_MEM_BANKS;
-
if ( find_unallocated_memory(kinfo, mem_banks, ARRAY_SIZE(mem_banks),
hwdom_free_mem, add_hwdom_free_regions) )
goto fail;
struct membanks *ext_regions)
{
int res;
- struct membanks *gnttab = xzalloc_flex_struct(struct membanks, bank, 1);
+ struct membanks *gnttab = membanks_xzalloc(1, MEMORY);
/*
* Exclude the following regions:
}
else
{
- ext_regions = xzalloc_flex_struct(struct membanks, bank, NR_MEM_BANKS);
+ ext_regions = membanks_xzalloc(NR_MEM_BANKS, MEMORY);
if ( !ext_regions )
return -ENOMEM;
- ext_regions->max_banks = NR_MEM_BANKS;
-
if ( domain_use_host_layout(d) )
{
if ( !is_iommu_enabled(d) )
}
#ifdef CONFIG_STATIC_SHM
-#define KERNEL_INFO_SHM_MEM_INIT .shm_mem.common.max_banks = NR_SHMEM_BANKS,
+#define KERNEL_INFO_SHM_MEM_INIT \
+ .shm_mem.common.max_banks = NR_SHMEM_BANKS, \
+ .shm_mem.common.type = STATIC_SHARED_MEMORY,
#else
#define KERNEL_INFO_SHM_MEM_INIT
#endif
#define KERNEL_INFO_INIT \
{ \
.mem.common.max_banks = NR_MEM_BANKS, \
+ .mem.common.type = MEMORY, \
KERNEL_INFO_SHM_MEM_INIT \
}
struct membanks_hdr common;
struct membank bank[NR_SHMEM_BANKS];
} shm_heap_banks __initdata = {
- .common.max_banks = NR_SHMEM_BANKS
+ .common.max_banks = NR_SHMEM_BANKS,
+ .common.type = STATIC_SHARED_MEMORY
};
static inline struct membanks *get_shmem_heap_banks(void)
#include <xen/types.h>
#include <xen/kernel.h>
#include <xen/macros.h>
+#include <xen/xmalloc.h>
#define MIN_FDT_ALIGN 8
}
#endif
+static inline struct membanks *membanks_xzalloc(unsigned int nr,
+ enum region_type type)
+{
+ struct membanks *banks = xzalloc_flex_struct(struct membanks, bank, nr);
+
+ if ( !banks )
+ goto out;
+
+ banks->max_banks = nr;
+ banks->type = type;
+
+ out:
+ return banks;
+}
+
#endif /* XEN_BOOTFDT_H */