diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 23 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.h | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp106/hal_gp106.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/hal_gp10b.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv100/hal_gv100.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | 3 |
10 files changed, 39 insertions, 15 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 8b7315f6..a2b2e53f 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -476,6 +476,11 @@ struct gpu_ops { | |||
476 | u32 *priv_addr_table_index); | 476 | u32 *priv_addr_table_index); |
477 | u32 (*fecs_ctxsw_mailbox_size)(void); | 477 | u32 (*fecs_ctxsw_mailbox_size)(void); |
478 | int (*init_sw_bundle64)(struct gk20a *g); | 478 | int (*init_sw_bundle64)(struct gk20a *g); |
479 | int (*alloc_global_ctx_buffers)(struct gk20a *g); | ||
480 | int (*map_global_ctx_buffers)(struct gk20a *g, | ||
481 | struct channel_gk20a *c); | ||
482 | int (*commit_global_ctx_buffers)(struct gk20a *g, | ||
483 | struct channel_gk20a *c, bool patch); | ||
479 | } gr; | 484 | } gr; |
480 | struct { | 485 | struct { |
481 | void (*init_hw)(struct gk20a *g); | 486 | void (*init_hw)(struct gk20a *g); |
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 42e96715..5d9e3218 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <nvgpu/error_notifier.h> | 40 | #include <nvgpu/error_notifier.h> |
41 | 41 | ||
42 | #include "gk20a.h" | 42 | #include "gk20a.h" |
43 | #include "gr_gk20a.h" | ||
43 | #include "gr_ctx_gk20a.h" | 44 | #include "gr_ctx_gk20a.h" |
44 | #include "gr_pri_gk20a.h" | 45 | #include "gr_pri_gk20a.h" |
45 | #include "regops_gk20a.h" | 46 | #include "regops_gk20a.h" |
@@ -73,14 +74,6 @@ | |||
73 | 74 | ||
74 | static int gk20a_init_gr_bind_fecs_elpg(struct gk20a *g); | 75 | static int gk20a_init_gr_bind_fecs_elpg(struct gk20a *g); |
75 | 76 | ||
76 | /* global ctx buffer */ | ||
77 | static int gr_gk20a_alloc_global_ctx_buffers(struct gk20a *g); | ||
78 | static void gr_gk20a_free_global_ctx_buffers(struct gk20a *g); | ||
79 | static int gr_gk20a_map_global_ctx_buffers(struct gk20a *g, | ||
80 | struct channel_gk20a *c); | ||
81 | static void gr_gk20a_unmap_global_ctx_buffers(struct gk20a *g, | ||
82 | struct vm_gk20a *vm, | ||
83 | struct nvgpu_gr_ctx *gr_ctx); | ||
84 | static void gr_gk20a_free_channel_pm_ctx(struct gk20a *g, | 77 | static void gr_gk20a_free_channel_pm_ctx(struct gk20a *g, |
85 | struct vm_gk20a *vm, | 78 | struct vm_gk20a *vm, |
86 | struct nvgpu_gr_ctx *gr_ctx); | 79 | struct nvgpu_gr_ctx *gr_ctx); |
@@ -1535,7 +1528,7 @@ static int gr_gk20a_init_golden_ctx_image(struct gk20a *g, | |||
1535 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), | 1528 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), |
1536 | gr_fe_go_idle_timeout_count_disabled_f()); | 1529 | gr_fe_go_idle_timeout_count_disabled_f()); |
1537 | 1530 | ||
1538 | err = gr_gk20a_commit_global_ctx_buffers(g, c, false); | 1531 | err = g->ops.gr.commit_global_ctx_buffers(g, c, false); |
1539 | if (err) | 1532 | if (err) |
1540 | goto clean_up; | 1533 | goto clean_up; |
1541 | 1534 | ||
@@ -2558,7 +2551,7 @@ static void gr_gk20a_free_global_ctx_buffers(struct gk20a *g) | |||
2558 | nvgpu_log_fn(g, "done"); | 2551 | nvgpu_log_fn(g, "done"); |
2559 | } | 2552 | } |
2560 | 2553 | ||
2561 | static int gr_gk20a_alloc_global_ctx_buffers(struct gk20a *g) | 2554 | int gr_gk20a_alloc_global_ctx_buffers(struct gk20a *g) |
2562 | { | 2555 | { |
2563 | struct gr_gk20a *gr = &g->gr; | 2556 | struct gr_gk20a *gr = &g->gr; |
2564 | int attr_buffer_size, err; | 2557 | int attr_buffer_size, err; |
@@ -2679,8 +2672,8 @@ static void gr_gk20a_unmap_global_ctx_buffers(struct gk20a *g, | |||
2679 | gr_ctx->global_ctx_buffer_mapped = false; | 2672 | gr_ctx->global_ctx_buffer_mapped = false; |
2680 | } | 2673 | } |
2681 | 2674 | ||
2682 | static int gr_gk20a_map_global_ctx_buffers(struct gk20a *g, | 2675 | int gr_gk20a_map_global_ctx_buffers(struct gk20a *g, |
2683 | struct channel_gk20a *c) | 2676 | struct channel_gk20a *c) |
2684 | { | 2677 | { |
2685 | struct tsg_gk20a *tsg; | 2678 | struct tsg_gk20a *tsg; |
2686 | struct vm_gk20a *ch_vm = c->vm; | 2679 | struct vm_gk20a *ch_vm = c->vm; |
@@ -3004,13 +2997,13 @@ int gk20a_alloc_obj_ctx(struct channel_gk20a *c, u32 class_num, u32 flags) | |||
3004 | } | 2997 | } |
3005 | 2998 | ||
3006 | /* map global buffer to channel gpu_va and commit */ | 2999 | /* map global buffer to channel gpu_va and commit */ |
3007 | err = gr_gk20a_map_global_ctx_buffers(g, c); | 3000 | err = g->ops.gr.map_global_ctx_buffers(g, c); |
3008 | if (err) { | 3001 | if (err) { |
3009 | nvgpu_err(g, | 3002 | nvgpu_err(g, |
3010 | "fail to map global ctx buffer"); | 3003 | "fail to map global ctx buffer"); |
3011 | goto out; | 3004 | goto out; |
3012 | } | 3005 | } |
3013 | gr_gk20a_commit_global_ctx_buffers(g, c, true); | 3006 | g->ops.gr.commit_global_ctx_buffers(g, c, true); |
3014 | 3007 | ||
3015 | /* commit gr ctx buffer */ | 3008 | /* commit gr ctx buffer */ |
3016 | err = g->ops.gr.commit_inst(c, gr_ctx->mem.gpu_va); | 3009 | err = g->ops.gr.commit_inst(c, gr_ctx->mem.gpu_va); |
@@ -4877,7 +4870,7 @@ static int gk20a_init_gr_setup_sw(struct gk20a *g) | |||
4877 | if (err) | 4870 | if (err) |
4878 | goto clean_up; | 4871 | goto clean_up; |
4879 | 4872 | ||
4880 | err = gr_gk20a_alloc_global_ctx_buffers(g); | 4873 | err = g->ops.gr.alloc_global_ctx_buffers(g); |
4881 | if (err) | 4874 | if (err) |
4882 | goto clean_up; | 4875 | goto clean_up; |
4883 | 4876 | ||
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h index 43b89b12..32bd41f2 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h | |||
@@ -806,8 +806,13 @@ void gk20a_gr_init_ctxsw_hdr_data(struct gk20a *g, | |||
806 | u32 gr_gk20a_get_patch_slots(struct gk20a *g); | 806 | u32 gr_gk20a_get_patch_slots(struct gk20a *g); |
807 | int gk20a_gr_handle_notify_pending(struct gk20a *g, | 807 | int gk20a_gr_handle_notify_pending(struct gk20a *g, |
808 | struct gr_gk20a_isr_data *isr_data); | 808 | struct gr_gk20a_isr_data *isr_data); |
809 | |||
810 | int gr_gk20a_alloc_global_ctx_buffers(struct gk20a *g); | ||
811 | int gr_gk20a_map_global_ctx_buffers(struct gk20a *g, | ||
812 | struct channel_gk20a *c); | ||
809 | int gr_gk20a_commit_global_ctx_buffers(struct gk20a *g, | 813 | int gr_gk20a_commit_global_ctx_buffers(struct gk20a *g, |
810 | struct channel_gk20a *c, bool patch); | 814 | struct channel_gk20a *c, bool patch); |
815 | |||
811 | int gr_gk20a_fecs_ctx_bind_channel(struct gk20a *g, | 816 | int gr_gk20a_fecs_ctx_bind_channel(struct gk20a *g, |
812 | struct channel_gk20a *c); | 817 | struct channel_gk20a *c); |
813 | u32 gk20a_init_sw_bundle(struct gk20a *g); | 818 | u32 gk20a_init_sw_bundle(struct gk20a *g); |
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index 9f93d0eb..715946be 100644 --- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c | |||
@@ -327,6 +327,9 @@ static const struct gpu_ops gm20b_ops = { | |||
327 | gr_gm20b_get_pmm_per_chiplet_offset, | 327 | gr_gm20b_get_pmm_per_chiplet_offset, |
328 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, | 328 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, |
329 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, | 329 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, |
330 | .alloc_global_ctx_buffers = gr_gk20a_alloc_global_ctx_buffers, | ||
331 | .map_global_ctx_buffers = gr_gk20a_map_global_ctx_buffers, | ||
332 | .commit_global_ctx_buffers = gr_gk20a_commit_global_ctx_buffers, | ||
330 | }, | 333 | }, |
331 | .fb = { | 334 | .fb = { |
332 | .reset = fb_gk20a_reset, | 335 | .reset = fb_gk20a_reset, |
diff --git a/drivers/gpu/nvgpu/gp106/hal_gp106.c b/drivers/gpu/nvgpu/gp106/hal_gp106.c index a525d117..61c6cb0f 100644 --- a/drivers/gpu/nvgpu/gp106/hal_gp106.c +++ b/drivers/gpu/nvgpu/gp106/hal_gp106.c | |||
@@ -395,6 +395,9 @@ static const struct gpu_ops gp106_ops = { | |||
395 | gr_gm20b_get_pmm_per_chiplet_offset, | 395 | gr_gm20b_get_pmm_per_chiplet_offset, |
396 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, | 396 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, |
397 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, | 397 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, |
398 | .alloc_global_ctx_buffers = gr_gk20a_alloc_global_ctx_buffers, | ||
399 | .map_global_ctx_buffers = gr_gk20a_map_global_ctx_buffers, | ||
400 | .commit_global_ctx_buffers = gr_gk20a_commit_global_ctx_buffers, | ||
398 | }, | 401 | }, |
399 | .fb = { | 402 | .fb = { |
400 | .reset = gp106_fb_reset, | 403 | .reset = gp106_fb_reset, |
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c index d966f49a..62164d16 100644 --- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c | |||
@@ -360,6 +360,9 @@ static const struct gpu_ops gp10b_ops = { | |||
360 | gr_gm20b_get_pmm_per_chiplet_offset, | 360 | gr_gm20b_get_pmm_per_chiplet_offset, |
361 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, | 361 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, |
362 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, | 362 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, |
363 | .alloc_global_ctx_buffers = gr_gk20a_alloc_global_ctx_buffers, | ||
364 | .map_global_ctx_buffers = gr_gk20a_map_global_ctx_buffers, | ||
365 | .commit_global_ctx_buffers = gr_gk20a_commit_global_ctx_buffers, | ||
363 | }, | 366 | }, |
364 | .fb = { | 367 | .fb = { |
365 | .reset = fb_gk20a_reset, | 368 | .reset = fb_gk20a_reset, |
diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c index b3d97f89..00840448 100644 --- a/drivers/gpu/nvgpu/gv100/hal_gv100.c +++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c | |||
@@ -446,6 +446,9 @@ static const struct gpu_ops gv100_ops = { | |||
446 | gr_gv11b_get_pmm_per_chiplet_offset, | 446 | gr_gv11b_get_pmm_per_chiplet_offset, |
447 | .split_fbpa_broadcast_addr = gr_gv100_split_fbpa_broadcast_addr, | 447 | .split_fbpa_broadcast_addr = gr_gv100_split_fbpa_broadcast_addr, |
448 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, | 448 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, |
449 | .alloc_global_ctx_buffers = gr_gk20a_alloc_global_ctx_buffers, | ||
450 | .map_global_ctx_buffers = gr_gk20a_map_global_ctx_buffers, | ||
451 | .commit_global_ctx_buffers = gr_gk20a_commit_global_ctx_buffers, | ||
449 | }, | 452 | }, |
450 | .fb = { | 453 | .fb = { |
451 | .reset = gv100_fb_reset, | 454 | .reset = gv100_fb_reset, |
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index cae55609..ce8f5051 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |||
@@ -412,6 +412,9 @@ static const struct gpu_ops gv11b_ops = { | |||
412 | gr_gv11b_get_pmm_per_chiplet_offset, | 412 | gr_gv11b_get_pmm_per_chiplet_offset, |
413 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, | 413 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, |
414 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, | 414 | .fecs_ctxsw_mailbox_size = gr_fecs_ctxsw_mailbox__size_1_v, |
415 | .alloc_global_ctx_buffers = gr_gk20a_alloc_global_ctx_buffers, | ||
416 | .map_global_ctx_buffers = gr_gk20a_map_global_ctx_buffers, | ||
417 | .commit_global_ctx_buffers = gr_gk20a_commit_global_ctx_buffers, | ||
415 | }, | 418 | }, |
416 | .fb = { | 419 | .fb = { |
417 | .reset = gv11b_fb_reset, | 420 | .reset = gv11b_fb_reset, |
diff --git a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c index 8c2b613f..6a946a6e 100644 --- a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c +++ b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | |||
@@ -231,6 +231,9 @@ static const struct gpu_ops vgpu_gp10b_ops = { | |||
231 | .get_pmm_per_chiplet_offset = | 231 | .get_pmm_per_chiplet_offset = |
232 | gr_gm20b_get_pmm_per_chiplet_offset, | 232 | gr_gm20b_get_pmm_per_chiplet_offset, |
233 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, | 233 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, |
234 | .alloc_global_ctx_buffers = gr_gk20a_alloc_global_ctx_buffers, | ||
235 | .map_global_ctx_buffers = gr_gk20a_map_global_ctx_buffers, | ||
236 | .commit_global_ctx_buffers = gr_gk20a_commit_global_ctx_buffers, | ||
234 | }, | 237 | }, |
235 | .fb = { | 238 | .fb = { |
236 | .reset = fb_gk20a_reset, | 239 | .reset = fb_gk20a_reset, |
diff --git a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c index 450c9c87..f81e8503 100644 --- a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c +++ b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | |||
@@ -267,6 +267,9 @@ static const struct gpu_ops vgpu_gv11b_ops = { | |||
267 | .get_pmm_per_chiplet_offset = | 267 | .get_pmm_per_chiplet_offset = |
268 | gr_gv11b_get_pmm_per_chiplet_offset, | 268 | gr_gv11b_get_pmm_per_chiplet_offset, |
269 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, | 269 | .split_fbpa_broadcast_addr = gr_gk20a_split_fbpa_broadcast_addr, |
270 | .alloc_global_ctx_buffers = gr_gk20a_alloc_global_ctx_buffers, | ||
271 | .map_global_ctx_buffers = gr_gk20a_map_global_ctx_buffers, | ||
272 | .commit_global_ctx_buffers = gr_gk20a_commit_global_ctx_buffers, | ||
270 | }, | 273 | }, |
271 | .fb = { | 274 | .fb = { |
272 | .reset = gv11b_fb_reset, | 275 | .reset = gv11b_fb_reset, |