From 19c997ffb187fa972ee676f70314969915c35584 Mon Sep 17 00:00:00 2001 From: nwhitehorn Date: Sun, 15 Jan 2012 00:08:14 +0000 Subject: Rework SLB trap handling so that double-faults into an SLB trap handler are possible, and double faults within an SLB trap handler are not. The result is that it possible to take an SLB fault at any time, on any address, for any reason, at any point in the kernel. This lets us do two important things. First, it removes the (soft) 16 GB RAM ceiling on PPC64 as well as any architectural limitations on KVA space. Second, it lets the kernel tolerate poorly designed hypervisors that have a tendency to fail to restore the SLB properly after a hypervisor context switch. MFC after: 6 weeks --- sys/powerpc/include/pcpu.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sys/powerpc/include') diff --git a/sys/powerpc/include/pcpu.h b/sys/powerpc/include/pcpu.h index 2dac1b4..62094f8 100644 --- a/sys/powerpc/include/pcpu.h +++ b/sys/powerpc/include/pcpu.h @@ -55,7 +55,9 @@ struct pmap; #define PCPU_MD_AIM64_FIELDS \ struct slb pc_slb[64]; \ - struct slb **pc_userslb; + struct slb **pc_userslb; \ + register_t pc_slbsave[18]; \ + uint8_t pc_slbstack[1024]; #ifdef __powerpc64__ #define PCPU_MD_AIM_FIELDS PCPU_MD_AIM64_FIELDS -- cgit v1.1