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
save_restore.patch
Description: save_restore.patch
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|