On Mon, Apr 10, 2006 at 02:08:18PM -0600, Alex Williamson wrote:
> > I'm having trouble with the legacy VGA memory descriptor section of
> > this patch.
>
> I managed to get my system booting with the patch below (2-way, w/ >
> 1GB RAM). Networking works, yeah! The main changes here are that I
> removed the fabricated MDT entries describing the legacy VGA space,
> added EFI_ACPI_RECLAIM_MEMORY to the memory types mapped, and sorted the
> resulting memory descriptor table. I also included the hack to avoid
> calling assign_domain_mmio_page() for large MMIO ranges. Minor nit,
> we're still subtracting IA64_GRANULE_SIZE from the MDT entry for
> conventional memory, but we're not adding in the granule at the end of
> memory like we used to.
Hi Alex.
What was the problem with the legacy VGA space?
In case !CONFIG_XEN_IA64_DOM0_VP, the MDT which xen arranges says
to Linux that [0*MB, 1*MB] is usable.
So Linux uses the area, however Linux VGA driver writes its space
without any checks to check vga existance.
It results in data corruption. (the check is done at very early stage
of booting so that such corruption might not be a issue.)
I'm guessing that the following line should be fixed.
The legacy vga area should be used by Linux at least.
> MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB,0*MB,1*MB, 1);
On the other hand in case CONFIG_XEN_IA64_DOM0_VP,
you just commented out the following two lines.
> MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB, 0 * MB, VGA_RAM_START, 1);
> MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB, VGA_COLOURMAP_END, 1*MB, 1);
Does it mean that the simulation of 1MB free memory at physical
address zero is unnecessary?
I.e Should the following patch applied?
--- dom_fw.c 2006-04-15 03:15:53.000000000 +0900
+++ dom_fw.c_vga.c 2006-04-21 15:02:28.000000000 +0900
@@ -811,8 +811,6 @@ dom_fw_init (struct domain *d, const cha
unsigned long last_start = max_page << PAGE_SHIFT;
unsigned long last_end = last_start + IA64_GRANULE_SIZE;
- /* simulate 1MB free memory at physical address zero */
- MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB,0*MB,1*MB, 0);
/* hypercall patches live here, masquerade as reserved PAL
memory */
MAKE_MD(EFI_PAL_CODE,EFI_MEMORY_WB,HYPERCALL_START,HYPERCALL_END, 0);
MAKE_MD(EFI_CONVENTIONAL_MEMORY,EFI_MEMORY_WB,HYPERCALL_END,maxmem-IA64_GRANULE_SIZE,
0);
@@ -836,7 +834,6 @@ dom_fw_init (struct domain *d, const cha
else MAKE_MD(EFI_RESERVED_TYPE,0,0,0,0);
}
else {
- MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB,0*MB,1*MB, 1);
/* hypercall patches live here, masquerade as reserved PAL
memory */
MAKE_MD(EFI_PAL_CODE,EFI_MEMORY_WB,HYPERCALL_START,HYPERCALL_END, 1);
MAKE_MD(EFI_CONVENTIONAL_MEMORY,EFI_MEMORY_WB,HYPERCALL_END,maxmem, 1);
--
yamahata
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|