On Fri, 2006-04-07 at 13:16 +0900, Isaku Yamahata wrote:
> 9512:f5d0a531cb58_dom0_vp_model_xen_part.patch
I'm having trouble with the legacy VGA memory descriptor section of
this patch. It's a big assumption that the platform has VGA. Shouldn't
we be relying on the EFI MDT passed into Xen to provide the mappings for
I/O devices? I believe there's some descrepancy between firmware
implementations on how the VGA range is identified in the MDT, but I
think we need to do more than assume it's there.
I added a test in dom_fw_dom0_passthrough() to ignore MMIO ranges
larger than 4GB to get over the inital boot problem, but I still get bad
mpa faults when booting dom0. My dom0 MDT appears to look like this:
(XEN) domain mem: type=2, attr=0x8,
range=[0x0000000000000000-0x00000000000b8000) (0MB)
(XEN) domain mem: type=2, attr=0x8,
range=[0x00000000000b0000-0x0000000000100000) (0MB)
(XEN) domain mem: type=13, attr=0x8,
range=[0x0000000000100000-0x0000000000200000) (1MB)
(XEN) domain mem: type=7, attr=0x8,
range=[0x0000000000200000-0x000000001f044000) (494MB)
(XEN) domain mem: type=5, attr=0x8000000000000001,
range=[0x00000000000c0000-0x0000000000100000) (0MB)
(XEN) domain mem: type=5, attr=0x8000000000000008,
range=[0x000000003f5e4000-0x000000003fac0000) (4MB)
(XEN) domain mem: type=5, attr=0x8000000000000008,
range=[0x00000040ffd6a000-0x00000040ffda6000) (0MB)
(XEN) domain mem: type=5, attr=0x8000000000000008,
range=[0x00000040ffe12000-0x00000040ffe80000) (0MB)
(XEN) __assign_domain_page: mpaddr 3fb38000 already mapped!
(XEN) domain mem: type=6, attr=0x8000000000000008,
range=[0x000000003fb38000-0x0000000040000000) (4MB)
(XEN) domain mem: type=6, attr=0x8000000000000008,
range=[0x000000027fffe000-0x0000000280000000) (0MB)
(XEN) domain mem: type=6, attr=0x8000000000000008,
range=[0x00000040fffc0000-0x0000004100000000) (0MB)
(XEN) __assign_domain_page: mpaddr a0000 already mapped!
(XEN) __assign_domain_page: mpaddr a4000 already mapped!
(XEN) __assign_domain_page: mpaddr a8000 already mapped!
(XEN) __assign_domain_page: mpaddr ac000 already mapped!
(XEN) __assign_domain_page: mpaddr b8000 already mapped!
(XEN) __assign_domain_page: mpaddr bc000 already mapped!
(XEN) domain mem: type=11, attr=0x3,
range=[0x00000000000a0000-0x00000000000c0000) (0MB)
(XEN) domain mem: type=11, attr=0x1,
range=[0x0000000080000000-0x00000000fe000000) (2016MB)
(XEN) domain mem: type=11, attr=0x8000000000000001,
range=[0x00000000fed00000-0x0000000100000000) (19MB)
(XEN) domain mem: type=12, attr=0x8000000000000001,
range=[0x0003fffffc000000-0x0004000000000000) (64MB)
This includes numerous overlapping and unordered entries. Linux expects
the MDT to be sorted by address and ranges should not overlap. We can't
know where firmware is going to place the ranges in physical memory, so
I think we need to do something more to make sure this table is sorted,
cleaned up, and we don't have firmware tables overlapping the range we
claim is usable system memory. Thanks,
Alex
--
Alex Williamson HP Linux & Open Source Lab
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|