On Tue, Aug 6, 2019 at 1:53 PM Alyssa Rosenzweig <alyssa.rosenzweig@xxxxxxxxxxxxx> wrote: > > Midgard contains two job slots capable of compute jobs, JS1 and JS2. As > an optimization, it is preferable to schedule compute-only workloads to > JS2, although compute jobs are functionally able to be scheduled to JS1 > (barring an obscure errata). > > Accordingly, we reserve a compute-only hint in the UABI to allow future > compute-equipped userspace and future compute-optimized kernelspace to > hint towards JS2. At the moment, the hint is ignored, but this is > harmless. Why don't we just go ahead and enable JS2? > I have verified compute jobs can be successfully submitted and executed > with an appropriate userspace against a 5.1 kernel without this hint. > > Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@xxxxxxxxxxxxx> > --- > drivers/gpu/drm/panfrost/TODO | 3 --- > drivers/gpu/drm/panfrost/panfrost_job.c | 4 +++- > include/uapi/drm/panfrost_drm.h | 8 ++++++++ > 3 files changed, 11 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/panfrost/TODO b/drivers/gpu/drm/panfrost/TODO > index c2e44add3..8c367a5a6 100644 > --- a/drivers/gpu/drm/panfrost/TODO > +++ b/drivers/gpu/drm/panfrost/TODO > @@ -20,8 +20,5 @@ > > - Support for madvise and a shrinker. > > -- Compute job support. So called 'compute only' jobs need to be plumbed up to > - userspace. > - > - Performance counter support. (Boris) > > diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c > index 9bb9260d9..3e1385a3b 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_job.c > +++ b/drivers/gpu/drm/panfrost/panfrost_job.c > @@ -108,7 +108,9 @@ static int panfrost_job_get_slot(struct panfrost_job *job) > if (job->requirements & PANFROST_JD_REQ_FS) > return 0; > > -/* Not exposed to userspace yet */ > + /* Compute jobs can run on JS1, so compute-only jobs can run with this > + * simple implementations (useful for backwards compatibility). As an > + * optimization, we will eventually want to schedule to JS2. */ > #if 0 > if (job->requirements & PANFROST_JD_REQ_ONLY_COMPUTE) { > if ((job->requirements & PANFROST_JD_REQ_CORE_GRP_MASK) && > diff --git a/include/uapi/drm/panfrost_drm.h b/include/uapi/drm/panfrost_drm.h > index b5d370638..25acde34b 100644 > --- a/include/uapi/drm/panfrost_drm.h > +++ b/include/uapi/drm/panfrost_drm.h > @@ -38,6 +38,14 @@ extern "C" { > #define DRM_IOCTL_PANFROST_PERFCNT_DUMP DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_DUMP, struct drm_panfrost_perfcnt_dump) > > #define PANFROST_JD_REQ_FS (1 << 0) > + > +/* Optional (mandatory for T600 r0p0 15dev0 due to errata #8987) hint to the > + * kernel that the commands only contain JOB_TYPE_COMPUTE jobs, without > + * vertex/tiler/fragment jobs. If present, the kernel may use this as an > + * optimization, but it is not strictly necessary. */ > + > +#define PANFROST_JD_REQ_ONLY_COMPUTE (1 << 1) > + > /** > * struct drm_panfrost_submit - ioctl argument for submitting commands to the 3D > * engine. > -- > 2.20.1 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel