| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/ |
| H A D | gsp.c | 51 struct nvkm_gsp *gsp = container_of(work, typeof(*gsp), msgq.work); in r535_gsp_msgq_work() local 53 mutex_lock(&gsp->cmdq.mutex); in r535_gsp_msgq_work() 54 if (*gsp->msgq.rptr != *gsp->msgq.wptr) in r535_gsp_msgq_work() 55 r535_gsp_msg_recv(gsp, 0, 0); in r535_gsp_msgq_work() 56 mutex_unlock(&gsp->cmdq.mutex); in r535_gsp_msgq_work() 62 struct nvkm_gsp *gsp = container_of(inth, typeof(*gsp), subdev.inth); in r535_gsp_intr() local 63 struct nvkm_subdev *subdev = &gsp->subdev; in r535_gsp_intr() 64 u32 intr = nvkm_falcon_rd32(&gsp->falcon, 0x0008); in r535_gsp_intr() 65 u32 inte = nvkm_falcon_rd32(&gsp->falcon, gsp->falcon.func->addr2 + in r535_gsp_intr() 66 gsp->falcon.func->riscv_irqmask); in r535_gsp_intr() [all …]
|
| H A D | rpc.c | 142 r535_gsp_msgq_wait(struct nvkm_gsp *gsp, u32 gsp_rpc_len, int *ptime) in r535_gsp_msgq_wait() argument 144 u32 size, rptr = *gsp->msgq.rptr; in r535_gsp_msgq_wait() 149 if (WARN_ON(!size || size >= gsp->msgq.cnt)) in r535_gsp_msgq_wait() 153 u32 wptr = *gsp->msgq.wptr; in r535_gsp_msgq_wait() 155 used = wptr + gsp->msgq.cnt - rptr; in r535_gsp_msgq_wait() 156 if (used >= gsp->msgq.cnt) in r535_gsp_msgq_wait() 157 used -= gsp->msgq.cnt; in r535_gsp_msgq_wait() 171 r535_gsp_msgq_get_entry(struct nvkm_gsp *gsp) in r535_gsp_msgq_get_entry() argument 173 u32 rptr = *gsp->msgq.rptr; in r535_gsp_msgq_get_entry() 176 return (void *)((u8 *)gsp->shm.msgq.ptr + GSP_PAGE_SIZE + in r535_gsp_msgq_get_entry() [all …]
|
| H A D | fbsr.c | 56 struct nvkm_gsp *gsp = client->gsp; in r535_fbsr_memlist() local 61 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY, in r535_fbsr_memlist() 102 ret = nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_POLL); in r535_fbsr_memlist() 116 struct nvkm_gsp *gsp = fbsr->client.gsp; in fbsr_send() local 125 ctrl = nvkm_gsp_rm_ctrl_get(&gsp->internal.device.subdevice, in fbsr_send() 140 ret = nvkm_gsp_rm_ctrl_wr(&gsp->internal.device.subdevice, ctrl); in fbsr_send() 154 struct nvkm_gsp *gsp = fbsr->client.gsp; in fbsr_init() local 163 ctrl = nvkm_gsp_rm_ctrl_get(&gsp->internal.device.subdevice, in fbsr_init() 174 ret = nvkm_gsp_rm_ctrl_wr(&gsp->internal.device.subdevice, ctrl); in fbsr_init() 204 r535_fbsr_resume(struct nvkm_gsp *gsp) in r535_fbsr_resume() argument [all …]
|
| H A D | bar.c | 53 r535_bar_bar2_update_pde(struct nvkm_gsp *gsp, u8 page_shift, u64 pdbe) in r535_bar_bar2_update_pde() argument 57 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_UPDATE_BAR_PDE, sizeof(*rpc)); in r535_bar_bar2_update_pde() 65 return nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV); in r535_bar_bar2_update_pde() 72 struct nvkm_gsp *gsp = bar->subdev.device->gsp; in r535_bar_bar2_fini() local 77 WARN_ON(r535_bar_bar2_update_pde(gsp, vmm->func->page[0].shift, 0)); in r535_bar_bar2_fini() 85 struct nvkm_gsp *gsp = device->gsp; in r535_bar_bar2_init() local 97 WARN_ON(r535_bar_bar2_update_pde(gsp, vmm->func->page[0].shift, pdbe)); in r535_bar_bar2_init() 98 vmm->rm.bar2_pdb = gsp->bar.rm_bar2_pdb; in r535_bar_bar2_init() 131 struct nvkm_gsp *gsp = device->gsp; in r535_bar_bar1_init() local 136 ret = nvkm_ram_wrap(device, gsp->bar.rm_bar1_pdb, 0x1000, &pd3); in r535_bar_bar1_init()
|
| H A D | fifo.c | 44 struct nvkm_gsp *gsp = chan->rm.object.client->gsp; in r535_chan_doorbell_handle() local 46 return gsp->rm->gpu->fifo.chan.doorbell_handle(chan); in r535_chan_doorbell_handle() 80 struct nvkm_gsp *gsp = device->object.client->gsp; in r535_chan_alloc() local 81 struct nvkm_fifo *fifo = gsp->subdev.device->fifo; in r535_chan_alloc() 159 const struct nvkm_rm_api *rmapi = device->gsp->rm->api; in r535_chan_ramfc_write() 245 ret = nvkm_gsp_intr_nonstall(subdev->device->gsp, subdev->type, subdev->inst); in r535_engn_nonstall() 364 struct nvkm_gsp *gsp = priv; in r535_fifo_rc_triggered() local 369 nvkm_error(&gsp->subdev, "rc: engn:%08x chid:%d type:%d scope:%d part:%d\n", in r535_fifo_rc_triggered() 373 r535_fifo_rc_chid(gsp->subdev.device->fifo, msg->chid); in r535_fifo_rc_triggered() 430 struct nvkm_gsp *gsp = fifo->engine.subdev.device->gsp; in r535_fifo_ectx_size() local [all …]
|
| H A D | gr.c | 169 struct nvkm_gsp *gsp = gr->engine.subdev.device->gsp; in r535_gr_units() local 171 return (gsp->gr.tpcs << 8) | gsp->gr.gpcs; in r535_gr_units() 256 struct nvkm_gsp *gsp = subdev->device->gsp; in r535_gr_get_ctxbufs_info() local 258 info = nvkm_gsp_rm_ctrl_rd(&gsp->internal.device.subdevice, in r535_gr_get_ctxbufs_info() 267 nvkm_gsp_rm_ctrl_done(&gsp->internal.device.subdevice, info); in r535_gr_get_ctxbufs_info() 277 struct nvkm_gsp *gsp = device->gsp; in r535_gr_oneinit() local 278 struct nvkm_rm *rm = gsp->rm; in r535_gr_oneinit()
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ |
| H A D | base.c | 25 nvkm_gsp_intr_nonstall(struct nvkm_gsp *gsp, enum nvkm_subdev_type type, int inst) in nvkm_gsp_intr_nonstall() argument 27 for (int i = 0; i < gsp->intr_nr; i++) { in nvkm_gsp_intr_nonstall() 28 if (gsp->intr[i].type == type && gsp->intr[i].inst == inst) in nvkm_gsp_intr_nonstall() 29 return gsp->intr[i].nonstall; in nvkm_gsp_intr_nonstall() 36 nvkm_gsp_intr_stall(struct nvkm_gsp *gsp, enum nvkm_subdev_type type, int inst) in nvkm_gsp_intr_stall() argument 38 for (int i = 0; i < gsp->intr_nr; i++) { in nvkm_gsp_intr_stall() 39 if (gsp->intr[i].type == type && gsp->intr[i].inst == inst) { in nvkm_gsp_intr_stall() 40 if (gsp->intr[i].stall != ~0) in nvkm_gsp_intr_stall() 41 return gsp->intr[i].stall; in nvkm_gsp_intr_stall() 53 struct nvkm_gsp *gsp = nvkm_gsp(subdev); in nvkm_gsp_fini() local [all …]
|
| H A D | tu102.c | 34 tu102_gsp_fwsec_sb_ctor(struct nvkm_gsp *gsp) in tu102_gsp_fwsec_sb_ctor() argument 36 return nvkm_gsp_fwsec_sb_init(gsp); in tu102_gsp_fwsec_sb_ctor() 40 tu102_gsp_fwsec_sb_dtor(struct nvkm_gsp *gsp) in tu102_gsp_fwsec_sb_dtor() argument 42 nvkm_falcon_fw_dtor(&gsp->fws.falcon.sb); in tu102_gsp_fwsec_sb_dtor() 46 tu102_gsp_booter_unload(struct nvkm_gsp *gsp, u32 mbox0, u32 mbox1) in tu102_gsp_booter_unload() argument 48 struct nvkm_subdev *subdev = &gsp->subdev; in tu102_gsp_booter_unload() 59 ret = nvkm_falcon_fw_boot(&gsp->booter.unload, &gsp->subdev, true, &mbox0, &mbox1, 0, 0); in tu102_gsp_booter_unload() 71 tu102_gsp_booter_load(struct nvkm_gsp *gsp, u32 mbox0, u32 mbox1) in tu102_gsp_booter_load() argument 73 return nvkm_falcon_fw_boot(&gsp->booter.load, &gsp->subdev, true, &mbox0, &mbox1, 0, 0); in tu102_gsp_booter_load() 77 tu102_gsp_booter_ctor(struct nvkm_gsp *gsp, const char *name, const struct firmware *blob, in tu102_gsp_booter_ctor() argument [all …]
|
| H A D | gh100.c | 20 gh100_gsp_fini(struct nvkm_gsp *gsp, enum nvkm_suspend_state suspend) in gh100_gsp_fini() argument 22 struct nvkm_falcon *falcon = &gsp->falcon; in gh100_gsp_fini() 26 ret = r535_gsp_fini(gsp, suspend); in gh100_gsp_fini() 44 gh100_gsp_lockdown_released(struct nvkm_gsp *gsp, u32 *mbox0) in gh100_gsp_lockdown_released() argument 49 *mbox0 = nvkm_falcon_rd32(&gsp->falcon, NV_PFALCON_FALCON_MAILBOX0); in gh100_gsp_lockdown_released() 56 u32 mbox1 = nvkm_falcon_rd32(&gsp->falcon, NV_PFALCON_FALCON_MAILBOX1); in gh100_gsp_lockdown_released() 59 if ((((u64)mbox1 << 32) | *mbox0) != gsp->fmc.args.addr) in gh100_gsp_lockdown_released() 64 data = nvkm_falcon_rd32(&gsp->falcon, NV_PFALCON_FALCON_HWCFG2); in gh100_gsp_lockdown_released() 69 gh100_gsp_init(struct nvkm_gsp *gsp) in gh100_gsp_init() argument 71 struct nvkm_subdev *subdev = &gsp->subdev; in gh100_gsp_init() [all …]
|
| H A D | fwsec.c | 89 nvkm_gsp_fwsec_patch(struct nvkm_gsp *gsp, struct nvkm_falcon_fw *fw, u32 if_offset, u32 init_cmd) in nvkm_gsp_fwsec_patch() argument 120 frtscmd->frts_region.addr = gsp->fb.wpr2.frts.addr >> 12; in nvkm_gsp_fwsec_patch() 121 frtscmd->frts_region.size = gsp->fb.wpr2.frts.size >> 12; in nvkm_gsp_fwsec_patch() 172 nvkm_gsp_fwsec_v2(struct nvkm_gsp *gsp, const char *name, in nvkm_gsp_fwsec_v2() argument 176 struct nvkm_subdev *subdev = &gsp->subdev; in nvkm_gsp_fwsec_v2() 183 ret = nvkm_falcon_fw_ctor(gsp->func->fwsec, name, subdev->device, true, in nvkm_gsp_fwsec_v2() 185 &gsp->falcon, fw); in nvkm_gsp_fwsec_v2() 219 return nvkm_gsp_fwsec_patch(gsp, fw, desc->InterfaceOffset, init_cmd); in nvkm_gsp_fwsec_v2() 223 nvkm_gsp_fwsec_v3(struct nvkm_gsp *gsp, const char *name, in nvkm_gsp_fwsec_v3() argument 227 struct nvkm_device *device = gsp->subdev.device; in nvkm_gsp_fwsec_v3() [all …]
|
| H A D | priv.h | 11 int nvkm_gsp_fwsec_sb_init(struct nvkm_gsp *gsp); 100 static inline int nvkm_gsp_fwsec_sb_ctor(struct nvkm_gsp *gsp) in nvkm_gsp_fwsec_sb_ctor() argument 102 if (gsp->func->fwsec_sb.ctor) in nvkm_gsp_fwsec_sb_ctor() 103 return gsp->func->fwsec_sb.ctor(gsp); in nvkm_gsp_fwsec_sb_ctor() 107 static inline void nvkm_gsp_fwsec_sb_dtor(struct nvkm_gsp *gsp) in nvkm_gsp_fwsec_sb_dtor() argument 109 if (gsp->func->fwsec_sb.dtor) in nvkm_gsp_fwsec_sb_dtor() 110 gsp->func->fwsec_sb.dtor(gsp); in nvkm_gsp_fwsec_sb_dtor()
|
| H A D | ga102.c | 29 ga102_gsp_reset(struct nvkm_gsp *gsp) in ga102_gsp_reset() argument 33 ret = gsp->falcon.func->reset_eng(&gsp->falcon); in ga102_gsp_reset() 37 nvkm_falcon_mask(&gsp->falcon, 0x1668, 0x00000111, 0x00000111); in ga102_gsp_reset() 42 ga102_gsp_booter_ctor(struct nvkm_gsp *gsp, const char *name, const struct firmware *blob, in ga102_gsp_booter_ctor() argument 45 struct nvkm_subdev *subdev = &gsp->subdev; in ga102_gsp_booter_ctor()
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/ |
| H A D | gsp.c | 18 r570_gsp_sr_data_size(struct nvkm_gsp *gsp) in r570_gsp_sr_data_size() argument 20 GspFwWprMeta *meta = gsp->wpr_meta.data; in r570_gsp_sr_data_size() 27 r570_gsp_drop_post_nocat_record(struct nvkm_gsp *gsp) in r570_gsp_drop_post_nocat_record() argument 29 if (gsp->subdev.debug < NV_DBG_DEBUG) { in r570_gsp_drop_post_nocat_record() 30 r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD, NULL, NULL); in r570_gsp_drop_post_nocat_record() 31 r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE, NULL, NULL); in r570_gsp_drop_post_nocat_record() 77 r570_gsp_get_static_info(struct nvkm_gsp *gsp) in r570_gsp_get_static_info() argument 84 rpc = nvkm_gsp_rpc_rd(gsp, NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INFO, sizeof(*rpc)); in r570_gsp_get_static_info() 88 gsp->internal.client.object.client = &gsp->internal.client; in r570_gsp_get_static_info() 89 gsp->internal.client.object.parent = NULL; in r570_gsp_get_static_info() [all …]
|
| H A D | fbsr.c | 14 r570_fbsr_suspend_channels(struct nvkm_gsp *gsp, bool suspend) in r570_fbsr_suspend_channels() argument 18 ctrl = nvkm_gsp_rm_ctrl_get(&gsp->internal.device.subdevice, in r570_fbsr_suspend_channels() 26 return nvkm_gsp_rm_ctrl_wr(&gsp->internal.device.subdevice, ctrl); in r570_fbsr_suspend_channels() 30 r570_fbsr_resume(struct nvkm_gsp *gsp) in r570_fbsr_resume() argument 32 struct nvkm_device *device = gsp->subdev.device; in r570_fbsr_resume() 58 r570_fbsr_suspend_channels(device->gsp, false); in r570_fbsr_resume() 61 r535_fbsr_resume(gsp); in r570_fbsr_resume() 65 r570_fbsr_init(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size, bool runtime) in r570_fbsr_init() argument 71 ret = r535_fbsr_memlist(&gsp->internal.device, 0xcaf00003, NVKM_MEM_TARGET_HOST, in r570_fbsr_init() 76 ctrl = nvkm_gsp_rm_ctrl_get(&gsp->internal.device.subdevice, in r570_fbsr_init() [all …]
|
| /linux/drivers/gpu/drm/nouveau/include/nvkm/subdev/ |
| H A D | gsp.h | 207 struct nvkm_gsp *gsp; member 271 nvkm_gsp_rm(struct nvkm_gsp *gsp) in nvkm_gsp_rm() argument 273 return gsp && (gsp->fws.rm || gsp->fw.img); in nvkm_gsp_rm() 279 nvkm_gsp_rpc_get(struct nvkm_gsp *gsp, u32 fn, u32 argc) in nvkm_gsp_rpc_get() argument 281 return gsp->rm->api->rpc->get(gsp, fn, argc); in nvkm_gsp_rpc_get() 285 nvkm_gsp_rpc_push(struct nvkm_gsp *gsp, void *argv, in nvkm_gsp_rpc_push() argument 288 return gsp->rm->api->rpc->push(gsp, argv, policy, repc); in nvkm_gsp_rpc_push() 292 nvkm_gsp_rpc_rd(struct nvkm_gsp *gsp, u32 fn, u32 argc) in nvkm_gsp_rpc_rd() argument 294 void *argv = nvkm_gsp_rpc_get(gsp, fn, argc); in nvkm_gsp_rpc_rd() 299 return nvkm_gsp_rpc_push(gsp, argv, NVKM_GSP_RPC_REPLY_RECV, argc); in nvkm_gsp_rpc_rd() [all …]
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ |
| H A D | r535.c | 34 struct nvkm_gsp *gsp = fb->subdev.device->gsp; in r535_fb_ram_new() local 44 ram->size = gsp->fb.size; in r535_fb_ram_new() 48 for (int i = 0; i < gsp->fb.region_nr; i++) { in r535_fb_ram_new() 50 gsp->fb.region[i].addr >> NVKM_RAM_MM_SHIFT, in r535_fb_ram_new() 51 gsp->fb.region[i].size >> NVKM_RAM_MM_SHIFT, in r535_fb_ram_new()
|
| /linux/arch/powerpc/kvm/ |
| H A D | guest-state-buffer.c | 303 int kvmppc_gse_parse(struct kvmppc_gs_parser *gsp, struct kvmppc_gs_buff *gsb) in kvmppc_gse_parse() argument 312 kvmppc_gsp_insert(gsp, kvmppc_gse_iden(curr), curr); in kvmppc_gse_parse() 432 void kvmppc_gsp_insert(struct kvmppc_gs_parser *gsp, u16 iden, in kvmppc_gsp_insert() argument 438 kvmppc_gsbm_set(&gsp->iterator, iden); in kvmppc_gsp_insert() 439 gsp->gses[i] = gse; in kvmppc_gsp_insert() 450 struct kvmppc_gs_elem *kvmppc_gsp_lookup(struct kvmppc_gs_parser *gsp, u16 iden) in kvmppc_gsp_lookup() argument 455 return gsp->gses[i]; in kvmppc_gsp_lookup()
|
| /linux/drivers/gpu/nova-core/gsp/ |
| H A D | fw.rs | 31 firmware::gsp::GspFirmware, 33 gsp::{ 58 use crate::gsp::cmdq::{ 63 pub(in crate::gsp) fn gsp_write_ptr(qs: &CoherentAllocation<GspMem>) -> u32 { in gsp_write_ptr() 68 pub(in crate::gsp) fn gsp_read_ptr(qs: &CoherentAllocation<GspMem>) -> u32 { in gsp_read_ptr() 73 pub(in crate::gsp) fn cpu_read_ptr(qs: &CoherentAllocation<GspMem>) -> u32 { in cpu_read_ptr() 78 pub(in crate::gsp) fn advance_cpu_read_ptr(qs: &CoherentAllocation<GspMem>, count: u32) { in advance_cpu_read_ptr() 92 pub(in crate::gsp) fn cpu_write_ptr(qs: &CoherentAllocation<GspMem>) -> u32 { in cpu_write_ptr() 97 pub(in crate::gsp) fn advance_cpu_write_ptr(qs: &CoherentAllocation<GspMem>, count: u32) { in advance_cpu_write_ptr()
|
| H A D | boot.rs | 16 gsp::Gsp, 30 gsp::GspFirmware, 34 gsp::{
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ |
| H A D | rm.h | 42 } *gsp; member 46 void *(*push)(struct nvkm_gsp *gsp, void *argv, 48 void (*done)(struct nvkm_gsp *gsp, void *repv);
|
| H A D | gr.c | 22 struct nvkm_rm *rm = base->engine.subdev.device->gsp->rm; in nvkm_rm_gr_fini() 34 struct nvkm_rm *rm = base->engine.subdev.device->gsp->rm; in nvkm_rm_gr_init()
|
| /linux/Documentation/gpu/ |
| H A D | nouveau.rst | 28 .. kernel-doc:: drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c 31 .. kernel-doc:: drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
|
| /linux/drivers/gpu/drm/nouveau/nvkm/engine/device/ |
| H A D | base.c | 2314 .gsp = { 0x00000001, gv100_gsp_new }, 2349 .gsp = { 0x00000001, tu102_gsp_new }, 2384 .gsp = { 0x00000001, tu102_gsp_new }, 2419 .gsp = { 0x00000001, tu102_gsp_new }, 2454 .gsp = { 0x00000001, tu116_gsp_new }, 2489 .gsp = { 0x00000001, tu116_gsp_new }, 2521 .gsp = { 0x00000001, ga100_gsp_new }, 2545 .gsp = { 0x00000001, ga102_gsp_new }, 2575 .gsp = { 0x00000001, ga102_gsp_new }, 2605 .gsp = { 0x00000001, ga102_gsp_new }, [all …]
|
| /linux/drivers/gpu/nova-core/ |
| H A D | gsp.rs | 28 gsp::cmdq::Cmdq, 29 gsp::fw::{
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/privring/ |
| H A D | gm200.c | 37 if (nvkm_gsp_rm(device->gsp)) in gm200_privring_new()
|