gpu: nvgpu: scheduler management uapi

Add ioctls for creating, removing and querying scheduling domains and
interface with the "nvsched" entity that will be the core scheduler.
Include the scheduler in the Linux build.

The core scheduler code will ultimately hold data on and control what
gets scheduled, but this intermediate layer in nvgpu-rm needs a bit of
bookeeping to manage the userspace interface.

To keep changes isolated, this does not touch the internal runlist
domains yet. The core scheduler logic will eventually control the
runlist domains.

Jira NVGPU-6788

Change-Id: I7b4064edb6205acbac2d8c593dad019d517243ce
Signed-off-by: Alex Waterman <alexw@nvidia.com>
Signed-off-by: Konsta Hölttä <kholtta@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2463625
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Konsta Hölttä
2021-11-25 10:33:48 +02:00
committed by mobile promotions
parent bfd7fc8649
commit 1d14a4412f
21 changed files with 851 additions and 1 deletions

View File

@@ -176,12 +176,14 @@ out:
return err;
}
#ifdef CONFIG_NVS_PRESENT
static int nvgpu_tsg_bind_scheduling_domain(struct nvgpu_tsg *tsg,
struct nvgpu_tsg_bind_scheduling_domain_args *args)
{
return nvgpu_tsg_bind_domain(tsg, args->domain_name);
}
#endif
#ifdef CONFIG_NVGPU_CHANNEL_TSG_CONTROL
static int gk20a_tsg_get_event_data_from_id(struct nvgpu_tsg *tsg,
@@ -821,6 +823,7 @@ long nvgpu_ioctl_tsg_dev_ioctl(struct file *filp, unsigned int cmd,
break;
}
#ifdef CONFIG_NVS_PRESENT
case NVGPU_TSG_IOCTL_BIND_SCHEDULING_DOMAIN:
{
err = gk20a_busy(g);
@@ -834,6 +837,7 @@ long nvgpu_ioctl_tsg_dev_ioctl(struct file *filp, unsigned int cmd,
gk20a_idle(g);
break;
}
#endif
case NVGPU_IOCTL_TSG_ENABLE:
{