From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 0CE1C1B825 for ; Tue, 10 Apr 2018 16:59:59 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Apr 2018 07:59:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,432,1517904000"; d="scan'208";a="49618676" Received: from fyigit-mobl.ger.corp.intel.com (HELO [10.237.221.42]) ([10.237.221.42]) by orsmga002.jf.intel.com with ESMTP; 10 Apr 2018 07:59:56 -0700 To: Scott Branden , Ajit Khaparde , dev@dpdk.org References: <20180321180629.58318-1-ajit.khaparde@broadcom.com> <20180321180629.58318-4-ajit.khaparde@broadcom.com> <11afc40e-bb2b-b58c-87a9-7b841ed5412a@intel.com> <779b8c49-9b3f-f4fa-167e-07bbb5572d66@broadcom.com> <0ac29513-9034-8904-6c25-4c388c80b749@intel.com> <2a3c4377-9504-32fa-5ba7-01e03e0e54c2@intel.com> <550bd5e4-ba81-bc4d-490b-1bb153cdbadd@broadcom.com> From: Ferruh Yigit Openpgp: preference=signencrypt Autocrypt: addr=ferruh.yigit@intel.com; prefer-encrypt=mutual; keydata= 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 Q6pZKA2mTQxEKA== Message-ID: <11b458c2-b184-823e-dc40-63866d99cc8e@intel.com> Date: Tue, 10 Apr 2018 15:59:55 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <550bd5e4-ba81-bc4d-490b-1bb153cdbadd@broadcom.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH 3/4] mk: allow kernel artifacts to be located in output directory X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Apr 2018 15:00:00 -0000 On 4/6/2018 11:32 PM, Scott Branden wrote: > > > On 18-04-06 02:31 PM, Ferruh Yigit wrote: >> On 4/6/2018 7:10 PM, Scott Branden wrote: >>> Hi Ferruh, >>> >>> Somehow I did not receive your other email so Ajit fowarded it to me.  So I am >>> responding to it here. >>> >>> Sorry for the previous confusion:  RTE_KERNELDIR_OUT specifies the location of >>> the output of the kernel artifacts, not the output of the DPDK build artifacts. >> Ahh, this makes more sense now J Thanks. >> >>> Here is an example to use RTE_KERNELDIR_OUT: >>> >>> export ARCH=arm64 >>> export CROSS_COMPILE=~/gcc-linaro-aarch64-linux-gnu/bin/aarch64-linux-gnu- >>> export CROSS=aarch64-linux-gnu- >>> >>> export RTE_KERNELDIR_OUT=~/test/linux-out >>> export RTE_KERNELDIR=~/test/linux >>> cd $RTE_KERNELDIR >>> make defconfig O=$RTE_KERNELDIR_OUT >>> make -j 8 O=$RTE_KERNELDIR_OUT >>> >>> cd ~/test/dpdk >>> make config T=arm64-stingray-linuxapp-gcc >>> make >> I guess using "~/test/linux-out" as RTE_KERNELDIR also works (because of >> "source" link), but your patch looks more proper way. > Actually, you may be correct. > Perhaps all this requires is a documentation change. > Does any of DPDK build system actually require to know where the kernel > source directory is? > Or, does DPDK only require to know where the kernel artifacts exist (ie. > generated headers) Both are required, kernel source is required because of some headers, there are multiple components depends on kernel headers, also kernel artifacts are required like kernel config mainly for building kernel modules. > > Looking at the documentation it is a little confusing.  Each one > describes something different. > guides/linux_gsg/build_dpdk.rst > 99:    the ``RTE_KERNELDIR`` environment variable should be used to > point the compilation at a copy of the kernel version to be used on the > target machine. > > guides/prog_guide/dev_kit_build_system.rst > 297:*   RTE_KERNELDIR: This variable contains the absolute path to the > kernel sources that will be used to compile the kernel modules. > > build-sdk-quick.txt > 24:    RTE_KERNELDIR    linux headers path > > In guides/prog_guide/dev_kit_build_system.rst.  If "kernel sources" was > changed to "linux headers" my change may not be needed.  I'm doing some > more testing now with RTE_KERNELDIR set to linux-out in other DPDK builds. I believe it is not just "linux headers", it is more like "compiled kernel source" > >> There are a few documents for build parameters, can you please update them too: >> doc/guides/prog_guide/dev_kit_build_system.rst >> doc/guides/linux_gsg/build_dpdk.rst <-- not sure about this one, please check >> doc/build-sdk-quick.txt <-- this is "make help" output >> >> >>> Note: >>> >>> With this example you will likely hit a few compile errors as latest dpdk has >>> compile bugs with unused variables/type mismatches in the code. >> I didn't get the error, if you observe build error please report or better a >> patch to fix is always welcome :) > Yes - we have patches being created for 64-bit build warnings/errors > that we will submit. >> >>> Regards, >>> >>>  Scott >>> >>> >>> On 18-04-05 11:58 AM, Ajit Khaparde wrote: >>>> Scott, are you looking at this? >>>> >>>> ---------- Forwarded message ---------- >>>> From: *Ferruh Yigit* > >>>> Date: Tue, Apr 3, 2018 at 7:18 AM >>>> Subject: Re: [PATCH 3/4] mk: allow kernel artifacts to be located in output >>>> directory >>>> To: Scott Branden >>> >, Ajit Khaparde >>>> >, dev@dpdk.org >>>> >>>> >>>> >>>> On 3/30/2018 7:23 PM, Scott Branden wrote: >>>>> Hi Ferruh, >>>>> >>>>> >>>>> On 18-03-30 03:35 AM, Ferruh Yigit wrote: >>>>>> On 3/21/2018 6:06 PM, Ajit Khaparde wrote: >>>>>>> From: Scott Branden >>> > >>>>>>> Allow kernel artifacts to be located in output directory specific >>>>>>> by RTE_KERNELDIR_OUT. >>>>>> How to use this variable, I tried following but kernel modules are still in >>>> same >>>>>> place: >>>>> export RTE_KERNELDIR and RTE_KERNELDIR_OUT and it works fine. >>>>> RTE_KERNELDIR already exists in Makefile.  Are you able to override it? >>>> Please help me a little more, can you please list your commands? >>>> >>>> Before your patch, what I do: >>>> >>>> export RTE_KERNELDIR=~/development/linux/linux >>>> make defconfig >>>> make    <--- After this kernel modules in ./build/kmod/*.ko >>>> make DESTDIR=/tmp/for-scott install >>>> >>>> kernel modules are installed into /tmp/for-scott/lib/modules/`uname >>>> -r`/extra/dpdk/*.ko >>>> >>>> Here `uname -r` is wrong but your patch is not related this. >>>> >>>> I am using RTE_KERNELDIR a lot since I am compiling with various kernel >>>> versions, not seen .ko files goes into source folder, what is your command line? >>>> >>>> >>>> >>>> Or _after_ your patch: >>>> export RTE_KERNELDIR=~/development/linux/linux >>>> export RTE_KERNELDIR_OUT=/tmp/kmod >>>> make defconfig >>>> make    <--- After this kernel modules in ./build/kmod/*.ko >>>> >>>> Getting following build error: >>>> /bin/sh: scripts/mod/modpost: No such file or directory >>>> make[7]: *** [.../development/linux/linux/scripts/Makefile.modpost:92: >>>> __modpost] Error 127 >>>> make[6]: *** [.../development/linux/linux/Makefile:1558: modules] Error 2 >>>> make[5]: *** [Makefile:146: sub-make] Error 2 >>>> make[4]: *** [../mk/rte.module.mk:54 : igb_uio.ko] >>>> Error 2 >>>> >>>> Can you please describe how this variable intended to be used? >>>> >>>> >>>>>> - make RTE_KERNELDIR_OUT=/tmp/kmod O=ferruh DESTDIR=/tmp/ferruh >>>>>> - make RTE_KERNELDIR_OUT=/tmp/kmod O=ferruh DESTDIR=/tmp/ferruh install >>>>>> - make RTE_KERNELDIR_OUT=/tmp/kmod O=ferruh DESTDIR=/tmp/ferruh modules_install >>>>>> >>>>>> /tmp/kmod not created. >>>>>> >>>>>> And what we are fixing here, what was wrong with old code? >>>>> Old code puts the intermediate object files in the kernel source >>>>> directory.  This doesn't work when building an external module in >>>>> openembedded recipes.  We need the Makefile change to be able to able to >>>>> specify the kernel and output directories separately. >>>>>>> If RTE_KERNELDIR_OUT not specified than >>>>>>> source directory RTE_KERNEL is used. >>>>>> ${RTE_KERNELDIR} is used as external Linux kernel source folder, why we are >>>> want >>>>>> to put artifacts into kernel source? >>>>> I just kept the default behaviour the same as what it does today. >>>>>>> Signed-off-by: Scott Branden >>> > >>>>>>> Signed-off-by: Ajit Khaparde >>> > >>>>>>> --- >>>>>>>    mk/rte.module.mk | 9 ++++++--- >>>>>>>    1 file changed, 6 insertions(+), 3 deletions(-) >>>>>>> >>>>>>> diff --git a/mk/rte.module.mk b/mk/rte.module.mk >>>> >>>>>>> index 1ada528a0..e2e1af716 100644 >>>>>>> --- a/mk/rte.module.mk >>>>>>> +++ b/mk/rte.module.mk >>>>>>> @@ -39,6 +39,9 @@ _postinstall: build >>>>>>>    .PHONY: build >>>>>>>    build: _postbuild >>>>>>> >>>>>>> +# Allow kernel artifacts to be located in a different location that source >>>>>>> +RTE_KERNELDIR_OUT ?= ${RTE_KERNELDIR} >>>>>>> + >>>>>>>    # Link all sources in build directory >>>>>>>    %_link: FORCE >>>>>>>      $(if $(call compare,$(notdir $*),$*),\ >>>>>>> @@ -48,7 +51,7 @@ build: _postbuild >>>>>>>    # build module >>>>>>>    $(MODULE).ko: $(SRCS_LINKS) >>>>>>>      @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi >>>>>>> -   @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \ >>>>>>> +   @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \ >>>>>>>              CC="$(KERNELCC)" CROSS_COMPILE=$(CROSS) V=$(if $V,1,0) >>>>>>> >>>>>>>    # install module in $(RTE_OUTPUT)/kmod >>>>>>> @@ -59,7 +62,7 @@ $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko >>>>>>> >>>>>>>    # install module >>>>>>>    modules_install: >>>>>>> -   @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \ >>>>>>> +   @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \ >>>>>>>              modules_install >>>>>>> >>>>>>>    .PHONY: clean >>>>>>> @@ -69,7 +72,7 @@ clean: _postclean >>>>>>>    .PHONY: doclean >>>>>>>    doclean: >>>>>>>      @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi >>>>>>> -   $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean >>>>>>> +   $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) clean >>>>>>>      @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\ >>>>>>>              if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;) >>>>>>>      @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi >>>>>>> >>>>> Regards, >>>>>    Scott >>>>> >>>> >