diff options
| -rw-r--r-- | drivers/misc/sgi-gru/grufault.c | 4 | ||||
| -rw-r--r-- | drivers/misc/sgi-gru/grulib.h | 2 | ||||
| -rw-r--r-- | drivers/misc/sgi-gru/grumain.c | 7 | ||||
| -rw-r--r-- | drivers/misc/sgi-gru/grutables.h | 1 | 
4 files changed, 13 insertions, 1 deletions
diff --git a/drivers/misc/sgi-gru/grufault.c b/drivers/misc/sgi-gru/grufault.c index b894b7ed9c35..1ad360cd3183 100644 --- a/drivers/misc/sgi-gru/grufault.c +++ b/drivers/misc/sgi-gru/grufault.c @@ -769,6 +769,10 @@ int gru_set_context_option(unsigned long arg)   		/* Register the current task as the GSEG owner */  		gts->ts_tgid_owner = current->tgid;  		break; +	case sco_cch_req_slice: + 		/* Set the CCH slice option */ +		gts->ts_cch_req_slice = req.val1 & 3; +		break;  	default:  		ret = -EINVAL;  	} diff --git a/drivers/misc/sgi-gru/grulib.h b/drivers/misc/sgi-gru/grulib.h index 8615b904a7c7..a484a9fee3ce 100644 --- a/drivers/misc/sgi-gru/grulib.h +++ b/drivers/misc/sgi-gru/grulib.h @@ -98,7 +98,7 @@ struct gru_unload_context_req {  /*   * Structure used to set context options   */ -enum {sco_gseg_owner}; +enum {sco_gseg_owner, sco_cch_req_slice};  struct gru_set_context_option_req {  	unsigned long	gseg;  	int		op; diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c index 347004e4f591..0c20be007b20 100644 --- a/drivers/misc/sgi-gru/grumain.c +++ b/drivers/misc/sgi-gru/grumain.c @@ -321,6 +321,7 @@ struct gru_thread_state *gru_alloc_gts(struct vm_area_struct *vma,  	gts->ts_tsid = tsid;  	gts->ts_ctxnum = NULLCTX;  	gts->ts_tlb_int_select = -1; +	gts->ts_cch_req_slice = -1;  	gts->ts_sizeavail = GRU_SIZEAVAIL(PAGE_SHIFT);  	if (vma) {  		gts->ts_mm = current->mm; @@ -566,6 +567,12 @@ void gru_load_context(struct gru_thread_state *gts)  		gts->ts_tlb_int_select = gru_cpu_fault_map_id();  		cch->tlb_int_select = gts->ts_tlb_int_select;  	} +	if (gts->ts_cch_req_slice >= 0) { +		cch->req_slice_set_enable = 1; +		cch->req_slice = gts->ts_cch_req_slice; +	} else { +		cch->req_slice_set_enable =0; +	}  	cch->tfm_done_bit_enable = 0;  	cch->dsr_allocation_map = gts->ts_dsr_map;  	cch->cbr_allocation_map = gts->ts_cbr_map; diff --git a/drivers/misc/sgi-gru/grutables.h b/drivers/misc/sgi-gru/grutables.h index ee2f4121db21..34ab3d453919 100644 --- a/drivers/misc/sgi-gru/grutables.h +++ b/drivers/misc/sgi-gru/grutables.h @@ -380,6 +380,7 @@ struct gru_thread_state {  						   required for contest */  	unsigned char		ts_cbr_au_count;/* Number of CBR resources  						   required for contest */ +	char			ts_cch_req_slice;/* CCH packet slice */  	char			ts_blade;	/* If >= 0, migrate context if  						   ref from diferent blade */  	char			ts_force_cch_reload;  | 
