From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jacob Gorm Hansen Subject: Re: netif_suspend / resume Date: Fri, 20 May 2005 15:30:38 -0700 Message-ID: <428E650E.3070409@diku.dk> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Pratt Cc: Xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Ian Pratt wrote: > The guest keeps its own shadow copy of the state as regards which pfn's > it has queued as {free, rx, tx}bufs. After a resume it 'gathers' those > pages and requeues the free and tx bufs to the new backend. > > We currently junk any outstanding rxbufs, but in reality there almost > never are any as the vif interrupt will be serviced before the suspend > thread gets to run. When we switch over to grant tables we'll be able to > process these on the destination too, as we'll know the memory has been > syncronized. It won't make difference, though. With the latest unstable, I am trying to do this: __cli(); netif_suspend(); time_suspend(); ctrl_if_suspend(); irq_suspend(); irq_resume(); ctrl_if_resume(); time_resume(); netif_resume(); __sti(); (The domU has no blockdev support compiled in). But I immediately crash trying to reference 0x050d4286 in network_tx_buf_gc(), at the last instruction in the disasm below: c0222e20 : c0222e20: 55 push %ebp c0222e21: 57 push %edi c0222e22: 56 push %esi c0222e23: 53 push %ebx c0222e24: 83 ec 04 sub $0x4,%esp c0222e27: 8b 44 24 18 mov 0x18(%esp),%eax c0222e2b: 89 04 24 mov %eax,(%esp) c0222e2e: 89 c6 mov %eax,%esi c0222e30: 81 c6 20 02 00 00 add $0x220,%esi c0222e36: 83 be 88 00 00 00 02 cmpl $0x2,0x88(%esi) c0222e3d: 74 06 je c0222e45 c0222e3f: 58 pop %eax c0222e40: 5b pop %ebx c0222e41: 5e pop %esi c0222e42: 5f pop %edi c0222e43: 5d pop %ebp c0222e44: c3 ret c0222e45: 8b 56 74 mov 0x74(%esi),%edx c0222e48: 90 nop c0222e49: 8d b4 26 00 00 00 00 lea 0x0(%esi),%esi c0222e50: 8b 7a 08 mov 0x8(%edx),%edi c0222e53: f0 83 44 24 00 00 lock addl $0x0,0x0(%esp) c0222e59: 8b 5e 6c mov 0x6c(%esi),%ebx c0222e5c: 39 fb cmp %edi,%ebx c0222e5e: 74 42 je c0222ea2 c0222e60: 0f b6 c3 movzbl %bl,%eax c0222e63: 8b 6e 74 mov 0x74(%esi),%ebp c0222e66: 8d 04 40 lea (%eax,%eax,2),%eax c0222e69: c1 e0 02 shl $0x2,%eax c0222e6c: 8b 96 a8 00 00 00 mov 0xa8(%esi),%edx c0222e72: 01 e8 add %ebp,%eax c0222e74: 0f b7 40 10 movzwl 0x10(%eax),%eax c0222e78: 8b 8c 86 a8 00 00 00 mov 0xa8(%esi,%eax,4),%ecx c0222e7f: 89 94 86 a8 00 00 00 mov %edx,0xa8(%esi,%eax,4) c0222e86: 89 86 a8 00 00 00 mov %eax,0xa8(%esi) c0222e8c: ff 89 84 00 00 00 decl 0x84(%ecx) ^^^^^^^^^^ Any hints for debugging this? thanks, Jacob