mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 10:34:43 +03:00
gpu: nvgpu: add hal op to handle post event id
The vserver variant for gr post event id needs different functionality to send interrupt to VM. Add HAL operation to allow overriding vserver usecase. Jira VQRM-2982 Change-Id: I915d089ef751023968c1e8ab181c21afeec997a5 Signed-off-by: Aparna Das <aparnad@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1658382 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
d654ab4863
commit
98d91dd260
@@ -2229,7 +2229,7 @@ void gk20a_channel_semaphore_wakeup(struct gk20a *g, bool post_events)
|
||||
struct tsg_gk20a *tsg =
|
||||
&g->fifo.tsg[c->tsgid];
|
||||
|
||||
gk20a_tsg_event_id_post_event(tsg,
|
||||
g->ops.fifo.post_event_id(tsg,
|
||||
NVGPU_EVENT_ID_BLOCKING_SYNC);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -610,6 +610,7 @@ struct gpu_ops {
|
||||
void (*deinit_eng_method_buffers)(struct gk20a *g,
|
||||
struct tsg_gk20a *tsg);
|
||||
u32 (*get_preempt_timeout)(struct gk20a *g);
|
||||
void (*post_event_id)(struct tsg_gk20a *tsg, int event_id);
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
int (*alloc_syncpt_buf)(struct channel_gk20a *c,
|
||||
u32 syncpt_id, struct nvgpu_mem *syncpt_buf);
|
||||
|
||||
@@ -5274,7 +5274,7 @@ static int gk20a_gr_handle_semaphore_pending(struct gk20a *g,
|
||||
struct channel_gk20a *ch = &f->channel[isr_data->chid];
|
||||
struct tsg_gk20a *tsg = &g->fifo.tsg[ch->tsgid];
|
||||
|
||||
gk20a_tsg_event_id_post_event(tsg,
|
||||
g->ops.fifo.post_event_id(tsg,
|
||||
NVGPU_EVENT_ID_GR_SEMAPHORE_WRITE_AWAKEN);
|
||||
|
||||
nvgpu_cond_broadcast(&ch->semaphore_wq);
|
||||
@@ -5818,14 +5818,12 @@ static int gk20a_gr_post_bpt_events(struct gk20a *g, struct channel_gk20a *ch,
|
||||
if (global_esr & gr_gpc0_tpc0_sm_hww_global_esr_bpt_int_pending_f()) {
|
||||
struct tsg_gk20a *tsg = &g->fifo.tsg[ch->tsgid];
|
||||
|
||||
gk20a_tsg_event_id_post_event(tsg,
|
||||
NVGPU_EVENT_ID_BPT_INT);
|
||||
g->ops.fifo.post_event_id(tsg, NVGPU_EVENT_ID_BPT_INT);
|
||||
}
|
||||
if (global_esr & gr_gpc0_tpc0_sm_hww_global_esr_bpt_pause_pending_f()) {
|
||||
struct tsg_gk20a *tsg = &g->fifo.tsg[ch->tsgid];
|
||||
|
||||
gk20a_tsg_event_id_post_event(tsg,
|
||||
NVGPU_EVENT_ID_BPT_PAUSE);
|
||||
g->ops.fifo.post_event_id(tsg, NVGPU_EVENT_ID_BPT_PAUSE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -431,6 +431,7 @@ static const struct gpu_ops gm20b_ops = {
|
||||
.handle_pbdma_intr_1 = gk20a_fifo_handle_pbdma_intr_1,
|
||||
.tsg_bind_channel = gk20a_tsg_bind_channel,
|
||||
.tsg_unbind_channel = gk20a_fifo_tsg_unbind_channel,
|
||||
.post_event_id = gk20a_tsg_event_id_post_event,
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
.alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf,
|
||||
.free_syncpt_buf = gk20a_fifo_free_syncpt_buf,
|
||||
|
||||
@@ -491,6 +491,7 @@ static const struct gpu_ops gp106_ops = {
|
||||
.handle_pbdma_intr_1 = gk20a_fifo_handle_pbdma_intr_1,
|
||||
.tsg_bind_channel = gk20a_tsg_bind_channel,
|
||||
.tsg_unbind_channel = gk20a_fifo_tsg_unbind_channel,
|
||||
.post_event_id = gk20a_tsg_event_id_post_event,
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
.alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf,
|
||||
.free_syncpt_buf = gk20a_fifo_free_syncpt_buf,
|
||||
|
||||
@@ -1814,8 +1814,8 @@ int gr_gp10b_set_cilp_preempt_pending(struct gk20a *g,
|
||||
|
||||
tsg = &g->fifo.tsg[fault_ch->tsgid];
|
||||
|
||||
gk20a_tsg_event_id_post_event(tsg,
|
||||
NVGPU_EVENT_ID_CILP_PREEMPTION_STARTED);
|
||||
g->ops.fifo.post_event_id(tsg,
|
||||
NVGPU_EVENT_ID_CILP_PREEMPTION_STARTED);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2036,8 +2036,8 @@ int gr_gp10b_handle_fecs_error(struct gk20a *g,
|
||||
|
||||
tsg = &g->fifo.tsg[ch->tsgid];
|
||||
|
||||
gk20a_tsg_event_id_post_event(tsg,
|
||||
NVGPU_EVENT_ID_CILP_PREEMPTION_COMPLETE);
|
||||
g->ops.fifo.post_event_id(tsg,
|
||||
NVGPU_EVENT_ID_CILP_PREEMPTION_COMPLETE);
|
||||
|
||||
gk20a_channel_put(ch);
|
||||
}
|
||||
|
||||
@@ -464,6 +464,7 @@ static const struct gpu_ops gp10b_ops = {
|
||||
.handle_pbdma_intr_1 = gk20a_fifo_handle_pbdma_intr_1,
|
||||
.tsg_bind_channel = gk20a_tsg_bind_channel,
|
||||
.tsg_unbind_channel = gk20a_fifo_tsg_unbind_channel,
|
||||
.post_event_id = gk20a_tsg_event_id_post_event,
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
.alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf,
|
||||
.free_syncpt_buf = gk20a_fifo_free_syncpt_buf,
|
||||
|
||||
@@ -506,6 +506,7 @@ static const struct gpu_ops gv100_ops = {
|
||||
gv11b_fifo_deinit_eng_method_buffers,
|
||||
.tsg_bind_channel = gk20a_tsg_bind_channel,
|
||||
.tsg_unbind_channel = gk20a_fifo_tsg_unbind_channel,
|
||||
.post_event_id = gk20a_tsg_event_id_post_event,
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
.alloc_syncpt_buf = gv11b_fifo_alloc_syncpt_buf,
|
||||
.free_syncpt_buf = gv11b_fifo_free_syncpt_buf,
|
||||
|
||||
@@ -522,6 +522,7 @@ static const struct gpu_ops gv11b_ops = {
|
||||
gv11b_fifo_deinit_eng_method_buffers,
|
||||
.tsg_bind_channel = gk20a_tsg_bind_channel,
|
||||
.tsg_unbind_channel = gk20a_fifo_tsg_unbind_channel,
|
||||
.post_event_id = gk20a_tsg_event_id_post_event,
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
.alloc_syncpt_buf = gv11b_fifo_alloc_syncpt_buf,
|
||||
.free_syncpt_buf = gv11b_fifo_free_syncpt_buf,
|
||||
|
||||
@@ -340,6 +340,7 @@ static const struct gpu_ops vgpu_gp10b_ops = {
|
||||
.handle_pbdma_intr_1 = gk20a_fifo_handle_pbdma_intr_1,
|
||||
.tsg_bind_channel = vgpu_tsg_bind_channel,
|
||||
.tsg_unbind_channel = vgpu_tsg_unbind_channel,
|
||||
.post_event_id = gk20a_tsg_event_id_post_event,
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
.alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf,
|
||||
.free_syncpt_buf = gk20a_fifo_free_syncpt_buf,
|
||||
|
||||
@@ -383,6 +383,7 @@ static const struct gpu_ops vgpu_gv11b_ops = {
|
||||
gv11b_fifo_deinit_eng_method_buffers,
|
||||
.tsg_bind_channel = vgpu_gv11b_tsg_bind_channel,
|
||||
.tsg_unbind_channel = vgpu_tsg_unbind_channel,
|
||||
.post_event_id = gk20a_tsg_event_id_post_event,
|
||||
#ifdef CONFIG_TEGRA_GK20A_NVHOST
|
||||
.alloc_syncpt_buf = vgpu_gv11b_fifo_alloc_syncpt_buf,
|
||||
.free_syncpt_buf = gv11b_fifo_free_syncpt_buf,
|
||||
|
||||
Reference in New Issue
Block a user