diff options
Diffstat (limited to 'drivers/misc/sgi-gru/grumain.c')
-rw-r--r-- | drivers/misc/sgi-gru/grumain.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c index a383271d3912..120c70c5a28a 100644 --- a/drivers/misc/sgi-gru/grumain.c +++ b/drivers/misc/sgi-gru/grumain.c | |||
@@ -49,12 +49,16 @@ struct device *grudev = &gru_device; | |||
49 | /* | 49 | /* |
50 | * Select a gru fault map to be used by the current cpu. Note that | 50 | * Select a gru fault map to be used by the current cpu. Note that |
51 | * multiple cpus may be using the same map. | 51 | * multiple cpus may be using the same map. |
52 | * ZZZ should "shift" be used?? Depends on HT cpu numbering | ||
53 | * ZZZ should be inline but did not work on emulator | 52 | * ZZZ should be inline but did not work on emulator |
54 | */ | 53 | */ |
55 | int gru_cpu_fault_map_id(void) | 54 | int gru_cpu_fault_map_id(void) |
56 | { | 55 | { |
57 | return uv_blade_processor_id() % GRU_NUM_TFM; | 56 | int cpu = smp_processor_id(); |
57 | int id, core; | ||
58 | |||
59 | core = uv_cpu_core_number(cpu); | ||
60 | id = core + UV_MAX_INT_CORES * uv_cpu_socket_number(cpu); | ||
61 | return id; | ||
58 | } | 62 | } |
59 | 63 | ||
60 | /*--------- ASID Management ------------------------------------------- | 64 | /*--------- ASID Management ------------------------------------------- |
@@ -605,6 +609,7 @@ void gru_load_context(struct gru_thread_state *gts) | |||
605 | cch->unmap_enable = 1; | 609 | cch->unmap_enable = 1; |
606 | cch->tfm_done_bit_enable = 1; | 610 | cch->tfm_done_bit_enable = 1; |
607 | cch->cb_int_enable = 1; | 611 | cch->cb_int_enable = 1; |
612 | cch->tlb_int_select = 0; /* For now, ints go to cpu 0 */ | ||
608 | } else { | 613 | } else { |
609 | cch->unmap_enable = 0; | 614 | cch->unmap_enable = 0; |
610 | cch->tfm_done_bit_enable = 0; | 615 | cch->tfm_done_bit_enable = 0; |