kqemu locking my machine hard on amd64 smp,
with most recent patches
Todd Wasson
tsw5 at duke.edu
Thu May 15 21:43:02 UTC 2008
I tried that patch and it still hung at about the same point. I think
it may have printed one more line to the VNC session, about
initializing the PIIX3 controller, but then nothing.
Interestingly, I tried rolling back to 1.3.0.p11_4 to see if it still
worked, and it did. So then I went to 1.3.0.p11_5 and it also
worked. Therefore whatever is causing this is in the 1.3.0.p11_6
patch, as far as I can tell.
Todd
On May 15, 2008, at 1:28 PM, Juergen Lock wrote:
> On Wed, May 14, 2008 at 10:53:20PM -0400, Todd Wasson wrote:
>> Hi Juergen. No, I'm running it in a screen session on a headless
>> machine
>> and using VNC as a display device. I run it from the console and
>> it hangs
>> before anything useful shows up. Specifically, it spits this out
>> before
>> hanging:
>>
>> oss: Could not initialize DAC
>> oss: Failed to open `/dev/dsp'
>> oss: Reason: No such file or directory
>> oss: Could not initialize DAC
>> oss: Failed to open `/dev/dsp'
>> oss: Reason: No such file or directory
>> audio: Failed to create voice `pcspk'
>> pcspk: Could not open voice
>>
>> So yeah, it's complaining about the sound hardware.
>
> Oh that's _probably_ unrelated.
>
>> Anyway, if I watch it
>> in VNC, it hangs immediately when trying to boot the linux kernel;
>> the only
>> VM I've tried with it is a kubuntu install. It goes through the
>> BIOS init,
>> kicks off grub, and then says "Starting up ..." and then hangs.
>>
>> I've attached my dmesg. Thanks for whatever time you can put into
>> this.
>
> Thanx. Can you try the folloing patch? (also at
> http://people.freebsd.org/~nox/qemu/kqemu-kmod-tss-cpldt2.patch
> )
>
> Index: Makefile
> ===================================================================
> RCS file: /home/pcvs/ports/emulators/kqemu-kmod/Makefile,v
> retrieving revision 1.25
> diff -u -p -r1.25 Makefile
> --- Makefile 12 May 2008 19:09:52 -0000 1.25
> +++ Makefile 15 May 2008 17:07:33 -0000
> @@ -7,7 +7,7 @@
>
> PORTNAME= kqemu
> PORTVERSION= 1.3.0.p11
> -PORTREVISION= 6
> +PORTREVISION= 7
> CATEGORIES= emulators kld
> MASTER_SITES= http://fabrice.bellard.free.fr/qemu/ \
> http://qemu.org/ \
> Index: files/patch-tssworkaround
> ===================================================================
> RCS file: /home/pcvs/ports/emulators/kqemu-kmod/files/patch-
> tssworkaround,v
> retrieving revision 1.3
> diff -u -p -r1.3 patch-tssworkaround
> --- files/patch-tssworkaround 12 May 2008 19:09:52 -0000 1.3
> +++ files/patch-tssworkaround 15 May 2008 17:04:38 -0000
> @@ -14,7 +14,7 @@ Index: kqemu-freebsd.c
>
> #include "kqemu-kernel.h"
>
> -@@ -248,6 +256,57 @@
> +@@ -248,6 +256,60 @@
> va_end(ap);
> }
>
> @@ -26,7 +26,7 @@ Index: kqemu-freebsd.c
> +extern struct pcpu __pcpu[];
> +
> +/* called with interrupts disabled */
> -+void CDECL kqemu_tss_fixup(unsigned long kerngdtbase)
> ++void CDECL kqemu_tss_fixup(unsigned long kerngdtbase, uint16_t
> kernldtsel)
> +{
> + int gsel_tss = GSEL(GPROC0_SEL, SEL_KPL);
> + unsigned cpuid = PCPU_GET(cpuid);
> @@ -64,6 +64,9 @@ Index: kqemu-freebsd.c
> + wrmsr(MSR_GSBASE, (u_int64_t)&__pcpu[cpuid]);
> + wrmsr(MSR_KGSBASE, curthread->td_pcb->pcb_gsbase);
> + wrmsr(MSR_FSBASE, 0);
> ++ ssdtosyssd(&gdt_segs[GPROC0_SEL],
> ++ (struct system_segment_descriptor *)&newgdt[GPROC0_SEL]);
> ++ lldt(kernldtsel);
> + }
> + ltr(gsel_tss);
> +}
> @@ -90,7 +93,7 @@ Index: common/kernel.c
> +#ifdef __FreeBSD__
> +#ifdef __x86_64__
> + spin_lock(&g->lock);
> -+ kqemu_tss_fixup(s->kernel_gdt.base);
> ++ kqemu_tss_fixup(s->kernel_gdt.base, s->kernel_ldt_sel);
> + spin_unlock(&g->lock);
> +#endif
> +#endif
> @@ -104,7 +107,7 @@ Index: kqemu-kernel.h
>
> +#ifdef __FreeBSD__
> +#ifdef __x86_64__
> -+void CDECL kqemu_tss_fixup(unsigned long kerngdtbase);
> ++void CDECL kqemu_tss_fixup(unsigned long kerngdtbase, uint16_t
> kernldtsel);
> +#endif
> +#endif
> +
More information about the freebsd-emulation
mailing list