mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 09:12:24 +03:00
gpu: nvgpu: remove sudo restrictions on gpu nodes.
When SMC modes are enabled, devices are created with sudo-only access permissions. Those permissions are relaxed to allow non-sudo processes to allow job submission. Also, allow only root users to poweroff explicitely via the device power node. Bug 3374078 Change-Id: Ieb869399c3ada3588708cf2bc99a580414023cb7 Signed-off-by: Debarshi Dutta <ddutta@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2590584 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
f3164a4672
commit
79ab0ba6c4
@@ -198,10 +198,6 @@ static char *nvgpu_devnode(const char *cdev_name)
|
||||
|
||||
static char *nvgpu_pci_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
if (mode) {
|
||||
*mode = S_IRUSR | S_IWUSR;
|
||||
}
|
||||
|
||||
/* Special case to maintain legacy names */
|
||||
if (strcmp(dev_name(dev), "channel") == 0) {
|
||||
return kasprintf(GFP_KERNEL, "nvgpu-pci/card-%s",
|
||||
@@ -214,19 +210,11 @@ static char *nvgpu_pci_devnode(struct device *dev, umode_t *mode)
|
||||
|
||||
static char *nvgpu_devnode_v2(struct device *dev, umode_t *mode)
|
||||
{
|
||||
if (mode) {
|
||||
*mode = S_IRUSR | S_IWUSR;
|
||||
}
|
||||
|
||||
return kasprintf(GFP_KERNEL, "nvgpu/igpu0/%s", dev_name(dev));
|
||||
}
|
||||
|
||||
static char *nvgpu_pci_devnode_v2(struct device *dev, umode_t *mode)
|
||||
{
|
||||
if (mode) {
|
||||
*mode = S_IRUSR | S_IWUSR;
|
||||
}
|
||||
|
||||
return kasprintf(GFP_KERNEL, "nvgpu/dgpu-%s/%s", dev_name(dev->parent),
|
||||
dev_name(dev));
|
||||
}
|
||||
@@ -235,10 +223,6 @@ static char *nvgpu_mig_fgpu_devnode(struct device *dev, umode_t *mode)
|
||||
{
|
||||
struct nvgpu_cdev_class_priv_data *priv_data;
|
||||
|
||||
if (mode) {
|
||||
*mode = S_IRUSR | S_IWUSR;
|
||||
}
|
||||
|
||||
priv_data = dev_get_drvdata(dev);
|
||||
|
||||
if (priv_data->pci) {
|
||||
|
||||
@@ -1832,6 +1832,11 @@ int gk20a_driver_force_power_off(struct gk20a *g)
|
||||
struct gk20a_platform *platform = gk20a_get_platform(dev);
|
||||
int err = 0;
|
||||
|
||||
if (!capable(CAP_SYS_NICE)) {
|
||||
nvgpu_err(g, "User doesn't have the permission for this operation");
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NVGPU_DGPU
|
||||
if (g->pci_class) {
|
||||
nvgpu_err(g, "Poweroff is not supported for device yet.");
|
||||
|
||||
@@ -136,7 +136,7 @@ int gk20a_power_write(struct file *filp, const char __user *buf,
|
||||
if (err) {
|
||||
nvgpu_err(g, "power_node_write failed at busy");
|
||||
kfree(userinput);
|
||||
return -EINVAL;
|
||||
return err;
|
||||
}
|
||||
} else {
|
||||
nvgpu_err(g, "1/0 are the valid values to power-on the GPU");
|
||||
|
||||
Reference in New Issue
Block a user