uvm(9) clarifications wrt. uvm_km_alloc() / uvm_km_free()

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Wouter Coene
Date: Wednesday, December 8, 2010 - 8:49 am

Hi,

Having spent quite some hours figuring out why the kernel panics when I free
memory allocated through uvm_km_kmemalloc() with uvm_km_free()
("pmap_remove_pte: managed page without PG_PVLIST for <address>" on amd64),
I added the following clarification to uvm(9):

Index: uvm.9
===================================================================
RCS file: /cvs/openbsd/src/share/man/man9/uvm.9,v
retrieving revision 1.42
diff -u -a -r1.42 uvm.9
--- uvm.9	9 Nov 2010 16:03:38 -0000	1.42
+++ uvm.9	8 Dec 2010 15:41:28 -0000
@@ -518,7 +518,7 @@
 .Fn uvm_km_zalloc
 functions allocate
 .Fa size
-bytes of wired kernel memory in map
+bytes of page-aligned wired kernel memory in map
 .Fa map .
 In addition to allocation,
 .Fn uvm_km_zalloc
@@ -532,9 +532,15 @@
 .Fn uvm_km_alloc1
 function allocates and returns
 .Fa size
-bytes of wired memory in the kernel map, zeroing the memory if the
+bytes of page-aligned wired memory in the kernel map, zeroing the memory if
+the
 .Fa zeroit
-argument is non-zero.
+argument is non-zero. Unless called on an interrupt-safe map, if memory is
+currently unavailable,
+.Fn uvm_km_alloc1
+may sleep to wait for resources to be released by other processes. If not
+enough memory is available, this function returns
+.Dv NULL .
 .Pp
 The
 .Fn uvm_km_kmemalloc
@@ -607,10 +613,15 @@
 .Fa size
 bytes of memory in the kernel map, starting at address
 .Fa addr .
+The memory must have been allocated with
+.Fn uvm_km_alloc ,
+.Fn uvm_km_zalloc
+or
+.Fn uvm_km_alloc1 .
 .Fn uvm_km_free_wakeup
-calls
-.Fn thread_wakeup
-on the map before unlocking the map.
+wakes up any processes waiting for memory on the map (via 
+.Fn thread_wakeup )
+before unlocking the map.
 .Sh ALLOCATION OF PHYSICAL MEMORY
 .nr nS 1
 .Ft struct vm_page *

Is this correct? And if so, any chance this could go in?

Regards,
Wouter Coene
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
uvm(9) clarifications wrt. uvm_km_alloc() / uvm_km_free(), Wouter Coene, (Wed Dec 8, 8:49 am)
Re: uvm(9) clarifications wrt. uvm_km_alloc() / uvm_km_free(), Ariane van der Steldt, (Thu Dec 9, 12:32 am)
Re: uvm(9) clarifications wrt. uvm_km_alloc() / uvm_km_free(), Ariane van der Steldt, (Fri Dec 10, 12:47 am)
Re: uvm(9) clarifications wrt. uvm_km_alloc() / uvm_km_free(), Ariane van der Steldt, (Wed Dec 15, 8:56 pm)