From f08e34e4ca33cd247d17421f98fbf6e3d96b79be Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 21 Aug 2023 01:24:46 +0200 Subject: page segments: Fix more dma32/directmap inversions We need to make sure segments are in addresses order, and avoid returning dma32 memory when it's not actually within directmap memory. --- i386/i386at/biosmem.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'i386/i386at/biosmem.c') diff --git a/i386/i386at/biosmem.c b/i386/i386at/biosmem.c index 6d0a03ae..03736af3 100644 --- a/i386/i386at/biosmem.c +++ b/i386/i386at/biosmem.c @@ -840,10 +840,11 @@ biosmem_directmap_end(void) { if (biosmem_segment_size(VM_PAGE_SEG_DIRECTMAP) != 0) return biosmem_segment_end(VM_PAGE_SEG_DIRECTMAP); - else if (biosmem_segment_size(VM_PAGE_SEG_DMA32) != 0) +#if defined(VM_PAGE_DMA32_LIMIT) && (VM_PAGE_DMA32_LIMIT < VM_PAGE_DIRECTMAP_LIMIT) + if (biosmem_segment_size(VM_PAGE_SEG_DMA32) != 0) return biosmem_segment_end(VM_PAGE_SEG_DMA32); - else - return biosmem_segment_end(VM_PAGE_SEG_DMA); +#endif + return biosmem_segment_end(VM_PAGE_SEG_DMA); } static const char * __init -- cgit v1.2.3