WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] Re: Oops when loading xen_platform_pci module in HVMdoma

To: "Yu, Ke" <ke.yu@xxxxxxxxx>
Subject: RE: [Xen-devel] Re: Oops when loading xen_platform_pci module in HVMdomain on CS 11429
From: Steve Dobbelstein <steved@xxxxxxxxxx>
Date: Fri, 8 Sep 2006 11:34:46 -0500
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 08 Sep 2006 09:35:13 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <117E3EB5059E4E48ADFF2822933287A4F92CB7@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
"Yu, Ke" <ke.yu@xxxxxxxxx> wrote on 09/07/2006 08:09:43 PM:

> Steve Dobbelstein wrote:
> > steved@xxxxxxxxxx wrote on 09/05/2006 07:56:00 PM:
> >
> > Digging into this further I found that the problem is that they
> > hypercall mechanism its trying to execute the instructions for the
> > hypercall which reside in the hypercall stubs page.  However, the
> > page table entry for the page has the _PAGE_NX (no execute) bit set.
> > (I'm running a 64-bit OS with PAE in the HVM domain.)  The error code
> > in the oops (0x11) indicates that the page fault is because of the
> > _PAGE_NX bit.  0x01 -> access rights violation  0x10 -> The fault was
> > caused by an instruction fetch.
> >
> > I tried hacking some code to turn off the NX bit in the PTE for the
> > hypercall stubs page, but I still get the oops.  I'm thinking it's
> > because the NX bit is set in the PMD.
> >
> > I'm quite new to the paging mechanism, so I'm not sure how to fix
> > this at the moment.   I'll keep poking around.  thought I'd share my
> > findings so far.
> >
> > Steve D.
> >
>
> I also meet this opps in IA32 Non-PAE guest . Since it has no NX bit
> in IA32, there may be other issue. Hope this info is helpful.
>
> Best Regards
> Ke
>
> Xen version 3.0.
> Hypercall area is 1 pages (order 0 allocation)
> Unable to handle kernel paging request at virtual address 1dd9c27c
>  printing eip:
> cdd9e00c
> *pde = 00000000
> Oops: 0002 [#1]
> PREEMPT
> Modules linked in: xen_platform_pci
> CPU:    0
> EIP:    0060:[<cdd9e00c>]    Not tainted VLI
> EFLAGS: 00010202   (2.6.16 #3)
> EIP is at 0xcdd9e00c
> eax: 1dd9c27c   ebx: 00000006   ecx: cdcffe04   edx: 00000000
> esi: 00000001   edi: cdcffe08   ebp: 00000006   esp: cdcffdf4
> ds: 007b   es: 007b   ss: 0068
> Process insmod (pid: 3778, threadinfo=cdcfe000 task=cfc16530)
> Stack: <0>0000007b d0809f53 d080a7af cdd9c000 00000000 00000000
> 00000000 00000007
>        00000000 f3000000 0000c100 d081100e 566e6558 65584d4d
> 4d4d566e cfeb0900
>        cfeb0800 cfeb0800 f3000000 cfeb0800 d0809667 c0454b00
> 0000c100 00000100
> Call Trace:
>  [<d0809f53>] setup_xen_features+0x43/0x90 [xen_platform_pci]
>  [<d081100e>] init_xen_info+0xe/0xa0 [xen_platform_pci]
>  [<d0809667>] platform_pci_init+0xf7/0x250 [xen_platform_pci]
>  [<c012a900>] __call_usermodehelper+0x0/0x70
>  [<c022caea>] pci_match_device+0x2a/0x120
>  [<c022cc65>] __pci_device_probe+0x65/0x80
>  [<c022ccaf>] pci_device_probe+0x2f/0x60
>  [<c02940e9>] driver_probe_device+0x99/0xf0
>  [<c02941c0>] __driver_attach+0x0/0x70
>  [<c0294227>] __driver_attach+0x67/0x70
>  [<c029347d>] bus_for_each_dev+0x5d/0x80
>  [<c0294255>] driver_attach+0x25/0x30
>  [<c02941c0>] __driver_attach+0x0/0x70
>  [<c0293a84>] bus_add_driver+0x84/0xe0
>  [<c0294783>] driver_register+0x63/0xa0
>  [<c0294700>] klist_devices_get+0x0/0x10
>  [<c0294710>] klist_devices_put+0x0/0x10
>  [<c022cf65>] __pci_register_driver+0x55/0x90
>  [<d08110b9>] platform_pci_module_init+0x19/0x50 [xen_platform_pci]
>  [<c0136cc2>] sys_init_module+0x132/0x200
>  [<c0103115>] syscall_call+0x7/0xb
> Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 00 00 00 00 00 00 00 00 00 00 f8 04 14 46 05 00 00 00 50 06 14 46
> <00> 00 00 00 50 06 14 46 00 00 00 00 00 00 00 00 00 00 00 00 00

Hi, Ke.

Thanks for the tip.  Your page fault appears to be after the hypercall.  On
my system the hypercall is at setup_xen_features+40.  Your page fault is at
setup_xen_features+0x43.  I'm running on a 64-bit OS, so I would expect my
code for  setup_xen_features to be a little larger than the 32-bit version.
That would mean the hypercall on the 32-bit version would be at or before
offset 0x40.  So I thing yours is page faulting after the hypercall.

Also, the error code in your oops indicates the fault was caused by a write
to a non-present page while in supervisor mode.  That's different from the
execution fault that I am seeing.

I'll be aware that once I fix the fault on the hypercall that I might run
into another page fault soon thereafter.

Steve D.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel