mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: add set_adr_limit to ramin HAL
Added the following HAL - ramin.set_adr_limit Jira NVGPU-3015 Change-Id: I7982bbf46a2f26cfba3b4f5986b533f79b299038 Signed-off-by: Thomas Fleury <tfleury@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2077839 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
ba4bfe7fdf
commit
04e156f09d
@@ -25,6 +25,7 @@
|
||||
#include "hal/fifo/engines_gm20b.h"
|
||||
#include "hal/fifo/pbdma_gm20b.h"
|
||||
#include "hal/fifo/pbdma_gp10b.h"
|
||||
#include "hal/fifo/ramin_gk20a.h"
|
||||
#include "hal/fifo/ramin_gm20b.h"
|
||||
#include "hal/fifo/ramin_gp10b.h"
|
||||
#include "hal/fifo/userd_gk20a.h"
|
||||
@@ -506,6 +507,7 @@ static const struct gpu_ops vgpu_gp10b_ops = {
|
||||
.set_gr_ptr = NULL,
|
||||
.set_big_page_size = gm20b_ramin_set_big_page_size,
|
||||
.init_pdb = gp10b_ramin_init_pdb,
|
||||
.set_adr_limit = gk20a_ramin_set_adr_limit,
|
||||
},
|
||||
.runlist = {
|
||||
.reschedule = NULL,
|
||||
|
||||
@@ -595,6 +595,7 @@ static const struct gpu_ops vgpu_gv11b_ops = {
|
||||
.set_gr_ptr = NULL,
|
||||
.set_big_page_size = gm20b_ramin_set_big_page_size,
|
||||
.init_pdb = gp10b_ramin_init_pdb,
|
||||
.set_adr_limit = NULL,
|
||||
},
|
||||
.runlist = {
|
||||
.reschedule = NULL,
|
||||
|
||||
@@ -384,11 +384,7 @@ void gk20a_init_inst_block(struct nvgpu_mem *inst_block, struct vm_gk20a *vm,
|
||||
|
||||
g->ops.ramin.init_pdb(g, inst_block, pdb_addr, vm->pdb.mem);
|
||||
|
||||
nvgpu_mem_wr32(g, inst_block, ram_in_adr_limit_lo_w(),
|
||||
u64_lo32(vm->va_limit - 1U) & ~0xfffU);
|
||||
|
||||
nvgpu_mem_wr32(g, inst_block, ram_in_adr_limit_hi_w(),
|
||||
ram_in_adr_limit_hi_f(u64_hi32(vm->va_limit - 1U)));
|
||||
g->ops.ramin.set_adr_limit(g, inst_block, vm->va_limit - 1U);
|
||||
|
||||
if ((big_page_size != 0U) && (g->ops.ramin.set_big_page_size != NULL)) {
|
||||
g->ops.ramin.set_big_page_size(g, inst_block, big_page_size);
|
||||
|
||||
@@ -700,6 +700,7 @@ static const struct gpu_ops gm20b_ops = {
|
||||
.set_gr_ptr = gk20a_ramin_set_gr_ptr,
|
||||
.set_big_page_size = gm20b_ramin_set_big_page_size,
|
||||
.init_pdb = gk20a_ramin_init_pdb,
|
||||
.set_adr_limit = gk20a_ramin_set_adr_limit,
|
||||
},
|
||||
.runlist = {
|
||||
.update_for_channel = gk20a_runlist_update_for_channel,
|
||||
|
||||
@@ -788,6 +788,7 @@ static const struct gpu_ops gp10b_ops = {
|
||||
.set_gr_ptr = gk20a_ramin_set_gr_ptr,
|
||||
.set_big_page_size = gm20b_ramin_set_big_page_size,
|
||||
.init_pdb = gp10b_ramin_init_pdb,
|
||||
.set_adr_limit = gk20a_ramin_set_adr_limit,
|
||||
},
|
||||
.runlist = {
|
||||
.reschedule = gk20a_runlist_reschedule,
|
||||
|
||||
@@ -973,6 +973,7 @@ static const struct gpu_ops gv100_ops = {
|
||||
.set_gr_ptr = gv11b_ramin_set_gr_ptr,
|
||||
.set_big_page_size = gm20b_ramin_set_big_page_size,
|
||||
.init_pdb = gp10b_ramin_init_pdb,
|
||||
.set_adr_limit = NULL,
|
||||
},
|
||||
.runlist = {
|
||||
.update_for_channel = gk20a_runlist_update_for_channel,
|
||||
|
||||
@@ -928,6 +928,7 @@ static const struct gpu_ops gv11b_ops = {
|
||||
.set_gr_ptr = gv11b_ramin_set_gr_ptr,
|
||||
.set_big_page_size = gm20b_ramin_set_big_page_size,
|
||||
.init_pdb = gp10b_ramin_init_pdb,
|
||||
.set_adr_limit = NULL,
|
||||
},
|
||||
.runlist = {
|
||||
.reschedule = gv11b_runlist_reschedule,
|
||||
|
||||
@@ -63,3 +63,12 @@ void gk20a_ramin_init_pdb(struct gk20a *g, struct nvgpu_mem *inst_block,
|
||||
ram_in_page_dir_base_hi_f(pdb_addr_hi));
|
||||
}
|
||||
|
||||
void gk20a_ramin_set_adr_limit(struct gk20a *g,
|
||||
struct nvgpu_mem *inst_block, u64 va_limit)
|
||||
{
|
||||
nvgpu_mem_wr32(g, inst_block, ram_in_adr_limit_lo_w(),
|
||||
u64_lo32(va_limit - 1U) & ~0xfffU);
|
||||
|
||||
nvgpu_mem_wr32(g, inst_block, ram_in_adr_limit_hi_w(),
|
||||
ram_in_adr_limit_hi_f(u64_hi32(va_limit - 1U)));
|
||||
}
|
||||
|
||||
@@ -31,5 +31,7 @@ void gk20a_ramin_set_gr_ptr(struct gk20a *g,
|
||||
struct nvgpu_mem *inst_block, u64 gpu_va);
|
||||
void gk20a_ramin_init_pdb(struct gk20a *g, struct nvgpu_mem *inst_block,
|
||||
u64 pdb_addr, struct nvgpu_mem *pdb_mem);
|
||||
void gk20a_ramin_set_adr_limit(struct gk20a *g,
|
||||
struct nvgpu_mem *inst_block, u64 va_limit);
|
||||
|
||||
#endif /* NVGPU_RAMIN_GK20A_H */
|
||||
|
||||
@@ -1024,6 +1024,8 @@ struct gpu_ops {
|
||||
struct nvgpu_mem *mem, u32 size);
|
||||
void (*init_pdb)(struct gk20a *g, struct nvgpu_mem *inst_block,
|
||||
u64 pdb_addr, struct nvgpu_mem *pdb_mem);
|
||||
void (*set_adr_limit)(struct gk20a *g,
|
||||
struct nvgpu_mem *inst_block, u64 va_limit);
|
||||
} ramin;
|
||||
struct {
|
||||
int (*reschedule)(struct channel_gk20a *ch, bool preempt_next);
|
||||
|
||||
@@ -1011,6 +1011,7 @@ static const struct gpu_ops tu104_ops = {
|
||||
.set_gr_ptr = gv11b_ramin_set_gr_ptr,
|
||||
.set_big_page_size = gm20b_ramin_set_big_page_size,
|
||||
.init_pdb = gp10b_ramin_init_pdb,
|
||||
.set_adr_limit = NULL,
|
||||
},
|
||||
.runlist = {
|
||||
.update_for_channel = gk20a_runlist_update_for_channel,
|
||||
|
||||
Reference in New Issue
Block a user