powernow regression in 8-STABLE
Jung-uk Kim
jkim at FreeBSD.org
Mon Jul 25 21:04:33 UTC 2011
On Saturday 23 July 2011 04:47 am, Jeremy Chadwick wrote:
> On Sat, Jul 23, 2011 at 06:13:04PM +1000, Callum Gibson wrote:
> > On 22Jul11 08:16, John Baldwin wrote:
> > }The problem is that we calibrate the TSC using this algorithm:
> > }
> > } - grab the TSC
> > } - spin on the ISA timer waiting for it to run for a second
> > } - grab the TSC
> > }
> > }The issue is that the SMI# fires at the same time we want to be
> > execuiting }step 3, and step 3 is deferred while the SMI# handler
> > runs. As a result, the }TSC delta ends up being "1 second + time
> > of an SMI# to poll USB". We have a }hack fix for this at work
> > that originally came from Attilio Rao. This is a }patch for it
> > relative to 8. It disables interrupt generation for the ISA
> > }timer while we calibrate the TSC (which disables the SMI#
> > temporarily):
> >
> > Thanks, John. The hack works as intended, but I guess it's not a
> > "real" solution which is why you haven't committed it?
>
> This sort of thing is going to have to get dealt with officially
> sooner or later, hack-fix or elegant solution either way[1].
>
> More and more systems are using native USB keyboards, and most
> system BIOSes I've seen (from multiple vendors, specifically
> Supermicro, Lenovo, Asus, Dell, HP, and Gigabyte[2]) are defaulting
> to having these options enabled (and rightfully so).
>
> If the hack-fix has repercussions, it would be helpful to know what
> those are or how those might manifest themselves. Otherwise, has
> anyone taken a look at how Linux addresses this problem? To my
> knowledge GRUB and similar bootstraps do not have a native USB
> stack, so I'm left wondering how they deal with this.
>
> [1]: I'm in no way saying "Hey! Fix this! {contributes nothing}",
> I'm simply pointing out that we're at a point where we really don't
> have much of a choice. The more I read technical explanations from
> John the more hate x86 architecture. ;-)
>
> [2]: On a couple Gigabyte boards I have the default values for said
> option is enabled (for both keyboard and mouse).
It is really annoying problem and it has to be fixed *properly*.
Previously, we dealt with similar SMI# problem per platform, e.g.,
http://svnweb.freebsd.org/base?view=revision&revision=174557
This quirk table matches 6 platforms now:
if (strncmp(sysenv, "MacBook1,1", 10) == 0 ||
strncmp(sysenv, "MacBook3,1", 10) == 0 ||
strncmp(sysenv, "MacBookPro1,1", 13) == 0 ||
strncmp(sysenv, "MacBookPro1,2", 13) == 0 ||
strncmp(sysenv, "MacBookPro3,1", 13) == 0 ||
strncmp(sysenv, "Macmini1,1", 10) == 0) {
if (bootverbose)
printf("Disabling LEGACY_USB_EN bit on "
"Intel ICH.\n");
outl(ICH_SMI_EN, inl(ICH_SMI_EN) & ~0x8);
}
...
We definitely need to generalize it as soon as possible.
Jung-uk Kim
More information about the freebsd-amd64
mailing list