mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 01:50:07 +03:00
gpu: nvgpu: User-space managed address space support
Implement NVGPU_GPU_IOCTL_ALLOC_AS_FLAGS_USERSPACE_MANAGED, which enables creating userspace-managed GPU address spaces. When an address space is marked as userspace-managed, the following changes are in effect: - Only fixed-address mappings are allowed. - VA space allocation for fixed-address mappings is not required, except to mark space as sparse. - Maps and unmaps are always immediate. In particular, the mapping ref increments at kickoffs and decrements at job completion are skipped. Bug 1614735 Bug 1623949 Bug 1660392 Change-Id: I834fe19b3f65e9b02c268952383eddee0e465759 Signed-off-by: Sami Kiminki <skiminki@nvidia.com> Reviewed-on: http://git-master/r/738558 Reviewed-on: http://git-master/r/833253 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Terje Bergstrom
parent
503d3a0b10
commit
9d2c9072c8
@@ -106,6 +106,8 @@ struct nvgpu_gpu_zbc_query_table_args {
|
||||
#define NVGPU_GPU_FLAGS_SUPPORT_CYCLE_STATS (1 << 4)
|
||||
/* NVGPU_IOCTL_CHANNEL_CYCLE_STATS_SNAPSHOT is available */
|
||||
#define NVGPU_GPU_FLAGS_SUPPORT_CYCLE_STATS_SNAPSHOT (1 << 6)
|
||||
/* User-space managed address spaces support */
|
||||
#define NVGPU_GPU_FLAGS_SUPPORT_USERSPACE_MANAGED_AS (1 << 7)
|
||||
|
||||
struct nvgpu_gpu_characteristics {
|
||||
__u32 arch;
|
||||
@@ -239,7 +241,22 @@ struct nvgpu_gpu_mark_compressible_write_args {
|
||||
struct nvgpu_alloc_as_args {
|
||||
__u32 big_page_size;
|
||||
__s32 as_fd;
|
||||
__u64 reserved; /* must be zero */
|
||||
|
||||
/*
|
||||
* The GPU address space will be managed by the userspace. This has
|
||||
* the following changes in functionality:
|
||||
* 1. All non-fixed-offset user mappings are rejected (i.e.,
|
||||
* fixed-offset only)
|
||||
* 2. Address space does not need to be allocated for fixed-offset
|
||||
* mappings, except to mark sparse address space areas.
|
||||
* 3. Maps and unmaps are immediate. In particular, mapping ref
|
||||
* increments at kickoffs and decrements at job completion are
|
||||
* bypassed.
|
||||
*/
|
||||
#define NVGPU_GPU_IOCTL_ALLOC_AS_FLAGS_USERSPACE_MANAGED (1 << 0)
|
||||
__u32 flags;
|
||||
|
||||
__u32 reserved; /* must be zero */
|
||||
};
|
||||
|
||||
struct nvgpu_gpu_open_tsg_args {
|
||||
|
||||
Reference in New Issue
Block a user