diff options
| author | Wim Van Sebroeck <wim@iguana.be> | 2007-05-11 19:03:13 +0000 | 
|---|---|---|
| committer | Wim Van Sebroeck <wim@iguana.be> | 2007-05-11 19:03:13 +0000 | 
| commit | 5c34202b8bf942da411b6599668a76b07449bbfd (patch) | |
| tree | 5719c361321eaddc8e4f1b0c8a7994f0e9a6fdd3 /arch/i386/kernel/apic.c | |
| parent | 0d4804b31f91cfbcff6d62af0bc09a893a1c8ae0 (diff) | |
| parent | 1f8a6b658a943b4f04a1fc7b3a420360202c86cd (diff) | |
Merge /pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/i386/kernel/apic.c')
| -rw-r--r-- | arch/i386/kernel/apic.c | 23 | 
1 files changed, 22 insertions, 1 deletions
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 93aa911646a..67824f3bb97 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c @@ -19,7 +19,6 @@  #include <linux/mm.h>  #include <linux/delay.h>  #include <linux/bootmem.h> -#include <linux/smp_lock.h>  #include <linux/interrupt.h>  #include <linux/mc146818rtc.h>  #include <linux/kernel_stat.h> @@ -129,6 +128,28 @@ static int modern_apic(void)  	return lapic_get_version() >= 0x14;  } +void apic_wait_icr_idle(void) +{ +	while (apic_read(APIC_ICR) & APIC_ICR_BUSY) +		cpu_relax(); +} + +unsigned long safe_apic_wait_icr_idle(void) +{ +	unsigned long send_status; +	int timeout; + +	timeout = 0; +	do { +		send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY; +		if (!send_status) +			break; +		udelay(100); +	} while (timeout++ < 1000); + +	return send_status; +} +  /**   * enable_NMI_through_LVT0 - enable NMI through local vector table 0   */  | 
