From owner-freebsd-emulation@FreeBSD.ORG Tue May 6 19:35:43 2008 Return-Path: Delivered-To: freebsd-emulation@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7504F1065672 for ; Tue, 6 May 2008 19:35:43 +0000 (UTC) (envelope-from bsd@kuehlbox.de) Received: from samael.qmail-ldap.de (mail.kuehlbox.de [62.159.47.22]) by mx1.freebsd.org (Postfix) with ESMTP id AE8618FC27 for ; Tue, 6 May 2008 19:35:42 +0000 (UTC) (envelope-from bsd@kuehlbox.de) Received: (qmail 56560 invoked from network); 6 May 2008 19:08:49 -0000 Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=kuehlbox.de; b=EAjFtgBIaUweJaZ9Xh+dluxc4MGTGvdiox46FvSQC53AYz48oWafLAKLYetCGmVLQj9N0/FFKZNLryOHJjL4OPU4dudci2C0bOc7pue7U5N3zXVd/t2DukPTdmysfoY2 ; Received: from unknown (HELO [192.168.200.128]) (bsd@kuehlbox.de@[10.0.48.22]) (envelope-sender ) by samael.qmail-ldap.de (qmail-ldap-1.03) with SMTP for ; 6 May 2008 19:08:49 -0000 Received: from: ppp-88-217-15-6.dynamic.mnet-online.de ([88.217.15.6]) by HSF smtp proxy with AES256-SHA encrypted SMTP Message-ID: <4820AC9A.1070803@kuehlbox.de> Date: Tue, 06 May 2008 21:08:10 +0200 From: Teufel User-Agent: Thunderbird 2.0.0.14 (Windows/20080421) MIME-Version: 1.0 To: freebsd-emulation@FreeBSD.org References: <20080429222458.GA20855@saturn.kn-bremen.de> <20080501101951.GA30274@saturn.kn-bremen.de> In-Reply-To: <20080501101951.GA30274@saturn.kn-bremen.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Subject: Re: seems I finally found what upset kqemu on amd64 SMP... shared gdt! (please test patch :) X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 May 2008 19:35:43 -0000 Juergen Lock wrote: > The patch applied with offsets (I still had debug code in when I made it), > here is a rebased version: > > Index: kqemu-freebsd.c > @@ -33,6 +33,11 @@ > > #include > #include > +#ifdef __x86_64__ > +#include > +#include > +#include > +#endif > > #include "kqemu-kernel.h" > > @@ -234,6 +239,19 @@ > va_end(ap); > } > > +#ifdef __x86_64__ > +/* called with interrupts disabled */ > +void CDECL kqemu_tss_workaround(void) > +{ > + int gsel_tss = GSEL(GPROC0_SEL, SEL_KPL); > + > + gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[PCPU_GET(cpuid)]; > + ssdtosyssd(&gdt_segs[GPROC0_SEL], > + (struct system_segment_descriptor *)&gdt[GPROC0_SEL]); > + ltr(gsel_tss); > +} > +#endif > + > struct kqemu_instance { > #if __FreeBSD_version >= 500000 > TAILQ_ENTRY(kqemu_instance) kqemu_ent; > Index: common/kernel.c > @@ -1025,6 +1025,9 @@ > #ifdef __x86_64__ > uint16_t saved_ds, saved_es; > unsigned long fs_base, gs_base; > +#ifdef __FreeBSD__ > + struct kqemu_global_state *g = s->global_state; > +#endif > #endif > > #ifdef PROFILE > @@ -1188,6 +1191,13 @@ > apic_restore_nmi(s, apic_nmi_mask); > } > profile_record(s); > +#ifdef __FreeBSD__ > +#ifdef __x86_64__ > + spin_lock(&g->lock); > + kqemu_tss_workaround(); > + spin_unlock(&g->lock); > +#endif > +#endif > > if (s->mon_req == MON_REQ_IRQ) { > struct kqemu_exception_regs *r; > Index: kqemu-kernel.h > @@ -44,4 +44,10 @@ > > void CDECL kqemu_log(const char *fmt, ...); > > +#ifdef __FreeBSD__ > +#ifdef __x86_64__ > +void CDECL kqemu_tss_workaround(void); > +#endif > +#endif > + > #endif /* KQEMU_KERNEL_H */ > applied the patch and kqemu works now with quad core CPU running 7-stable amd64 smp. However, running a win2k3 guest results in many "fpudna in kernel mode!" kernel messages, regardless if -kernel-mode is used or not (but with kqemu-user enabled). What needs to be done to fix that? Greetings, Xat