|
@@ -20,7 +20,13 @@
|
|
|
#define INIT_MEMBLOCK_REGIONS 128
|
|
|
#define INIT_PHYSMEM_REGIONS 4
|
|
|
|
|
|
-/* Definition of memblock flags. */
|
|
|
+/**
|
|
|
+ * enum memblock_flags - definition of memory region attributes
|
|
|
+ * @MEMBLOCK_NONE: no special request
|
|
|
+ * @MEMBLOCK_HOTPLUG: hotpluggable region
|
|
|
+ * @MEMBLOCK_MIRROR: mirrored region
|
|
|
+ * @MEMBLOCK_NOMAP: don't add to kernel direct mapping
|
|
|
+ */
|
|
|
enum memblock_flags {
|
|
|
MEMBLOCK_NONE = 0x0, /* No special request */
|
|
|
MEMBLOCK_HOTPLUG = 0x1, /* hotpluggable region */
|
|
@@ -28,6 +34,13 @@ enum memblock_flags {
|
|
|
MEMBLOCK_NOMAP = 0x4, /* don't add to kernel direct mapping */
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * struct memblock_region - represents a memory region
|
|
|
+ * @base: physical address of the region
|
|
|
+ * @size: size of the region
|
|
|
+ * @flags: memory region attributes
|
|
|
+ * @nid: NUMA node id
|
|
|
+ */
|
|
|
struct memblock_region {
|
|
|
phys_addr_t base;
|
|
|
phys_addr_t size;
|
|
@@ -37,14 +50,30 @@ struct memblock_region {
|
|
|
#endif
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * struct memblock_type - collection of memory regions of certain type
|
|
|
+ * @cnt: number of regions
|
|
|
+ * @max: size of the allocated array
|
|
|
+ * @total_size: size of all regions
|
|
|
+ * @regions: array of regions
|
|
|
+ * @name: the memory type symbolic name
|
|
|
+ */
|
|
|
struct memblock_type {
|
|
|
- unsigned long cnt; /* number of regions */
|
|
|
- unsigned long max; /* size of the allocated array */
|
|
|
- phys_addr_t total_size; /* size of all regions */
|
|
|
+ unsigned long cnt;
|
|
|
+ unsigned long max;
|
|
|
+ phys_addr_t total_size;
|
|
|
struct memblock_region *regions;
|
|
|
char *name;
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * struct memblock - memblock allocator metadata
|
|
|
+ * @bottom_up: is bottom up direction?
|
|
|
+ * @current_limit: physical address of the current allocation limit
|
|
|
+ * @memory: usabe memory regions
|
|
|
+ * @reserved: reserved memory regions
|
|
|
+ * @physmem: all physical memory
|
|
|
+ */
|
|
|
struct memblock {
|
|
|
bool bottom_up; /* is bottom up direction? */
|
|
|
phys_addr_t current_limit;
|