Commit 124d395f authored by Stephane Eranian's avatar Stephane Eranian Committed by Thomas Gleixner

i386: do not BUG_ON() when MSR is unknown

Here is a small patch to change the behavior of the PMU msr allocator
to avoid BUG_ON() when the MSR is unknwon. Instead, it now returns
ok, which means "I do not manage". The current allocator is not
yet managing the full set of PMU registers (e.g., GLOBAL_* on Core 2).

[watchdog] do not BUG_ON() in the MSR allocator if MSR is unknown, return ok
instead
Signed-off-by: default avatarStephane Eranian <eranian@hpl.hp.com>
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 71b31233
...@@ -120,7 +120,9 @@ int reserve_perfctr_nmi(unsigned int msr) ...@@ -120,7 +120,9 @@ int reserve_perfctr_nmi(unsigned int msr)
unsigned int counter; unsigned int counter;
counter = nmi_perfctr_msr_to_bit(msr); counter = nmi_perfctr_msr_to_bit(msr);
BUG_ON(counter > NMI_MAX_COUNTER_BITS); /* register not managed by the allocator? */
if (counter > NMI_MAX_COUNTER_BITS)
return 1;
if (!test_and_set_bit(counter, perfctr_nmi_owner)) if (!test_and_set_bit(counter, perfctr_nmi_owner))
return 1; return 1;
...@@ -132,7 +134,9 @@ void release_perfctr_nmi(unsigned int msr) ...@@ -132,7 +134,9 @@ void release_perfctr_nmi(unsigned int msr)
unsigned int counter; unsigned int counter;
counter = nmi_perfctr_msr_to_bit(msr); counter = nmi_perfctr_msr_to_bit(msr);
BUG_ON(counter > NMI_MAX_COUNTER_BITS); /* register not managed by the allocator? */
if (counter > NMI_MAX_COUNTER_BITS)
return;
clear_bit(counter, perfctr_nmi_owner); clear_bit(counter, perfctr_nmi_owner);
} }
...@@ -142,7 +146,9 @@ int reserve_evntsel_nmi(unsigned int msr) ...@@ -142,7 +146,9 @@ int reserve_evntsel_nmi(unsigned int msr)
unsigned int counter; unsigned int counter;
counter = nmi_evntsel_msr_to_bit(msr); counter = nmi_evntsel_msr_to_bit(msr);
BUG_ON(counter > NMI_MAX_COUNTER_BITS); /* register not managed by the allocator? */
if (counter > NMI_MAX_COUNTER_BITS)
return 1;
if (!test_and_set_bit(counter, evntsel_nmi_owner)) if (!test_and_set_bit(counter, evntsel_nmi_owner))
return 1; return 1;
...@@ -154,7 +160,9 @@ void release_evntsel_nmi(unsigned int msr) ...@@ -154,7 +160,9 @@ void release_evntsel_nmi(unsigned int msr)
unsigned int counter; unsigned int counter;
counter = nmi_evntsel_msr_to_bit(msr); counter = nmi_evntsel_msr_to_bit(msr);
BUG_ON(counter > NMI_MAX_COUNTER_BITS); /* register not managed by the allocator? */
if (counter > NMI_MAX_COUNTER_BITS)
return;
clear_bit(counter, evntsel_nmi_owner); clear_bit(counter, evntsel_nmi_owner);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment