vm: minimum and maximum zone IDs are now defined in arch/../vm.h
This commit is contained in:
@@ -18,4 +18,7 @@
|
|||||||
#define VM_PAGE_MIN_ORDER VM_PAGE_4K
|
#define VM_PAGE_MIN_ORDER VM_PAGE_4K
|
||||||
#define VM_PAGE_MAX_ORDER VM_PAGE_8M
|
#define VM_PAGE_MAX_ORDER VM_PAGE_8M
|
||||||
|
|
||||||
|
#define VM_ZONE_MIN VM_ZONE_DMA
|
||||||
|
#define VM_ZONE_MAX VM_ZONE_NORMAL
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -56,12 +56,12 @@ enum vm_flags {
|
|||||||
|
|
||||||
enum vm_zone_id {
|
enum vm_zone_id {
|
||||||
/* NOTE that these are used as indices into the node_zones array in vm/zone.c
|
/* NOTE that these are used as indices into the node_zones array in vm/zone.c
|
||||||
they need to be continuous, and must start at 0! */
|
they need to be continuous, and must start at 0!
|
||||||
|
|
||||||
|
not all of these zones are implemented for every architecture. */
|
||||||
VM_ZONE_DMA = 0u,
|
VM_ZONE_DMA = 0u,
|
||||||
VM_ZONE_NORMAL = 1u,
|
VM_ZONE_NORMAL = 1u,
|
||||||
VM_ZONE_HIGHMEM = 2u,
|
VM_ZONE_HIGHMEM = 2u,
|
||||||
VM_ZONE_MIN = VM_ZONE_DMA,
|
|
||||||
VM_ZONE_MAX = VM_ZONE_HIGHMEM,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum vm_page_order {
|
enum vm_page_order {
|
||||||
|
|||||||
@@ -82,6 +82,10 @@ void vm_cache_destroy(struct vm_cache *cache)
|
|||||||
static struct vm_slab *alloc_slab(struct vm_cache *cache, enum vm_flags flags)
|
static struct vm_slab *alloc_slab(struct vm_cache *cache, enum vm_flags flags)
|
||||||
{
|
{
|
||||||
struct vm_page *slab_page = vm_page_alloc(cache->c_page_order, flags);
|
struct vm_page *slab_page = vm_page_alloc(cache->c_page_order, flags);
|
||||||
|
if (!slab_page) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
struct vm_slab *slab_hdr = NULL;
|
struct vm_slab *slab_hdr = NULL;
|
||||||
void *slab_data = vm_page_get_vaddr(slab_page);
|
void *slab_data = vm_page_get_vaddr(slab_page);
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ struct vm_page *vm_page_alloc(enum vm_page_order order, enum vm_flags flags)
|
|||||||
{
|
{
|
||||||
/* TODO prefer nodes closer to us */
|
/* TODO prefer nodes closer to us */
|
||||||
struct vm_pg_data *node = vm_pg_data_get(0);
|
struct vm_pg_data *node = vm_pg_data_get(0);
|
||||||
enum vm_zone_id zone_id = VM_ZONE_HIGHMEM;
|
enum vm_zone_id zone_id = VM_ZONE_MAX;
|
||||||
if (flags & VM_GET_DMA) {
|
if (flags & VM_GET_DMA) {
|
||||||
zone_id = VM_ZONE_DMA;
|
zone_id = VM_ZONE_DMA;
|
||||||
}
|
}
|
||||||
@@ -168,7 +168,7 @@ struct vm_page *vm_page_alloc(enum vm_page_order order, enum vm_flags flags)
|
|||||||
return pg;
|
return pg;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zone_id == VM_ZONE_MIN) {
|
if (zone_id <= VM_ZONE_MIN) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user