Date: Thu, 22 Feb 2024 14:50:51 +0100 From: Baptiste Daroussin <bapt@nours.eu> To: =?ISO-8859-1?Q?Roger_Pau_Monn=E9?= <royger@FreeBSD.org>, src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 8f5406c77f1b - main - x86/xen: implement early init hook Message-ID: <69A06BC5-5DF4-4A39-8E70-3B16AC7D3C6C@nours.eu> In-Reply-To: <202402221031.41MAVSjF018338@gitrepo.freebsd.org> References: <202402221031.41MAVSjF018338@gitrepo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
------X3FJVLSHKXFQGXUY681CX7HTPDB8CZ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Le 22 f=C3=A9vrier 2024 11:31:28 GMT+01:00, "Roger Pau Monn=C3=A9" <royger@= FreeBSD=2Eorg> a =C3=A9crit=C2=A0: >The branch main has been updated by royger: > >URL: https://cgit=2EFreeBSD=2Eorg/src/commit/?id=3D8f5406c77f1b7009c36df4= e025fd8789a46d33ce > >commit 8f5406c77f1b7009c36df4e025fd8789a46d33ce >Author: Roger Pau Monn=C3=A9 <royger@FreeBSD=2Eorg> >AuthorDate: 2024-02-02 10:56:32 +0000 >Commit: Roger Pau Monn=C3=A9 <royger@FreeBSD=2Eorg> >CommitDate: 2024-02-22 10:08:05 +0000 > > x86/xen: implement early init hook > =20 > Unify the HVM and PVH early setup, byt making both rely on the hyperv= isor > initialization hook part of identify_hypervisor()=2E > =20 > The current initialization takes care of the hypercall page, the sahr= ed info > page and does any fixup necessary to metadata video console informati= on if > FreeBSD is booted as the initial domain (so the video console is hand= ed from > Xen into FreeBSD)=2E > =20 > Note this has the nice side effect of also allowing to use the Xen co= nsole on > HVM guests, which allows to get rid of the QEMU emulated uart and sti= ll get > a nice text console=2E > =20 > Sponsored by: Cloud Software Group > Reviewed by: markj > Differential revision: https://reviews=2Efreebsd=2Eorg/D43764 >--- > sys/x86/include/xen/xen-os=2Eh | 2 - > sys/x86/x86/identcpu=2Ec | 10 ++++- > sys/x86/xen/hvm=2Ec | 105 +++++------------------------------= -------- > sys/x86/xen/pv=2Ec | 17 +------ > 4 files changed, 22 insertions(+), 112 deletions(-) > >diff --git a/sys/x86/include/xen/xen-os=2Eh b/sys/x86/include/xen/xen-os= =2Eh >index ec0d4b1ab9f1=2E=2Ed3f21e2a6c45 100644 >--- a/sys/x86/include/xen/xen-os=2Eh >+++ b/sys/x86/include/xen/xen-os=2Eh >@@ -52,8 +52,6 @@ extern int xen_disable_pv_disks; > /* tunable for disabling PV nics */ > extern int xen_disable_pv_nics; >=20 >-extern uint32_t xen_cpuid_base; >- > /* compatibility for accessing xen_ulong_t with atomics */ > #define atomic_clear_xen_ulong atomic_clear_long > #define atomic_set_xen_ulong atomic_set_long >diff --git a/sys/x86/x86/identcpu=2Ec b/sys/x86/x86/identcpu=2Ec >index 6df138bccba1=2E=2E919dda722d71 100644 >--- a/sys/x86/x86/identcpu=2Ec >+++ b/sys/x86/x86/identcpu=2Ec >@@ -67,6 +67,10 @@ > #include <x86/isa/icu=2Eh> > #include <x86/vmware=2Eh> >=20 >+#ifdef XENHVM >+#include <xen/xen-os=2Eh> >+#endif >+ > #ifdef __i386__ > #define IDENTBLUE_CYRIX486 0 > #define IDENTBLUE_IBMCPU 1 >@@ -1345,7 +1349,11 @@ static struct { > int vm_guest; > void (*init)(void); > } vm_cpuids[] =3D { >- { "XenVMMXenVMM", VM_GUEST_XEN }, /* XEN */ >+ { "XenVMMXenVMM", VM_GUEST_XEN, >+#ifdef XENHVM >+ &xen_early_init, >+#endif >+ }, /* XEN */ > { "Microsoft Hv", VM_GUEST_HV }, /* Microsoft Hyper-V */ > { "VMwareVMware", VM_GUEST_VMWARE }, /* VMware VM */ > { "KVMKVMKVM", VM_GUEST_KVM }, /* KVM */ >diff --git a/sys/x86/xen/hvm=2Ec b/sys/x86/xen/hvm=2Ec >index 6336602c8bc4=2E=2E17500516debf 100644 >--- a/sys/x86/xen/hvm=2Ec >+++ b/sys/x86/xen/hvm=2Ec >@@ -104,22 +104,6 @@ void xen_emergency_print(const char *str, size_t siz= e) > outsb(XEN_HVM_DEBUGCONS_IOPORT, str, size); > } >=20 >-uint32_t xen_cpuid_base; >- >-static uint32_t >-xen_hvm_cpuid_base(void) >-{ >- uint32_t base, regs[4]; >- >- for (base =3D 0x40000000; base < 0x40010000; base +=3D 0x100) { >- do_cpuid(base, regs); >- if (!memcmp("XenVMMXenVMM", ®s[1], 12) >- && (regs[0] - base) >=3D 2) >- return (base); >- } >- return (0); >-} >- > static void > hypervisor_quirks(unsigned int major, unsigned int minor) > { >@@ -156,38 +140,6 @@ hypervisor_version(void) > hypervisor_quirks(major, minor); > } >=20 >-/* >- * Allocate and fill in the hypcall page=2E >- */ >-int >-xen_hvm_init_hypercall_stubs(enum xen_hvm_init_type init_type) >-{ >- uint32_t regs[4]; >- >- if (xen_cpuid_base !=3D 0) >- /* Already setup=2E */ >- goto out; >- >- xen_cpuid_base =3D xen_hvm_cpuid_base(); >- if (xen_cpuid_base =3D=3D 0) >- return (ENXIO); >- >- /* >- * Find the hypercall pages=2E >- */ >- do_cpuid(xen_cpuid_base + 2, regs); >- if (regs[0] !=3D 1) >- return (EINVAL); >- >- wrmsr(regs[1], (init_type =3D=3D XEN_HVM_INIT_EARLY) >- ? (vm_paddr_t)((uintptr_t)&hypercall_page - KERNBASE) >- : vtophys(&hypercall_page)); >- >-out: >- hypervisor_version(); >- return (0); >-} >- > /* > * Translate linear to physical address when still running on the bootlo= ader > * created page-tables=2E >@@ -336,12 +288,14 @@ xen_early_init(void) > uint32_t regs[4]; > int rc; >=20 >- xen_cpuid_base =3D xen_hvm_cpuid_base(); >- if (xen_cpuid_base =3D=3D 0) >+ if (hv_high < hv_base + 2) { >+ xc_printf("Invalid maximum leaves for hv_base\n"); >+ vm_guest =3D VM_GUEST_VM; > return; >+ } >=20 > /* Find the hypercall pages=2E */ >- do_cpuid(xen_cpuid_base + 2, regs); >+ do_cpuid(hv_base + 2, regs); > if (regs[0] !=3D 1) { > xc_printf("Invalid number of hypercall pages %u\n", > regs[0]); >@@ -362,33 +316,6 @@ xen_early_init(void) > fixup_console(); > } >=20 >-static void >-xen_hvm_init_shared_info_page(void) >-{ >- struct xen_add_to_physmap xatp; >- >- if (xen_pv_domain()) { >- /* >- * Already setup in the PV case, shared_info is passed inside >- * of the start_info struct at start of day=2E >- */ >- return; >- } >- >- if (HYPERVISOR_shared_info =3D=3D NULL) { >- HYPERVISOR_shared_info =3D malloc(PAGE_SIZE, M_XENHVM, M_NOWAIT); >- if (HYPERVISOR_shared_info =3D=3D NULL) >- panic("Unable to allocate Xen shared info page"); >- } >- >- xatp=2Edomid =3D DOMID_SELF; >- xatp=2Eidx =3D 0; >- xatp=2Espace =3D XENMAPSPACE_shared_info; >- xatp=2Egpfn =3D vtophys(HYPERVISOR_shared_info) >> PAGE_SHIFT; >- if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) >- panic("HYPERVISOR_memory_op failed"); >-} >- > static int > set_percpu_callback(unsigned int vcpu) > { >@@ -505,32 +432,29 @@ xen_hvm_disable_emulated_devices(void) > static void > xen_hvm_init(enum xen_hvm_init_type init_type) > { >- int error; >- int i; >+ unsigned int i; >=20 > if (!xen_domain() || > init_type =3D=3D XEN_HVM_INIT_CANCELLED_SUSPEND) > return; >=20 >- error =3D xen_hvm_init_hypercall_stubs(init_type); >+ hypervisor_version(); >=20 > switch (init_type) { > case XEN_HVM_INIT_LATE: >- if (error !=3D 0) >- return; >- > setup_xen_features(); > #ifdef SMP > cpu_ops =3D xen_hvm_cpu_ops; > #endif > break; > case XEN_HVM_INIT_RESUME: >- if (error !=3D 0) >- panic("Unable to init Xen hypercall stubs on resume"); >- > /* Clear stale vcpu_info=2E */ > CPU_FOREACH(i) > DPCPU_ID_SET(i, vcpu_info, NULL); >+ >+ if (map_shared_info() !=3D 0) >+ panic("cannot map Xen shared info page"); >+ > break; > default: > panic("Unsupported HVM initialization type"); >@@ -540,13 +464,6 @@ xen_hvm_init(enum xen_hvm_init_type init_type) > xen_evtchn_needs_ack =3D false; > xen_hvm_set_callback(NULL); >=20 >- /* >- * On (PV)HVM domains we need to request the hypervisor to >- * fill the shared info page, for PVH guest the shared_info page >- * is passed inside the start_info struct and is already set, so this >- * functions are no-ops=2E >- */ >- xen_hvm_init_shared_info_page(); > xen_hvm_disable_emulated_devices(); > }=20 >=20 >diff --git a/sys/x86/xen/pv=2Ec b/sys/x86/xen/pv=2Ec >index e33fa41c83d7=2E=2E0e6492b124b8 100644 >--- a/sys/x86/xen/pv=2Ec >+++ b/sys/x86/xen/pv=2Ec >@@ -147,12 +147,9 @@ isxen(void) > } >=20 > #define CRASH(=2E=2E=2E) do { \ >- if (isxen()) { \ >+ if (isxen()) \ > xc_printf(__VA_ARGS__); \ >- HYPERVISOR_shutdown(SHUTDOWN_crash); \ >- } else { \ >- halt(); \ >- } \ >+ halt(); \ > } while (0) >=20 > uint64_t >@@ -162,16 +159,6 @@ hammer_time_xen(vm_paddr_t start_info_paddr) > uint64_t physfree; > char *kenv; >=20 >- if (isxen()) { >- vm_guest =3D VM_GUEST_XEN; >- xen_early_init(); >- if (xen_cpuid_base =3D=3D 0) { >- xc_printf( >- "ERROR: failed to initialize hypercall page\n"); >- HYPERVISOR_shutdown(SHUTDOWN_crash); >- } >- } >- > start_info =3D (struct hvm_start_info *)(start_info_paddr + KERNBASE); > if (start_info->magic !=3D XEN_HVM_START_MAGIC_VALUE) { > CRASH("Unknown magic value in start_info struct: %#x\n", This breaks i386 kernel build /home/bapt/worktrees/main/sys/x86/xen/hvm=2Ec:156:47: error: format specif= ies type 'unsigned long' but the argument has type 'uintptr_t' (aka 'unsign= ed int') [-Werror,-Wformat] Bapt ------X3FJVLSHKXFQGXUY681CX7HTPDB8CZ Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html><head></head><body><div class=3D"gmail_quote"><div dir=3D"auto">Le 22= f=C3=A9vrier 2024 11:31:28 GMT+01:00, "Roger Pau Monn=C3=A9" <royger@Fr= eeBSD=2Eorg> a =C3=A9crit=C2=A0:</div><blockquote class=3D"gmail_quote" = style=3D"margin: 0pt 0pt 0pt 0=2E8ex; border-left: 1px solid rgb(204, 204, = 204); padding-left: 1ex;"> <pre class=3D"k9mail"><div dir=3D"auto">The branch main has been updated b= y royger:<br><br>URL: <a href=3D"https://cgit=2EFreeBSD=2Eorg/src/commit/?i= d=3D8f5406c77f1b7009c36df4e025fd8789a46d33ce">https://cgit=2EFreeBSD=2Eorg/= src/commit/?id=3D8f5406c77f1b7009c36df4e025fd8789a46d33ce</a><br><br>commit= 8f5406c77f1b7009c36df4e025fd8789a46d33ce<br>Author: Roger Pau Monn=C3= =A9 <royger@FreeBSD=2Eorg><br>AuthorDate: 2024-02-02 10:56:32 +0000<b= r>Commit: Roger Pau Monn=C3=A9 <royger@FreeBSD=2Eorg><br>CommitDa= te: 2024-02-22 10:08:05 +0000<br><br> x86/xen: implement early init hook= <br> <br> Unify the HVM and PVH early setup, byt making both rely on = the hypervisor<br> initialization hook part of identify_hypervisor()=2E<= br> <br> The current initialization takes care of the hypercall page,= the sahred info<br> page and does any fixup necessary to metadata video= console information if<br> FreeBSD is booted as the initial domain (so = the video console is handed from<br> Xen into FreeBSD)=2E<br> <br> = Note this has the nice side effect of also allowing to use the Xen console= on<br> HVM guests, which allows to get rid of the QEMU emulated uart an= d still get<br> a nice text console=2E<br> <br> Sponsored by: Clou= d Software Group<br> Reviewed by: markj<br> Differential revision: <a= href=3D"https://reviews=2Efreebsd=2Eorg/D43764">https://reviews=2Efreebsd= =2Eorg/D43764</a><hr> sys/x86/include/xen/xen-os=2Eh | 2 -<br> sys/x86/x8= 6/identcpu=2Ec | 10 ++++-<br> sys/x86/xen/hvm=2Ec | 105 += ++++--------------------------------------<br> sys/x86/xen/pv=2Ec = | 17 +------<br> 4 files changed, 22 insertions(+), 112 deletions(-)<br= ><br>diff --git a/sys/x86/include/xen/xen-os=2Eh b/sys/x86/include/xen/xen-= os=2Eh<br>index ec0d4b1ab9f1=2E=2Ed3f21e2a6c45 100644<br>--- a/sys/x86/incl= ude/xen/xen-os=2Eh<br>+++ b/sys/x86/include/xen/xen-os=2Eh<br>@@ -52,8 +52,= 6 @@ extern int xen_disable_pv_disks;<br> /* tunable for disabling PV nics = */<br> extern int xen_disable_pv_nics;<br> <br>-extern uint32_t xen_cpuid_b= ase;<br>-<br> /* compatibility for accessing xen_ulong_t with atomics */<br= > #define atomic_clear_xen_ulong atomic_clear_long<br> #define atomic_set_= xen_ulong atomic_set_long<br>diff --git a/sys/x86/x86/identcpu=2Ec b/sys/x= 86/x86/identcpu=2Ec<br>index 6df138bccba1=2E=2E919dda722d71 100644<br>--- a= /sys/x86/x86/identcpu=2Ec<br>+++ b/sys/x86/x86/identcpu=2Ec<br>@@ -67,6 +67= ,10 @@<br> #include <x86/isa/icu=2Eh><br> #include <x86/vmware=2Eh= ><br> <br>+#ifdef XENHVM<br>+#include <xen/xen-os=2Eh><br>+#endif<= br>+<br> #ifdef __i386__<br> #define IDENTBLUE_CYRIX486 0<br> #define IDENT= BLUE_IBMCPU 1<br>@@ -1345,7 +1349,11 @@ static struct {<br> int vm_guest;= <br> void (*init)(void);<br> } vm_cpuids[] =3D {<br>- { "XenVMMXenVMM", V= M_GUEST_XEN }, /* XEN */<br>+ { "XenVMMXenVMM", VM_GUEST_XEN,<br>+#ifdef X= ENHVM<br>+ &xen_early_init,<br>+#endif<br>+ }, /* XEN */<br> { = "Microsoft Hv", VM_GUEST_HV }, /* Microsoft Hyper-V */<br> { "VMwareVMwar= e", VM_GUEST_VMWARE }, /* VMware VM */<br> { "KVMKVMKVM", VM_GUEST_KVM },= /* KVM */<br>diff --git a/sys/x86/xen/hvm=2Ec b/sys/x86/xen/hvm=2Ec<br>in= dex 6336602c8bc4=2E=2E17500516debf 100644<br>--- a/sys/x86/xen/hvm=2Ec<br>+= ++ b/sys/x86/xen/hvm=2Ec<br>@@ -104,22 +104,6 @@ void xen_emergency_print(c= onst char *str, size_t size)<br> outsb(XEN_HVM_DEBUGCONS_IOPORT, str, size= );<br> }<br> <br>-uint32_t xen_cpuid_base;<br>-<br>-static uint32_t<br>-xen= _hvm_cpuid_base(void)<br>-{<br>- uint32_t base, regs[4];<br>-<br>- for (bas= e =3D 0x40000000; base < 0x40010000; base +=3D 0x100) {<br>- do_cpuid(b= ase, regs);<br>- if (!memcmp("XenVMMXenVMM", &regs[1], 12)<br>- &= amp;& (regs[0] - base) >=3D 2)<br>- return (base);<br>- }<br>- ret= urn (0);<br>-}<br>-<br> static void<br> hypervisor_quirks(unsigned int majo= r, unsigned int minor)<br> {<br>@@ -156,38 +140,6 @@ hypervisor_version(voi= d)<br> hypervisor_quirks(major, minor);<br> }<br> <br>-/*<br>- * Allocate = and fill in the hypcall page=2E<br>- */<br>-int<br>-xen_hvm_init_hypercall_= stubs(enum xen_hvm_init_type init_type)<br>-{<br>- uint32_t regs[4];<br>-<b= r>- if (xen_cpuid_base !=3D 0)<br>- /* Already setup=2E */<br>- goto out;= <br>-<br>- xen_cpuid_base =3D xen_hvm_cpuid_base();<br>- if (xen_cpuid_base= =3D=3D 0)<br>- return (ENXIO);<br>-<br>- /*<br>- * Find the hypercall pa= ges=2E<br>- */<br>- do_cpuid(xen_cpuid_base + 2, regs);<br>- if (regs[0] != =3D 1)<br>- return (EINVAL);<br>-<br>- wrmsr(regs[1], (init_type =3D=3D XE= N_HVM_INIT_EARLY)<br>- ? (vm_paddr_t)((uintptr_t)&hypercall_page - = KERNBASE)<br>- : vtophys(&hypercall_page));<br>-<br>-out:<br>- hype= rvisor_version();<br>- return (0);<br>-}<br>-<br> /*<br> * Translate linea= r to physical address when still running on the bootloader<br> * created p= age-tables=2E<br>@@ -336,12 +288,14 @@ xen_early_init(void)<br> uint32_t r= egs[4];<br> int rc;<br> <br>- xen_cpuid_base =3D xen_hvm_cpuid_base();<br>= - if (xen_cpuid_base =3D=3D 0)<br>+ if (hv_high < hv_base + 2) {<br>+ x= c_printf("Invalid maximum leaves for hv_base\n");<br>+ vm_guest =3D VM_GUE= ST_VM;<br> return;<br>+ }<br> <br> /* Find the hypercall pages=2E */<br>= - do_cpuid(xen_cpuid_base + 2, regs);<br>+ do_cpuid(hv_base + 2, regs);<br>= if (regs[0] !=3D 1) {<br> xc_printf("Invalid number of hypercall pages = %u\n",<br> regs[0]);<br>@@ -362,33 +316,6 @@ xen_early_init(void)<br>= fixup_console();<br> }<br> <br>-static void<br>-xen_hvm_init_shared_i= nfo_page(void)<br>-{<br>- struct xen_add_to_physmap xatp;<br>-<br>- if (xen= _pv_domain()) {<br>- /*<br>- * Already setup in the PV case, shared_info= is passed inside<br>- * of the start_info struct at start of day=2E<br>-= */<br>- return;<br>- }<br>-<br>- if (HYPERVISOR_shared_info =3D=3D NULL= ) {<br>- HYPERVISOR_shared_info =3D malloc(PAGE_SIZE, M_XENHVM, M_NOWAIT);= <br>- if (HYPERVISOR_shared_info =3D=3D NULL)<br>- panic("Unable to allo= cate Xen shared info page");<br>- }<br>-<br>- xatp=2Edomid =3D DOMID_SELF;<= br>- xatp=2Eidx =3D 0;<br>- xatp=2Espace =3D XENMAPSPACE_shared_info;<br>- = xatp=2Egpfn =3D vtophys(HYPERVISOR_shared_info) >> PAGE_SHIFT;<br>- i= f (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))<br>- panic("HYP= ERVISOR_memory_op failed");<br>-}<br>-<br> static int<br> set_percpu_callba= ck(unsigned int vcpu)<br> {<br>@@ -505,32 +432,29 @@ xen_hvm_disable_emulat= ed_devices(void)<br> static void<br> xen_hvm_init(enum xen_hvm_init_type in= it_type)<br> {<br>- int error;<br>- int i;<br>+ unsigned int i;<br> <br> i= f (!xen_domain() ||<br> init_type =3D=3D XEN_HVM_INIT_CANCELLED_SUSPEN= D)<br> return;<br> <br>- error =3D xen_hvm_init_hypercall_stubs(init_type= );<br>+ hypervisor_version();<br> <br> switch (init_type) {<br> case XEN_= HVM_INIT_LATE:<br>- if (error !=3D 0)<br>- return;<br>-<br> setup_xen_= features();<br> #ifdef SMP<br> cpu_ops =3D xen_hvm_cpu_ops;<br> #endif<br= > break;<br> case XEN_HVM_INIT_RESUME:<br>- if (error !=3D 0)<br>- pa= nic("Unable to init Xen hypercall stubs on resume");<br>-<br> /* Clear st= ale vcpu_info=2E */<br> CPU_FOREACH(i)<br> DPCPU_ID_SET(i, vcpu_info, = NULL);<br>+<br>+ if (map_shared_info() !=3D 0)<br>+ panic("cannot map Xe= n shared info page");<br>+<br> break;<br> default:<br> panic("Unsuppor= ted HVM initialization type");<br>@@ -540,13 +464,6 @@ xen_hvm_init(enum xe= n_hvm_init_type init_type)<br> xen_evtchn_needs_ack =3D false;<br> xen_hv= m_set_callback(NULL);<br> <br>- /*<br>- * On (PV)HVM domains we need to re= quest the hypervisor to<br>- * fill the shared info page, for PVH guest th= e shared_info page<br>- * is passed inside the start_info struct and is al= ready set, so this<br>- * functions are no-ops=2E<br>- */<br>- xen_hvm_in= it_shared_info_page();<br> xen_hvm_disable_emulated_devices();<br> } <br> = <br>diff --git a/sys/x86/xen/pv=2Ec b/sys/x86/xen/pv=2Ec<br>index e33fa41c8= 3d7=2E=2E0e6492b124b8 100644<br>--- a/sys/x86/xen/pv=2Ec<br>+++ b/sys/x86/x= en/pv=2Ec<br>@@ -147,12 +147,9 @@ isxen(void)<br> }<br> <br> #define CRASH(= =2E=2E=2E) do { \<br>- if (isxen()) { \<br>+ if (isxen()) \<br>= xc_printf(__VA_ARGS__); \<br>- HYPERVISOR_shutdown(SHUTDOWN_crash); \= <br>- } else { \<br>- halt(); \<br>- } \<br>+ halt(); \<= br> } while (0)<br> <br> uint64_t<br>@@ -162,16 +159,6 @@ hammer_time_xen(v= m_paddr_t start_info_paddr)<br> uint64_t physfree;<br> char *kenv;<br> <b= r>- if (isxen()) {<br>- vm_guest =3D VM_GUEST_XEN;<br>- xen_early_init();= <br>- if (xen_cpuid_base =3D=3D 0) {<br>- xc_printf(<br>- "ERROR: = failed to initialize hypercall page\n");<br>- HYPERVISOR_shutdown(SHUTDOW= N_crash);<br>- }<br>- }<br>-<br> start_info =3D (struct hvm_start_info *)= (start_info_paddr + KERNBASE);<br> if (start_info->magic !=3D XEN_HVM_S= TART_MAGIC_VALUE) {<br> CRASH("Unknown magic value in start_info struct: = %#x\n",<br></div></pre></blockquote></div><br clear=3D"all"><div dir=3D"aut= o">This breaks i386 kernel build<br><br>/home/bapt/worktrees/main/sys/x86/x= en/hvm=2Ec:156:47: error: format specifies type 'unsigned long' but the arg= ument has type 'uintptr_t' (aka 'unsigned int') [-Werror,-Wformat]<br><br>B= apt</div></body></html> ------X3FJVLSHKXFQGXUY681CX7HTPDB8CZ--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69A06BC5-5DF4-4A39-8E70-3B16AC7D3C6C>