diff options
| author | Boris Ostrovsky <boris.ostrovsky@oracle.com> | 2013-03-14 17:10:40 -0400 |
|---|---|---|
| committer | Borislav Petkov <bp@suse.de> | 2013-03-22 06:25:01 -0400 |
| commit | c76e81643c83a84d53a466de49baf38d5779c5ad (patch) | |
| tree | cba2505aabc4dc5ba51d3d7a174e5e8629dd824d /arch/x86/kernel/cpu/mcheck | |
| parent | a937536b868b8369b98967929045f1df54234323 (diff) | |
x86, MCE, AMD: Replace shared_bank array with is_shared_bank() helper
Use helper function instead of an array to report whether register
bank is shared. Currently only bank 4 (northbridge) is shared.
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Link: http://lkml.kernel.org/r/1363295441-1859-2-git-send-email-boris.ostrovsky@oracle.com
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'arch/x86/kernel/cpu/mcheck')
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce_amd.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c index 1ac581f38dfa..e3d81a8d646b 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c | |||
| @@ -58,11 +58,6 @@ static const char * const th_names[] = { | |||
| 58 | }; | 58 | }; |
| 59 | 59 | ||
| 60 | static DEFINE_PER_CPU(struct threshold_bank * [NR_BANKS], threshold_banks); | 60 | static DEFINE_PER_CPU(struct threshold_bank * [NR_BANKS], threshold_banks); |
| 61 | |||
| 62 | static unsigned char shared_bank[NR_BANKS] = { | ||
| 63 | 0, 0, 0, 0, 1 | ||
| 64 | }; | ||
| 65 | |||
| 66 | static DEFINE_PER_CPU(unsigned char, bank_map); /* see which banks are on */ | 61 | static DEFINE_PER_CPU(unsigned char, bank_map); /* see which banks are on */ |
| 67 | 62 | ||
| 68 | static void amd_threshold_interrupt(void); | 63 | static void amd_threshold_interrupt(void); |
| @@ -79,6 +74,12 @@ struct thresh_restart { | |||
| 79 | u16 old_limit; | 74 | u16 old_limit; |
| 80 | }; | 75 | }; |
| 81 | 76 | ||
| 77 | static inline bool is_shared_bank(int bank) | ||
| 78 | { | ||
| 79 | /* Bank 4 is for northbridge reporting and is thus shared */ | ||
| 80 | return (bank == 4); | ||
| 81 | } | ||
| 82 | |||
| 82 | static const char * const bank4_names(struct threshold_block *b) | 83 | static const char * const bank4_names(struct threshold_block *b) |
| 83 | { | 84 | { |
| 84 | switch (b->address) { | 85 | switch (b->address) { |
| @@ -575,7 +576,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank) | |||
| 575 | const char *name = th_names[bank]; | 576 | const char *name = th_names[bank]; |
| 576 | int err = 0; | 577 | int err = 0; |
| 577 | 578 | ||
| 578 | if (shared_bank[bank]) { | 579 | if (is_shared_bank(bank)) { |
| 579 | nb = node_to_amd_nb(amd_get_nb_id(cpu)); | 580 | nb = node_to_amd_nb(amd_get_nb_id(cpu)); |
| 580 | 581 | ||
| 581 | /* threshold descriptor already initialized on this node? */ | 582 | /* threshold descriptor already initialized on this node? */ |
| @@ -609,7 +610,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank) | |||
| 609 | 610 | ||
| 610 | per_cpu(threshold_banks, cpu)[bank] = b; | 611 | per_cpu(threshold_banks, cpu)[bank] = b; |
| 611 | 612 | ||
| 612 | if (shared_bank[bank]) { | 613 | if (is_shared_bank(bank)) { |
| 613 | atomic_set(&b->cpus, 1); | 614 | atomic_set(&b->cpus, 1); |
| 614 | 615 | ||
| 615 | /* nb is already initialized, see above */ | 616 | /* nb is already initialized, see above */ |
| @@ -691,7 +692,7 @@ static void threshold_remove_bank(unsigned int cpu, int bank) | |||
| 691 | if (!b->blocks) | 692 | if (!b->blocks) |
| 692 | goto free_out; | 693 | goto free_out; |
| 693 | 694 | ||
| 694 | if (shared_bank[bank]) { | 695 | if (is_shared_bank(bank)) { |
| 695 | if (!atomic_dec_and_test(&b->cpus)) { | 696 | if (!atomic_dec_and_test(&b->cpus)) { |
| 696 | __threshold_remove_blocks(b); | 697 | __threshold_remove_blocks(b); |
| 697 | per_cpu(threshold_banks, cpu)[bank] = NULL; | 698 | per_cpu(threshold_banks, cpu)[bank] = NULL; |
