On Mon, Nov 17, 2025 at 01:58:06PM +0100, Piotr K. Isajew wrote:
> On Sun, Nov 16, 2025 at 02:21:51PM +0100, Claudio Jeker wrote:
> 
> > > > Index: dev/pci/drm/drm_linux.c
> > > > ===================================================================
> > > > RCS file: /cvs/src/sys/dev/pci/drm/drm_linux.c,v
> > > > diff -u -p -r1.126 drm_linux.c
> > > > --- dev/pci/drm/drm_linux.c     13 Jun 2025 07:01:37 -0000      1.126
> > > > +++ dev/pci/drm/drm_linux.c     15 Nov 2025 13:27:22 -0000
> > > > @@ -126,7 +126,7 @@ __set_current_state(int state)
> > > >         SCHED_LOCK();
> > > >         unsleep(p);
> > > >         p->p_stat = SONPROC;
> > > > -       atomic_clearbits_int(&p->p_flag, P_INSCHED);
> > > > +       atomic_clearbits_int(&p->p_flag, P_INSCHED|P_SINTR);
> > > >         SCHED_UNLOCK();
> > > >  }
> > > >  
> > 
> > This bit is obviously right. This clears the sleep and needs to clear
> > P_SINTR as well. I once tried to use sleep_finish(INFSLP, 0); here instead
> > of hand rolling the same but it is not quite the same behaviour (since
> > __set_current_state code skips any signal checks).
> 
> 
> I'm running above diff on a machine that was previously hit by
> frequent freezes during video playback. Runs several hours
> without any issues now.

Thanks for confirming, I have just committed the fix.

-- 
jca

Reply via email to