All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Campbell <Ian.Campbell@eu.citrix.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Todd Deshane <todd.deshane@xen.org>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	Jeremy Fitzhardinge <jeremy@goop.org>,
	David Vrabel <david.vrabel@citrix.com>,
	Anthony Wright <anthony@overnetdata.com>
Subject: Re: Kernel bug from 3.0 (was phy disks and vifs timing out in DomU)
Date: Thu, 1 Sep 2011 08:42:52 +0100	[thread overview]
Message-ID: <1314862972.28989.74.camel@zakaz.uk.xensource.com> (raw)
In-Reply-To: <20110831170711.GB13642@dumpdata.com>

On Wed, 2011-08-31 at 18:07 +0100, Konrad Rzeszutek Wilk wrote:
> On Wed, Aug 31, 2011 at 05:58:43PM +0100, David Vrabel wrote:
> > On 26/08/11 15:44, Konrad Rzeszutek Wilk wrote:
> > > 
> > > So while I am still looking at the hypervisor code to figure out why
> > > it would give me [when trying to map a grant page]:
> > > 
> > > (XEN) mm.c:3846:d0 Could not find L1 PTE for address fbb42000
> > 
> > It is failing in guest_map_l1e() because the page for the vmalloc'd
> > virtual address PTEs is not present.
> > 
> > The test that fails is:
> > 
> > (l2e_get_flags(l2e) & (_PAGE_PRESENT | _PAGE_PSE)) != _PAGE_PRESENT
> > 
> > I think this is because the GNTTABOP_map_grant_ref hypercall is done
> > when task->active_mm != &init_mm and alloc_vm_area() only adds PTEs into
> > init_mm so when Xen looks in the page tables it doesn't find the entries
> > because they're not there yet.
> > 
> > Putting a call to vmalloc_sync_all() after create_vm_area() and before
> > the hypercall makes it work for me.  Classic Xen kernels used to have
> > such a call.
> 
> That sounds quite reasonable.

I was wondering why upstream was missing the vmalloc_sync_all() in
alloc_vm_area() since the out-of-tree kernels did have it and the
function was added by us. I found this:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=ef691947d8a3d479e67652312783aedcf629320a

commit ef691947d8a3d479e67652312783aedcf629320a
Author: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Date:   Wed Dec 1 15:45:48 2010 -0800

    vmalloc: remove vmalloc_sync_all() from alloc_vm_area()
    
    There's no need for it: it will get faulted into the current pagetable
    as needed.
    
    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

The flaw in the reasoning here is that you cannot take a kernel fault
while processing a hypercall, so hypercall arguments must have been
faulted in beforehand and that is what the sync_all was for.

It's probably fair to say that the Xen specific caller should take care
of that Xen-specific requirement rather than pushing it into common
code. On the other hand Xen is the only user and creating a Xen specific
helper/wrapper seems a bit pointless.

Ian.

> > 
> > This presumably works on some systems/configuration and not others
> > depending on what else is using vmalloc(). i.e., if another kernel
> > thread (?) calls vmalloc() etc. then there will be a page for vmalloc
> > area PTEs and it will work.
> > 
> > I'll try and post a patch tomorrow.
> > 
> > Thanks to Ian Campbell for pointing me in the right direction.
> 
> Great! Thanks for hunting this one down.
> > 
> > David

  reply	other threads:[~2011-09-01  7:42 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <29902981.10.1311837224851.JavaMail.root@zimbra.overnetdata.com>
2011-07-28  7:24 ` phy disks and vifs timing out in DomU Anthony Wright
2011-07-28 15:01   ` Todd Deshane
2011-07-28 15:36     ` Anthony Wright
2011-07-28 15:46       ` Todd Deshane
2011-07-28 16:00         ` Anthony Wright
2011-07-29 15:55           ` Konrad Rzeszutek Wilk
2011-07-29 18:40             ` Anthony Wright
2011-07-29 20:01               ` Konrad Rzeszutek Wilk
2011-07-30 17:05                 ` Anthony Wright
2011-08-01 11:03                   ` Anthony Wright
2011-07-28 16:28       ` Ian Campbell
2011-07-29  7:53         ` Kernel bug from 3.0 (was phy disks and vifs timing out in DomU) Anthony Wright
2011-08-03 15:28           ` Konrad Rzeszutek Wilk
2011-08-09 16:35             ` Konrad Rzeszutek Wilk
2011-08-19 10:22             ` Anthony Wright
2011-08-19 12:56               ` Konrad Rzeszutek Wilk
2011-08-22 11:02                 ` Anthony Wright
2011-08-25 20:31                 ` Anthony Wright
2011-08-26 14:26                   ` Konrad Rzeszutek Wilk
2011-08-26 14:44                     ` Konrad Rzeszutek Wilk
2011-08-29 12:13                       ` Anthony Wright
2011-08-31 16:58                       ` David Vrabel
2011-08-31 17:07                         ` Konrad Rzeszutek Wilk
2011-09-01  7:42                           ` Ian Campbell [this message]
2011-09-01 14:23                             ` Konrad Rzeszutek Wilk
2011-09-01 15:12                               ` David Vrabel
2011-09-01 15:37                                 ` Konrad Rzeszutek Wilk
2011-09-01 15:43                                   ` Ian Campbell
2011-09-01 16:07                                     ` Konrad Rzeszutek Wilk
2011-09-07 12:57                                 ` Anthony Wright
2011-09-07 18:35                                   ` Konrad Rzeszutek Wilk
2011-09-01 15:12                               ` Ian Campbell
2011-09-01 15:38                                 ` Konrad Rzeszutek Wilk
2011-09-01 15:44                                   ` Ian Campbell
2011-09-01 17:34                                     ` Jeremy Fitzhardinge
2011-09-01 19:19                                       ` Ian Campbell
2011-09-01 17:32                             ` Jeremy Fitzhardinge
2011-09-01 19:21                               ` Ian Campbell
2011-09-01 20:34                                 ` Jeremy Fitzhardinge
2011-09-02  7:17                                   ` Ian Campbell
2011-09-02 20:26                                     ` Jeremy Fitzhardinge
2011-09-03 10:27                                       ` Ian Campbell
2011-09-23 12:35                                         ` Anthony Wright
2011-09-23 12:49                                           ` David Vrabel
2011-08-29 17:33                     ` Anthony Wright
2011-08-25 21:11                 ` Anthony Wright
2011-08-26  7:10                   ` Sander Eikelenboom
2011-08-26 11:23                     ` Pasi Kärkkäinen
2011-08-26 12:16                   ` Stefano Stabellini
2011-08-26 12:15                     ` Anthony Wright
2011-08-26 12:32                       ` Stefano Stabellini
2011-07-29 15:48         ` phy disks and vifs timing out in DomU (only on certain hardware) Anthony Wright
2011-07-29 16:06           ` Konrad Rzeszutek Wilk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1314862972.28989.74.camel@zakaz.uk.xensource.com \
    --to=ian.campbell@eu.citrix.com \
    --cc=anthony@overnetdata.com \
    --cc=david.vrabel@citrix.com \
    --cc=jeremy@goop.org \
    --cc=konrad.wilk@oracle.com \
    --cc=todd.deshane@xen.org \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.