Files
linux-nvgpu/drivers/gpu/nvgpu/gk20a/as_gk20a.h
Terje Bergstrom 2eb6dcb469 gpu: nvgpu: Implement 64k large page support
Implement support for 64kB large page size. Add an API to create an
address space via IOCTL so that we can accept flags, and assign one
flag for enabling 64kB large page size.

Also adds APIs to set per-context large page size. This is possible
only on Maxwell, so return error if caller tries to set large page
size on Kepler.

Default large page size is still 128kB.

Change-Id: I20b51c8f6d4a984acae8411ace3de9000c78e82f
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
2015-03-18 12:11:46 -07:00

49 lines
1.3 KiB
C

/*
* GK20A Address Spaces
*
* Copyright (c) 2011-2014, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef AS_GK20A_H
#define AS_GK20A_H
#include <linux/atomic.h>
#include <linux/cdev.h>
#include <linux/fs.h>
struct gk20a_as;
struct gk20a_as_share;
struct vm_gk20a;
struct gk20a_as_share {
struct gk20a_as *as;
atomic_t ref_cnt;
int id;
struct vm_gk20a *vm;
};
struct gk20a_as {
int last_share_id; /* dummy allocator for now */
struct cdev cdev;
struct device *node;
};
int gk20a_as_release_share(struct gk20a_as_share *as_share);
/* struct file_operations driver interface */
int gk20a_as_dev_open(struct inode *inode, struct file *filp);
int gk20a_as_dev_release(struct inode *inode, struct file *filp);
long gk20a_as_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
int gk20a_as_alloc_share(struct gk20a_as *as,
u32 flags, struct gk20a_as_share **out);
#endif