mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/mkelf32: Actually pad load segment to 2 MiB boundary
Fix the code which tries to pad the load segment to 2 MiB but only pads
it to a 1 MiB boundary.
This manifests as a page fault while scrubbing RAM during boot on certain
systems.
Xen fails to mark itself as reserved in the E820 (due to spanning multiple
regions), but does restrict the permissions in the directmap. The region of
RAM containing Xen is handed to physical memory manager as available for use,
and scrubbing hit the directmap protections.
Fixes: 4fb075201f ("x86/mkelf32: pad load segment to 2Mb boundary")
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
9e5dc44ef5
commit
5416c455f6
1 file changed
+1
-1
@@ -345,7 +345,7 @@ int main(int argc, char **argv)
|
||||
* the Xen image using 2M pages. To avoid running into adjacent non-RAM
|
||||
* regions, pad the segment to the next 2M boundary.
|
||||
*/
|
||||
mem_siz = ((uint32_t)in64_phdr.p_memsz + (1U << 20) - 1) & (-1U << 20);
|
||||
mem_siz = ((uint32_t)in64_phdr.p_memsz + (1U << 21) - 1) & (-1U << 21);
|
||||
|
||||
note_sz = note_base = offset = 0;
|
||||
if ( num_phdrs > 1 )
|
||||
|
||||