[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [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 _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |