mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
gpu: nvgpu: provide usermode region via mmap
Add a mmap callback on the control device node for mapping the usermode register region to userspace. Each such mapping is removed when the GPU railgates, and brought back again on unrailgate. The mapping offset must be 0 and its size must be 4 KB. Bug 200145225 Change-Id: Ie8d3758da745b958376292691d7d1d02a24e7815 Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1795819 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
d53495400e
commit
f33935f426
@@ -56,6 +56,7 @@
|
||||
#include "module_usermode.h"
|
||||
#include "intr.h"
|
||||
#include "ioctl.h"
|
||||
#include "ioctl_ctrl.h"
|
||||
|
||||
#include "os_linux.h"
|
||||
#include "os_ops.h"
|
||||
@@ -76,7 +77,6 @@
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/gk20a.h>
|
||||
|
||||
|
||||
struct device_node *nvgpu_get_node(struct gk20a *g)
|
||||
{
|
||||
struct device *dev = dev_from_gk20a(g);
|
||||
@@ -260,6 +260,8 @@ int gk20a_pm_finalize_poweron(struct device *dev)
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
nvgpu_restore_usermode_for_poweron(g);
|
||||
|
||||
/* Enable interrupt workqueue */
|
||||
if (!l->nonstall_work_queue) {
|
||||
l->nonstall_work_queue = alloc_workqueue("%s",
|
||||
@@ -392,6 +394,7 @@ static int gk20a_pm_prepare_poweroff(struct device *dev)
|
||||
/* Stop CPU from accessing the GPU registers. */
|
||||
gk20a_lockout_registers(g);
|
||||
|
||||
nvgpu_hide_usermode_for_poweroff(g);
|
||||
nvgpu_mutex_release(&g->power_lock);
|
||||
return 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user