On Mon, Sep 28, 2026 at 03:02:56PM +0200, [email protected] wrote:
> Le Mon, Sep 28, 2026 at 09:35:53PM +1000, Jonathan Gray a écrit :
> > On Mon, Sep 28, 2026 at 01:20:29PM +0200, [email protected] wrote:
> > > Le Mon, Sep 28, 2026 at 06:41:10PM +1000, Jonathan Gray a écrit :
> > > > On Mon, Sep 28, 2026 at 10:04:56AM +0200, [email protected] wrote:
> > > > > Le Mon, Sep 28, 2026 at 05:22:15PM +1000, Jonathan Gray a écrit :
> > > > > > On Mon, Sep 28, 2026 at 04:56:10PM +1000, Jonathan Gray wrote:
> > > > > > > On Mon, Sep 28, 2026 at 08:09:34AM +0200, [email protected]
> > > > > > > wrote:
> > > > > > > > hi
> > > > > > > >
> > > > > > > > upgraded my work t470s this morning to latest snap (previously
> > > > > > > > running a
> > > > > > > > snap from the 6), first noticed that wsconsctl during boot was
> > > > > > > > stuck on
> > > > > > > > ww_mutex_lock (^T showed it making no progress) and the laptop
> > > > > > > > lid was
> > > > > > > > 'flashing' every ~10s or so.
> > > > > > > >
> > > > > > > > moved my wsconsctl.conf away, X wouldnt start anyway (Xorg.0.log
> > > > > > > > attached)
> > > > > > > >
> > > > > > > > bisected previous kernels from the archive:
> > > > > > > > #56: Fri Sep 25 11:32:45 MDT 2026 is bad
> > > > > > > > #55: Wed Sep 23 14:37:23 MDT 2026 is good (eg screen wont flash
> > > > > > > > during
> > > > > > > > boot msgs and X starts)
> > > > > > >
> > > > > > > Likely the sleep changes. Does this diff to revert them help?
> > > > > >
> > > > > > alternatively, avoid sleep when cold
> > > > >
> > > > > sadly, this version doesnt work (eg screen still flashes after
> > > > > switching
> > > > > to kms, and X wont start)
> > > >
> > > > a version that keeps the previous midpoint behaviour
> > > > while still using tsleep
> > >
> > > sadly, still no luck with that one, i had reinstated wsconsctl.conf and
> > > it's still stuck on the same mutex, and screen flashes every 5s.
> >
> > Is this partial revert enough?
>
> nope, still same symptoms with this 4th iteration. afaict only the full
> revert worked (or kernel #55 from the archive)
thanks
Here is the full revert and another diff from daniel. This should
work for you and the problematic Alder Lake machines.
Index: sys/dev/pci/drm/include/linux/delay.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/include/linux/delay.h,v
diff -u -p -r1.9 delay.h
--- sys/dev/pci/drm/include/linux/delay.h 25 Sep 2026 12:12:53 -0000
1.9
+++ sys/dev/pci/drm/include/linux/delay.h 28 Sep 2026 13:09:04 -0000
@@ -21,7 +21,7 @@ ndelay(unsigned long nsecs)
static inline void
usleep_range(unsigned long min, unsigned long max)
{
- tsleep_nsec(&nowake, PWAIT, "usleep", USEC_TO_NSEC(min));
+ DELAY((min + max) / 2);
}
/* XXX assumes state is TASK_UNINTERRUPTIBLE */
@@ -39,19 +39,12 @@ mdelay(unsigned long msecs)
DELAY(1000);
}
-static inline void
-drm_msleep(unsigned int msecs)
-{
- tsleep_nsec(&nowake, PWAIT, "drmmsleep", MSEC_TO_NSEC(msecs));
-}
+#define drm_msleep(x) mdelay(x)
static inline void
fsleep(unsigned long usecs)
{
- if (usecs <= 10)
- DELAY(usecs);
- else
- tsleep_nsec(&nowake, PWAIT, "fsleep", USEC_TO_NSEC(usecs));
+ DELAY(usecs);
}
static inline unsigned int
Index: sys/dev/pci/drm/i915/gt/uc/intel_guc_ct.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/gt/uc/intel_guc_ct.c,v
diff -u -p -r1.9 intel_guc_ct.c
--- sys/dev/pci/drm/i915/gt/uc/intel_guc_ct.c 9 Mar 2026 23:58:02 -0000
1.9
+++ sys/dev/pci/drm/i915/gt/uc/intel_guc_ct.c 28 Sep 2026 13:09:29 -0000
@@ -522,6 +522,8 @@ corrupted:
return -EPIPE;
}
+static void ct_try_receive_message(struct intel_guc_ct *);
+
/**
* wait_for_ct_request_update - Wait for CT request state update.
* @ct: pointer to CT
@@ -557,7 +559,13 @@ static int wait_for_ct_request_update(st
GUC_HXG_ORIGIN_GUC)
err = wait_for_us(done, GUC_CTB_RESPONSE_TIMEOUT_SHORT_MS);
if (err)
+#ifdef __linux__
err = wait_for(done, GUC_CTB_RESPONSE_TIMEOUT_LONG_MS);
+#else
+ /* process responses while waiting */
+ err = __wait_for(ct_try_receive_message(ct), done,
+ GUC_CTB_RESPONSE_TIMEOUT_LONG_MS * 1000, 10, 1000);
+#endif
#undef done
if (!ct_enabled)
err = -ENODEV;