WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

Re: [Xen-ia64-devel] RE: vcpu_translate issue

To: "Magenheimer, Dan (HP Labs Fort Collins)" <dan.magenheimer@xxxxxx>
Subject: Re: [Xen-ia64-devel] RE: vcpu_translate issue
From: Matt Chapman <matthewc@xxxxxxxxxxxxxxx>
Date: Thu, 10 Nov 2005 18:05:59 +1100
Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 10 Nov 2005 07:06:11 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <516F50407E01324991DD6D07B0531AD57E7F5D@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
References: <516F50407E01324991DD6D07B0531AD57E7F5D@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.9i
Dom0 no longer boots for me with the latest changes.  Normally I
would get errors like:

Setting up X server socket directory /tmp/.X11-unix...vcpu_translate: bad 
address 0000000000000000, viip=2000000000604390, vipsr=0000001308026018, 
iip=a0000001002d46e0, ipsr=0000101208226018 continuing
done.
Setting up ICE socket directory /tmp/.ICE-unix...(XEN) vcpu_translate: bad 
address 0000000000000000, viip=2000000000604390, vipsr=0000001308026038, 
iip=a0000001002d46e0, ipsr=0000101208226038 continuing
done.
...
Starting Distributed Compiler Daemon: distccd(XEN) vcpu_translate: bad address 
0000000000000000, viip=2000000000604390, vipsr=0000001308026038, 
iip=a0000001002d46e0, ipsr=0000101208226038 continuing
.

and it would keep booting, whereas with the latest vcpu_translate
changes it dies there.  The reason being that vcpu_translate
no longer inserts a physical mapping in the "bad address" case...
previously it would just map page 0 at 0 and Linux would keep
going :)

This raises two issues:

- The null-pointer dereferences in __strncpy_from_user, which
  is the root cause of this.  Does anyone know the cause?  Maybe
  it's normal?  Usually it would just return -EFAULT to the user,
  so maybe it's just libc/application brokenness that happens on
  real hardware too.

- Xen handling of NULL pointer dereferences is wrong.  If I recall
  correctly from vNUMA, we should be delivering a NaT consumption
  fault, because Linux maps a NaTpage at 0.  Ideally the NaTpage
  memory attribute should be propagated into the real mapping, and
  then we can reflect the NaT consumption fault directly to Linux.
  If we deliver a TLB miss as we are doing, Linux will just try to
  repeatedly reinsert that mapping.

Matt


On Wed, Nov 09, 2005 at 01:38:26PM -0800, Magenheimer, Dan (HP Labs Fort 
Collins) wrote:
> Hmmm... by changing the metaphysical address handling code
> in vcpu_translate, I seem to have uncovered a latent bug:
> Sometimes vcpu_translate is being called with a virtual
> address even though the domain is in metaphysical mode.
> Previously these were incorrectly(?) just direct mapped.
> 
> Rather than back out the changes, I have changed the panic
> to a printk.  If you see some "vcpu_translate: bad physical
> address" messages, don’t be surprised, but you can ignore
> it unless you want to help track down and fix the problem.
> 
> Mmap09 is not printing this message so the problem is
> (apparently) unrelated.
> 
> Dan
> 
> > -----Original Message-----
> > From: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> > [mailto:xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf 
> > Of Magenheimer, Dan (HP Labs Fort Collins)
> > Sent: Wednesday, November 09, 2005 11:29 AM
> > To: Xu, Anthony
> > Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> > Subject: [Xen-ia64-devel] RE: vcpu_translate issue
> > 
> > FYI, in case anyone else might look at this:
> > 
> > I made a fix so that vcpu_translate supports region0
> > (and doesn't print out the message), but ltp-mmap09
> > still doesn't work (goes into a silent infinite loop).
> > 
> > I don't have access to a hardware debugger right
> > now so have committed the change in case anyone
> > else is able to look at mmap09 in more detail.
> > 
> > Dan
> > 
> > > -----Original Message-----
> > > From: Xu, Anthony [mailto:anthony.xu@xxxxxxxxx] 
> > > Sent: Friday, November 04, 2005 11:56 PM
> > > To: Magenheimer, Dan (HP Labs Fort Collins)
> > > Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> > > Subject: RE: vcpu_translate issue
> > > 
> > > Dan,
> > > 
> > > I just want to run some testcases like ltp to make dom0 more 
> > > stable. If this is the case I have no choice but to defer 
> > those tests.
> > > 
> > > 
> > > Thanks
> > > Anthony
> > > 
> > > >-----Original Message-----
> > > >From: Magenheimer, Dan (HP Labs Fort Collins) 
> > > [mailto:dan.magenheimer@xxxxxx]
> > > >Sent: 2005年11月4日 22:13
> > > >To: Xu, Anthony
> > > >Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> > > >Subject: RE: vcpu_translate issue
> > > >
> > > >The warning is there because the current code doesn't yet
> > > >work properly for a region 0 virtual address.  Even
> > > >if you remove the printf, I don't think ltp mmap09 will
> > > >work properly because the current code assumes
> > > >incorrectly that every region 0 access is a guest
> > > >physical access.  Bug!  I think this is the first time
> > > >we have seen a region 0 virtual address.
> > > >
> > > >Also, the printf is very good at catching problems when
> > > >there is a new bug in Xen so it would be nice to
> > > >keep the printf.  Perhaps it could be tied to a
> > > >Xen command line option: warnregion0.  E.g.
> > > >
> > > >if (metaphysical) {
> > > > if (address >> 61)
> > > >         panic_domain(("bad metaphysical address")
> > > > else {
> > > >         ... existing phys translate code
> > > > }
> > > >{
> > > >else if (!(address >> 61) && warnregion0) {
> > > > printf
> > > >}
> > > >
> > > >I think this code will also fix region 0 virtual addresses
> > > >(because it properly falls through to the rest of
> > > >vcpu_translate).
> > > >
> > > >> -----Original Message-----
> > > >> From: Xu, Anthony [mailto:anthony.xu@xxxxxxxxx]
> > > >> Sent: Friday, November 04, 2005 3:20 AM
> > > >> To: Magenheimer, Dan (HP Labs Fort Collins)
> > > >> Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> > > >> Subject: vcpu_translate issue
> > > >>
> > > >> Dan,
> > > >>
> > > >> In vcpu_translate function, if guest address is within region
> > > >> 0 and guest is in virtual mode, vcpu_translate will print
> > > >> warning message and don't translate. It seems you assume
> > > >> guest will not access this kind of address, but actually
> > > >> guest application can allocate region 0 address spaces by
> > > >> using system call mmap.
> > > >>
> > > >> You can try testcase mmap09 of ltp on both native and xen0 to
> > > >> find out this.
> > > >>
> > > >> So, Can we remove this code segment in vcpu_translate?
> > > >>
> > > >> Thanks,
> > > >> Anthony.
> > > >>
> > > >>
> > > 
> > 

> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-ia64-devel

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel

<Prev in Thread] Current Thread [Next in Thread>