Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 May 2008 19:28:36 +0200
From:      Juergen Lock <nox@jelal.kn-bremen.de>
To:        Todd Wasson <tsw5@duke.edu>
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: kqemu locking my machine hard on amd64 smp, with most recent patches
Message-ID:  <20080515172836.GA7890@saturn.kn-bremen.de>
In-Reply-To: <880CC127-204C-415C-AF59-903F5DA1CAA3@duke.edu>
References:  <200805142333.m4ENXhdi014634@saturn.kn-bremen.de> <880CC127-204C-415C-AF59-903F5DA1CAA3@duke.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
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
 +



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080515172836.GA7890>