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] Xen/IPF Unstable CS#18694, Linux#706, ioemu#b4d410a

To: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Subject: RE: [Xen-ia64-devel] Xen/IPF Unstable CS#18694, Linux#706, ioemu#b4d410a1.. Status --- 1 new
From: "Zhang, Xiantao" <xiantao.zhang@xxxxxxxxx>
Date: Fri, 31 Oct 2008 10:03:59 +0800
Accept-language: en-US
Acceptlanguage: en-US
Cc: "xen-ia64-devel@xxxxxxxxxxxxxxxxxxx" <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Thu, 30 Oct 2008 19:04:08 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20081031014532.GD23307%yamahata@xxxxxxxxxxxxx>
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/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
References: <BB1F052FCDB1EA468BD99786C8B1ED2C01CD50C3AA@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20081030025926.GD18021%yamahata@xxxxxxxxxxxxx> <706158FABBBA044BAD4FE898A02E4BC2140C861C@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <706158FABBBA044BAD4FE898A02E4BC21410EF99@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20081031014532.GD23307%yamahata@xxxxxxxxxxxxx>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Ack6+mPg2WrSAhzkSgCwiGottfNV2wAAnWGQ
Thread-topic: [Xen-ia64-devel] Xen/IPF Unstable CS#18694, Linux#706, ioemu#b4d410a1.. Status --- 1 new
Here it is! :)
 
PATCH: Fix HVM VGA abnormal. 

Conversion from p2m entry to physical address, it needs to use
_PAGE_PPN_MASK to mask out some bits which are used by other
purposes by p2m entry.

Sign-off-by : Xiantao Zhang <xiantao.zhang@xxxxxxxxx>
diff -r 4a5acf020c0f xen/arch/ia64/vmx/vtlb.c
--- a/xen/arch/ia64/vmx/vtlb.c  Thu Oct 30 11:51:55 2008 +0900
+++ b/xen/arch/ia64/vmx/vtlb.c  Thu Oct 30 21:57:38 2008 +0800
@@ -522,7 +522,8 @@
      * which is required by vga acceleration since qemu maps shared
      * vram buffer with WB.
      */
-    if (mfn_valid(maddr >> PAGE_SHIFT) && phy_pte.ma != VA_MATTR_NATPAGE)
+    if (mfn_valid((maddr & _PAGE_PPN_MASK) >> PAGE_SHIFT) 
+                               && phy_pte.ma != VA_MATTR_NATPAGE)
         phy_pte.ma = VA_MATTR_WB;
 
     maddr = ((maddr & _PAGE_PPN_MASK) & PAGE_MASK) | (paddr & ~PAGE_MASK);
diff -r 4a5acf020c0f xen/arch/ia64/xen/mm.c
--- a/xen/arch/ia64/xen/mm.c    Thu Oct 30 11:51:55 2008 +0900
+++ b/xen/arch/ia64/xen/mm.c    Thu Oct 30 21:57:38 2008 +0800
@@ -926,7 +926,8 @@
     /* in HVM guest, when VTD is enabled,
      * P2M entry may change from _PAGE_IO type to real MMIO page 
      */
-    if(VMX_DOMAIN(d->vcpu[0]) && (pte_val(ret_pte) & _PAGE_IO)) {
+    if(is_hvm_domain(d) && (pte_val(ret_pte) & _PAGE_IO) && 
+       !mfn_valid(physaddr >> PAGE_SHIFT)) {
         old_pte = ret_pte;
         goto again_hvm_page_io;
     } 

-----Original Message-----
From: Isaku Yamahata [mailto:yamahata@xxxxxxxxxxxxx] 
Sent: Friday, October 31, 2008 9:46 AM
To: Zhang, Xiantao
Cc: Zhang, Jingke; xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-ia64-devel] Xen/IPF Unstable CS#18694, Linux#706, 
ioemu#b4d410a1.. Status --- 1 new

Oh great. Thank you for debugging.
Could you provide your signed-off-by?


On Thu, Oct 30, 2008 at 11:07:56PM +0800, Zhang, Xiantao wrote:
> I found the reason why mfn_valid behaves abnormally.  We should mask out 
> TLB_TRACK bits  from p2m entry before using it as mfn_valid's parameter. 
> 
> diff -r 4a5acf020c0f xen/arch/ia64/vmx/vtlb.c
> --- a/xen/arch/ia64/vmx/vtlb.c        Thu Oct 30 11:51:55 2008 +0900
> +++ b/xen/arch/ia64/vmx/vtlb.c        Thu Oct 30 21:57:38 2008 +0800
> @@ -522,7 +522,8 @@
>       * which is required by vga acceleration since qemu maps shared
>       * vram buffer with WB.
>       */
> -    if (mfn_valid(maddr >> PAGE_SHIFT) && phy_pte.ma != VA_MATTR_NATPAGE)
> +    if (mfn_valid((maddr & _PAGE_PPN_MASK) >> PAGE_SHIFT) 
> +                             && phy_pte.ma != VA_MATTR_NATPAGE)
>          phy_pte.ma = VA_MATTR_WB;
>  
>      maddr = ((maddr & _PAGE_PPN_MASK) & PAGE_MASK) | (paddr & ~PAGE_MASK);
> diff -r 4a5acf020c0f xen/arch/ia64/xen/mm.c
> --- a/xen/arch/ia64/xen/mm.c  Thu Oct 30 11:51:55 2008 +0900
> +++ b/xen/arch/ia64/xen/mm.c  Thu Oct 30 21:57:38 2008 +0800
> @@ -926,7 +926,8 @@
>      /* in HVM guest, when VTD is enabled,
>       * P2M entry may change from _PAGE_IO type to real MMIO page 
>       */
> -    if(VMX_DOMAIN(d->vcpu[0]) && (pte_val(ret_pte) & _PAGE_IO)) {
> +    if(is_hvm_domain(d) && (pte_val(ret_pte) & _PAGE_IO) && 
> +     !mfn_valid(physaddr >> PAGE_SHIFT)) {
>          old_pte = ret_pte;
>          goto again_hvm_page_io;
>      }
> 
> 
> 
> Zhang, Xiantao wrote:
> > Isaku Yamahata wrote:
> >> On Wed, Oct 29, 2008 at 04:10:50PM +0800, Zhang, Jingke wrote:
> >>> Hi all,
> >>>     There is one new regression in Cset#18691. With latest
> >>> Cset#18694, all the case can pass!
> >>> 
> >>>     One regression between Cset#18688 and Cset#18691: ==============
> >>>     1. Qemu graphic mode display abnormally while booting
> >>>         VTI_Windows and Linux-Xwin. This issue existed in either
> >>> sdl=1 or vnc=1 mode. And this issue does not exist with Cset#18688.
> >> 
> >> Hmm, I suspect the change set 18689:7ad8c47f5c4b. But I'm not sure.
> > Hi, Isaku
> >     We found the cause,maybe rootcause.  18669 may has a poetentail
> > issue, but doesn't lead to the issue.  We found valid_mfn() doesn't
> > work in its way, and seems it is buggy.  I have no enough time to
> > debug it, but the following patch should fix the current issue.   
> > 
> > diff -r a6b1be5a83de xen/arch/ia64/vmx/vtlb.c
> > --- a/xen/arch/ia64/vmx/vtlb.c  Wed Oct 29 11:02:23 2008 +0900
> > +++ b/xen/arch/ia64/vmx/vtlb.c  Thu Oct 30 13:47:08 2008 +0800
> > @@ -522,7 +522,7 @@
> >       * which is required by vga acceleration since qemu maps shared
> >       * vram buffer with WB.
> >       */
> > -    if (mfn_valid(maddr >> PAGE_SHIFT) && phy_pte.ma ==
> > VA_MATTR_NATPAGE) +    if (!(maddr >> 61) && phy_pte.ma ==
> >          VA_MATTR_NATPAGE) phy_pte.ma = VA_MATTR_WB;
> > 
> >      maddr = ((maddr & _PAGE_PPN_MASK) & PAGE_MASK) | (paddr &
> > ~PAGE_MASK); 
> > 
> > Xiantao
> > _______________________________________________
> > 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

-- 
yamahata

Attachment: fix-vga-abnormal.patch
Description: fix-vga-abnormal.patch

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