On Tue, 2024-06-04 at 14:15 +0100, Diogo Ivo wrote: > @@ -571,6 +573,57 @@ static int icss_iep_perout_enable(struct icss_iep *iep, > return ret; > } > > +static void icss_iep_cap_cmp_work(struct work_struct *work) > +{ > + struct icss_iep *iep = container_of(work, struct icss_iep, work); > + const u32 *reg_offs = iep->plat_data->reg_offs; > + struct ptp_clock_event pevent; > + unsigned int val; > + u64 ns, ns_next; > + > + spin_lock(&iep->irq_lock); 'irq_lock' is always acquired with the irqsave variant, and here we are in process context. This discrepancy would at least deserve a comment; likely the above lock type is not correct. Cheers, Paolo