* [PATCH 1/2] drm: report consistent errors when checking syncobj capibility
@ 2019-04-16 12:30 Lionel Landwerlin
2019-04-16 12:30 ` [PATCH 2/2] drm: introduce a capability flag for syncobj timeline support Lionel Landwerlin
2019-04-16 12:40 ` [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Christian König
0 siblings, 2 replies; 13+ messages in thread
From: Lionel Landwerlin @ 2019-04-16 12:30 UTC (permalink / raw)
To: dri-devel; +Cc: Dave Airlie, Christian König
We've been somewhat inconsistent when adding the new ioctl and
returned ENODEV instead of EOPNOTSUPPORTED upon failing the syncobj
capibility.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: ea569910cbab98 ("drm/syncobj: add transition iotcls between binary and timeline v2")
Fixes: 01d6c357837918 ("drm/syncobj: add support for timeline point wait v8")
Cc: Dave Airlie <airlied@redhat.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Chunming Zhou <david1.zhou@amd.com>
---
drivers/gpu/drm/drm_syncobj.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c
index c534c5d46f1e..fb65f13d25cf 100644
--- a/drivers/gpu/drm/drm_syncobj.c
+++ b/drivers/gpu/drm/drm_syncobj.c
@@ -756,7 +756,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data,
int ret;
if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
- return -ENODEV;
+ return -EOPNOTSUPP;
if (args->pad)
return -EINVAL;
@@ -1107,7 +1107,7 @@ drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data,
int ret = 0;
if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
- return -ENODEV;
+ return -EOPNOTSUPP;
if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL |
DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT |
--
2.21.0.392.gf8f6787159e
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 2/2] drm: introduce a capability flag for syncobj timeline support 2019-04-16 12:30 [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Lionel Landwerlin @ 2019-04-16 12:30 ` Lionel Landwerlin 2019-04-16 12:57 ` [PATCH v2] " Lionel Landwerlin 2019-04-16 12:40 ` [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Christian König 1 sibling, 1 reply; 13+ messages in thread From: Lionel Landwerlin @ 2019-04-16 12:30 UTC (permalink / raw) To: dri-devel; +Cc: Dave Airlie, Christian König, Daniel Vetter Unfortunately userspace users of this API cannot be publicly disclosed yet. This commit effectively disables timeline syncobj ioctls for all drivers. Each driver wishing to support this feature will need to expose DRIVER_SYNCOBJ_TIMELINE. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Christian König <christian.koenig@amd.com> Cc: Chunming Zhou <david1.zhou@amd.com> --- drivers/gpu/drm/drm_syncobj.c | 10 +++++----- include/drm/drm_drv.h | 7 +++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index fb65f13d25cf..72a38ff6e3e4 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -755,7 +755,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data, struct drm_syncobj_transfer *args = data; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->pad) @@ -1106,7 +1106,7 @@ drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, struct drm_syncobj **syncobjs; int ret = 0; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | @@ -1210,7 +1210,7 @@ drm_syncobj_timeline_signal_ioctl(struct drm_device *dev, void *data, uint32_t i, j; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->pad != 0) @@ -1281,8 +1281,8 @@ int drm_syncobj_query_ioctl(struct drm_device *dev, void *data, uint32_t i; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) - return -ENODEV; + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) + return -EOPNOTSUPP; if (args->pad != 0) return -EINVAL; diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index 5cc7f728ec73..68ca736c548d 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -91,6 +91,13 @@ enum drm_driver_feature { * submission. */ DRIVER_SYNCOBJ = BIT(5), + /** + * @DRIVER_SYNCOBJ_TIMELINE: + * + * Driver supports the timeline flavor of &drm_syncobj for explicit + * synchronization of command submission. + */ + DRIVER_SYNCOBJ_TIMELINE = BIT(6), /* IMPORTANT: Below are all the legacy flags, add new ones above. */ -- 2.21.0.392.gf8f6787159e _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2] drm: introduce a capability flag for syncobj timeline support 2019-04-16 12:30 ` [PATCH 2/2] drm: introduce a capability flag for syncobj timeline support Lionel Landwerlin @ 2019-04-16 12:57 ` Lionel Landwerlin 2019-04-16 13:15 ` Zhou, David(ChunMing) 2019-04-16 19:53 ` Dave Airlie 0 siblings, 2 replies; 13+ messages in thread From: Lionel Landwerlin @ 2019-04-16 12:57 UTC (permalink / raw) To: dri-devel; +Cc: Dave Airlie, Christian König, Daniel Vetter Unfortunately userspace users of this API cannot be publicly disclosed yet. This commit effectively disables timeline syncobj ioctls for all drivers. Each driver wishing to support this feature will need to expose DRIVER_SYNCOBJ_TIMELINE. v2: Add uAPI capability check (Christian) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> (v1) Cc: Dave Airlie <airlied@redhat.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Christian König <christian.koenig@amd.com> Cc: Chunming Zhou <david1.zhou@amd.com> --- drivers/gpu/drm/drm_ioctl.c | 3 +++ drivers/gpu/drm/drm_syncobj.c | 10 +++++----- include/drm/drm_drv.h | 7 +++++++ include/uapi/drm/drm.h | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index d337f161909c..15ca94338d55 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -245,6 +245,9 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_ case DRM_CAP_SYNCOBJ: req->value = drm_core_check_feature(dev, DRIVER_SYNCOBJ); return 0; + case DRM_CAP_SYNCOBJ_TIMELINE: + req->value = drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE); + return 0; } /* Other caps only work with KMS drivers */ diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index fb65f13d25cf..72a38ff6e3e4 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -755,7 +755,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data, struct drm_syncobj_transfer *args = data; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->pad) @@ -1106,7 +1106,7 @@ drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, struct drm_syncobj **syncobjs; int ret = 0; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | @@ -1210,7 +1210,7 @@ drm_syncobj_timeline_signal_ioctl(struct drm_device *dev, void *data, uint32_t i, j; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->pad != 0) @@ -1281,8 +1281,8 @@ int drm_syncobj_query_ioctl(struct drm_device *dev, void *data, uint32_t i; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) - return -ENODEV; + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) + return -EOPNOTSUPP; if (args->pad != 0) return -EINVAL; diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index 5cc7f728ec73..68ca736c548d 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -91,6 +91,13 @@ enum drm_driver_feature { * submission. */ DRIVER_SYNCOBJ = BIT(5), + /** + * @DRIVER_SYNCOBJ_TIMELINE: + * + * Driver supports the timeline flavor of &drm_syncobj for explicit + * synchronization of command submission. + */ + DRIVER_SYNCOBJ_TIMELINE = BIT(6), /* IMPORTANT: Below are all the legacy flags, add new ones above. */ diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 236b01a1fabf..661d73f9a919 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -649,6 +649,7 @@ struct drm_gem_open { #define DRM_CAP_PAGE_FLIP_TARGET 0x11 #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 #define DRM_CAP_SYNCOBJ 0x13 +#define DRM_CAP_SYNCOBJ_TIMELINE 0x14 /** DRM_IOCTL_GET_CAP ioctl argument type */ struct drm_get_cap { -- 2.21.0.392.gf8f6787159e _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re:[PATCH v2] drm: introduce a capability flag for syncobj timeline support 2019-04-16 12:57 ` [PATCH v2] " Lionel Landwerlin @ 2019-04-16 13:15 ` Zhou, David(ChunMing) 2019-04-16 13:47 ` [PATCH " Christian König 2019-04-16 19:53 ` Dave Airlie 1 sibling, 1 reply; 13+ messages in thread From: Zhou, David(ChunMing) @ 2019-04-16 13:15 UTC (permalink / raw) To: Lionel Landwerlin, dri-devel@lists.freedesktop.org Cc: Dave Airlie, Koenig, Christian, Daniel Vetter [-- Attachment #1.1: Type: text/plain, Size: 4587 bytes --] Reviewed-by: Chunming Zhou <david1.zhou@amd.com> for series. -------- Original Message -------- Subject: [PATCH v2] drm: introduce a capability flag for syncobj timeline support From: Lionel Landwerlin To: dri-devel@lists.freedesktop.org CC: Lionel Landwerlin ,"Koenig, Christian" ,Dave Airlie ,Daniel Vetter ,"Zhou, David(ChunMing)" Unfortunately userspace users of this API cannot be publicly disclosed yet. This commit effectively disables timeline syncobj ioctls for all drivers. Each driver wishing to support this feature will need to expose DRIVER_SYNCOBJ_TIMELINE. v2: Add uAPI capability check (Christian) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> (v1) Cc: Dave Airlie <airlied@redhat.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Christian König <christian.koenig@amd.com> Cc: Chunming Zhou <david1.zhou@amd.com> --- drivers/gpu/drm/drm_ioctl.c | 3 +++ drivers/gpu/drm/drm_syncobj.c | 10 +++++----- include/drm/drm_drv.h | 7 +++++++ include/uapi/drm/drm.h | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index d337f161909c..15ca94338d55 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -245,6 +245,9 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_ case DRM_CAP_SYNCOBJ: req->value = drm_core_check_feature(dev, DRIVER_SYNCOBJ); return 0; + case DRM_CAP_SYNCOBJ_TIMELINE: + req->value = drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE); + return 0; } /* Other caps only work with KMS drivers */ diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index fb65f13d25cf..72a38ff6e3e4 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -755,7 +755,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data, struct drm_syncobj_transfer *args = data; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->pad) @@ -1106,7 +1106,7 @@ drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, struct drm_syncobj **syncobjs; int ret = 0; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | @@ -1210,7 +1210,7 @@ drm_syncobj_timeline_signal_ioctl(struct drm_device *dev, void *data, uint32_t i, j; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; if (args->pad != 0) @@ -1281,8 +1281,8 @@ int drm_syncobj_query_ioctl(struct drm_device *dev, void *data, uint32_t i; int ret; - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) - return -ENODEV; + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) + return -EOPNOTSUPP; if (args->pad != 0) return -EINVAL; diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index 5cc7f728ec73..68ca736c548d 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -91,6 +91,13 @@ enum drm_driver_feature { * submission. */ DRIVER_SYNCOBJ = BIT(5), + /** + * @DRIVER_SYNCOBJ_TIMELINE: + * + * Driver supports the timeline flavor of &drm_syncobj for explicit + * synchronization of command submission. + */ + DRIVER_SYNCOBJ_TIMELINE = BIT(6), /* IMPORTANT: Below are all the legacy flags, add new ones above. */ diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 236b01a1fabf..661d73f9a919 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -649,6 +649,7 @@ struct drm_gem_open { #define DRM_CAP_PAGE_FLIP_TARGET 0x11 #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 #define DRM_CAP_SYNCOBJ 0x13 +#define DRM_CAP_SYNCOBJ_TIMELINE 0x14 /** DRM_IOCTL_GET_CAP ioctl argument type */ struct drm_get_cap { -- 2.21.0.392.gf8f6787159e [-- Attachment #1.2: Type: text/html, Size: 8296 bytes --] [-- Attachment #2: Type: text/plain, Size: 159 bytes --] _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2] drm: introduce a capability flag for syncobj timeline support 2019-04-16 13:15 ` Zhou, David(ChunMing) @ 2019-04-16 13:47 ` Christian König 0 siblings, 0 replies; 13+ messages in thread From: Christian König @ 2019-04-16 13:47 UTC (permalink / raw) To: Zhou, David(ChunMing), Lionel Landwerlin, dri-devel@lists.freedesktop.org Cc: Dave Airlie, Koenig, Christian, Daniel Vetter [-- Attachment #1.1: Type: text/plain, Size: 5097 bytes --] I can't judge if that UAPI is actually sufficient, but the rest still looks good to me. Acked-by: Christian König <christian.koenig@amd.com> Christian. Am 16.04.19 um 15:15 schrieb Zhou, David(ChunMing): > Reviewed-by: Chunming Zhou <david1.zhou@amd.com> for series. > > -------- Original Message -------- > Subject: [PATCH v2] drm: introduce a capability flag for syncobj > timeline support > From: Lionel Landwerlin > To: dri-devel@lists.freedesktop.org > CC: Lionel Landwerlin ,"Koenig, Christian" ,Dave Airlie ,Daniel Vetter > ,"Zhou, David(ChunMing)" > > Unfortunately userspace users of this API cannot be publicly disclosed > yet. > > This commit effectively disables timeline syncobj ioctls for all > drivers. Each driver wishing to support this feature will need to > expose DRIVER_SYNCOBJ_TIMELINE. > > v2: Add uAPI capability check (Christian) > > Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> > Reviewed-by: Christian König <christian.koenig@amd.com> (v1) > Cc: Dave Airlie <airlied@redhat.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: Christian König <christian.koenig@amd.com> > Cc: Chunming Zhou <david1.zhou@amd.com> > --- > drivers/gpu/drm/drm_ioctl.c | 3 +++ > drivers/gpu/drm/drm_syncobj.c | 10 +++++----- > include/drm/drm_drv.h | 7 +++++++ > include/uapi/drm/drm.h | 1 + > 4 files changed, 16 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c > index d337f161909c..15ca94338d55 100644 > --- a/drivers/gpu/drm/drm_ioctl.c > +++ b/drivers/gpu/drm/drm_ioctl.c > @@ -245,6 +245,9 @@ static int drm_getcap(struct drm_device *dev, void > *data, struct drm_file *file_ > case DRM_CAP_SYNCOBJ: > req->value = drm_core_check_feature(dev, DRIVER_SYNCOBJ); > return 0; > + case DRM_CAP_SYNCOBJ_TIMELINE: > + req->value = drm_core_check_feature(dev, > DRIVER_SYNCOBJ_TIMELINE); > + return 0; > } > > /* Other caps only work with KMS drivers */ > diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c > index fb65f13d25cf..72a38ff6e3e4 100644 > --- a/drivers/gpu/drm/drm_syncobj.c > +++ b/drivers/gpu/drm/drm_syncobj.c > @@ -755,7 +755,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, > void *data, > struct drm_syncobj_transfer *args = data; > int ret; > > - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) > return -EOPNOTSUPP; > > if (args->pad) > @@ -1106,7 +1106,7 @@ drm_syncobj_timeline_wait_ioctl(struct > drm_device *dev, void *data, > struct drm_syncobj **syncobjs; > int ret = 0; > > - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) > return -EOPNOTSUPP; > > if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | > @@ -1210,7 +1210,7 @@ drm_syncobj_timeline_signal_ioctl(struct > drm_device *dev, void *data, > uint32_t i, j; > int ret; > > - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) > return -EOPNOTSUPP; > > if (args->pad != 0) > @@ -1281,8 +1281,8 @@ int drm_syncobj_query_ioctl(struct drm_device > *dev, void *data, > uint32_t i; > int ret; > > - if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > - return -ENODEV; > + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) > + return -EOPNOTSUPP; > > if (args->pad != 0) > return -EINVAL; > diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h > index 5cc7f728ec73..68ca736c548d 100644 > --- a/include/drm/drm_drv.h > +++ b/include/drm/drm_drv.h > @@ -91,6 +91,13 @@ enum drm_driver_feature { > * submission. > */ > DRIVER_SYNCOBJ = BIT(5), > + /** > + * @DRIVER_SYNCOBJ_TIMELINE: > + * > + * Driver supports the timeline flavor of &drm_syncobj for > explicit > + * synchronization of command submission. > + */ > + DRIVER_SYNCOBJ_TIMELINE = BIT(6), > > /* IMPORTANT: Below are all the legacy flags, add new ones > above. */ > > diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h > index 236b01a1fabf..661d73f9a919 100644 > --- a/include/uapi/drm/drm.h > +++ b/include/uapi/drm/drm.h > @@ -649,6 +649,7 @@ struct drm_gem_open { > #define DRM_CAP_PAGE_FLIP_TARGET 0x11 > #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 > #define DRM_CAP_SYNCOBJ 0x13 > +#define DRM_CAP_SYNCOBJ_TIMELINE 0x14 > > /** DRM_IOCTL_GET_CAP ioctl argument type */ > struct drm_get_cap { > -- > 2.21.0.392.gf8f6787159e > > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel [-- Attachment #1.2: Type: text/html, Size: 9043 bytes --] [-- Attachment #2: Type: text/plain, Size: 159 bytes --] _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] drm: introduce a capability flag for syncobj timeline support 2019-04-16 12:57 ` [PATCH v2] " Lionel Landwerlin 2019-04-16 13:15 ` Zhou, David(ChunMing) @ 2019-04-16 19:53 ` Dave Airlie 2019-05-01 9:00 ` Lionel Landwerlin 1 sibling, 1 reply; 13+ messages in thread From: Dave Airlie @ 2019-04-16 19:53 UTC (permalink / raw) To: Lionel Landwerlin Cc: Dave Airlie, Christian König, dri-devel, Daniel Vetter On Tue, 16 Apr 2019 at 22:58, Lionel Landwerlin <lionel.g.landwerlin@intel.com> wrote: > > Unfortunately userspace users of this API cannot be publicly disclosed > yet. > > This commit effectively disables timeline syncobj ioctls for all > drivers. Each driver wishing to support this feature will need to > expose DRIVER_SYNCOBJ_TIMELINE. > > v2: Add uAPI capability check (Christian) > > Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> > Reviewed-by: Christian König <christian.koenig@amd.com> (v1) > Cc: Dave Airlie <airlied@redhat.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: Christian König <christian.koenig@amd.com> > Cc: Chunming Zhou <david1.zhou@amd.com> LGTM, Reviewed-by: Dave Airlie <airlied@redhat.com> Not sure if I'm due anymore misc-next pulls, if so would be good to have it go that way, but otherwise I can pull it into -next when I get some time. Dave. _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] drm: introduce a capability flag for syncobj timeline support 2019-04-16 19:53 ` Dave Airlie @ 2019-05-01 9:00 ` Lionel Landwerlin 0 siblings, 0 replies; 13+ messages in thread From: Lionel Landwerlin @ 2019-05-01 9:00 UTC (permalink / raw) To: Dave Airlie; +Cc: Dave Airlie, Christian König, dri-devel, Daniel Vetter On 16/04/2019 20:53, Dave Airlie wrote: > On Tue, 16 Apr 2019 at 22:58, Lionel Landwerlin > <lionel.g.landwerlin@intel.com> wrote: >> Unfortunately userspace users of this API cannot be publicly disclosed >> yet. >> >> This commit effectively disables timeline syncobj ioctls for all >> drivers. Each driver wishing to support this feature will need to >> expose DRIVER_SYNCOBJ_TIMELINE. >> >> v2: Add uAPI capability check (Christian) >> >> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> >> Reviewed-by: Christian König <christian.koenig@amd.com> (v1) >> Cc: Dave Airlie <airlied@redhat.com> >> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> >> Cc: Christian König <christian.koenig@amd.com> >> Cc: Chunming Zhou <david1.zhou@amd.com> > LGTM, > > Reviewed-by: Dave Airlie <airlied@redhat.com> > > Not sure if I'm due anymore misc-next pulls, if so would be good to > have it go that way, but otherwise I can pull it into -next when I get > some time. > > Dave. > Christian, Dave, Who should pull these patches in? Thanks, -Lionel _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] drm: report consistent errors when checking syncobj capibility 2019-04-16 12:30 [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Lionel Landwerlin 2019-04-16 12:30 ` [PATCH 2/2] drm: introduce a capability flag for syncobj timeline support Lionel Landwerlin @ 2019-04-16 12:40 ` Christian König 2019-04-16 12:43 ` Daniel Vetter 2019-04-16 12:43 ` Lionel Landwerlin 1 sibling, 2 replies; 13+ messages in thread From: Christian König @ 2019-04-16 12:40 UTC (permalink / raw) To: Lionel Landwerlin, dri-devel; +Cc: Dave Airlie, Christian König Am 16.04.19 um 14:30 schrieb Lionel Landwerlin: > We've been somewhat inconsistent when adding the new ioctl and > returned ENODEV instead of EOPNOTSUPPORTED upon failing the syncobj > capibility. > > Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> > Fixes: ea569910cbab98 ("drm/syncobj: add transition iotcls between binary and timeline v2") > Fixes: 01d6c357837918 ("drm/syncobj: add support for timeline point wait v8") > Cc: Dave Airlie <airlied@redhat.com> > Cc: Christian König <christian.koenig@amd.com> > Cc: Chunming Zhou <david1.zhou@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> for the series. How about also adding a DRM_CAP_TIMELINE_SYNCOBJ as Daniel suggested so that userspace can note that as well? Thanks, Christian. > --- > drivers/gpu/drm/drm_syncobj.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c > index c534c5d46f1e..fb65f13d25cf 100644 > --- a/drivers/gpu/drm/drm_syncobj.c > +++ b/drivers/gpu/drm/drm_syncobj.c > @@ -756,7 +756,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data, > int ret; > > if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > - return -ENODEV; > + return -EOPNOTSUPP; > > if (args->pad) > return -EINVAL; > @@ -1107,7 +1107,7 @@ drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, > int ret = 0; > > if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > - return -ENODEV; > + return -EOPNOTSUPP; > > if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | > DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] drm: report consistent errors when checking syncobj capibility 2019-04-16 12:40 ` [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Christian König @ 2019-04-16 12:43 ` Daniel Vetter 2019-04-16 12:44 ` Koenig, Christian 2019-04-16 12:43 ` Lionel Landwerlin 1 sibling, 1 reply; 13+ messages in thread From: Daniel Vetter @ 2019-04-16 12:43 UTC (permalink / raw) To: christian.koenig; +Cc: Dave Airlie, dri-devel On Tue, Apr 16, 2019 at 02:40:37PM +0200, Christian König wrote: > Am 16.04.19 um 14:30 schrieb Lionel Landwerlin: > > We've been somewhat inconsistent when adding the new ioctl and > > returned ENODEV instead of EOPNOTSUPPORTED upon failing the syncobj > > capibility. > > > > Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> > > Fixes: ea569910cbab98 ("drm/syncobj: add transition iotcls between binary and timeline v2") > > Fixes: 01d6c357837918 ("drm/syncobj: add support for timeline point wait v8") > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: Christian König <christian.koenig@amd.com> > > Cc: Chunming Zhou <david1.zhou@amd.com> > > Reviewed-by: Christian König <christian.koenig@amd.com> for the series. > > How about also adding a DRM_CAP_TIMELINE_SYNCOBJ as Daniel suggested so that > userspace can note that as well? Attempting one of the ioctls and getting a EOPNOTSUPP should be good enough. In case that "Daniel" meant me ... -Daniel > > Thanks, > Christian. > > > --- > > drivers/gpu/drm/drm_syncobj.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c > > index c534c5d46f1e..fb65f13d25cf 100644 > > --- a/drivers/gpu/drm/drm_syncobj.c > > +++ b/drivers/gpu/drm/drm_syncobj.c > > @@ -756,7 +756,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data, > > int ret; > > if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > > - return -ENODEV; > > + return -EOPNOTSUPP; > > if (args->pad) > > return -EINVAL; > > @@ -1107,7 +1107,7 @@ drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, > > int ret = 0; > > if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) > > - return -ENODEV; > > + return -EOPNOTSUPP; > > if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | > > DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] drm: report consistent errors when checking syncobj capibility 2019-04-16 12:43 ` Daniel Vetter @ 2019-04-16 12:44 ` Koenig, Christian 0 siblings, 0 replies; 13+ messages in thread From: Koenig, Christian @ 2019-04-16 12:44 UTC (permalink / raw) To: Daniel Vetter; +Cc: Dave Airlie, dri-devel@lists.freedesktop.org Am 16.04.19 um 14:43 schrieb Daniel Vetter: > On Tue, Apr 16, 2019 at 02:40:37PM +0200, Christian König wrote: >> Am 16.04.19 um 14:30 schrieb Lionel Landwerlin: >>> We've been somewhat inconsistent when adding the new ioctl and >>> returned ENODEV instead of EOPNOTSUPPORTED upon failing the syncobj >>> capibility. >>> >>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> >>> Fixes: ea569910cbab98 ("drm/syncobj: add transition iotcls between binary and timeline v2") >>> Fixes: 01d6c357837918 ("drm/syncobj: add support for timeline point wait v8") >>> Cc: Dave Airlie <airlied@redhat.com> >>> Cc: Christian König <christian.koenig@amd.com> >>> Cc: Chunming Zhou <david1.zhou@amd.com> >> Reviewed-by: Christian König <christian.koenig@amd.com> for the series. >> >> How about also adding a DRM_CAP_TIMELINE_SYNCOBJ as Daniel suggested so that >> userspace can note that as well? > Attempting one of the ioctls and getting a EOPNOTSUPP should be good > enough. In case that "Daniel" meant me ... Oh, sorry my fault. It was actually Dave who suggested that... Christian. > -Daniel > >> Thanks, >> Christian. >> >>> --- >>> drivers/gpu/drm/drm_syncobj.c | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c >>> index c534c5d46f1e..fb65f13d25cf 100644 >>> --- a/drivers/gpu/drm/drm_syncobj.c >>> +++ b/drivers/gpu/drm/drm_syncobj.c >>> @@ -756,7 +756,7 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data, >>> int ret; >>> if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) >>> - return -ENODEV; >>> + return -EOPNOTSUPP; >>> if (args->pad) >>> return -EINVAL; >>> @@ -1107,7 +1107,7 @@ drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, >>> int ret = 0; >>> if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) >>> - return -ENODEV; >>> + return -EOPNOTSUPP; >>> if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | >>> DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] drm: report consistent errors when checking syncobj capibility 2019-04-16 12:40 ` [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Christian König 2019-04-16 12:43 ` Daniel Vetter @ 2019-04-16 12:43 ` Lionel Landwerlin 1 sibling, 0 replies; 13+ messages in thread From: Lionel Landwerlin @ 2019-04-16 12:43 UTC (permalink / raw) To: christian.koenig, dri-devel; +Cc: Dave Airlie On 16/04/2019 13:40, Christian König wrote: > Am 16.04.19 um 14:30 schrieb Lionel Landwerlin: >> We've been somewhat inconsistent when adding the new ioctl and >> returned ENODEV instead of EOPNOTSUPPORTED upon failing the syncobj >> capibility. >> >> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> >> Fixes: ea569910cbab98 ("drm/syncobj: add transition iotcls between >> binary and timeline v2") >> Fixes: 01d6c357837918 ("drm/syncobj: add support for timeline point >> wait v8") >> Cc: Dave Airlie <airlied@redhat.com> >> Cc: Christian König <christian.koenig@amd.com> >> Cc: Chunming Zhou <david1.zhou@amd.com> > > Reviewed-by: Christian König <christian.koenig@amd.com> for the series. > > How about also adding a DRM_CAP_TIMELINE_SYNCOBJ as Daniel suggested > so that userspace can note that as well? > > Thanks, > Christian. Thanks Christian, I forgot about that... > >> --- >> drivers/gpu/drm/drm_syncobj.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/drm_syncobj.c >> b/drivers/gpu/drm/drm_syncobj.c >> index c534c5d46f1e..fb65f13d25cf 100644 >> --- a/drivers/gpu/drm/drm_syncobj.c >> +++ b/drivers/gpu/drm/drm_syncobj.c >> @@ -756,7 +756,7 @@ drm_syncobj_transfer_ioctl(struct drm_device >> *dev, void *data, >> int ret; >> if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) >> - return -ENODEV; >> + return -EOPNOTSUPP; >> if (args->pad) >> return -EINVAL; >> @@ -1107,7 +1107,7 @@ drm_syncobj_timeline_wait_ioctl(struct >> drm_device *dev, void *data, >> int ret = 0; >> if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) >> - return -ENODEV; >> + return -EOPNOTSUPP; >> if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | >> DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | > > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] drm: introduce a capability flag for syncobj timeline support
@ 2019-05-01 9:24 Koenig, Christian
2019-05-01 12:01 ` Dave Airlie
0 siblings, 1 reply; 13+ messages in thread
From: Koenig, Christian @ 2019-05-01 9:24 UTC (permalink / raw)
To: Lionel Landwerlin; +Cc: Dave Airlie, dri-devel, Daniel Vetter
[-- Attachment #1.1: Type: text/plain, Size: 1343 bytes --]
Am 01.05.2019 11:00 schrieb Lionel Landwerlin <lionel.g.landwerlin@intel.com>:
[CAUTION: External Email]
On 16/04/2019 20:53, Dave Airlie wrote:
> On Tue, 16 Apr 2019 at 22:58, Lionel Landwerlin
> <lionel.g.landwerlin@intel.com> wrote:
>> Unfortunately userspace users of this API cannot be publicly disclosed
>> yet.
>>
>> This commit effectively disables timeline syncobj ioctls for all
>> drivers. Each driver wishing to support this feature will need to
>> expose DRIVER_SYNCOBJ_TIMELINE.
>>
>> v2: Add uAPI capability check (Christian)
>>
>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
>> Reviewed-by: Christian König <christian.koenig@amd.com> (v1)
>> Cc: Dave Airlie <airlied@redhat.com>
>> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
>> Cc: Christian König <christian.koenig@amd.com>
>> Cc: Chunming Zhou <david1.zhou@amd.com>
> LGTM,
>
> Reviewed-by: Dave Airlie <airlied@redhat.com>
>
> Not sure if I'm due anymore misc-next pulls, if so would be good to
> have it go that way, but otherwise I can pull it into -next when I get
> some time.
>
> Dave.
>
Christian, Dave,
Who should pull these patches in?
I was assuming Dave does this.
I could do it tomorrow, but today is a holiday here and I am not even close to my laptop.
Christian.
Thanks,
-Lionel
[-- Attachment #1.2: Type: text/html, Size: 2603 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH v2] drm: introduce a capability flag for syncobj timeline support 2019-05-01 9:24 [PATCH v2] drm: introduce a capability flag for syncobj timeline support Koenig, Christian @ 2019-05-01 12:01 ` Dave Airlie 0 siblings, 0 replies; 13+ messages in thread From: Dave Airlie @ 2019-05-01 12:01 UTC (permalink / raw) To: Koenig, Christian; +Cc: Dave Airlie, dri-devel, Daniel Vetter [-- Attachment #1.1: Type: text/plain, Size: 1608 bytes --] On Wed, 1 May 2019, 19:24 Koenig, Christian, <Christian.Koenig@amd.com> wrote: > > > Am 01.05.2019 11:00 schrieb Lionel Landwerlin < > lionel.g.landwerlin@intel.com>: > > [CAUTION: External Email] > > On 16/04/2019 20:53, Dave Airlie wrote: > > On Tue, 16 Apr 2019 at 22:58, Lionel Landwerlin > > <lionel.g.landwerlin@intel.com> wrote: > >> Unfortunately userspace users of this API cannot be publicly disclosed > >> yet. > >> > >> This commit effectively disables timeline syncobj ioctls for all > >> drivers. Each driver wishing to support this feature will need to > >> expose DRIVER_SYNCOBJ_TIMELINE. > >> > >> v2: Add uAPI capability check (Christian) > >> > >> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> > >> Reviewed-by: Christian König <christian.koenig@amd.com> (v1) > >> Cc: Dave Airlie <airlied@redhat.com> > >> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > >> Cc: Christian König <christian.koenig@amd.com> > >> Cc: Chunming Zhou <david1.zhou@amd.com> > > LGTM, > > > > Reviewed-by: Dave Airlie <airlied@redhat.com> > > > > Not sure if I'm due anymore misc-next pulls, if so would be good to > > have it go that way, but otherwise I can pull it into -next when I get > > some time. > > > > Dave. > > > Christian, Dave, > > Who should pull these patches in? > > > I was assuming Dave does this. > > I could do it tomorrow, but today is a holiday here and I am not even > close to my laptop. > I will pick it up tomorrow, jjst need to make my brain work. Dave. > > Christian. > > > Thanks, > > -Lionel > > > [-- Attachment #1.2: Type: text/html, Size: 4008 bytes --] [-- Attachment #2: Type: text/plain, Size: 159 bytes --] _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2019-05-01 12:01 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-04-16 12:30 [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Lionel Landwerlin 2019-04-16 12:30 ` [PATCH 2/2] drm: introduce a capability flag for syncobj timeline support Lionel Landwerlin 2019-04-16 12:57 ` [PATCH v2] " Lionel Landwerlin 2019-04-16 13:15 ` Zhou, David(ChunMing) 2019-04-16 13:47 ` [PATCH " Christian König 2019-04-16 19:53 ` Dave Airlie 2019-05-01 9:00 ` Lionel Landwerlin 2019-04-16 12:40 ` [PATCH 1/2] drm: report consistent errors when checking syncobj capibility Christian König 2019-04-16 12:43 ` Daniel Vetter 2019-04-16 12:44 ` Koenig, Christian 2019-04-16 12:43 ` Lionel Landwerlin -- strict thread matches above, loose matches on Subject: below -- 2019-05-01 9:24 [PATCH v2] drm: introduce a capability flag for syncobj timeline support Koenig, Christian 2019-05-01 12:01 ` Dave Airlie
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.