From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by dpdk.org (Postfix) with ESMTP id 9C3CD1BA27 for ; Tue, 10 Apr 2018 22:30:41 +0200 (CEST) Received: by mail-qk0-f195.google.com with SMTP id 132so14916737qkd.5 for ; Tue, 10 Apr 2018 13:30:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=ujyiUAk/Cbk1Tl9XynmNOaq01UyY/pibcNJbUJXnCjA=; b=F9FZzFw31nqxS51yqBSw026q+0F5YY4KfU1Z+UJfXnogznwnMrCeZVNvuU3yeL56hO h8uLxhIJwgyCiViDcuQJ0hKVVbbdsAtmFPuahqPXb9VinhMDB147ohYHyjqLwbrTgNRB WdMqtTjIE8HRuqSu0MeGeGbNqLamQl++/Flds= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=ujyiUAk/Cbk1Tl9XynmNOaq01UyY/pibcNJbUJXnCjA=; b=YqECfLA8c//mn7VCOcTOG5uzjCRhwbKhjjjLtKQ/W2Z1Cok0z0S7SFD7jF/rkNktQO gUD/31vk6l7OK88Tj9FZgBxEQ+TMsD+Pth8l3Ppue/TGQ9klE8X2W9BSZXCgjAAuuduH Flf161EcS1ZwJ1fx103xE4NjqzEUdueayB01ELWaRzk+fYpMcpg41oCCzORsfawYjOXp mf9GewVN5a2c/aoyJrZjMlxt9R09mhkNFzb5t6TcgEkeWeFkErH+lvNaQM08Njib/YV5 HSh/VlbduziYZCv4XIgeJikdy/UIPQWF+CeiHy6IYH9j5brKWi5M8Ga9o+w+kZS7pPnC 7pjw== X-Gm-Message-State: ALQs6tDmiS76Vu4CANHLjLuE8xmvP5LWDzwjs+gY9jfwd1QcYpOs1lIo qG3rfjj4aFXkj9Ts/7AOGyZ58aNaswc= X-Google-Smtp-Source: AIpwx4+5h4HmBECD14CbOabi1X2QGMY/ldU0ZPp4a7CaxvR56lAAA36rVG0kK4F2bddgGbATikoVHA== X-Received: by 10.55.49.19 with SMTP id x19mr2711668qkx.167.1523392239242; Tue, 10 Apr 2018 13:30:39 -0700 (PDT) Received: from [10.136.13.65] ([192.19.224.250]) by smtp.gmail.com with ESMTPSA id m31sm2841545qtd.95.2018.04.10.13.30.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Apr 2018 13:30:37 -0700 (PDT) To: Ferruh Yigit , 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> <11b458c2-b184-823e-dc40-63866d99cc8e@intel.com> From: Scott Branden Message-ID: <51b55f01-bb6d-ed97-e475-0cff8cb9299e@broadcom.com> Date: Tue, 10 Apr 2018 13:30:28 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <11b458c2-b184-823e-dc40-63866d99cc8e@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US 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 20:30:42 -0000 Hi Ferruh, We dropped this patch from the series - comment inline. On 18-04-10 07:59 AM, Ferruh Yigit wrote: > 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" Yes - everything is provided in the linux-out directory. I have no need for this patch and we have dropped it from the patch series. Setting RTE_KERNELDIR to the linux-out directory allows DPDK to build. > >>> 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 >>>>>>