commit f974c68a797c8caa21db481bd52737800ff372db
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Mon Mar 30 00:50:57 2026 +0200

    linux: Fix buffer allocation for PAE
    
    Asking for DMA32 is not enough, we also need directmap, notably for
    read_bsd_label.

diff --git a/linux/dev/glue/block.c b/linux/dev/glue/block.c
index 6db77070..59462a86 100644
--- a/linux/dev/glue/block.c
+++ b/linux/dev/glue/block.c
@@ -84,10 +84,10 @@
 
 #include <linux/dev/glue/glue.h>
 
-#ifdef PAE
+#if defined(VM_PAGE_DMA32_LIMIT) && VM_PAGE_DMA32_LIMIT < VM_PAGE_DIRECTMAP_LIMIT
 #define VM_PAGE_LINUX VM_PAGE_DMA32
 #else
-#define VM_PAGE_LINUX VM_PAGE_HIGHMEM
+#define VM_PAGE_LINUX VM_PAGE_DIRECTMAP
 #endif
 
 /* This task queue is not used in Mach: just for fixing undefined symbols. */
@@ -312,7 +312,7 @@ alloc_buffer (int size)
 
   if (! linux_auto_config)
     {
-      while ((m = vm_page_grab (VM_PAGE_DMA32)) == 0)
+      while ((m = vm_page_grab (VM_PAGE_LINUX)) == 0)
 	VM_PAGE_WAIT (0);
       d = current_thread ()->pcb->data;
       assert (d);
