From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: about the patch: persistent grant maps for xen blk drivers Date: Mon, 15 Oct 2012 09:19:30 -0400 Message-ID: <20121015131930.GC4000@phenom.dumpdata.com> References: <6f0a356f.934c.13a62ccac9a.Coremail.liuxiaolei1124@163.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <6f0a356f.934c.13a62ccac9a.Coremail.liuxiaolei1124@163.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: liuxiaolei1124 , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Mon, Oct 15, 2012 at 01:01:51PM +0800, liuxiaolei1124 wrote: > Dear konrad: > i have seen you put the patch "persisten grant maps for xen blk drivers" into you kernel, then dom0 crash .(https://lkml.org/lkml/2012/9/21/388 )my dom0 kernel is 2.6.32.36-0.5, and i put this patch in my kernel, there is a bug too, and the stack is much like yours. And i found a strange phenomenon. when i add a printk log such as "printk ("enter func") " in blkif_completion or other function in xen-blkfront.c, guest run well. But after i remove this printk log, guest crash when i start. Hey. Roger posted a follow up patch that has this fixed. You should look at that. Also CC-ing xen-devel here. > and the crash stack is : > blkif_int -> blkif_completion > guest page fault in > > + if (bret->operation == BLKIF_OP_READ) > + rq_for_each_segment(bvec, s->request, iter) { > + shared_data = kmap_atomic > + (pfn_to_page(s->grants_used[i++]->frame)); // page fault > + bvec_data = bvec_kmap_irq(bvec, &flags); > + memcpy(bvec_data, shared_data + bvec->bv_offset, > + bvec->bv_len); > + bvec_kunmap_irq(bvec_data, &flags); > + kunmap_atomic(shared_data); > + } > > in kernel 2.6.32.36-0.5, my patch is : > > + if (bret->operation == BLKIF_OP_READ) > + rq_for_each_segment(bvec, s->request, iter) { > + shared_data = kmap_atomic > + (pfn_to_page(s->grants_used[i++]->frame), KM_USER0); > + bvec_data = bvec_kmap_irq(bvec, &flags); > + memcpy(bvec_data, shared_data + bvec->bv_offset, > + bvec->bv_len); > + bvec_kunmap_irq(bvec_data, &flags); > + kunmap_atomic(shared_data, KM_USER0); > + } > > I don't know what's wrong? mybe function kmap_atomic in my patch is incorrect. I look forward toyour reply, thank you. > > Best wishes. > eric.liu > > > > > > > > > > > > >