diff options
Diffstat (limited to 'drivers/misc/sgi-gru')
-rw-r--r-- | drivers/misc/sgi-gru/grufault.c | 10 | ||||
-rw-r--r-- | drivers/misc/sgi-gru/grulib.h | 5 | ||||
-rw-r--r-- | drivers/misc/sgi-gru/grumain.c | 2 | ||||
-rw-r--r-- | drivers/misc/sgi-gru/grutables.h | 2 |
4 files changed, 17 insertions, 2 deletions
diff --git a/drivers/misc/sgi-gru/grufault.c b/drivers/misc/sgi-gru/grufault.c index a9f0cf483005..a69d119921ff 100644 --- a/drivers/misc/sgi-gru/grufault.c +++ b/drivers/misc/sgi-gru/grufault.c | |||
@@ -763,6 +763,16 @@ int gru_set_context_option(unsigned long arg) | |||
763 | return -EINVAL; | 763 | return -EINVAL; |
764 | 764 | ||
765 | switch (req.op) { | 765 | switch (req.op) { |
766 | case sco_blade_chiplet: | ||
767 | /* Select blade/chiplet for GRU context */ | ||
768 | if (req.val1 < -1 || req.val1 >= GRU_MAX_BLADES || !gru_base[req.val1] || | ||
769 | req.val0 < -1 || req.val0 >= GRU_CHIPLETS_PER_HUB) { | ||
770 | ret = -EINVAL; | ||
771 | } else { | ||
772 | gts->ts_user_blade_id = req.val1; | ||
773 | gts->ts_user_chiplet_id = req.val0; | ||
774 | } | ||
775 | break; | ||
766 | case sco_gseg_owner: | 776 | case sco_gseg_owner: |
767 | /* Register the current task as the GSEG owner */ | 777 | /* Register the current task as the GSEG owner */ |
768 | gts->ts_tgid_owner = current->tgid; | 778 | gts->ts_tgid_owner = current->tgid; |
diff --git a/drivers/misc/sgi-gru/grulib.h b/drivers/misc/sgi-gru/grulib.h index 889bc442a3e8..e94ee2b8bd64 100644 --- a/drivers/misc/sgi-gru/grulib.h +++ b/drivers/misc/sgi-gru/grulib.h | |||
@@ -98,11 +98,12 @@ struct gru_unload_context_req { | |||
98 | /* | 98 | /* |
99 | * Structure used to set context options | 99 | * Structure used to set context options |
100 | */ | 100 | */ |
101 | enum {sco_gseg_owner, sco_cch_req_slice}; | 101 | enum {sco_gseg_owner, sco_cch_req_slice, sco_blade_chiplet}; |
102 | struct gru_set_context_option_req { | 102 | struct gru_set_context_option_req { |
103 | unsigned long gseg; | 103 | unsigned long gseg; |
104 | int op; | 104 | int op; |
105 | unsigned long val1; | 105 | int val0; |
106 | long val1; | ||
106 | }; | 107 | }; |
107 | 108 | ||
108 | /* | 109 | /* |
diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c index 3bc643dad606..f449c2dbc1e3 100644 --- a/drivers/misc/sgi-gru/grumain.c +++ b/drivers/misc/sgi-gru/grumain.c | |||
@@ -328,6 +328,8 @@ struct gru_thread_state *gru_alloc_gts(struct vm_area_struct *vma, | |||
328 | gts->ts_cbr_au_count = cbr_au_count; | 328 | gts->ts_cbr_au_count = cbr_au_count; |
329 | gts->ts_dsr_au_count = dsr_au_count; | 329 | gts->ts_dsr_au_count = dsr_au_count; |
330 | gts->ts_user_options = options; | 330 | gts->ts_user_options = options; |
331 | gts->ts_user_blade_id = -1; | ||
332 | gts->ts_user_chiplet_id = -1; | ||
331 | gts->ts_tsid = tsid; | 333 | gts->ts_tsid = tsid; |
332 | gts->ts_ctxnum = NULLCTX; | 334 | gts->ts_ctxnum = NULLCTX; |
333 | gts->ts_tlb_int_select = -1; | 335 | gts->ts_tlb_int_select = -1; |
diff --git a/drivers/misc/sgi-gru/grutables.h b/drivers/misc/sgi-gru/grutables.h index f7b553a56ed0..27131fb2253f 100644 --- a/drivers/misc/sgi-gru/grutables.h +++ b/drivers/misc/sgi-gru/grutables.h | |||
@@ -369,6 +369,8 @@ struct gru_thread_state { | |||
369 | long ts_user_options;/* misc user option flags */ | 369 | long ts_user_options;/* misc user option flags */ |
370 | pid_t ts_tgid_owner; /* task that is using the | 370 | pid_t ts_tgid_owner; /* task that is using the |
371 | context - for migration */ | 371 | context - for migration */ |
372 | short ts_user_blade_id;/* user selected blade */ | ||
373 | char ts_user_chiplet_id;/* user selected chiplet */ | ||
372 | unsigned short ts_sizeavail; /* Pagesizes in use */ | 374 | unsigned short ts_sizeavail; /* Pagesizes in use */ |
373 | int ts_tsid; /* thread that owns the | 375 | int ts_tsid; /* thread that owns the |
374 | structure */ | 376 | structure */ |