[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 _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |