vm: minimum and maximum zone IDs are now defined in arch/../vm.h

This commit is contained in:
2023-05-07 21:38:08 +01:00
parent ad2ce0b2ab
commit 9f3c080e41
4 changed files with 12 additions and 5 deletions

View File

@@ -18,4 +18,7 @@
#define VM_PAGE_MIN_ORDER VM_PAGE_4K
#define VM_PAGE_MAX_ORDER VM_PAGE_8M
#define VM_ZONE_MIN VM_ZONE_DMA
#define VM_ZONE_MAX VM_ZONE_NORMAL
#endif

View File

@@ -56,12 +56,12 @@ enum vm_flags {
enum vm_zone_id {
/* 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_NORMAL = 1u,
VM_ZONE_HIGHMEM = 2u,
VM_ZONE_MIN = VM_ZONE_DMA,
VM_ZONE_MAX = VM_ZONE_HIGHMEM,
};
enum vm_page_order {

View File

@@ -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)
{
struct vm_page *slab_page = vm_page_alloc(cache->c_page_order, flags);
if (!slab_page) {
return NULL;
}
struct vm_slab *slab_hdr = NULL;
void *slab_data = vm_page_get_vaddr(slab_page);

View File

@@ -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 */
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) {
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;
}
if (zone_id == VM_ZONE_MIN) {
if (zone_id <= VM_ZONE_MIN) {
break;
}