[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-ia64-devel] [PATCH] VP model doesn't pass the whole ACPI table to dom0



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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.