Messages in this thread | | | Date | Wed, 27 May 2009 15:17:36 +0800 | From | Yong Wang <> | Subject | One question about perf_counter on IA |
| |
I noticed that the LVT error register is masked and then unmasked during perf_counter initialization on IA in arch/x86/kernel/cpu/perf_counter.c
void perf_counters_lapic_init(int nmi) { u32 apic_val;
if (!x86_pmu_initialized()) return;
/* * Enable the performance counter vector in the APIC LVT: */ apic_val = apic_read(APIC_LVTERR);
apic_write(APIC_LVTERR, apic_val | APIC_LVT_MASKED); if (nmi) apic_write(APIC_LVTPC, APIC_DM_NMI); else apic_write(APIC_LVTPC, LOCAL_PERF_VECTOR); apic_write(APIC_LVTERR, apic_val); }
Why is this needed? Is this documented somewhere in the spec? I tried commenting out the masking and unmasking operations and I did not any error interrupt generated.
Thanks -Yong
| |