Subject: Re: Fault type values for uvm_fault()
To: Jason Thorpe <thorpej@shagadelic.org>
From: Matthias Drochner <M.Drochner@fz-juelich.de>
List: tech-kern
Date: 02/23/2006 14:54:09
This is a multipart MIME message.
--==_Exmh_113209397738900
Content-Type: text/plain; charset=us-ascii
thorpej@shagadelic.org said:
> If we're not going to bother to pass the correct fault type values to
> uvm_fault(), then we should simply eliminate that argument to
> uvm_fault() altogether.
Yes -- that argument is just used internally if uvm_fault() is called
by uvm_fault_wire(), to pass the WIRE/WIREMAX flags.
It doesn't look too hard to rearrange this and kill vm_fault_t
completely.
While we are here: Could someone check whether the appended patch
is correct? This would eliminate the last use of uvm_fault_wire()
in md code.
best regards
Matthias
--==_Exmh_113209397738900
Content-Type: text/plain ; name="armidlestack.txt"; charset=us-ascii
Content-Description: armidlestack.txt
Content-Disposition: attachment; filename="armidlestack.txt"
--- cpu.c.~1.61.~ Sun Jan 22 16:35:38 2006
+++ cpu.c Thu Feb 23 14:32:54 2006
@@ -599,18 +599,14 @@ cpu_alloc_idlepcb(struct cpu_info *ci)
vaddr_t uaddr;
struct pcb *pcb;
struct trapframe *tf;
- int error;
/*
* Generate a kernel stack and PCB (in essence, a u-area) for the
* new CPU.
*/
- if (uvm_uarea_alloc(&uaddr)) {
- error = uvm_fault_wire(kernel_map, uaddr, uaddr + USPACE,
- VM_FAULT_WIRE, VM_PROT_READ | VM_PROT_WRITE);
- if (error)
- return error;
- }
+ uaddr = uvm_km_alloc(kernel_map, USPACE, 0, UVM_KMF_WIRED);
+ if (!uaddr)
+ return ENOMEM;
ci->ci_idlepcb = pcb = (struct pcb *)uaddr;
/*
--==_Exmh_113209397738900--