static void clear_APIC_ibs(void *dummy) { int offset; offset = get_ibs_lvt_offset(); if (offset >= 0) setup_APIC_eilvt(offset, 0, APIC_EILVT_MSG_FIX, 1); }
static void setup_APIC_ibs(void *dummy) { int offset; offset = get_ibs_lvt_offset(); if (offset < 0) goto failed; if (!setup_APIC_eilvt(offset, 0, APIC_EILVT_MSG_NMI, 0)) return; failed: pr_warn("perf: IBS APIC setup failed on cpu #%d\n", smp_processor_id()); }
static inline int put_eilvt(int offset) { return !setup_APIC_eilvt(offset, 0, 0, 1); }
static inline int get_eilvt(int offset) { return !setup_APIC_eilvt(offset, 0, APIC_EILVT_MSG_NMI, 1); }
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; }
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; }