apic.h (cf6567fe40c55e9cffca7355cd34e50fb2871e4e) | apic.h (ce4e240c279a31096f74afa6584a62d64a1ba8c8) |
---|---|
1#ifndef _ASM_X86_APIC_H 2#define _ASM_X86_APIC_H 3 4#include <linux/cpumask.h> 5#include <linux/delay.h> 6#include <linux/pm.h> 7 8#include <asm/alternative.h> --- 94 unchanged lines hidden (view full) --- 103} 104 105extern void native_apic_wait_icr_idle(void); 106extern u32 native_safe_apic_wait_icr_idle(void); 107extern void native_apic_icr_write(u32 low, u32 id); 108extern u64 native_apic_icr_read(void); 109 110#ifdef CONFIG_X86_X2APIC | 1#ifndef _ASM_X86_APIC_H 2#define _ASM_X86_APIC_H 3 4#include <linux/cpumask.h> 5#include <linux/delay.h> 6#include <linux/pm.h> 7 8#include <asm/alternative.h> --- 94 unchanged lines hidden (view full) --- 103} 104 105extern void native_apic_wait_icr_idle(void); 106extern u32 native_safe_apic_wait_icr_idle(void); 107extern void native_apic_icr_write(u32 low, u32 id); 108extern u64 native_apic_icr_read(void); 109 110#ifdef CONFIG_X86_X2APIC |
111/* 112 * Make previous memory operations globally visible before 113 * sending the IPI through x2apic wrmsr. We need a serializing instruction or 114 * mfence for this. 115 */ 116static inline void x2apic_wrmsr_fence(void) 117{ 118 asm volatile("mfence" : : : "memory"); 119} 120 |
|
111static inline void native_apic_msr_write(u32 reg, u32 v) 112{ 113 if (reg == APIC_DFR || reg == APIC_ID || reg == APIC_LDR || 114 reg == APIC_LVR) 115 return; 116 117 wrmsr(APIC_BASE_MSR + (reg >> 4), v, 0); 118} --- 452 unchanged lines hidden --- | 121static inline void native_apic_msr_write(u32 reg, u32 v) 122{ 123 if (reg == APIC_DFR || reg == APIC_ID || reg == APIC_LDR || 124 reg == APIC_LVR) 125 return; 126 127 wrmsr(APIC_BASE_MSR + (reg >> 4), v, 0); 128} --- 452 unchanged lines hidden --- |