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)
|
static char *nvgpu_pci_devnode(struct device *dev, umode_t *mode)
|
||||||
{
|
{
|
||||||
if (mode) {
|
|
||||||
*mode = S_IRUSR | S_IWUSR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Special case to maintain legacy names */
|
/* Special case to maintain legacy names */
|
||||||
if (strcmp(dev_name(dev), "channel") == 0) {
|
if (strcmp(dev_name(dev), "channel") == 0) {
|
||||||
return kasprintf(GFP_KERNEL, "nvgpu-pci/card-%s",
|
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)
|
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));
|
return kasprintf(GFP_KERNEL, "nvgpu/igpu0/%s", dev_name(dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *nvgpu_pci_devnode_v2(struct device *dev, umode_t *mode)
|
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),
|
return kasprintf(GFP_KERNEL, "nvgpu/dgpu-%s/%s", dev_name(dev->parent),
|
||||||
dev_name(dev));
|
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;
|
struct nvgpu_cdev_class_priv_data *priv_data;
|
||||||
|
|
||||||
if (mode) {
|
|
||||||
*mode = S_IRUSR | S_IWUSR;
|
|
||||||
}
|
|
||||||
|
|
||||||
priv_data = dev_get_drvdata(dev);
|
priv_data = dev_get_drvdata(dev);
|
||||||
|
|
||||||
if (priv_data->pci) {
|
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);
|
struct gk20a_platform *platform = gk20a_get_platform(dev);
|
||||||
int err = 0;
|
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
|
#ifdef CONFIG_NVGPU_DGPU
|
||||||
if (g->pci_class) {
|
if (g->pci_class) {
|
||||||
nvgpu_err(g, "Poweroff is not supported for device yet.");
|
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) {
|
if (err) {
|
||||||
nvgpu_err(g, "power_node_write failed at busy");
|
nvgpu_err(g, "power_node_write failed at busy");
|
||||||
kfree(userinput);
|
kfree(userinput);
|
||||||
return -EINVAL;
|
return err;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nvgpu_err(g, "1/0 are the valid values to power-on the GPU");
|
nvgpu_err(g, "1/0 are the valid values to power-on the GPU");
|
||||||
|
|||||||
Reference in New Issue
Block a user