From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Tvrtko Ursulin <tursulin@ursulin.net>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Jani Nikula <jani.nikula@linux.intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH v2 3/8] drm/i915: Don't check for atomic context on PREEMPT_RT
Date: Fri, 14 Jun 2024 13:05:48 +0200 [thread overview]
Message-ID: <20240614110548.m3lloBjv@linutronix.de> (raw)
In-Reply-To: <94423591-adba-46d4-a9ba-f377dfab369f@ursulin.net>
On 2024-06-14 09:32:07 [+0100], Tvrtko Ursulin wrote:
> I think this could be okay-ish in principle, but the commit text is not
> entirely accurate because there is no direct coupling between the wait
> helpers and the uncore lock. They can be used from any atomic context.
>
> Okay-ish in principle because there is sufficient testing in Intel's CI on
> non-PREEMPT_RT kernels to catch any conceptual misuses.
You just avoid disabling preemption if you expect to be in atomic
context to save a few cycles. It wouldn't hurt to disable it anyway. The
only reason you need it is to remain on the same CPU while reading the
clock because it is not guaranteed otherwise.
Delays > 50ms are detected at build time.
> But see also the caller in skl_pcode_request. It is a bit harder to hit
> since it is the fallback path. Or gen5_rps_enable which nests under a
> different lock.
>
> Hmm would there be a different helper, or combination of helpers, which
> could replace in_atomic() which would do the right thing on both kernels?
> Something to tell us we are neither under a spin_lock, nor preempt_disable,
> nor interrupts disabled, nor bottom-half. On either stock or PREEMPT_RT.
There is nothing that you can use to deduct that you are under a
spin-lock. preemptible() works only if you have a preemption counter
which is not mandatory. It can affect RCU but not in all configurations.
> WARN_ON_ONCE((ATOMIC) && !(!preemptible() || in_hardirq() ||
> in_serving_softirq())
>
> Would this work?
Nope. None of this triggers if you acquire a spinlock_t. And I can't
think of something that would always be true.
So the question is why do you need to know if the context is atomic?
The only impact is avoiding disabling preemption. Is it that important
to avoid it?
If so would cant_migrate() work? It requires CONFIG_DEBUG_ATOMIC_SLEEP=y
to do the trick.
> Regards,
>
> Tvrtko
Sebastian
next prev parent reply other threads:[~2024-06-14 11:05 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-13 10:20 [PATCH v2 0/8] drm/i915: PREEMPT_RT related fixups Sebastian Andrzej Siewior
2024-06-13 10:20 ` [PATCH v2 1/8] drm/i915: Use preempt_disable/enable_rt() where recommended Sebastian Andrzej Siewior
2024-06-13 10:20 ` [PATCH v2 2/8] drm/i915: Don't disable interrupts on PREEMPT_RT during atomic updates Sebastian Andrzej Siewior
2024-06-13 10:20 ` [PATCH v2 3/8] drm/i915: Don't check for atomic context on PREEMPT_RT Sebastian Andrzej Siewior
2024-06-14 8:32 ` Tvrtko Ursulin
2024-06-14 11:05 ` Sebastian Andrzej Siewior [this message]
2024-06-14 12:19 ` Tvrtko Ursulin
2024-06-17 10:07 ` Sebastian Andrzej Siewior
2024-06-18 9:00 ` Tvrtko Ursulin
2024-06-18 12:54 ` Sebastian Andrzej Siewior
2024-06-19 10:26 ` Tvrtko Ursulin
2024-06-13 10:20 ` [PATCH v2 4/8] drm/i915: Disable tracing points " Sebastian Andrzej Siewior
2024-06-19 10:27 ` Tvrtko Ursulin
2024-06-13 10:20 ` [PATCH v2 5/8] drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock() Sebastian Andrzej Siewior
2024-06-13 10:20 ` [PATCH v2 6/8] drm/i915: Drop the irqs_disabled() check Sebastian Andrzej Siewior
2024-06-19 10:28 ` Tvrtko Ursulin
2024-06-13 10:20 ` [PATCH v2 7/8] drm/i915/guc: Consider also RCU depth in busy loop Sebastian Andrzej Siewior
2024-06-13 10:20 ` [PATCH v2 8/8] Revert "drm/i915: Depend on !PREEMPT_RT." Sebastian Andrzej Siewior
2024-06-19 10:29 ` Tvrtko Ursulin
2024-06-13 11:52 ` ✓ CI.Patch_applied: success for drm/i915: PREEMPT_RT related fixups. (rev3) Patchwork
2024-06-13 11:52 ` ✗ CI.checkpatch: warning " Patchwork
2024-06-13 11:53 ` ✓ CI.KUnit: success " Patchwork
2024-06-13 12:05 ` ✓ CI.Build: " Patchwork
2024-06-13 12:07 ` ✗ CI.Hooks: failure " Patchwork
2024-06-13 12:09 ` ✗ CI.checksparse: warning " Patchwork
2024-06-13 12:31 ` ✓ CI.BAT: success " Patchwork
2024-06-13 14:34 ` ✓ CI.FULL: " Patchwork
2024-06-17 10:12 ` ✓ CI.Patch_applied: success for drm/i915: PREEMPT_RT related fixups. (rev4) Patchwork
2024-06-17 10:12 ` ✗ CI.checkpatch: warning " Patchwork
2024-06-17 10:13 ` ✓ CI.KUnit: success " Patchwork
2024-06-17 10:26 ` ✓ CI.Build: " Patchwork
2024-06-17 10:30 ` ✗ CI.Hooks: failure " Patchwork
2024-06-17 10:32 ` ✗ CI.checksparse: warning " Patchwork
2024-06-17 10:54 ` ✓ CI.BAT: success " Patchwork
2024-06-17 16:35 ` ✓ CI.FULL: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240614110548.m3lloBjv@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=tglx@linutronix.de \
--cc=tursulin@ursulin.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox