mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-03 10:29:15 +00:00
MFC revision 1.679:
Disallow the legacy USB circuit to generate an SMI# via an ICH register (MacBooks only). This allows MacBooks to boot in SMP mode without any trick and solves the timer problems with HZ=1000. Approved by: re (kensmith), njl (mentor)
This commit is contained in:
parent
edc309ced3
commit
6536499f7d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/releng/6.3/; revision=174793
@ -154,6 +154,10 @@ SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL)
|
||||
extern vm_offset_t ksym_start, ksym_end;
|
||||
#endif
|
||||
|
||||
/* Intel ICH registers */
|
||||
#define ICH_PMBASE 0x400
|
||||
#define ICH_SMI_EN ICH_PMBASE + 0x30
|
||||
|
||||
int _udatasel, _ucodesel, _ucode32sel;
|
||||
|
||||
int cold = 1;
|
||||
@ -185,6 +189,27 @@ static void
|
||||
cpu_startup(dummy)
|
||||
void *dummy;
|
||||
{
|
||||
char *sysenv;
|
||||
|
||||
/*
|
||||
* On MacBooks, we need to disallow the legacy USB circuit to
|
||||
* generate an SMI# because this can cause several problems,
|
||||
* namely: incorrect CPU frequency detection and failure to
|
||||
* start the APs.
|
||||
* We do this by disabling a bit in the SMI_EN (SMI Control and
|
||||
* Enable register) of the Intel ICH LPC Interface Bridge.
|
||||
*/
|
||||
sysenv = getenv("smbios.system.product");
|
||||
if (sysenv != NULL) {
|
||||
if (strncmp(sysenv, "MacBook", 7) == 0) {
|
||||
if (bootverbose)
|
||||
printf("Disabling LEGACY_USB_EN bit on "
|
||||
"Intel ICH.\n");
|
||||
outl(ICH_SMI_EN, inl(ICH_SMI_EN) & ~0x8);
|
||||
}
|
||||
freeenv(sysenv);
|
||||
}
|
||||
|
||||
/*
|
||||
* Good {morning,afternoon,evening,night}.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user