On Sat, Jun 29, 2024 at 7:54 AM Edgecombe, Rick P <rick.p.edgecombe@xxxxxxxxx> wrote: > > On Fri, 2024-06-28 at 14:23 -0700, Rick Edgecombe wrote: > > On Fri, 2024-06-28 at 11:13 +0900, Masahiro Yamada wrote: > > > There are two solutions, depending on what you want to achieve. > > > > > > The official way is to pass the absolute path to M= > > > (or relative path to ../linux-tdm-kvm-out) > > > > > > The other unofficial way is to pass VPATH. > > > The external module build does not officially support > > > the separate output directory, but you can still > > > do it in this case. > > > > > > [1] will work like before. > > > > The absolute path worked, but why not make it use the relative path by default > > in this case? "arch/x86/kvm/" shouldn't be confused with an absolute path... > > Argh, I missed that make ARCH=x86_64 O=../linux-tdx-kvm-out/ -j36 M=$(realpath > arch/x86/kvm) will output the the source tree instead of the output directory. > > So there is no official way to build just a module to the output directory? You already know how to do it: #I'm guess it has something to do with the "M=" option because: #make ARCH=x86_64 O=../linux-tdx-kvm-out/ -j36 arch/x86/kvm/kvm.ko #arch/x86/kvm/kvm-intel.ko # #...works. > And > it just accidentally worked all these years? IMO it's a nice feature to have. > I've especially found it useful when doing virtualization development where you > need to build/test guest and host kernels as the same time. > > Or was it just now delegated to unofficial support after this patch? No. The M= option is intended for building external modules. You just abused it to build the upstream modules. Kbuild has never supported building external modules in a separate output directory. "delegated to unofficial support" is a wrong statement, as it has never officially supported in the past. Your way is a workaround that people found happened to work. -- Best Regards Masahiro Yamada