On 18/11/15 17:21, Boris Ostrovsky wrote: > On 11/18/2015 11:16 AM, Wei Liu wrote: >> On Wed, Nov 18, 2015 at 11:11:16AM -0500, Boris Ostrovsky wrote: >>> On 11/12/2015 08:43 AM, Juergen Gross wrote: >>>> In order to prepare a p2m list outside of the initial kernel mapping >>>> do a rework of the domain builder's page table handler. The goal is >>>> to be able to use common helpers for page table allocation and setup >>>> for initial kernel page tables and page tables mapping the p2m list. >>>> This is achieved by supporting multiple mapping areas. The mapped >>>> virtual addresses of the single areas must not overlap, while the >>>> page tables of a new area added might already be partially present. >>>> Especially the top level page table is existing only once, of course. >>>> >>>> Currently restrict the number of mappings to 1 because the only mapping >>>> now is the initial mapping created by toolstack. There should not be >>>> behaviour change and guest visible change introduced. >>>> >>>> Signed-off-by: Juergen Gross >>>> Reviewed-by: Wei Liu >>> --- >>>> tools/libxc/xc_dom_x86.c | 479 >>>> ++++++++++++++++++++++++----------------------- >>>> tools/libxc/xg_private.h | 39 +--- >>>> 2 files changed, 252 insertions(+), 266 deletions(-) >>> This broke PVH. I get a triple fault (somewhere in clear_page(), so the >>> guest have run a little) >>> >> Is there any output? We just noticed 32 bit pvgrub is broken. Not sure >> these two problems are related but the more information the better. > > > Not much: > > (d3) mapping kernel into physical memory > (XEN) d3v0 Triple fault - invoking HVM shutdown action 0 > > I then looked at RIP and it was pointing to 'mov %rax,(%rdi)' in > clear_page_orig(). I didn't check what %rdi was. I think I've found the bug. I dropped the special case for pvh to map page tables writable. Can you try the attached patch, please? Juergen