Lines Matching refs:cb

262 static int gru_get_cpu_resources(int dsr_bytes, void **cb, void **dsr)
271 *cb = bs->kernel_cb + lcpu * GRU_HANDLE_STRIDE;
279 static void gru_free_cpu_resources(void *cb, void *dsr)
363 * cb - pointer to first CBR
366 void gru_lock_async_resource(unsigned long han, void **cb, void **dsr)
374 if (cb)
375 *cb = bs->kernel_cb + ncpus * GRU_HANDLE_STRIDE;
394 int gru_get_cb_exception_detail(void *cb,
403 * Locate kgts for cb. This algorithm is SLOW but
413 off = cb - kgts->ts_gru->gs_gru_base_vaddr;
419 cbrnum = thread_cbr_number(kgts, get_cb_number(cb));
420 cbe = get_cbe(GRUBASE(cb), cbrnum);
432 char *gru_get_cb_exception_detail_str(int ret, void *cb,
435 struct gru_control_block_status *gen = (void *)cb;
439 gru_get_cb_exception_detail(cb, &excdet);
441 "GRU:%d exception: cb %p, opc %d, exopc %d, ecause 0x%x,"
460 static int gru_retry_exception(void *cb)
462 struct gru_control_block_status *gen = (void *)cb;
469 if (gru_get_cb_message_queue_substatus(cb))
471 gru_get_cb_exception_detail(cb, &excdet);
483 int gru_check_status_proc(void *cb)
485 struct gru_control_block_status *gen = (void *)cb;
490 ret = gru_retry_exception(cb);
496 int gru_wait_proc(void *cb)
498 struct gru_control_block_status *gen = (void *)cb;
503 ret = gru_retry_exception(cb);
508 void gru_abort(int ret, void *cb, char *str)
513 gru_get_cb_exception_detail_str(ret, cb, buf, sizeof(buf)));
516 void gru_wait_abort_proc(void *cb)
520 ret = gru_wait_proc(cb);
522 gru_abort(ret, cb, "gru_wait_abort");
586 static int send_noop_message(void *cb, struct gru_message_queue_desc *mqd,
598 gru_mesq(cb, mqd->mq_gpa, gru_get_tri(mhdr), 1, IMA);
599 ret = gru_wait(cb);
602 substatus = gru_get_cb_message_queue_substatus(cb);
622 m = mqd->mq_gpa + (gru_get_amo_value_head(cb) << 6);
623 gru_vstore(cb, m, gru_get_tri(mesg), XTYPE_CL, 1, 1,
625 if (gru_wait(cb) == CBS_IDLE)
644 static int send_message_queue_full(void *cb, struct gru_message_queue_desc *mqd,
653 avalue = gru_get_amo_value(cb);
654 head = gru_get_amo_value_head(cb);
655 limit = gru_get_amo_value_limit(cb);
666 gru_gamir(cb, EOP_IR_CLR, HSTATUS(mqd->mq_gpa, half), XTYPE_DW, IMA);
667 if (gru_wait(cb) != CBS_IDLE)
669 if (!gru_get_amo_value(cb)) {
676 if (send_noop_message(cb, mqd, mesg)) {
677 gru_gamir(cb, EOP_IR_INC, HSTATUS(mqd->mq_gpa, half),
679 if (gru_wait(cb) != CBS_IDLE)
688 gru_gamer(cb, EOP_ERR_CSWAP, mqd->mq_gpa, XTYPE_DW, mqh.val, avalue,
690 if (gru_wait(cb) != CBS_IDLE)
694 if (gru_get_amo_value(cb) != avalue) {
696 gru_gamir(cb, EOP_IR_INC, HSTATUS(mqd->mq_gpa, half), XTYPE_DW,
698 if (gru_wait(cb) != CBS_IDLE)
713 static int send_message_put_nacked(void *cb, struct gru_message_queue_desc *mqd,
719 m = mqd->mq_gpa + (gru_get_amo_value_head(cb) << 6);
721 gru_vset(cb, m, 0, XTYPE_CL, lines, 1, IMA);
722 if (gru_wait(cb) != CBS_IDLE)
725 gru_vstore(cb, m, gru_get_tri(mesg), XTYPE_CL, lines, 1, IMA);
726 if (gru_wait(cb) != CBS_IDLE)
743 gru_vstore_phys(cb, gpa, gru_get_tri(mesg), IAA_REGISTER, IMA);
744 ret = gru_wait(cb);
755 static int send_message_failure(void *cb, struct gru_message_queue_desc *mqd,
760 substatus = gru_get_cb_message_queue_substatus(cb);
772 ret = send_message_queue_full(cb, mqd, mesg, lines);
780 ret = send_message_put_nacked(cb, mqd, mesg, lines);
801 void *cb;
809 if (gru_get_cpu_resources(bytes, &cb, &dsr))
822 gru_mesq(cb, mqd->mq_gpa, gru_get_tri(mhdr), clines, IMA);
823 istatus = gru_wait(cb);
825 ret = send_message_failure(cb, mqd, dsr, clines);
827 gru_free_cpu_resources(cb, dsr);
908 void *cb;
913 if (gru_get_cpu_resources(GRU_NUM_KERNEL_DSR_BYTES, &cb, &dsr))
916 gru_vload_phys(cb, gpa, gru_get_tri(dsr), iaa, IMA);
917 ret = gru_wait(cb);
920 gru_free_cpu_resources(cb, dsr);
932 void *cb;
937 if (gru_get_cpu_resources(GRU_NUM_KERNEL_DSR_BYTES, &cb, &dsr))
939 gru_bcopy(cb, src_gpa, dest_gpa, gru_get_tri(dsr),
941 ret = gru_wait(cb);
942 gru_free_cpu_resources(cb, dsr);
954 void *cb;
959 if (gru_get_cpu_resources(GRU_CACHE_LINE_BYTES, &cb, &dsr))
965 gru_vload(cb, uv_gpa(&word0), gru_get_tri(dsr), XTYPE_DW, 1, 1, IMA);
966 if (gru_wait(cb) != CBS_IDLE) {
975 gru_vstore(cb, uv_gpa(&word1), gru_get_tri(dsr), XTYPE_DW, 1, 1, IMA);
976 if (gru_wait(cb) != CBS_IDLE) {
990 gru_free_cpu_resources(cb, dsr);
1053 void *cb0, *cb;
1078 cb = cb0 + i * GRU_HANDLE_STRIDE;
1079 istatus = gru_check_status(cb);
1086 printk(KERN_DEBUG "GRU:%d quicktest2: cb %d, exception\n", smp_processor_id(), i);
1090 printk(KERN_DEBUG "GRU:%d quicktest2:cb %d, buf 0x%lx, 0x%lx, 0x%lx, 0x%lx\n",
1095 gen = cb;