[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-ia64-devel][PATCH 3/3]provide hypercall the samepathwithsyscall


  • To: "Alex Williamson" <alex.williamson@xxxxxx>
  • From: "Xu, Anthony" <anthony.xu@xxxxxxxxx>
  • Date: Mon, 15 Jan 2007 12:28:21 +0800
  • Cc: xen-ia64-devel <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Sun, 14 Jan 2007 20:27:56 -0800
  • List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
  • Thread-index: Acc4M2thR+bA/uALRGya7lAwP9fQ0wAKaErw
  • Thread-topic: [Xen-ia64-devel][PATCH 3/3]provide hypercall the samepathwithsyscall

Alex,

This patch fixed this issue.

Using the new hypercall path, scratch registers are not saved/restored.

So after returning from hypercall, r20 may contain garbage data,
This triggerred General Exception.

--Anthony

@@ -49,6 +49,5 @@ GLOBAL_ENTRY(xencomm_arch_hypercall_susp
        ;;
        break 0x1000
        ;; 
-       mov ar.pfs=r20
        br.ret.sptk.many b0



Alex Williamson write on 2007年1月15日 7:26:
> On Sat, 2007-01-13 at 17:44 +0800, Xu, Anthony wrote:
>> Hi Alex,
>> 
>> Sorry, I ignored multicall,
>> This patch makes domU boot.
> 
> Hi Anthony,
> 
>    Thanks, that gets things nearly working.  I'm now seeing a
> regression 
> in save/restore with these patches (I have all of your patches applied
> to my current test tree, including the lost_one_hypercall.patch, which
> touches the problem area below).  If I save/restore a domU in a loop
> (while (true); do xm save foo > /tmp/foo.sav ; xm restore
> /tmp/foo.sav; 
> done), the save will hang, and I see this on the domU console:
> 
> suspend[2040]: General Exception: IA-64 Reserved Register/Field fault
> (data access) 4398046511152 [1] Modules linked in:
> 
> Pid: 2040, CPU 0, comm:              suspend
> psr : 00001410085a2010 ifs : 8000000000000000 ip  :
> [<a000000100069b42>]    Not tainted 
> ip is at xencomm_arch_hypercall_suspend+0x22/0x40
> unat: 0000000000000000 pfs : 8000000000000184 rsc : 000000000000000b
> rnat: 0000000000000000 bsps: 0000000000000000 pr  : 000000000000a101
> ldrs: 0000000000000000 ccv : 0000000000000000 fpsr: 0009804c8a70433f
> csd : 0000000000000000 ssd : 0000000000000000
> b0  : a00000010006ea70 b6  : a0000001000bd4a0 b7  : a000000100068f30
> f6  : 0fffbccccccccc8c00000 f7  : 0ffe5f045600000000000
> f8  : 1000bbdd8000000000000 f9  : 10002a000000000000000
> f10 : 1000897dffffffcff2200 f11 : 1003e000000000000025f
> r1  : a00000010104ece0 r2  : e0000000fe027dd0 r3  : e0000000fe027dd8
> r8  : 0000000000000000 r9  : 00000000000000f8 r10 : 0000000000000000
> r11 : 0000000000000001 r12 : e0000000f8177e10 r13 : e0000000f8170000
> r14 : e0000000fe027bd8 r15 : 000000000000001d r16 : 8000000000000b1d
> r17 : 0000000000000000 r18 : 0009804c8a70433f r19 : 0000000000000000
> r20 : 00000000f8170000 r21 : e0000000f8170308 r22 : e0000000fe020308
> r23 : 00100000f8170661 r24 : 0000000000000000 r25 : 0000000000000002
> r26 : 00000000000000f8 r27 : 00000000000000fe r28 : a000000100068f30
> r29 : 0000000000000000 r30 : 0000000000000000 r31 : 0000000000000000
> 
> Call Trace:
>  [<a00000010001cfe0>] show_stack+0x40/0xa0
>                                 sp=e0000000f8177830
>  bsp=e0000000f8171150 [<a00000010001d8e0>] show_regs+0x840/0x880
>                                 sp=e0000000f8177a00
>  bsp=e0000000f81710f8 [<a000000100042660>] die+0x1c0/0x3a0
>                                 sp=e0000000f8177a00
>  bsp=e0000000f81710b0 [<a000000100042890>] die_if_kernel+0x50/0x80
>                                 sp=e0000000f8177a20
>  bsp=e0000000f8171080 [<a0000001000439e0>] ia64_fault+0x1120/0x1240
>                                 sp=e0000000f8177a20
>  bsp=e0000000f8171028 [<a0000001000694a0>] xen_leave_kernel+0x0/0x3c0
>                                 sp=e0000000f8177c40
>  bsp=e0000000f8171028 [<a000000100069b40>]
>                                
>  xencomm_arch_hypercall_suspend+0x20/0x40 sp=e0000000f8177e10
>                                 bsp=e0000000f8171028
>  [<a00000010006ea70>] xencomm_hypercall_suspend+0x50/0x80
>                                 sp=e0000000f8177e10
>  bsp=e0000000f8171010 [<a0000001006a6af0>] __xen_suspend+0x190/0x2e0
>                                 sp=e0000000f8177e20
>  bsp=e0000000f8170fe8 [<a0000001006a6340>] xen_suspend+0x20/0x60
>                                 sp=e0000000f8177e20
>  bsp=e0000000f8170fd0 [<a0000001000bd200>] kthread+0x180/0x200
>                                 sp=e0000000f8177e20
>  bsp=e0000000f8170f98 [<a00000010001b450>]
>                                 kernel_thread_helper+0x30/0x60
>  sp=e0000000f8177e30 bsp=e0000000f8170f70 [<a0000001000110c0>]
>  start_kernel_thread+0x20/0x40 sp=e0000000f8177e30
> bsp=e0000000f8170f70 BUG: suspend/2040, lock held at task exit time!
> [a000000100fb8740] {xs_init} .. held by:           suspend: 2040
> [e0000000f8170000, 110] ... acquired at:              
> xs_suspend+0x180/0x1a0  
> 
> This happened on the second save in both of my attempts, but I don't
> know if it's completely deterministic.  Thanks,
> 
>       Alex

Attachment: save_restore.patch
Description: save_restore.patch

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.