From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhai, Edwin" Subject: switch out of 32e mode issue Date: Tue, 3 Jul 2007 14:51:49 +0800 Message-ID: <20070703065148.GD20797@edwin-srv.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Pratt Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Ian, I have read the your changeset 13830 "[XEN] kexec: add compatability shim for kexec in 32on64 mode", which seems to be used for kexec a 32b kernel on 32e xen. I borrow some of the code from xen/arch/x86/x86_64/compat_kexec.S for similar purpose(switch out of 32e mode in xen) by similar way: 1. setup identity map in idle_pg_table then switch to it. 2. ljmp to a identity map code in another code segment of compatibility mode 3. turn of paging by clear CR0.PG 4. load a new cr3 with legacy page table 5. clear EFER.LME 6. turn on paging by set CR0.PG 7. a branch instruction But I always have a GP fault in step 3 when mov cr0:( (XEN) **************************************** (XEN) Panic on CPU 0: (XEN) GENERAL PROTECTION FAULT (XEN) [error_code=0000] (XEN) **************************************** Do you have successful run for the above code? Your code missed step 7, does it matter? Do you have any comments for the GP fault? Thanks a lot. -- best rgds, edwin