Re: drm-66-kmod build fail during main-n290014-7a48c3fd3e6e -> main-n290042-9f0432041b8f
Date: Tue, 13 Oct 2026 18:23:23 UTC
On Wed, 14 Oct 2026 02:41:17 +0900
Tomoaki AOKI <junchoon@dec.sakura.ne.jp> wrote:
> On Mon, 12 Oct 2026 22:42:27 +0000 (UTC)
> "Bjoern A. Zeeb" <bz@FreeBSD.org> wrote:
>
> > On Tue, 13 Oct 2026, Tomoaki AOKI wrote:
> >
> > > On Mon, 12 Oct 2026 18:13:40 +0000 (UTC)
> > > "Bjoern A. Zeeb" <bz@FreeBSD.org> wrote:
> > >
> > >> On Tue, 13 Oct 2026, Tomoaki AOKI wrote:
> > >>
> > >>> On Mon, 12 Oct 2026 17:21:39 +0200
> > >>> A FreeBSD User <freebsd@walstatt-de.de> wrote:
> > >>>
> > >>>> Am Tage des Herren Sun, 11 Oct 2026 22:07:36 +0100
> > >>>> Nuno Teixeira <eduardo@freebsd.org> schrieb:
> > >>>>
> > >>>>> Hello,
> > >>>>>
> > >>>>> 37:
> > >>>>>> /usr/src/sys/compat/linuxkpi/common/include/linux/kernel.h:33:10: fatal
> > >>>>>> error: 'opt_linuxkpi.h' file not found
> > >>>>>> 33 | #include "opt_linuxkpi.h"
> > >>>>>> | ^~~~~~~~~~~~~~~~
> > >>>>>
> > >>>>>
> > >>>>> I've reported today at
> > >>>>> https://lists.freebsd.org/archives/dev-commits-src-all/2026-October/082012.html
> > >>>>>
> > >>>>> Cheers,
> > >>>>>
> > >>>>
> > >>>> Ups. I did also for port graphics/drm-612-kmod a few minutes ago. The header file in question
> > >>>> is simply not in the most recent source tree ... very strange ;-)
> > >>>
> > >>> Good point.
> > >>>
> > >>> It SHOULDN'T be under /usr/src/, but under /usr/obj/, as it's generated
> > >>> on "kernel build time".
> > >>>
> > >>> This means, it shouldn't exist unless you built kernel
> > >>> yourself locally.
> > >>>
> > >>> Thus, I believe it SHOULDN'T be required for out-of-tree
> > >>> kmods (in ports or in the wild).
> > >>>
> > >>> If it's REALLY mandatory for out-of-tree kmod builds
> > >>> and fix in out-of-tree kmod side, error message to request
> > >>> local kernel builds first should be needed.
> > >>>
> > >>> If not, guards for #include NOT to be included except for
> > >>> kernel builds in src side would be the best fix.
> > >>>
> > >>> IIRC, it's the way usually done for this kind of situations,
> > >>> but I'm not enough sure if opt_linuxkpi.h is really mandatory
> > >>> or not for out-of-tree kmod builds.
> > >>>
> > >>> Note that, as far as I could confirm, there are 3 headers
> > >>> attempting to include opt_linuxkpi.h in offending commits
> > >>> (at least). And LINUXKPI_DEBUG could be appropreate to be
> > >>> used for safeguard?
> > >>>
> > >>> /usr/src/sys/compat/linuxkpi/common/include/linux/spinlock.h
> > >>> /usr/src/sys/compat/linuxkpi/common/include/linux/kconfig.h
> > >>> /usr/src/sys/compat/linuxkpi/common/include/linux/kernel.h
> > >>
> > >> The sole problem here is that drm-kmod is handrolling stuff
> > >> instead of using the kmod,mk provided defines.
> > >
> > > I think pulling in something from /usr/obj/ for ports kmods
> > > itself is a bad idea, as it's NOT guaranteed to be existing
> > > on invoking `make` in ports directory when stable/16 and
> > > releng/16.0 are branched in the future for anyone NOT building
> > > base locally.
> >
> > This is all normal "magic" for SRCS.
> >
> > The file will get created (empty) in the obj dir if there is no KERNBUILDDIR set.
> >
> > Given the obj dir for the ports build is set to be in the port's WRKSRC dir:
> >
> > MAKE_ENV+= MAKEOBJDIRPREFIX=${WRKSRC}/obj
>
> Ah, thanks! I've overlooked the functionalitiy.
> And saw several ports (sorry, lost track with which) failed
> to build with the lack of opt_*.h and fixed by introducing
> guards to the #include line for out-of-tree builds before.
>
>
> > >From somehwere in there (I trimmed paths) you can see all these opt_*.h
> > got created and it has nothing to do with /usr/obj.
> >
> > % pwd
> > /ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/obj/
> > % find . -name "opt*" -ls
> > 79776217 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/dmabuf/opt_linuxkpi.h
> > 79776218 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/dmabuf/opt_stack.h
> > 79776219 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/dmabuf/opt_usb.h
> > 79776220 8 -rw-r--r-- 1 root wheel 115 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/dmabuf/opt_global.h
> > 79776259 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/ttm/opt_linuxkpi.h
> > 79776260 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/ttm/opt_stack.h
> > 79776261 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/ttm/opt_usb.h
> > 79776262 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/ttm/opt_drm.h
> > 79776263 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/ttm/opt_vm.h
> > 79776264 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/ttm/opt_syscons.h
> > 79776265 8 -rw-r--r-- 1 root wheel 115 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/ttm/opt_global.h
> > 79776312 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_linuxkpi.h
> > 79776313 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_stack.h
> > 79776314 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_usb.h
> > 79776315 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_teken.h
> > 79776316 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_splash.h
> > 79776317 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_syscons.h
> > 79776318 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_drm.h
> > 79776319 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_vm.h
> > 79776320 8 -rw-r--r-- 1 root wheel 115 Oct 12 10:48 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/drm/opt_global.h
> > 79776514 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_linuxkpi.h
> > 79776515 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_stack.h
> > 79776516 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_usb.h
> > 79776517 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_drm.h
> > 79776518 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_vm.h
> > 79776519 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_syscons.h
> > 79776520 0 -rw-r--r-- 1 root wheel 0 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_acpi.h
> > 79776521 8 -rw-r--r-- 1 root wheel 115 Oct 12 10:49 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/amd/amdgpu/opt_global.h
> > 79778169 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_acpi.h
> > 79778173 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_linuxkpi.h
> > 79778174 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_stack.h
> > 79778175 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_usb.h
> > 79778176 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_drm.h
> > 79778177 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_vm.h
> > 79778178 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_syscons.h
> > 79778179 8 -rw-r--r-- 1 root wheel 115 Oct 12 11:00 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/radeon/opt_global.h
> > 79778402 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:02 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/i915/opt_linuxkpi.h
> > 79778403 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:02 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/i915/opt_stack.h
> > 79778404 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:02 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/i915/opt_usb.h
> > 79778405 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:02 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/i915/opt_acpi.h
> > 79778406 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:02 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/i915/opt_drm.h
> > 79778407 0 -rw-r--r-- 1 root wheel 0 Oct 12 11:02 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/i915/opt_syscons.h
> > 79778408 8 -rw-r--r-- 1 root wheel 115 Oct 12 11:02 ./ports/graphics/drm-612-kmod/work/drm-kmod-drm_v6.12.110_1/i915/opt_global.h
> >
> >
> > Whether or not this gives different options than a kernel build is a different
> > story but the same goes for stand-alone builds of modules within src/sys/modules;
> > just check sys/modules/pfsync/Makefile for an example.
> >
> > But you will also find that the generated opt_global.h files do have values set
> > which come out of sys/conf/config.mk defaults.
>
> Yes, pt_global.h alone (but in multiple places) has actual contents,
> and others are 0 in size, including opt_linuxkpi.h on main for me.
>
>
> > >> Apply the changes from the pull request and what's in drm-kmod
> > >> master already and it'll build along with a kernel, as a standalone
> > >> git checkout or from ports. If there's a 4th method, please let me
> > >> know.
> > >
> > > Putting attached file (made the change to fit for files/ without
> > > touching ports Makefile) into files/ directory of each
> > > graphics/drm-*-kmod may be easier to test.
> > >
> > > Confirmed causing no harm on build for graphics/drm-612-kmod
> > > and graphics/nvidia-drm-612-kmod-devel on stable/15 (there's no
> > > opt_linuxkpi.h under /usr/obj/). But unfortunately I don't
> > > have time to switch to main for now.
> >
> > If you followed the github PR you will know you need another
> > change from drm-kmod master to also be dropped into files/
> > for the drm-kmod ports (and the nvidia ones). I'd rather hope
> > someone can roll a new drm-kmod tag for the few branches.
>
> Reconfirmed. Attached patch-conpiler_flags.mk would be it.
> Included in the patch mentioned below.
>
>
> > > Maybe graphics/nvidia-drm-kmod/Makefile.common would need
> > > to have additional hack to pick the patch, as files/ in
> > > each graphics/nvidia-drm-*-kmod* are to be applied to
> > > NVIDIA parts only (DRM parts are extracted along"side").
>
> Turned out graphics/nvidia-drm-*-kmod* (at least
> graphics/nvidia-drm-612-kmod*) need additional work.
> And to simplify changes in graphics/nvidia-drm-kmod/Makefile.common,
> additional (to be backed out later) changes are made.
>
> Does attached
> InterimPatchForFixBuild-after-src-main-git-9820afb99e6f-for-drm-kmod-ports-v2.diff
> look reasonable?
>
> As the patches for graphics/drm-*-kmod don't apply normally
> for graphics/drm-515-kmod, currently excluded from the patch.
> And currently doesn't work for graphics/nvidia-drm-{515|61|66}-kmod*
> so need more investigation. Would try later for NVIDIA parts.
Noticed typos (fat fingered!) on broken NVIDIA counterparts
and lack of guard for 515 in graphics/nvidia-drm-kmod/Makefile.common.
Attached should be OK for other than excluded graphics/drm-515-kmod
parts. poudriere builds went fine on stable/15.
Anyway, this patch is interim, not permanent.
graphics/drm-*-kmod part should be removed once these ports
are updated.
And at the same time, abnormal hack to apply graphics/drm-*-kmod
parts of patches onto extracted distfile for NVIDIA counterparts
should be reverted.
So once acutual fixes for graphics/drm-*-kmod part are done,
I'll file a PR / open a review for finished NVIDIA counterparts.
Regards.
> But for 612 (drm) / -devel (nvidia) variants, built and run fine
> on main at commit a3fbf20c0558 and stable/15 at commit 63e5c83e8db3.
>
> Ports other than the two are tried build only on poudriere
> running under stable/15 (builder jail matches with bare-metal).
>
> I don't have poudriere installed on main as of too often
> __FreeBSD_version bumps compared to stable/*, causing forcible
> full builds.
>
> Regards.
>
> > >
> > >
> > >> As a plus (once cleanup gets done beyond initial repair), in the
> > >> future this kind of breakage shouldn't happen anymore and there's
> > >> going to be a single place to track SRCS+= and CFLAGS+= dependencies
> > >> needed to use LinuxKPI.
> > >>
> > >> So yes, please see https://github.com/freebsd/drm-kmod/pull/524
> >
> > --
> > For there shall arise false Christs, and false prophets, and shall shew
> > great signs and wonders; insomuch that, if it were possible, they shall
> > deceive the very elect. Behold, I have told you before. [Mat. 24:24-25]
>
>
> --
> Tomoaki AOKI <junchoon@dec.sakura.ne.jp>
--
Tomoaki AOKI <junchoon@dec.sakura.ne.jp>