Chris Wright wrote: > Change LOAD_OFFSET so that the kernel has virtual addresses in the elf header fields. > > Unlike bare metal kernels, Xen kernels start with virtual address > management turned on and thus the addresses to load to should be > virtual addresses. > Rather than changing LOAD_OFFSET in Linux, why not leave this alone and change the Xen domain builder to properly interpret the ELF program header fields? i.e. with this change, we'd have p_paddr = __PAGE_OFFSET + segment_offset p_vaddr = __PAGE_OFFSET + segment_offset VIRT_BASE = __PAGE_OFFSET where, the VA mapping p_paddr -> (p_paddr-VIRT_BASE) is established by the domain builder. Instead, why not drop this patch, and the VIRT_BASE portion of the __xen_guest section, and instead change Xen's domain builder to treat p_paddr and p_vaddr in a more standard way? Since Xen starts the domain with virtual address management enabled, it makes sense for it to use p_vaddr to determine the virtual address to load the kernel to. Then, p_paddr could be used to determine which pseudo-physical pages back that virtual address range. i.e. use, just like vanilla linux: p_paddr = segment_offset p_vaddr = __PAGE_OFFSET + segment_offset so these two fields directly indicate the same mapping as before, but now in terms of p_vaddr -> p_paddr, which makes sense, and no need for the extra VIRT_BASE attribute in the __xen_guest section. Dan