Lines Matching refs:rpc

369 	struct nvfw_gsp_rpc *rpc = container_of(argv, typeof(*rpc), data);
371 u32 fn = rpc->function;
376 nvkm_trace(&gsp->subdev, "rpc fn:%d len:0x%x/0x%zx\n", rpc->function,
377 rpc->length, rpc->length - sizeof(*rpc));
378 print_hex_dump(KERN_INFO, "rpc: ", DUMP_PREFIX_OFFSET, 16, 1,
379 rpc->data, rpc->length - sizeof(*rpc), true);
382 ret = r535_gsp_cmdq_push(gsp, rpc);
566 rpc_free_v03_00 *rpc;
571 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_FREE, sizeof(*rpc));
572 if (WARN_ON(IS_ERR_OR_NULL(rpc)))
575 rpc->params.hRoot = client->object.handle;
576 rpc->params.hObjectParent = 0;
577 rpc->params.hObjectOld = object->handle;
578 return nvkm_gsp_rpc_wr(gsp, rpc, true);
584 rpc_gsp_rm_alloc_v03_00 *rpc = container_of(repv, typeof(*rpc), params);
586 nvkm_gsp_rpc_done(object->client->gsp, rpc);
592 rpc_gsp_rm_alloc_v03_00 *rpc = container_of(argv, typeof(*rpc), params);
596 rpc = nvkm_gsp_rpc_push(gsp, rpc, true, sizeof(*rpc) + repc);
597 if (IS_ERR_OR_NULL(rpc))
598 return rpc;
600 if (rpc->status) {
601 ret = ERR_PTR(r535_rpc_status_to_errno(rpc->status));
603 nvkm_error(&gsp->subdev, "RM_ALLOC: 0x%x\n", rpc->status);
605 ret = repc ? rpc->params : NULL;
608 nvkm_gsp_rpc_done(gsp, rpc);
618 rpc_gsp_rm_alloc_v03_00 *rpc;
623 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_GSP_RM_ALLOC, sizeof(*rpc) + argc);
624 if (IS_ERR(rpc))
625 return rpc;
627 rpc->hClient = client->object.handle;
628 rpc->hParent = object->parent->handle;
629 rpc->hObject = object->handle;
630 rpc->hClass = oclass;
631 rpc->status = 0;
632 rpc->paramsSize = argc;
633 return rpc->params;
639 rpc_gsp_rm_control_v03_00 *rpc = container_of(repv, typeof(*rpc), params);
643 nvkm_gsp_rpc_done(object->client->gsp, rpc);
649 rpc_gsp_rm_control_v03_00 *rpc = container_of((*argv), typeof(*rpc), params);
653 rpc = nvkm_gsp_rpc_push(gsp, rpc, true, repc);
654 if (IS_ERR_OR_NULL(rpc)) {
656 return PTR_ERR(rpc);
659 if (rpc->status) {
660 ret = r535_rpc_status_to_errno(rpc->status);
663 object->client->object.handle, object->handle, rpc->cmd, rpc->status);
667 *argv = rpc->params;
669 nvkm_gsp_rpc_done(gsp, rpc);
679 rpc_gsp_rm_control_v03_00 *rpc;
684 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_GSP_RM_CONTROL, sizeof(*rpc) + argc);
685 if (IS_ERR(rpc))
686 return rpc;
688 rpc->hClient = client->object.handle;
689 rpc->hObject = object->handle;
690 rpc->cmd = cmd;
691 rpc->status = 0;
692 rpc->paramsSize = argc;
693 return rpc->params;
699 struct nvfw_gsp_rpc *rpc = container_of(repv, typeof(*rpc), data);
701 r535_gsp_msg_done(gsp, rpc);
707 struct nvfw_gsp_rpc *rpc;
709 rpc = r535_gsp_cmdq_get(gsp, ALIGN(sizeof(*rpc) + argc, sizeof(u64)));
710 if (IS_ERR(rpc))
711 return ERR_CAST(rpc);
713 rpc->header_version = 0x03000000;
714 rpc->signature = ('C' << 24) | ('P' << 16) | ('R' << 8) | 'V';
715 rpc->function = fn;
716 rpc->rpc_result = 0xffffffff;
717 rpc->rpc_result_private = 0xffffffff;
718 rpc->length = sizeof(*rpc) + argc;
719 return rpc->data;
725 struct nvfw_gsp_rpc *rpc = container_of(argv, typeof(*rpc), data);
726 struct r535_gsp_msg *cmd = container_of((void *)rpc, typeof(*cmd), data);
728 const u32 max_rpc_size = max_msg_size - sizeof(*rpc);
729 u32 rpc_size = rpc->length - sizeof(*rpc);
734 const u32 fn = rpc->function;
737 rpc->length = sizeof(*rpc) + max_rpc_size;
738 cmd->checksum = rpc->length;
770 rpc = r535_gsp_msg_recv(gsp, fn, repc);
771 if (!IS_ERR_OR_NULL(rpc))
772 repv = rpc->data;
774 repv = rpc;
937 GspStaticConfigInfo *rpc;
940 rpc = nvkm_gsp_rpc_rd(gsp, NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INFO, sizeof(*rpc));
941 if (IS_ERR(rpc))
942 return PTR_ERR(rpc);
946 gsp->internal.client.object.handle = rpc->hInternalClient;
951 gsp->internal.device.object.handle = rpc->hInternalDevice;
955 gsp->internal.device.subdevice.handle = rpc->hInternalSubdevice;
957 gsp->bar.rm_bar1_pdb = rpc->bar1PdeBase;
958 gsp->bar.rm_bar2_pdb = rpc->bar2PdeBase;
960 for (int i = 0; i < rpc->fbRegionInfoParams.numFBRegions; i++) {
962 &rpc->fbRegionInfoParams.fbRegion[i];
984 u32 rsvd_base = rpc->fbRegionInfoParams.fbRegion[last_usable].limit + 1;
989 for (int gpc = 0; gpc < ARRAY_SIZE(rpc->tpcInfo); gpc++) {
990 if (rpc->gpcInfo.gpcMask & BIT(gpc)) {
991 gsp->gr.tpcs += hweight32(rpc->tpcInfo[gpc].tpcMask);
996 nvkm_gsp_rpc_done(gsp, rpc);
1064 rpc_unloading_guest_driver_v1F_07 *rpc;
1066 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_UNLOADING_GUEST_DRIVER, sizeof(*rpc));
1067 if (IS_ERR(rpc))
1068 return PTR_ERR(rpc);
1071 rpc->bInPMTransition = 1;
1072 rpc->bGc6Entering = 0;
1073 rpc->newLevel = NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_3;
1075 rpc->bInPMTransition = 0;
1076 rpc->bGc6Entering = 0;
1077 rpc->newLevel = NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_0;
1080 return nvkm_gsp_rpc_wr(gsp, rpc, true);
1098 PACKED_REGISTRY_TABLE *rpc;
1102 size_t rpc_size = struct_size(rpc, entries, NV_GSP_REG_NUM_ENTRIES);
1108 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_SET_REGISTRY, rpc_size);
1109 if (IS_ERR(rpc))
1110 return PTR_ERR(rpc);
1112 rpc->numEntries = NV_GSP_REG_NUM_ENTRIES;
1114 str_offset = offsetof(typeof(*rpc), entries[NV_GSP_REG_NUM_ENTRIES]);
1115 strings = (char *)rpc + str_offset;
1119 rpc->entries[i].nameOffset = str_offset;
1120 rpc->entries[i].type = 1;
1121 rpc->entries[i].data = r535_registry_entries[i].value;
1122 rpc->entries[i].length = 4;
1127 rpc->size = str_offset;
1129 return nvkm_gsp_rpc_wr(gsp, rpc, false);