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] [PATCH] VP model doesn't pass the whole ACPI table

Hi Alex,

Exactly you are right. 
EFI memmap command tells the actual size is not zero.
I attached the result.

And I tried your patch immediately. 
But it causes another problem that I can't boot xen.
The attachment is its log. System RAM becomes 1MB.

I'll investigate it.

Thanks so much,
Kouya

Alex Williamson writes:
 > On Wed, 2006-06-07 at 09:05 -0600, Alex Williamson wrote:
 > > Hi Kouya,
 > > 
 > >    Yes, I do too.  Does the PRIMEQUEST have a memmap command from the
 > > EFI shell that reports the original MDT as reported by firmware?  I
 > > notice this range reports both WB and UC attributes.  I wonder if the
 > > zero size is a result of the efi trim_top/trim_bottom calls zero-ing out
 > > that range to prevent attribute aliasing.  On my system the ACPI reclaim
 > > memory is only reported with the UC attribute and therefore does not get
 > > trimmed.  If this is the case, the solution might be to have the
 > > trimming functions remove the WB attribute instead of reducing the range
 > > to zero.  I'd certainly prefer to add that kind of special case than to
 > > walk the ACPI tables by hand.  Thanks,
 > 
 > Hi Kouya,
 > 
 >    Here's a patch that will remove the WB attribute instead of trimming
 > ranges that support both WB & UC.  It's untested, but let me know if
 > this solves the problem on PRIMEQUEST.  Thanks,
 > 
 >      Alex
 > 
 > -- 
 > Alex Williamson                             HP Open Source & Linux Org.
 > diff -r 4e78528e3480 xen/arch/ia64/linux-xen/efi.c
 > --- a/xen/arch/ia64/linux-xen/efi.c  Tue Jun 06 09:11:25 2006 -0600
 > +++ b/xen/arch/ia64/linux-xen/efi.c  Wed Jun 07 09:36:51 2006 -0600
 > @@ -273,8 +273,13 @@ trim_bottom (efi_memory_desc_t *md, u64 
 >       * descriptor list to become unsorted.  In such a case, md->num_pages 
 > will be
 >       * zero, so the Right Thing will happen.
 >       */
 > -    md->phys_addr += num_skipped_pages << EFI_PAGE_SHIFT;
 > -    md->num_pages -= num_skipped_pages;
 > +    if (!(md->attribute & EFI_MEMORY_UC)) {
 > +            md->phys_addr += num_skipped_pages << EFI_PAGE_SHIFT;
 > +            md->num_pages -= num_skipped_pages;
 > +    } else {
 > +            /* If range supports multiple attributes, turn off WB */
 > +            md->attribute &= ~EFI_MEMORY_WB;
 > +    }
 >  }
 >  
 >  static void
 > @@ -296,7 +301,10 @@ trim_top (efi_memory_desc_t *md, u64 end
 >                     "at 0x%lx\n", __FUNCTION__,
 >                     (num_dropped_pages << EFI_PAGE_SHIFT) >> 10,
 >                     md->phys_addr, end_addr);
 > -    md->num_pages -= num_dropped_pages;
 > +    if (!(md->attribute & EFI_MEMORY_UC))
 > +            md->num_pages -= num_dropped_pages;
 > +    else
 > +            md->attribute &= ~EFI_MEMORY_WB;
 >  }
 >  
 >  /*

fs0:\> memmap

Type       Start            End               # Pages          Attributes
available  0000000000000000-000000000009FFFF  00000000000000A0 0000000000000009
RT_data    00000000000C0000-00000000000FFFFF  0000000000000040 8000000000000009
available  0000000000100000-000000007E6D5FFF  000000000007E5D6 0000000000000009
BS_data    000000007E6D6000-000000007E6D7FFF  0000000000000002 0000000000000009
available  000000007E6D8000-000000007E6D9FFF  0000000000000002 0000000000000009
BS_data    000000007E6DA000-000000007ECC1FFF  00000000000005E8 0000000000000009
available  000000007ECC2000-000000007F40FFFF  000000000000074E 0000000000000009
BS_code    000000007F410000-000000007F4C1FFF  00000000000000B2 0000000000000009
available  000000007F4C2000-000000007F51BFFF  000000000000005A 0000000000000009
RT_code    000000007F51C000-000000007F5C1FFF  00000000000000A6 8000000000000009
available  000000007F5C2000-000000007F83BFFF  000000000000027A 0000000000000009
RT_data    000000007F83C000-000000007F8C5FFF  000000000000008A 8000000000000009
RT_code    000000007F8C6000-000000007FCBDFFF  00000000000003F8 8000000000000009
RT_data    000000007FCBE000-000000007FCFFFFF  0000000000000042 8000000000000009
PAL_code   000000007FD00000-000000007FD41FFF  0000000000000042 8000000000000009
RT_code    000000007FD66000-000000007FFFFFFF  000000000000029A 8000000000000009
MemMapIO   00000000FE000000-00000000FEBFFFFF  0000000000000C00 8000000000000001
MemMapIO   00000000FEC00000-00000000FEEFFFFF  0000000000000300 0000000000000001
RT_data    00000000FF000000-00000000FFFFFFFF  0000000000001000 8000000000000001
MemMapIO   00000FFC00000000-00000FFC7FFFFFFF  0000000000080000 8000000000000001
MemPortIO  0003FFFFFC000000-0003FFFFFFFFFFFF  0000000000004000 8000000000000001

  BS_code   :     178 Pages (729,088)
  BS_data   :   1,514 Pages (6,201,344)
  RT_code   :   1,848 Pages (7,569,408)
  RT_data   :   4,364 Pages (17,874,944)
  available : 520,346 Pages (2,131,337,216)
  MemMapIO  : 528,128 Pages (2,163,212,288)
  MemPortIO :  16,384 Pages (67,108,864)
  PAL_code  :      66 Pages (270,336)
Total Memory: 2,063 MB (2,163,982,336) Bytes

fs0:\> 

Attachment: PRIMEQUEST.log
Description: Binary data

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