#include void cpubug(void){ msr_t msr; int rev; msr = rdmsr(GLCP_CHIP_REVID); rev = msr.lo & 0xff; if (rev < 0x20) { printk_error("%s: rev < 0x20! bailing!\n"); return; } switch(rev) { case 0x20: pcideadlock(); eng1398(); bug752(); break; case 0x22: pcideadlock(); eng1398(); eng2900(); bug 118339(); break; case 0x22: case 0x30: break; default: printk_error("unknown rev %x, bailing\n", rev); return; } bug784(); bug118253(); disablememoryreadorder(); } #if 0 void bug645(void){ msr_t msr; rdmsr(CPU_ID_CONFIG); msr.whatever |= ID_CONFIG_SERIAL_SET; wrmsr(msr); } void bug573(void){ msr_t msr; msr = rdmsr(MC_GLD_MSR_PM); msr.eax &= 0xfff3; wrmsr(MC_GLD_MSR_PM); } static void pcideadlock(void){ msr_t msr; msr = rdmsr(CPU_DM_CONFIG0); msr.hi &= ~(7<