* [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active
@ 2020-03-09 11:24 Chris Wilson
2020-03-09 13:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Chris Wilson @ 2020-03-09 11:24 UTC (permalink / raw)
To: intel-gfx
[ 206.875637] BUG: KCSAN: data-race in __i915_schedule+0x7fc/0x930 [i915]
[ 206.875654]
[ 206.875666] race at unknown origin, with read to 0xffff8881f7644480 of 8 bytes by task 703 on cpu 3:
[ 206.875901] __i915_schedule+0x7fc/0x930 [i915]
[ 206.876130] __bump_priority+0x63/0x80 [i915]
[ 206.876361] __i915_sched_node_add_dependency+0x258/0x300 [i915]
[ 206.876593] i915_sched_node_add_dependency+0x50/0xa0 [i915]
[ 206.876824] i915_request_await_dma_fence+0x1da/0x530 [i915]
[ 206.877057] i915_request_await_object+0x2fe/0x470 [i915]
[ 206.877287] i915_gem_do_execbuffer+0x45dc/0x4c20 [i915]
[ 206.877517] i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
[ 206.877535] drm_ioctl_kernel+0xe4/0x120
[ 206.877549] drm_ioctl+0x297/0x4c7
[ 206.877563] ksys_ioctl+0x89/0xb0
[ 206.877577] __x64_sys_ioctl+0x42/0x60
[ 206.877591] do_syscall_64+0x6e/0x2c0
[ 206.877606] entry_SYSCALL_64_after_hwframe+0x44/0xa9
References: https://gitlab.freedesktop.org/drm/intel/issues/1318
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
drivers/gpu/drm/i915/gt/intel_engine.h | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index 29c8c03c5caa..f267f51c457c 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -107,7 +107,17 @@ execlists_num_ports(const struct intel_engine_execlists * const execlists)
static inline struct i915_request *
execlists_active(const struct intel_engine_execlists *execlists)
{
- return *READ_ONCE(execlists->active);
+ struct i915_request * const *cur = READ_ONCE(execlists->active);
+ struct i915_request * const *old;
+ struct i915_request *active;
+
+ do {
+ old = cur;
+ active = READ_ONCE(*cur);
+ cur = READ_ONCE(execlists->active);
+ } while (cur != old);
+
+ return active;
}
static inline void
--
2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 11:24 [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active Chris Wilson
@ 2020-03-09 13:14 ` Patchwork
2020-03-09 15:34 ` [Intel-gfx] [PATCH] " Mika Kuoppala
` (3 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2020-03-09 13:14 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/gt: Defend against concurrent updates to execlists->active
URL : https://patchwork.freedesktop.org/series/74447/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8097 -> Patchwork_16878
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/index.html
Known issues
------------
Here are the changes found in Patchwork_16878 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_chamelium@dp-crc-fast:
- fi-cml-u2: [PASS][1] -> [FAIL][2] ([i915#262])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/fi-cml-u2/igt@kms_chamelium@dp-crc-fast.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/fi-cml-u2/igt@kms_chamelium@dp-crc-fast.html
#### Possible fixes ####
* igt@i915_selftest@live@gem_contexts:
- fi-skl-lmem: [INCOMPLETE][3] ([i915#424]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/fi-skl-lmem/igt@i915_selftest@live@gem_contexts.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/fi-skl-lmem/igt@i915_selftest@live@gem_contexts.html
[i915#262]: https://gitlab.freedesktop.org/drm/intel/issues/262
[i915#424]: https://gitlab.freedesktop.org/drm/intel/issues/424
Participating hosts (46 -> 43)
------------------------------
Additional (4): fi-bsw-kefka fi-glk-dsi fi-snb-2520m fi-elk-e7500
Missing (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus
Build changes
-------------
* CI: CI-20190529 -> None
* Linux: CI_DRM_8097 -> Patchwork_16878
CI-20190529: 20190529
CI_DRM_8097: 2e46e269a2843c5d0b6c72bfb7fa9d9913c15415 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5499: 2e23cf6f63fc6ba1d9543f8327698d6f21813cec @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_16878: 97cfa95059160fb433579a941ae2620d15d43b24 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
97cfa9505916 drm/i915/gt: Defend against concurrent updates to execlists->active
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 11:24 [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active Chris Wilson
2020-03-09 13:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
@ 2020-03-09 15:34 ` Mika Kuoppala
2020-03-09 16:19 ` Chris Wilson
2020-03-09 17:05 ` [Intel-gfx] [PATCH v2] " Chris Wilson
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Mika Kuoppala @ 2020-03-09 15:34 UTC (permalink / raw)
To: Chris Wilson, intel-gfx
Chris Wilson <chris@chris-wilson.co.uk> writes:
> [ 206.875637] BUG: KCSAN: data-race in __i915_schedule+0x7fc/0x930 [i915]
> [ 206.875654]
> [ 206.875666] race at unknown origin, with read to 0xffff8881f7644480 of 8 bytes by task 703 on cpu 3:
> [ 206.875901] __i915_schedule+0x7fc/0x930 [i915]
> [ 206.876130] __bump_priority+0x63/0x80 [i915]
> [ 206.876361] __i915_sched_node_add_dependency+0x258/0x300 [i915]
> [ 206.876593] i915_sched_node_add_dependency+0x50/0xa0 [i915]
> [ 206.876824] i915_request_await_dma_fence+0x1da/0x530 [i915]
> [ 206.877057] i915_request_await_object+0x2fe/0x470 [i915]
> [ 206.877287] i915_gem_do_execbuffer+0x45dc/0x4c20 [i915]
> [ 206.877517] i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
> [ 206.877535] drm_ioctl_kernel+0xe4/0x120
> [ 206.877549] drm_ioctl+0x297/0x4c7
> [ 206.877563] ksys_ioctl+0x89/0xb0
> [ 206.877577] __x64_sys_ioctl+0x42/0x60
> [ 206.877591] do_syscall_64+0x6e/0x2c0
> [ 206.877606] entry_SYSCALL_64_after_hwframe+0x44/0xa9
>
> References: https://gitlab.freedesktop.org/drm/intel/issues/1318
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/gt/intel_engine.h | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
> index 29c8c03c5caa..f267f51c457c 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine.h
> +++ b/drivers/gpu/drm/i915/gt/intel_engine.h
> @@ -107,7 +107,17 @@ execlists_num_ports(const struct intel_engine_execlists * const execlists)
> static inline struct i915_request *
> execlists_active(const struct intel_engine_execlists *execlists)
> {
> - return *READ_ONCE(execlists->active);
> + struct i915_request * const *cur = READ_ONCE(execlists->active);
> + struct i915_request * const *old;
> + struct i915_request *active;
> +
> + do {
> + old = cur;
> + active = READ_ONCE(*cur);
> + cur = READ_ONCE(execlists->active);
> + } while (cur != old);
> +
> + return active;
The updated side is scary. We are updating the execlists->active
in two phases and handling the array copying in between.
as WRITE_ONCE only guarantees ordering inside one context, due to
it is for compiler only, it makes me very suspicious about
how the memcpy of pending->inflight might unravel between two cpus.
smb_store_mb(execlists->active, execlists->pending);
memcpy(inflight, pending)
smb_wmb();
smb_store_mb(execlists->active, execlists->inflight);
smb_store_mb(execlists->pending[0], NULL);
This in paired with:
active = READ_ONCE(*cur);
smb_rmb();
cur = READ_ONCE(execlists->active);
With this, it should not matter at which point the execlists->active
is sampled as the pending would be guaranteed to be
immutable if it sampled early and inflight immutable if it
sampled late?
-Mika
> }
>
> static inline void
> --
> 2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 15:34 ` [Intel-gfx] [PATCH] " Mika Kuoppala
@ 2020-03-09 16:19 ` Chris Wilson
2020-03-09 16:38 ` Mika Kuoppala
0 siblings, 1 reply; 10+ messages in thread
From: Chris Wilson @ 2020-03-09 16:19 UTC (permalink / raw)
To: Mika Kuoppala, intel-gfx
Quoting Mika Kuoppala (2020-03-09 15:34:40)
> Chris Wilson <chris@chris-wilson.co.uk> writes:
>
> > [ 206.875637] BUG: KCSAN: data-race in __i915_schedule+0x7fc/0x930 [i915]
> > [ 206.875654]
> > [ 206.875666] race at unknown origin, with read to 0xffff8881f7644480 of 8 bytes by task 703 on cpu 3:
> > [ 206.875901] __i915_schedule+0x7fc/0x930 [i915]
> > [ 206.876130] __bump_priority+0x63/0x80 [i915]
> > [ 206.876361] __i915_sched_node_add_dependency+0x258/0x300 [i915]
> > [ 206.876593] i915_sched_node_add_dependency+0x50/0xa0 [i915]
> > [ 206.876824] i915_request_await_dma_fence+0x1da/0x530 [i915]
> > [ 206.877057] i915_request_await_object+0x2fe/0x470 [i915]
> > [ 206.877287] i915_gem_do_execbuffer+0x45dc/0x4c20 [i915]
> > [ 206.877517] i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
> > [ 206.877535] drm_ioctl_kernel+0xe4/0x120
> > [ 206.877549] drm_ioctl+0x297/0x4c7
> > [ 206.877563] ksys_ioctl+0x89/0xb0
> > [ 206.877577] __x64_sys_ioctl+0x42/0x60
> > [ 206.877591] do_syscall_64+0x6e/0x2c0
> > [ 206.877606] entry_SYSCALL_64_after_hwframe+0x44/0xa9
> >
> > References: https://gitlab.freedesktop.org/drm/intel/issues/1318
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > ---
> > drivers/gpu/drm/i915/gt/intel_engine.h | 12 +++++++++++-
> > 1 file changed, 11 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
> > index 29c8c03c5caa..f267f51c457c 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_engine.h
> > +++ b/drivers/gpu/drm/i915/gt/intel_engine.h
> > @@ -107,7 +107,17 @@ execlists_num_ports(const struct intel_engine_execlists * const execlists)
> > static inline struct i915_request *
> > execlists_active(const struct intel_engine_execlists *execlists)
> > {
> > - return *READ_ONCE(execlists->active);
> > + struct i915_request * const *cur = READ_ONCE(execlists->active);
> > + struct i915_request * const *old;
> > + struct i915_request *active;
> > +
> > + do {
> > + old = cur;
> > + active = READ_ONCE(*cur);
> > + cur = READ_ONCE(execlists->active);
> > + } while (cur != old);
> > +
> > + return active;
>
> The updated side is scary. We are updating the execlists->active
> in two phases and handling the array copying in between.
>
> as WRITE_ONCE only guarantees ordering inside one context, due to
> it is for compiler only, it makes me very suspicious about
> how the memcpy of pending->inflight might unravel between two cpus.
>
> smb_store_mb(execlists->active, execlists->pending);
> memcpy(inflight, pending)
> smb_wmb();
> smb_store_mb(execlists->active, execlists->inflight);
> smb_store_mb(execlists->pending[0], NULL);
Not quite. You've overkill on the mb there.
If you want to be pedantic,
WRITE_ONCE(active, pending);
smp_wmb();
memcpy(inflight, pending);
smp_wmb();
WRITE_ONCE(active, inflight);
The update of pending is not part of this sequence.
But do we need that, and I still think we do not.
> This in paired with:
>
> active = READ_ONCE(*cur);
> smb_rmb();
> cur = READ_ONCE(execlists->active);
>
> With this, it should not matter at which point the execlists->active
> is sampled as the pending would be guaranteed to be
> immutable if it sampled early and inflight immutable if it
> sampled late?
Simply because we don't care about the sampling, just that the read
dependency gives us a valid pointer. (We are not looking at a snapshot
of several reads, but a _single_ read and the data dependency from
that.)
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 16:19 ` Chris Wilson
@ 2020-03-09 16:38 ` Mika Kuoppala
2020-03-09 17:01 ` Chris Wilson
0 siblings, 1 reply; 10+ messages in thread
From: Mika Kuoppala @ 2020-03-09 16:38 UTC (permalink / raw)
To: Chris Wilson, intel-gfx
Chris Wilson <chris@chris-wilson.co.uk> writes:
> Quoting Mika Kuoppala (2020-03-09 15:34:40)
>> Chris Wilson <chris@chris-wilson.co.uk> writes:
>>
>> > [ 206.875637] BUG: KCSAN: data-race in __i915_schedule+0x7fc/0x930 [i915]
>> > [ 206.875654]
>> > [ 206.875666] race at unknown origin, with read to 0xffff8881f7644480 of 8 bytes by task 703 on cpu 3:
>> > [ 206.875901] __i915_schedule+0x7fc/0x930 [i915]
>> > [ 206.876130] __bump_priority+0x63/0x80 [i915]
>> > [ 206.876361] __i915_sched_node_add_dependency+0x258/0x300 [i915]
>> > [ 206.876593] i915_sched_node_add_dependency+0x50/0xa0 [i915]
>> > [ 206.876824] i915_request_await_dma_fence+0x1da/0x530 [i915]
>> > [ 206.877057] i915_request_await_object+0x2fe/0x470 [i915]
>> > [ 206.877287] i915_gem_do_execbuffer+0x45dc/0x4c20 [i915]
>> > [ 206.877517] i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
>> > [ 206.877535] drm_ioctl_kernel+0xe4/0x120
>> > [ 206.877549] drm_ioctl+0x297/0x4c7
>> > [ 206.877563] ksys_ioctl+0x89/0xb0
>> > [ 206.877577] __x64_sys_ioctl+0x42/0x60
>> > [ 206.877591] do_syscall_64+0x6e/0x2c0
>> > [ 206.877606] entry_SYSCALL_64_after_hwframe+0x44/0xa9
>> >
>> > References: https://gitlab.freedesktop.org/drm/intel/issues/1318
>> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
>> > ---
>> > drivers/gpu/drm/i915/gt/intel_engine.h | 12 +++++++++++-
>> > 1 file changed, 11 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
>> > index 29c8c03c5caa..f267f51c457c 100644
>> > --- a/drivers/gpu/drm/i915/gt/intel_engine.h
>> > +++ b/drivers/gpu/drm/i915/gt/intel_engine.h
>> > @@ -107,7 +107,17 @@ execlists_num_ports(const struct intel_engine_execlists * const execlists)
>> > static inline struct i915_request *
>> > execlists_active(const struct intel_engine_execlists *execlists)
>> > {
>> > - return *READ_ONCE(execlists->active);
>> > + struct i915_request * const *cur = READ_ONCE(execlists->active);
>> > + struct i915_request * const *old;
>> > + struct i915_request *active;
>> > +
>> > + do {
>> > + old = cur;
>> > + active = READ_ONCE(*cur);
>> > + cur = READ_ONCE(execlists->active);
>> > + } while (cur != old);
>> > +
>> > + return active;
>>
>> The updated side is scary. We are updating the execlists->active
>> in two phases and handling the array copying in between.
>>
>> as WRITE_ONCE only guarantees ordering inside one context, due to
>> it is for compiler only, it makes me very suspicious about
>> how the memcpy of pending->inflight might unravel between two cpus.
>>
>> smb_store_mb(execlists->active, execlists->pending);
>> memcpy(inflight, pending)
>> smb_wmb();
>> smb_store_mb(execlists->active, execlists->inflight);
>> smb_store_mb(execlists->pending[0], NULL);
>
> Not quite. You've overkill on the mb there.
>
> If you want to be pedantic,
>
> WRITE_ONCE(active, pending);
> smp_wmb();
>
> memcpy(inflight, pending);
> smp_wmb();
> WRITE_ONCE(active, inflight);
This is the crux of it, needing rmb counterpart.
-Mika
>
> The update of pending is not part of this sequence.
>
> But do we need that, and I still think we do not.
>
>> This in paired with:
>>
>> active = READ_ONCE(*cur);
>> smb_rmb();
>> cur = READ_ONCE(execlists->active);
>>
>> With this, it should not matter at which point the execlists->active
>> is sampled as the pending would be guaranteed to be
>> immutable if it sampled early and inflight immutable if it
>> sampled late?
>
> Simply because we don't care about the sampling, just that the read
> dependency gives us a valid pointer. (We are not looking at a snapshot
> of several reads, but a _single_ read and the data dependency from
> that.)
> -Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 16:38 ` Mika Kuoppala
@ 2020-03-09 17:01 ` Chris Wilson
0 siblings, 0 replies; 10+ messages in thread
From: Chris Wilson @ 2020-03-09 17:01 UTC (permalink / raw)
To: Mika Kuoppala, intel-gfx
Quoting Mika Kuoppala (2020-03-09 16:38:49)
> Chris Wilson <chris@chris-wilson.co.uk> writes:
>
> > Quoting Mika Kuoppala (2020-03-09 15:34:40)
> >> Chris Wilson <chris@chris-wilson.co.uk> writes:
> >>
> >> > [ 206.875637] BUG: KCSAN: data-race in __i915_schedule+0x7fc/0x930 [i915]
> >> > [ 206.875654]
> >> > [ 206.875666] race at unknown origin, with read to 0xffff8881f7644480 of 8 bytes by task 703 on cpu 3:
> >> > [ 206.875901] __i915_schedule+0x7fc/0x930 [i915]
> >> > [ 206.876130] __bump_priority+0x63/0x80 [i915]
> >> > [ 206.876361] __i915_sched_node_add_dependency+0x258/0x300 [i915]
> >> > [ 206.876593] i915_sched_node_add_dependency+0x50/0xa0 [i915]
> >> > [ 206.876824] i915_request_await_dma_fence+0x1da/0x530 [i915]
> >> > [ 206.877057] i915_request_await_object+0x2fe/0x470 [i915]
> >> > [ 206.877287] i915_gem_do_execbuffer+0x45dc/0x4c20 [i915]
> >> > [ 206.877517] i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
> >> > [ 206.877535] drm_ioctl_kernel+0xe4/0x120
> >> > [ 206.877549] drm_ioctl+0x297/0x4c7
> >> > [ 206.877563] ksys_ioctl+0x89/0xb0
> >> > [ 206.877577] __x64_sys_ioctl+0x42/0x60
> >> > [ 206.877591] do_syscall_64+0x6e/0x2c0
> >> > [ 206.877606] entry_SYSCALL_64_after_hwframe+0x44/0xa9
> >> >
> >> > References: https://gitlab.freedesktop.org/drm/intel/issues/1318
> >> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> >> > ---
> >> > drivers/gpu/drm/i915/gt/intel_engine.h | 12 +++++++++++-
> >> > 1 file changed, 11 insertions(+), 1 deletion(-)
> >> >
> >> > diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
> >> > index 29c8c03c5caa..f267f51c457c 100644
> >> > --- a/drivers/gpu/drm/i915/gt/intel_engine.h
> >> > +++ b/drivers/gpu/drm/i915/gt/intel_engine.h
> >> > @@ -107,7 +107,17 @@ execlists_num_ports(const struct intel_engine_execlists * const execlists)
> >> > static inline struct i915_request *
> >> > execlists_active(const struct intel_engine_execlists *execlists)
> >> > {
> >> > - return *READ_ONCE(execlists->active);
> >> > + struct i915_request * const *cur = READ_ONCE(execlists->active);
> >> > + struct i915_request * const *old;
> >> > + struct i915_request *active;
> >> > +
> >> > + do {
> >> > + old = cur;
> >> > + active = READ_ONCE(*cur);
> >> > + cur = READ_ONCE(execlists->active);
> >> > + } while (cur != old);
> >> > +
> >> > + return active;
> >>
> >> The updated side is scary. We are updating the execlists->active
> >> in two phases and handling the array copying in between.
> >>
> >> as WRITE_ONCE only guarantees ordering inside one context, due to
> >> it is for compiler only, it makes me very suspicious about
> >> how the memcpy of pending->inflight might unravel between two cpus.
> >>
> >> smb_store_mb(execlists->active, execlists->pending);
> >> memcpy(inflight, pending)
> >> smb_wmb();
> >> smb_store_mb(execlists->active, execlists->inflight);
> >> smb_store_mb(execlists->pending[0], NULL);
> >
> > Not quite. You've overkill on the mb there.
> >
> > If you want to be pedantic,
> >
> > WRITE_ONCE(active, pending);
> > smp_wmb();
> >
> > memcpy(inflight, pending);
> > smp_wmb();
> > WRITE_ONCE(active, inflight);
>
> This is the crux of it, needing rmb counterpart.
I suspect this is overkill, but if we really do want the change in
active to be visible before the memcpy, that wmb is strictly required.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH v2] drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 11:24 [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active Chris Wilson
2020-03-09 13:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2020-03-09 15:34 ` [Intel-gfx] [PATCH] " Mika Kuoppala
@ 2020-03-09 17:05 ` Chris Wilson
2020-03-09 17:41 ` Mika Kuoppala
2020-03-09 19:34 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork
2020-03-10 13:57 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: Defend against concurrent updates to execlists->active (rev2) Patchwork
4 siblings, 1 reply; 10+ messages in thread
From: Chris Wilson @ 2020-03-09 17:05 UTC (permalink / raw)
To: intel-gfx
[ 206.875637] BUG: KCSAN: data-race in __i915_schedule+0x7fc/0x930 [i915]
[ 206.875654]
[ 206.875666] race at unknown origin, with read to 0xffff8881f7644480 of 8 bytes by task 703 on cpu 3:
[ 206.875901] __i915_schedule+0x7fc/0x930 [i915]
[ 206.876130] __bump_priority+0x63/0x80 [i915]
[ 206.876361] __i915_sched_node_add_dependency+0x258/0x300 [i915]
[ 206.876593] i915_sched_node_add_dependency+0x50/0xa0 [i915]
[ 206.876824] i915_request_await_dma_fence+0x1da/0x530 [i915]
[ 206.877057] i915_request_await_object+0x2fe/0x470 [i915]
[ 206.877287] i915_gem_do_execbuffer+0x45dc/0x4c20 [i915]
[ 206.877517] i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
[ 206.877535] drm_ioctl_kernel+0xe4/0x120
[ 206.877549] drm_ioctl+0x297/0x4c7
[ 206.877563] ksys_ioctl+0x89/0xb0
[ 206.877577] __x64_sys_ioctl+0x42/0x60
[ 206.877591] do_syscall_64+0x6e/0x2c0
[ 206.877606] entry_SYSCALL_64_after_hwframe+0x44/0xa9
v2: Be safe and include mb
References: https://gitlab.freedesktop.org/drm/intel/issues/1318
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
drivers/gpu/drm/i915/gt/intel_engine.h | 15 ++++++++++++++-
drivers/gpu/drm/i915/gt/intel_lrc.c | 12 +++++++-----
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index 29c8c03c5caa..3644fd2b8877 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -107,7 +107,20 @@ execlists_num_ports(const struct intel_engine_execlists * const execlists)
static inline struct i915_request *
execlists_active(const struct intel_engine_execlists *execlists)
{
- return *READ_ONCE(execlists->active);
+ struct i915_request * const *cur, * const *old, *active;
+
+ cur = READ_ONCE(execlists->active);
+ smp_rmb(); /* pairs with overwrite protection in process_csb() */
+ do {
+ old = cur;
+
+ active = READ_ONCE(*cur);
+ cur = READ_ONCE(execlists->active);
+
+ smp_rmb(); /* and complete the seqlock retry */
+ } while (cur != old);
+
+ return active;
}
static inline void
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 3eb7adc4e057..f4b7fdfa2d63 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -2389,6 +2389,7 @@ static void process_csb(struct intel_engine_cs *engine)
/* Point active to the new ELSP; prevent overwriting */
WRITE_ONCE(execlists->active, execlists->pending);
+ smp_wmb(); /* notify execlists_active() */
/* cancel old inflight, prepare for switch */
trace_ports(execlists, "preempted", old);
@@ -2396,11 +2397,12 @@ static void process_csb(struct intel_engine_cs *engine)
execlists_schedule_out(*old++);
/* switch pending to inflight */
- WRITE_ONCE(execlists->active,
- memcpy(execlists->inflight,
- execlists->pending,
- execlists_num_ports(execlists) *
- sizeof(*execlists->pending)));
+ memcpy(execlists->inflight,
+ execlists->pending,
+ execlists_num_ports(execlists) *
+ sizeof(*execlists->pending));
+ smp_wmb(); /* complete the seqlock */
+ WRITE_ONCE(execlists->active, execlists->inflight);
WRITE_ONCE(execlists->pending[0], NULL);
} else {
--
2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH v2] drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 17:05 ` [Intel-gfx] [PATCH v2] " Chris Wilson
@ 2020-03-09 17:41 ` Mika Kuoppala
0 siblings, 0 replies; 10+ messages in thread
From: Mika Kuoppala @ 2020-03-09 17:41 UTC (permalink / raw)
To: Chris Wilson, intel-gfx
Chris Wilson <chris@chris-wilson.co.uk> writes:
> [ 206.875637] BUG: KCSAN: data-race in __i915_schedule+0x7fc/0x930 [i915]
> [ 206.875654]
> [ 206.875666] race at unknown origin, with read to 0xffff8881f7644480 of 8 bytes by task 703 on cpu 3:
> [ 206.875901] __i915_schedule+0x7fc/0x930 [i915]
> [ 206.876130] __bump_priority+0x63/0x80 [i915]
> [ 206.876361] __i915_sched_node_add_dependency+0x258/0x300 [i915]
> [ 206.876593] i915_sched_node_add_dependency+0x50/0xa0 [i915]
> [ 206.876824] i915_request_await_dma_fence+0x1da/0x530 [i915]
> [ 206.877057] i915_request_await_object+0x2fe/0x470 [i915]
> [ 206.877287] i915_gem_do_execbuffer+0x45dc/0x4c20 [i915]
> [ 206.877517] i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
> [ 206.877535] drm_ioctl_kernel+0xe4/0x120
> [ 206.877549] drm_ioctl+0x297/0x4c7
> [ 206.877563] ksys_ioctl+0x89/0xb0
> [ 206.877577] __x64_sys_ioctl+0x42/0x60
> [ 206.877591] do_syscall_64+0x6e/0x2c0
> [ 206.877606] entry_SYSCALL_64_after_hwframe+0x44/0xa9
>
> v2: Be safe and include mb
>
> References: https://gitlab.freedesktop.org/drm/intel/issues/1318
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_engine.h | 15 ++++++++++++++-
> drivers/gpu/drm/i915/gt/intel_lrc.c | 12 +++++++-----
> 2 files changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
> index 29c8c03c5caa..3644fd2b8877 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine.h
> +++ b/drivers/gpu/drm/i915/gt/intel_engine.h
> @@ -107,7 +107,20 @@ execlists_num_ports(const struct intel_engine_execlists * const execlists)
> static inline struct i915_request *
> execlists_active(const struct intel_engine_execlists *execlists)
> {
> - return *READ_ONCE(execlists->active);
> + struct i915_request * const *cur, * const *old, *active;
> +
> + cur = READ_ONCE(execlists->active);
> + smp_rmb(); /* pairs with overwrite protection in process_csb() */
> + do {
> + old = cur;
> +
> + active = READ_ONCE(*cur);
> + cur = READ_ONCE(execlists->active);
> +
> + smp_rmb(); /* and complete the seqlock retry */
> + } while (cur != old);
> +
> + return active;
> }
>
> static inline void
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 3eb7adc4e057..f4b7fdfa2d63 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -2389,6 +2389,7 @@ static void process_csb(struct intel_engine_cs *engine)
>
> /* Point active to the new ELSP; prevent overwriting */
> WRITE_ONCE(execlists->active, execlists->pending);
> + smp_wmb(); /* notify execlists_active() */
>
> /* cancel old inflight, prepare for switch */
> trace_ports(execlists, "preempted", old);
> @@ -2396,11 +2397,12 @@ static void process_csb(struct intel_engine_cs *engine)
> execlists_schedule_out(*old++);
>
> /* switch pending to inflight */
> - WRITE_ONCE(execlists->active,
> - memcpy(execlists->inflight,
> - execlists->pending,
> - execlists_num_ports(execlists) *
> - sizeof(*execlists->pending)));
> + memcpy(execlists->inflight,
> + execlists->pending,
> + execlists_num_ports(execlists) *
> + sizeof(*execlists->pending));
> + smp_wmb(); /* complete the seqlock */
> + WRITE_ONCE(execlists->active, execlists->inflight);
Now the memcpy bit is nicely in order,
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
>
> WRITE_ONCE(execlists->pending[0], NULL);
> } else {
> --
> 2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/gt: Defend against concurrent updates to execlists->active
2020-03-09 11:24 [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active Chris Wilson
` (2 preceding siblings ...)
2020-03-09 17:05 ` [Intel-gfx] [PATCH v2] " Chris Wilson
@ 2020-03-09 19:34 ` Patchwork
2020-03-10 13:57 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: Defend against concurrent updates to execlists->active (rev2) Patchwork
4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2020-03-09 19:34 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/gt: Defend against concurrent updates to execlists->active
URL : https://patchwork.freedesktop.org/series/74447/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8097_full -> Patchwork_16878_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Known issues
------------
Here are the changes found in Patchwork_16878_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_parallel@vcs1-fds:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#112080]) +12 similar issues
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb1/igt@gem_exec_parallel@vcs1-fds.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb6/igt@gem_exec_parallel@vcs1-fds.html
* igt@gem_exec_schedule@implicit-read-write-bsd2:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276] / [i915#677])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb2/igt@gem_exec_schedule@implicit-read-write-bsd2.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb3/igt@gem_exec_schedule@implicit-read-write-bsd2.html
* igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([i915#677]) +3 similar issues
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb6/igt@gem_exec_schedule@pi-common-bsd.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb2/igt@gem_exec_schedule@pi-common-bsd.html
* igt@gem_exec_schedule@wide-bsd:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#112146]) +5 similar issues
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb5/igt@gem_exec_schedule@wide-bsd.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb2/igt@gem_exec_schedule@wide-bsd.html
* igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-apl: [PASS][9] -> [FAIL][10] ([i915#644])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-apl3/igt@gem_ppgtt@flink-and-close-vma-leak.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl3/igt@gem_ppgtt@flink-and-close-vma-leak.html
* igt@gem_userptr_blits@sync-unmap-after-close:
- shard-apl: [PASS][11] -> [DMESG-WARN][12] ([fdo#111870] / [i915#211] / [i915#836])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-apl7/igt@gem_userptr_blits@sync-unmap-after-close.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl3/igt@gem_userptr_blits@sync-unmap-after-close.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-glk: [PASS][13] -> [FAIL][14] ([i915#72])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-glk4/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-glk1/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-apl: [PASS][15] -> [DMESG-WARN][16] ([i915#180])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-apl8/igt@kms_flip@flip-vs-suspend-interruptible.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl4/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_psr@psr2_sprite_render:
- shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109441]) +1 similar issue
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb3/igt@kms_psr@psr2_sprite_render.html
* igt@prime_busy@hang-bsd2:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109276]) +12 similar issues
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb1/igt@prime_busy@hang-bsd2.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb3/igt@prime_busy@hang-bsd2.html
#### Possible fixes ####
* igt@gem_eio@in-flight-suspend:
- shard-kbl: [INCOMPLETE][21] ([i915#155]) -> [PASS][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-kbl3/igt@gem_eio@in-flight-suspend.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-kbl7/igt@gem_eio@in-flight-suspend.html
* igt@gem_exec_schedule@implicit-read-write-bsd1:
- shard-iclb: [SKIP][23] ([fdo#109276] / [i915#677]) -> [PASS][24] +1 similar issue
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb8/igt@gem_exec_schedule@implicit-read-write-bsd1.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb4/igt@gem_exec_schedule@implicit-read-write-bsd1.html
* igt@gem_exec_schedule@in-order-bsd:
- shard-iclb: [SKIP][25] ([fdo#112146]) -> [PASS][26] +5 similar issues
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb1/igt@gem_exec_schedule@in-order-bsd.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb6/igt@gem_exec_schedule@in-order-bsd.html
* igt@gem_exec_schedule@pi-distinct-iova-bsd:
- shard-iclb: [SKIP][27] ([i915#677]) -> [PASS][28] +1 similar issue
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb2/igt@gem_exec_schedule@pi-distinct-iova-bsd.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb3/igt@gem_exec_schedule@pi-distinct-iova-bsd.html
* igt@gem_exec_schedule@preempt-queue-bsd1:
- shard-iclb: [SKIP][29] ([fdo#109276]) -> [PASS][30] +24 similar issues
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb6/igt@gem_exec_schedule@preempt-queue-bsd1.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb2/igt@gem_exec_schedule@preempt-queue-bsd1.html
* igt@gem_exec_whisper@basic-contexts:
- shard-glk: [DMESG-WARN][31] ([i915#118] / [i915#95]) -> [PASS][32]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-glk2/igt@gem_exec_whisper@basic-contexts.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-glk6/igt@gem_exec_whisper@basic-contexts.html
* igt@i915_pm_dc@dc6-psr:
- shard-iclb: [FAIL][33] ([i915#454]) -> [PASS][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb6/igt@i915_pm_dc@dc6-psr.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb2/igt@i915_pm_dc@dc6-psr.html
* igt@kms_cursor_crc@pipe-b-cursor-suspend:
- shard-apl: [DMESG-WARN][35] ([i915#180]) -> [PASS][36] +1 similar issue
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-apl6/igt@kms_cursor_crc@pipe-b-cursor-suspend.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl7/igt@kms_cursor_crc@pipe-b-cursor-suspend.html
* igt@kms_cursor_legacy@cursor-vs-flip-toggle:
- shard-hsw: [FAIL][37] ([i915#57]) -> [PASS][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-hsw6/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-hsw4/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
* igt@kms_flip@flip-vs-suspend:
- shard-hsw: [INCOMPLETE][39] ([i915#61]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-hsw8/igt@kms_flip@flip-vs-suspend.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-hsw6/igt@kms_flip@flip-vs-suspend.html
* igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-glk: [FAIL][41] ([i915#899]) -> [PASS][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-glk5/igt@kms_plane_lowres@pipe-a-tiling-y.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-glk7/igt@kms_plane_lowres@pipe-a-tiling-y.html
* igt@kms_psr@psr2_primary_page_flip:
- shard-iclb: [SKIP][43] ([fdo#109441]) -> [PASS][44] +1 similar issue
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb5/igt@kms_psr@psr2_primary_page_flip.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html
* igt@kms_psr@suspend:
- shard-iclb: [INCOMPLETE][45] ([i915#1185]) -> [PASS][46]
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb3/igt@kms_psr@suspend.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb1/igt@kms_psr@suspend.html
* igt@perf_pmu@busy-vcs1:
- shard-iclb: [SKIP][47] ([fdo#112080]) -> [PASS][48] +10 similar issues
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-iclb8/igt@perf_pmu@busy-vcs1.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-iclb4/igt@perf_pmu@busy-vcs1.html
#### Warnings ####
* igt@gem_ctx_persistence@close-replace-race:
- shard-apl: [TIMEOUT][49] ([i915#1340]) -> [INCOMPLETE][50] ([fdo#103927] / [i915#1402])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-apl8/igt@gem_ctx_persistence@close-replace-race.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl1/igt@gem_ctx_persistence@close-replace-race.html
* igt@runner@aborted:
- shard-kbl: ([FAIL][51], [FAIL][52]) ([i915#1389] / [i915#1402] / [i915#92]) -> [FAIL][53] ([i915#92])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-kbl6/igt@runner@aborted.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-kbl6/igt@runner@aborted.html
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-kbl2/igt@runner@aborted.html
- shard-apl: [FAIL][54] ([fdo#103927]) -> ([FAIL][55], [FAIL][56], [FAIL][57]) ([fdo#103927] / [fdo#111870] / [i915#1402] / [i915#211] / [i915#771])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8097/shard-apl1/igt@runner@aborted.html
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl1/igt@runner@aborted.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl4/igt@runner@aborted.html
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/shard-apl3/igt@runner@aborted.html
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#111870]: https://bugs.freedesktop.org/show_bug.cgi?id=111870
[fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
[fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
[i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
[i915#1185]: https://gitlab.freedesktop.org/drm/intel/issues/1185
[i915#1340]: https://gitlab.freedesktop.org/drm/intel/issues/1340
[i915#1389]: https://gitlab.freedesktop.org/drm/intel/issues/1389
[i915#1402]: https://gitlab.freedesktop.org/drm/intel/issues/1402
[i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#211]: https://gitlab.freedesktop.org/drm/intel/issues/211
[i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
[i915#57]: https://gitlab.freedesktop.org/drm/intel/issues/57
[i915#61]: https://gitlab.freedesktop.org/drm/intel/issues/61
[i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644
[i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677
[i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
[i915#771]: https://gitlab.freedesktop.org/drm/intel/issues/771
[i915#836]: https://gitlab.freedesktop.org/drm/intel/issues/836
[i915#899]: https://gitlab.freedesktop.org/drm/intel/issues/899
[i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (10 -> 10)
------------------------------
No changes in participating hosts
Build changes
-------------
* CI: CI-20190529 -> None
* Linux: CI_DRM_8097 -> Patchwork_16878
CI-20190529: 20190529
CI_DRM_8097: 2e46e269a2843c5d0b6c72bfb7fa9d9913c15415 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5499: 2e23cf6f63fc6ba1d9543f8327698d6f21813cec @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_16878: 97cfa95059160fb433579a941ae2620d15d43b24 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16878/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: Defend against concurrent updates to execlists->active (rev2)
2020-03-09 11:24 [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active Chris Wilson
` (3 preceding siblings ...)
2020-03-09 19:34 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork
@ 2020-03-10 13:57 ` Patchwork
4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2020-03-10 13:57 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/gt: Defend against concurrent updates to execlists->active (rev2)
URL : https://patchwork.freedesktop.org/series/74447/
State : failure
== Summary ==
Applying: drm/i915/gt: Defend against concurrent updates to execlists->active
Using index info to reconstruct a base tree...
M drivers/gpu/drm/i915/gt/intel_engine.h
M drivers/gpu/drm/i915/gt/intel_lrc.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/gpu/drm/i915/gt/intel_lrc.c
Auto-merging drivers/gpu/drm/i915/gt/intel_engine.h
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/gt/intel_engine.h
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch' to see the failed patch
Patch failed at 0001 drm/i915/gt: Defend against concurrent updates to execlists->active
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-03-10 13:57 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-09 11:24 [Intel-gfx] [PATCH] drm/i915/gt: Defend against concurrent updates to execlists->active Chris Wilson
2020-03-09 13:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2020-03-09 15:34 ` [Intel-gfx] [PATCH] " Mika Kuoppala
2020-03-09 16:19 ` Chris Wilson
2020-03-09 16:38 ` Mika Kuoppala
2020-03-09 17:01 ` Chris Wilson
2020-03-09 17:05 ` [Intel-gfx] [PATCH v2] " Chris Wilson
2020-03-09 17:41 ` Mika Kuoppala
2020-03-09 19:34 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork
2020-03-10 13:57 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: Defend against concurrent updates to execlists->active (rev2) Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).