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