Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Dec 1997 17:30:01 -0800 (PST)
From:      Stephen McKay <syssgm@dtir.qld.gov.au>
To:        freebsd-bugs
Subject:   Re: kern/5244: F00F workaround dosn't always work on SMP system. 
Message-ID:  <199712090130.RAA09246@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/5244; it has been noted by GNATS.

From: Stephen McKay <syssgm@dtir.qld.gov.au>
To: Steve Passe <smp@csn.net>
Cc: freebsd-gnats-submit@freebsd.org, syssgm@dtir.qld.gov.au
Subject: Re: kern/5244: F00F workaround dosn't always work on SMP system. 
Date: Tue, 09 Dec 1997 11:24:53 +1000

 On Monday, 8th December 1997, Steve Passe wrote:
 
 > > Intel F00F workaround appears to only install on the first CPU in a
 > > dual CPU configuration.
 
 > The basic problem is the fact that r_idt is local in UP, and global in SMP.
 > This is because SMP:init_secondary() uses the global r_idt to sync the
 > additional CPUs to the boot CPU:
 
 Ooh that's tacky!  And the current F00F workaround makes it a little worse
 by adding t_idt.  I think we should have 'struct gate_descriptor *idt' and
 point that at 'normal_idt' or 'f00f_idt' as necessary.  Plus mp_machdep.c
 should build its own 'struct region_descriptor' and only refer to 'idt'.
 Thus only 'idt' need be global.  Hmm, or simply create a loadidt() in
 machdep.c that does the right thing.
 
 As a bonus for this 'idt' tidying, setidt() would work again after f00f_hack()
 runs.
 
 Stephen.



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