Date: Mon, 24 Jun 2013 17:11:17 -0700 From: Neel Natu <neelnatu@gmail.com> To: Aryeh Friedman <aryeh.friedman@gmail.com> Cc: freebsd-virtualization@freebsd.org Subject: Re: bhyve guest dies on building java/openjdk6 Message-ID: <CAFgRE9F6bXmGNwi0nqy2VO=FbS7fXV6eiViCCksRhXh4rpqTmw@mail.gmail.com> In-Reply-To: <CAGBxaXmeGj_BO0mWdoZfwsUOsvaEYL7VaY03CHKDfk%2BN1LYdWg@mail.gmail.com> References: <CAGBxaXmeGj_BO0mWdoZfwsUOsvaEYL7VaY03CHKDfk%2BN1LYdWg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Aryeh, On Mon, Jun 24, 2013 at 4:25 PM, Aryeh Friedman <aryeh.friedman@gmail.com> wrote: > > As soon as java/openjdk6 starts its build process (fdesc and procfs > both are present as per pkg-message) bhyve dies with: > > vm exit[0] > reason VMX > rip 0x00000008032322ac > > inst_length 2 > > error 0 > > exit_reason 10 Thanks for reporting this. The exit reason indicates bhyve is not happy with the cpuid leaf that the guest is querying. Tycho Nightingale has a patch to the cpuid emulation that should fix the issue you are seeing. Could you give it a spin? Index: x86.c =================================================================== --- x86.c (revision 251672) +++ x86.c (working copy) @@ -45,7 +45,7 @@ #define CPUID_VM_HIGH 0x40000000 -static const char bhyve_id[12] = "BHyVE BHyVE "; +static const char bhyve_id[12] = "bhyve bhyve "; int x86_emulate_cpuid(struct vm *vm, int vcpu_id, @@ -80,12 +80,10 @@ case CPUID_0000_0000: case CPUID_0000_0002: case CPUID_0000_0003: - case CPUID_0000_000A: cpuid_count(*eax, *ecx, regs); break; case CPUID_8000_0000: - case CPUID_8000_0001: case CPUID_8000_0002: case CPUID_8000_0003: case CPUID_8000_0004: @@ -94,6 +92,15 @@ cpuid_count(*eax, *ecx, regs); break; + case CPUID_8000_0001: + /* + * Hide rdtscp/ia32_tsc_aux until we know how + * to deal with them. + */ + cpuid_count(*eax, *ecx, regs); + regs[3] &= ~AMDID_RDTSCP; + break; + case CPUID_8000_0007: cpuid_count(*eax, *ecx, regs); /* @@ -151,6 +158,11 @@ regs[2] &= ~CPUID2_MON; /* + * Hide the performance and debug features. + */ + regs[2] &= ~CPUID2_PDCM; + + /* * Hide thermal monitoring */ regs[3] &= ~(CPUID_ACPI | CPUID_TM); @@ -161,6 +173,11 @@ */ regs[3] &= ~(CPUID_MCA | CPUID_MCE | CPUID_MTRR); + /* + * Hide the debug store capability. + */ + regs[3] &= ~CPUID_DS; + /* * Disable multi-core. */ @@ -180,6 +197,7 @@ case CPUID_0000_0006: case CPUID_0000_0007: + case CPUID_0000_000A: /* * Handle the access, but report 0 for * all options @@ -203,12 +221,17 @@ case 0x40000000: regs[0] = CPUID_VM_HIGH; bcopy(bhyve_id, ®s[1], 4); - bcopy(bhyve_id, ®s[2], 4); - bcopy(bhyve_id, ®s[3], 4); + bcopy(bhyve_id + 4, ®s[2], 4); + bcopy(bhyve_id + 8, ®s[3], 4); break; + default: - /* XXX: Leaf 5? */ - return (0); + /* + * The leaf value has already been clamped, so + * simply pass this through + */ + cpuid_count(*eax, *ecx, regs); + break; } *eax = regs[0]; best Neel > qualification 0x0000000000000000 > _______________________________________________ > freebsd-virtualization@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > To unsubscribe, send any mail to "freebsd-virtualization-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFgRE9F6bXmGNwi0nqy2VO=FbS7fXV6eiViCCksRhXh4rpqTmw>