On Mon, Nov 17, 2025 at 07:06:57AM -0800, Sean Christopherson wrote:
> That means your build is picking up stale kernel headers (likely the ones
> installed
> system-wide). The "#include <asm/kvm.h>" in kvm_util.h is what pulls in the
> kernel
> uAPI headers.
>
> Selftests uapi headers are a bit of a mess. In the past, selftests would
> automatically do "make headers_install" as part of the build, but commit
> 3bb267a36185 ("selftests: drop khdr make target") yanked that out because
> there
> are scenarios where it broke the build.
>
> So the "right" way to build selftest is to first do "make headers_install",
> and
> then build selftests.
>
> Note, if you build KVM selftests directly, tools/testing/selftests/lib.mk will
> define the includes to be relative to the source directory, i.e. expects the
> headers to be installed in the source.
>
> ifeq ($(KHDR_INCLUDES),)
> KHDR_INCLUDES := -isystem $(top_srcdir)/usr/include
> endif
>
> You can explicitly set KHDR_INCLUDES when building if you install headers
> somewhere
> else. E.g. my build invocation looks something like this, where "$output" is
> an
> out-of-tree directory.
>
> KHDR_INCLUDES="-isystem $output/usr/include" EXTRA_CFLAGS="-static -Werror
> -gdwarf-4" make \
> INSTALL_HDR_PATH="$output/usr" OUTPUT=$output
Hi Sean,
Thanks for pointing it out, i am not aware of these details.
Will take care of this now onwards
Thank you
-- Ankit