mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
gpu: nvgpu: move mapped regs to gk20a
- moved reg fields to gk20a - added os abstract register accessor in nvgpu/io.h - defined linux register access abstract implementation - hook up with posix. posix implementation of the register accessor uses the high 4 bit of address to identify register apertures then call the according callbacks. It helps to unify code across OSes. Bug 2999617 Signed-off-by: Richard Zhao <rizhao@nvidia.com> Change-Id: Ifcb737e4b4d5b1d8bae310ae50b1ce0aa04f750c Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2497937 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
0a25376965
commit
643eb158a3
@@ -2278,7 +2278,7 @@ int gk20a_ctrl_dev_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||
|
||||
err = io_remap_pfn_range(vma, vma->vm_start,
|
||||
l->usermode_regs_bus_addr >> PAGE_SHIFT,
|
||||
g->usermode_regs_bus_addr >> PAGE_SHIFT,
|
||||
vma->vm_end - vma->vm_start, vma->vm_page_prot);
|
||||
if (!err) {
|
||||
priv->usermode_vma.vma = vma;
|
||||
@@ -2297,7 +2297,6 @@ static void alter_usermode_mapping(struct gk20a *g,
|
||||
struct gk20a_ctrl_priv *priv,
|
||||
bool poweroff)
|
||||
{
|
||||
struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
|
||||
struct vm_area_struct *vma = priv->usermode_vma.vma;
|
||||
bool vma_mapped = priv->usermode_vma.vma_mapped;
|
||||
int err;
|
||||
@@ -2335,7 +2334,7 @@ static void alter_usermode_mapping(struct gk20a *g,
|
||||
} else if (!poweroff && !vma_mapped) {
|
||||
vma->vm_flags = priv->usermode_vma.flags;
|
||||
err = io_remap_pfn_range(vma, vma->vm_start,
|
||||
l->usermode_regs_bus_addr >> PAGE_SHIFT,
|
||||
g->usermode_regs_bus_addr >> PAGE_SHIFT,
|
||||
vma->vm_end - vma->vm_start, vma->vm_page_prot);
|
||||
if (err != 0) {
|
||||
nvgpu_err(g, "can't restore usermode mapping");
|
||||
|
||||
Reference in New Issue
Block a user