Bradley Morgan, le sam. 04 juil. 2026 15:11:53 +0100, a ecrit: > On July 4, 2026 4:58:52 AM GMT+01:00, Damien Zammit <[email protected]> > wrote: > >Bump the version of gnumach xen, and also fix 64b booting. > >--- > > i386/xen/xen_boothdr.S | 6 +++--- > > x86_64/xen_boothdr.S | 11 ++++++----- > > 2 files changed, 9 insertions(+), 8 deletions(-) > > > >diff --git a/i386/xen/xen_boothdr.S b/i386/xen/xen_boothdr.S > >index 4704c66f..6cc9e3d9 100644 > >--- a/i386/xen/xen_boothdr.S > >+++ b/i386/xen/xen_boothdr.S > >@@ -20,7 +20,7 @@ > > > > .section __xen_guest > > .ascii "GUEST_OS=GNU Mach" > >- .ascii ",GUEST_VERSION=1.3" > >+ .ascii ",GUEST_VERSION=1.8" > > .ascii ",XEN_VER=xen-3.0" > > .ascii ",VIRT_BASE=0xC0000000" > > .ascii ",ELF_PADDR_OFFSET=0xC0000000" > >@@ -61,12 +61,12 @@ > > .popsection ; > > > > ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz, "GNU Mach") > >- ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz, "1.3") > >+ ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz, "1.8") > > ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz, "xen-3.0") > > ELFNOTE(Xen, XEN_ELFNOTE_VIRT_BASE, .long, _START) > > ELFNOTE(Xen, XEN_ELFNOTE_PADDR_OFFSET, .long, _START) > > ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .long, start) > >- ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long, hypcalls) > >+ ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long, 0x2) > > Why? This could break boot if xen tries to write stubs to 0x2..
Yes, I'm completely surprised by this. The XEN_ELFNOTE_HYPERCALL_PAGE macro happens to be 2, but that's just a convention. We are really supposed to tell the hypervisor which page we use for hypercall. > > #if PAE > > ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz, > > "yes[extended-cr3]") > > #else > >diff --git a/x86_64/xen_boothdr.S b/x86_64/xen_boothdr.S > >index da40a5c0..0924aa20 100644 > >--- a/x86_64/xen_boothdr.S > >+++ b/x86_64/xen_boothdr.S > >@@ -20,11 +20,12 @@ > > > > .section __xen_guest > > .ascii "GUEST_OS=GNU Mach" > >- .ascii ",GUEST_VERSION=1.3" > >+ .ascii ",GUEST_VERSION=1.8" > > .ascii ",XEN_VER=xen-3.0" > >- .ascii ",VIRT_BASE=0x40000000" > >- .ascii ",ELF_PADDR_OFFSET=0x40000000" > >+ .ascii ",VIRT_BASE=0xffffffff80000000" > >+ .ascii ",ELF_PADDR_OFFSET=0xffffffff80000000" > > .ascii ",HYPERCALL_PAGE=0x2" > >+ .ascii ",ENTRY=0xffffffff80000000" > > .ascii ",LOADER=generic" > > #ifndef MACH_PSEUDO_PHYS > > .ascii ",FEATURES=!auto_translated_physmap" > >@@ -51,12 +52,12 @@ > > .popsection ; > > > > ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz, "GNU Mach") > >- ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz, "1.3") > >+ ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz, "1.8") > > ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz, "xen-3.0") > > ELFNOTE(Xen, XEN_ELFNOTE_VIRT_BASE, .quad, _START) > > ELFNOTE(Xen, XEN_ELFNOTE_PADDR_OFFSET, .quad, _START) > > ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .quad, start) > >- ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad, hypcalls) > >+ ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad, 0x2) > > ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz, "generic") > > ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz, "" > > #ifndef MACH_PSEUDO_PHYS > > > > Thanks! >
