x86: apic: Extended interrupt LVT support for AMD Barcelona (32bit)
PATCH 1/1 x86: apic: Extended interrupt LVT support for AMD Barcelona (32bit)
Signed-off-by Robert Richter <[email protected]>
--- arch/x86/kernel/apic_32.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
arch/x86/kernel/apic_32.c +31 -0
@@ -605,6 +605,37 @@ int setup_profiling_timer(unsigned int multiplier) }/* +* Setup extended LVT, AMD specific (K8, family 10h) +* +* Vector mappings are hard coded. On K8 only offset 0 (APIC500) and +* MCE interrupts are supported. Thus MCE offset must be set to 0. +*/ + +#define APIC_EILVT_LVTOFF_MCE 0 +#define APIC_EILVT_LVTOFF_IBS 1 + +static void setup_APIC_eilvt (u8 lvt_off,u8 vector,u8 msg_type,u8 mask) +{ +unsigned long reg = (lvt_off <<4 ) +APIC_EILVT0 ; +unsigned int v = (mask <<16 ) | (msg_type <<8 ) | vector; +apic_write (reg, v); +} + +u8 setup_APIC_eilvt_mce (u8 vector,u8 msg_type,u8 mask) +{ +setup_APIC_eilvt (APIC_EILVT_LVTOFF_MCE , vector, msg_type, mask); +return APIC_EILVT_LVTOFF_MCE ; +} +EXPORT_SYMBOL (setup_APIC_eilvt_mce); + +u8 setup_APIC_eilvt_ibs (u8 vector,u8 msg_type,u8 mask) +{ +setup_APIC_eilvt (APIC_EILVT_LVTOFF_IBS , vector, msg_type, mask); +return APIC_EILVT_LVTOFF_IBS ; +} +EXPORT_SYMBOL (setup_APIC_eilvt_ibs); + +/* * Local APIC start and shutdown */
Signature · 1 line
1.5.1.6