Date: Sat, 31 Jan 2026 18:25:43 +0000 (UTC) From: "Bjoern A. Zeeb" <bz@FreeBSD.org> To: Yoshihiro Takahashi <nyan@FreeBSD.org> Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: Re: git: c84bfaa25318 - stable/14 - LinuxKPI: timer KPI *_timer -> timer_* Message-ID: <58q66pqr-6641-r5rs-70oo-9r1260n85o5@SerrOFQ.bet> In-Reply-To: <20260131.141953.969219623432820896.nyan@FreeBSD.org> References: <696a9448.c84c.3cbc39d4@gitrepo.freebsd.org> <20260131.141953.969219623432820896.nyan@FreeBSD.org>
index | next in thread | previous in thread | raw e-mail
On Sat, 31 Jan 2026, Yoshihiro Takahashi wrote: > This broke binary compatibility for the drm module. > > kernel: link_elf_obj: symbol del_timer_sync undefined > kernel: linker_load_file: /boot/modules/drm.ko - unsupported file type > kernel: KLD i915kms.ko: depends on drmn - not available or version mismatch > kernel: linker_load_file: /boot/modules/i915kms.ko - unsupported file type Sorry about that. I'll go and fix it, restoring the symbols rather than having them be inline functions, which was fine for 15-pre-0. Did this happen with a kernel update but not updating the kmod modules? > In article <696a9448.c84c.3cbc39d4@gitrepo.freebsd.org> > "Bjoern A. Zeeb" <bz@FreeBSD.org> writes: > >> The branch stable/14 has been updated by bz: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=c84bfaa2531870a023fa9b267a765b9518ed3350 >> >> commit c84bfaa2531870a023fa9b267a765b9518ed3350 >> Author: Bjoern A. Zeeb <bz@FreeBSD.org> >> AuthorDate: 2025-09-04 20:24:26 +0000 >> Commit: Bjoern A. Zeeb <bz@FreeBSD.org> >> CommitDate: 2026-01-16 19:37:48 +0000 >> >> LinuxKPI: timer KPI *_timer -> timer_* >> >> del_timer() got renamed to timer_delete() approximately in Linux 6.2 >> (similar for *_sync and likely others). >> Keep the old functions as compat; unclear when we can gc them. >> We should also re-define them with a linuxkpi_ prefix to avoid possible >> conflicts in the future if we do a full pass over this at some point. >> >> Sponsored by: The FreeBSD Foundation (intiially) >> Reviewed by: dumbbell >> Differential Revision: https://reviews.freebsd.org/D52074 >> >> (cherry picked from commit 5cb64a1d3fe75526fb879ef4dce5860bbb4e4aea) >> (cherry picked from commit 88198564dbd82a97d655e73459c03eccf7031331) >> --- >> sys/compat/linuxkpi/common/include/linux/timer.h | 16 ++++++++++++++-- >> sys/compat/linuxkpi/common/src/linux_compat.c | 11 ++--------- >> 2 files changed, 16 insertions(+), 11 deletions(-) >> >> diff --git a/sys/compat/linuxkpi/common/include/linux/timer.h b/sys/compat/linuxkpi/common/include/linux/timer.h >> index fe0e084cb790..9ab30f3003ac 100644 >> --- a/sys/compat/linuxkpi/common/include/linux/timer.h >> +++ b/sys/compat/linuxkpi/common/include/linux/timer.h >> @@ -84,11 +84,23 @@ extern unsigned long linux_timer_hz_mask; >> extern int mod_timer(struct timer_list *, int); >> extern void add_timer(struct timer_list *); >> extern void add_timer_on(struct timer_list *, int cpu); >> -extern int del_timer(struct timer_list *); >> -extern int del_timer_sync(struct timer_list *); >> + >> +extern int timer_delete(struct timer_list *); >> extern int timer_delete_sync(struct timer_list *); >> extern int timer_shutdown_sync(struct timer_list *); >> >> +static inline int >> +del_timer(struct timer_list *tl) >> +{ >> + return (timer_delete(tl)); >> +} >> + >> +static inline int >> +del_timer_sync(struct timer_list *tl) >> +{ >> + return (timer_delete_sync(tl)); >> +} >> + >> #define timer_pending(timer) callout_pending(&(timer)->callout) >> #define round_jiffies(j) \ >> ((int)(((j) + linux_timer_hz_mask) & ~linux_timer_hz_mask)) >> diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c >> index a2c2d18c8185..e5e3d7929759 100644 >> --- a/sys/compat/linuxkpi/common/src/linux_compat.c >> +++ b/sys/compat/linuxkpi/common/src/linux_compat.c >> @@ -2052,7 +2052,7 @@ add_timer_on(struct timer_list *timer, int cpu) >> } >> >> int >> -del_timer(struct timer_list *timer) >> +timer_delete(struct timer_list *timer) >> { >> >> if (callout_stop(&(timer)->callout) == -1) >> @@ -2061,7 +2061,7 @@ del_timer(struct timer_list *timer) >> } >> >> int >> -del_timer_sync(struct timer_list *timer) >> +timer_delete_sync(struct timer_list *timer) >> { >> >> if (callout_drain(&(timer)->callout) == -1) >> @@ -2069,13 +2069,6 @@ del_timer_sync(struct timer_list *timer) >> return (1); >> } >> >> -int >> -timer_delete_sync(struct timer_list *timer) >> -{ >> - >> - return (del_timer_sync(timer)); >> -} >> - >> int >> timer_shutdown_sync(struct timer_list *timer) >> { >> > > -- Bjoern A. Zeeb r15:7home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?58q66pqr-6641-r5rs-70oo-9r1260n85o5>
