diff options
| -rw-r--r-- | drivers/misc/sgi-gru/gruhandles.c | 12 | ||||
| -rw-r--r-- | drivers/misc/sgi-gru/gruhandles.h | 4 | ||||
| -rw-r--r-- | drivers/misc/sgi-gru/grukservices.c | 5 | ||||
| -rw-r--r-- | drivers/misc/sgi-gru/grumain.c | 15 | 
4 files changed, 17 insertions, 19 deletions
diff --git a/drivers/misc/sgi-gru/gruhandles.c b/drivers/misc/sgi-gru/gruhandles.c index 9b7ccb328697..a3a870ad9153 100644 --- a/drivers/misc/sgi-gru/gruhandles.c +++ b/drivers/misc/sgi-gru/gruhandles.c @@ -72,18 +72,8 @@ static int wait_instruction_complete(void *h, enum mcs_op opc)  	return status;  } -int cch_allocate(struct gru_context_configuration_handle *cch, -		int asidval, int sizeavail, unsigned long cbrmap, -		unsigned long dsrmap) +int cch_allocate(struct gru_context_configuration_handle *cch)  { -	int i; - -	for (i = 0; i < 8; i++) { -		cch->asid[i] = (asidval++); -		cch->sizeavail[i] = sizeavail; -	} -	cch->dsr_allocation_map = dsrmap; -	cch->cbr_allocation_map = cbrmap;  	cch->opc = CCHOP_ALLOCATE;  	start_instruction(cch);  	return wait_instruction_complete(cch, cchop_allocate); diff --git a/drivers/misc/sgi-gru/gruhandles.h b/drivers/misc/sgi-gru/gruhandles.h index 03b76a1993c3..9f41e2cc09d5 100644 --- a/drivers/misc/sgi-gru/gruhandles.h +++ b/drivers/misc/sgi-gru/gruhandles.h @@ -480,9 +480,7 @@ enum gru_cbr_state {  /* minimum TLB purge count to ensure a full purge */  #define GRUMAXINVAL		1024UL -int cch_allocate(struct gru_context_configuration_handle *cch, -       int asidval, int sizeavail, unsigned long cbrmap, unsigned long dsrmap); - +int cch_allocate(struct gru_context_configuration_handle *cch);  int cch_start(struct gru_context_configuration_handle *cch);  int cch_interrupt(struct gru_context_configuration_handle *cch);  int cch_deallocate(struct gru_context_configuration_handle *cch); diff --git a/drivers/misc/sgi-gru/grukservices.c b/drivers/misc/sgi-gru/grukservices.c index d8bd7d84a7cf..900f7aad2286 100644 --- a/drivers/misc/sgi-gru/grukservices.c +++ b/drivers/misc/sgi-gru/grukservices.c @@ -672,7 +672,10 @@ int gru_kservices_init(struct gru_state *gru)  	cch->tlb_int_enable = 0;  	cch->tfm_done_bit_enable = 0;  	cch->unmap_enable = 1; -	err = cch_allocate(cch, 0, 0, cbr_map, dsr_map); +	cch->dsr_allocation_map = dsr_map; +	cch->cbr_allocation_map = cbr_map; + +	err = cch_allocate(cch);  	if (err) {  		gru_dbg(grudev,  			"Unable to allocate kernel CCH: gid %d, err %d\n", diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c index 6358244f392d..0c7bd384f0cf 100644 --- a/drivers/misc/sgi-gru/grumain.c +++ b/drivers/misc/sgi-gru/grumain.c @@ -537,13 +537,12 @@ void gru_load_context(struct gru_thread_state *gts)  {  	struct gru_state *gru = gts->ts_gru;  	struct gru_context_configuration_handle *cch; -	int err, asid, ctxnum = gts->ts_ctxnum; +	int i, err, asid, ctxnum = gts->ts_ctxnum;  	gru_dbg(grudev, "gts %p\n", gts);  	cch = get_cch(gru->gs_gru_base_vaddr, ctxnum);  	lock_cch_handle(cch); -	asid = gru_load_mm_tracker(gru, gts);  	cch->tfm_fault_bit_enable =  	    (gts->ts_user_options == GRU_OPT_MISS_FMM_POLL  	     || gts->ts_user_options == GRU_OPT_MISS_FMM_INTR); @@ -553,8 +552,16 @@ void gru_load_context(struct gru_thread_state *gts)  		cch->tlb_int_select = gts->ts_tlb_int_select;  	}  	cch->tfm_done_bit_enable = 0; -	err = cch_allocate(cch, asid, gts->ts_sizeavail, gts->ts_cbr_map, -				gts->ts_dsr_map); +	cch->dsr_allocation_map = gts->ts_dsr_map; +	cch->cbr_allocation_map = gts->ts_cbr_map; +	asid = gru_load_mm_tracker(gru, gts); +	cch->unmap_enable = 0; +	for (i = 0; i < 8; i++) { +		cch->asid[i] = asid + i; +		cch->sizeavail[i] = gts->ts_sizeavail; +	} + +	err = cch_allocate(cch);  	if (err) {  		gru_dbg(grudev,  			"err %d: cch %p, gts %p, cbr 0x%lx, dsr 0x%lx\n",  | 
