I'm requesting review for the following patch: Index: sys/i386/isa/clock.c =================================================================== RCS file: /home/ncvs/src/sys/i386/isa/clock.c,v retrieving revision 1.240 diff -u -p -r1.240 clock.c --- sys/i386/isa/clock.c 26 Oct 2007 03:23:54 -0000 1.240 +++ sys/i386/isa/clock.c 7 Nov 2007 15:27:21 -0000 _at__at_ -130,6 +130,9 _at__at_ static u_char rtc_statusb = RTCSB_24HR; #define ACQUIRED 2 #define ACQUIRE_PENDING 3 +/* Intel ICH register */ +#define ICH_PMBASE 0x400 + static u_char timer2_state; static unsigned i8254_get_timecount(struct timecounter *tc); _at__at_ -616,11 +619,26 _at__at_ i8254_init(void) void startrtclock() { + char *ichenv; u_int delta, freq; writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, RTCSB_24HR); + /* + * On some systems, namely 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. + */ + ichenv = getenv("hw.ich.disable_legacy_usb"); + if (ichenv != NULL) { + if (bootverbose) + printf("Disabling LEGACY_USB_EN bit on Intel ICH.\n"); + outl(ICH_PMBASE + 0x30, inl(ICH_PMBASE + 0x30) & ~0x8); + freeenv(ichsmi); + } + freq = calibrate_clocks(); #ifdef CLK_CALIBRATION_LOOP if (bootverbose) { If you have a MacBook, you now need to set hw.ich.disable_legacy_usb on the boot loader prompt or in loader.conf. I decided to go this route because it seems safer. Imagine the case where there's a port at the same IO address that has nothing to do with the ICH7. If we tried to issue the outl() on every system, something bad could happen. Comments? Regards. -- Rui PauloReceived on Wed Nov 07 2007 - 14:30:36 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:21 UTC