--- cpufreq/arch/i386/kernel/cpu/cpufreq/longhaul.c~ 2005-06-08 19:53:28.000000000 -0700 +++ cpufreq/arch/i386/kernel/cpu/cpufreq/longhaul.c 2005-06-08 19:59:57.289167153 -0700 @@ -262,6 +262,10 @@ static void longhaul_setstate(unsigned i */ case TYPE_LONGHAUL_V1: case TYPE_LONGHAUL_V2: + preempt_disable(); + local_irq_save(flags); + disable_mastering(); + rdmsrl (MSR_VIA_BCR2, bcr2.val); /* Enable software clock multiplier */ bcr2.bits.ESOFTBF = 1; @@ -278,6 +282,10 @@ static void longhaul_setstate(unsigned i local_irq_disable(); wrmsrl (MSR_VIA_BCR2, bcr2.val); local_irq_enable(); + + restore_mastering(); + local_irq_restore(flags); + preempt_enable(); break; /*