···120static void do_powersaver(union msr_longhaul *longhaul,121 unsigned int clock_ratio_index)122{123- int version;124- unsigned long flags;125 struct pci_dev *dev;000126 int i;127 u16 pci_cmd;128 u16 cmd_state[64];···164 }165 } while (dev != NULL);1660000167 local_irq_enable();168169 __hlt();···175 __hlt();176177 local_irq_disable();00178179 /* restore pci bus master state for all devices */180 dev = NULL;
···120static void do_powersaver(union msr_longhaul *longhaul,121 unsigned int clock_ratio_index)122{00123 struct pci_dev *dev;124+ unsigned long flags;125+ unsigned int tmp_mask;126+ int version;127 int i;128 u16 pci_cmd;129 u16 cmd_state[64];···163 }164 } while (dev != NULL);165166+ tmp_mask=inb(0x21); /* works on C3. save mask. */167+ outb(0xFE,0x21); /* TMR0 only */168+ outb(0xFF,0x80); /* delay */169+170 local_irq_enable();171172 __hlt();···170 __hlt();171172 local_irq_disable();173+174+ outb(tmp_mask,0x21); /* restore mask */175176 /* restore pci bus master state for all devices */177 dev = NULL;