From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A99D0A04C1; Wed, 20 Nov 2019 17:24:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E83379E4; Wed, 20 Nov 2019 17:24:54 +0100 (CET) Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by dpdk.org (Postfix) with ESMTP id BC55F271 for ; Wed, 20 Nov 2019 17:24:53 +0100 (CET) Received: by mail-wm1-f65.google.com with SMTP id z26so214760wmi.4 for ; Wed, 20 Nov 2019 08:24:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nfware-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GciKdrLRyFIqPVwXQNeHmSPbxV9ofSuMUuiYRW0UWys=; b=EfXZ1586h3S6AQScIW2G+xdN/FQL5IeN9WmGewsYtgCD+8+Nbm+D+qXbTAmIJ6rmN4 FojFP6myUqJuIwDiYHENJ7lRJMePvYqjFLtYb6ub/eeYAd440mcqDqYy28BQoVVEy+oI 6hlZSouGZmoMgfBfWfjKUGUBHCc4sTABV0I34D0jOHNqtHU1MzdVIt7d5WgHZnqmzRMo LXeNZltcO3Zq9dsijcfs9Qvid/qKDvaVGno4EDLoTSxUDXM2ESqL61O882FfJ8M4aZk8 0TOzkUFT9tnZxZdw48K6xhE2l6HcN7hHhXIq/wYHjxazvdSne2fpDBd7qKKyNouWEIRX BFYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GciKdrLRyFIqPVwXQNeHmSPbxV9ofSuMUuiYRW0UWys=; b=iAyL4tAfjyXP/Sz6Z/Jb0bnuqcZUT7T569OIn5XimPNWf6fpB9P9Nxr09lSF+3Ni0y qKIRuCTnP3wGnK/AczYtVUhTl62vlLxc2VJPdzRpjpVZ+SgnBSjgySP3RuhzXnIVUy8T FcSuYtQLJK5m/t9cpjL049VKMUrK9qXKQH8qvlEZsYjngtBvJ9+xDfqdgCAo+bx0X269 rId9vvWm1qDsmfBZMQKZo1MENq0W+73SkXv9F83TNfEcVrybelGX2VMxDs9Z1+0U/+Qj 9hY3MEjd3lBCAwpaMeKF6yxyTiTkp6RWgThV8vcbwAtBpkCpOBX6f6r0HgAkjdLLW2Fd VQ9A== X-Gm-Message-State: APjAAAWKJUHVd5K2f7SWSka3PNFcnSGI9wR5sNv7aXnvRUadehgkPJuI j5ymNzf/eWQe0U4AXNNwT6z1apiQtzx4sW9Tqdk6cQ== X-Google-Smtp-Source: APXvYqwdTqcwzz2gRB11MAbn8K0a3Y3N7bt2UCMRJYvilUyNdelww0mDOHhYJkO+uItXUDyZr7ag8ioG3buqbs7sAzc= X-Received: by 2002:a7b:c7c7:: with SMTP id z7mr4123426wmk.85.1574267093264; Wed, 20 Nov 2019 08:24:53 -0800 (PST) MIME-Version: 1.0 References: <20191120160009.46270-1-ferruh.yigit@intel.com> In-Reply-To: <20191120160009.46270-1-ferruh.yigit@intel.com> From: Igor Ryzhov Date: Wed, 20 Nov 2019 19:24:42 +0300 Message-ID: To: Ferruh Yigit Cc: John McNamara , Marko Kovacevic , dev , David Marchand , Vamsi Attunuru , Kiran Kumar K , Jerin Jacob Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH] kni: increase kernel version requirement for VA 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Ferruh, There is a typo in "version incread to > 4.9.0 ...". incread > increased Igor On Wed, Nov 20, 2019 at 7:00 PM Ferruh Yigit wrote= : > A build error reported related to the selected > 'get_user_pages_remote()' kernel API: > > .../kernel/linux/kni/kni_dev.h:113:8: > error: too few arguments to function =E2=80=98get_user_pages_remote=E2= =80=99 > ret =3D get_user_pages_remote(tsk, tsk->mm, iova, 1 > ^~~~~~~~~~~~~~~~~~~~~ > > Currently there are three version of the 'get_user_pages_remote()' > supported, based on kernel version > < 4.9, =3D 4.9, > 4.9 > > These version based checks are not working fine with the distro kernels > which is the cause of reported build error. The error reported by the > kernel version 4.8, but it is using API defined in > 4.9. > > To be able to take control of this, and possible more, related build > error, increasing the minimum supported kernel version for iova=3Dva with > KNI to kernel version 4.9. > > This leaves us with single version of the kernel API and more > manageable. > > Signed-off-by: Ferruh Yigit > --- > Cc: David Marchand > Cc: Vamsi Attunuru > Cc: Kiran Kumar K > Cc: Jerin Jacob > --- > doc/guides/prog_guide/kernel_nic_interface.rst | 2 +- > doc/guides/rel_notes/release_19_11.rst | 2 +- > kernel/linux/kni/compat.h | 16 +++++----------- > kernel/linux/kni/kni_dev.h | 10 ---------- > lib/librte_eal/linux/eal/eal.c | 6 +++--- > lib/librte_kni/rte_kni.c | 2 +- > 6 files changed, 11 insertions(+), 27 deletions(-) > > diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst > b/doc/guides/prog_guide/kernel_nic_interface.rst > index c4479ffbf..848b00253 100644 > --- a/doc/guides/prog_guide/kernel_nic_interface.rst > +++ b/doc/guides/prog_guide/kernel_nic_interface.rst > @@ -305,7 +305,7 @@ IOVA =3D VA: Support > > KNI operates in IOVA_VA scheme when > > -- LINUX_VERSION_CODE >=3D KERNEL_VERSION(4, 6, 0) and > +- LINUX_VERSION_CODE > KERNEL_VERSION(4, 9, 0) and > - EAL option `iova-mode=3Dva` is passed or bus IOVA scheme in the DPDK i= s > selected > as RTE_IOVA_VA. > > diff --git a/doc/guides/rel_notes/release_19_11.rst > b/doc/guides/rel_notes/release_19_11.rst > index 21be600ab..45b58190c 100644 > --- a/doc/guides/rel_notes/release_19_11.rst > +++ b/doc/guides/rel_notes/release_19_11.rst > @@ -299,7 +299,7 @@ New Features > * Added IOVA =3D VA support for KNI, KNI can operate in IOVA =3D VA mo= de > when > `iova-mode=3Dva` EAL option is passed to the application or when bus > IOVA > scheme is selected as RTE_IOVA_VA. This mode only works on Linux > Kernel > - versions 4.6.0 and above. > + versions above 4.9.0. > > * Due to IOVA to KVA address translations, based on the KNI use case > there > can be a performance impact. For mitigation, forcing IOVA to PA via > EAL > diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h > index 062b170ef..339dd25a7 100644 > --- a/kernel/linux/kni/compat.h > +++ b/kernel/linux/kni/compat.h > @@ -122,16 +122,10 @@ > #define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER > #endif > > -#if KERNEL_VERSION(4, 6, 0) <=3D LINUX_VERSION_CODE > - > +/* > + * iova to kva mapping support can be provided since 4.6.0, but support > + * version incread to > 4.9.0 because of the updates in > get_user_pages_remote() > + */ > +#if KERNEL_VERSION(4, 9, 0) < LINUX_VERSION_CODE > #define HAVE_IOVA_TO_KVA_MAPPING_SUPPORT > - > -#if KERNEL_VERSION(4, 9, 0) > LINUX_VERSION_CODE > -#define GET_USER_PAGES_REMOTE_API_V1 > -#elif KERNEL_VERSION(4, 9, 0) =3D=3D LINUX_VERSION_CODE > -#define GET_USER_PAGES_REMOTE_API_V2 > -#else > -#define GET_USER_PAGES_REMOTE_API_V3 > -#endif > - > #endif > diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h > index fb641b696..5e75c6371 100644 > --- a/kernel/linux/kni/kni_dev.h > +++ b/kernel/linux/kni/kni_dev.h > @@ -101,18 +101,8 @@ static inline phys_addr_t iova_to_phys(struct > task_struct *tsk, > offset =3D iova & (PAGE_SIZE - 1); > > /* Read one page struct info */ > -#ifdef GET_USER_PAGES_REMOTE_API_V3 > ret =3D get_user_pages_remote(tsk, tsk->mm, iova, 1, > FOLL_TOUCH, &page, NULL, NULL); > -#endif > -#ifdef GET_USER_PAGES_REMOTE_API_V2 > - ret =3D get_user_pages_remote(tsk, tsk->mm, iova, 1, > - FOLL_TOUCH, &page, NULL); > -#endif > -#ifdef GET_USER_PAGES_REMOTE_API_V1 > - ret =3D get_user_pages_remote(tsk, tsk->mm, iova, 1 > - 0, 0, &page, NULL); > -#endif > if (ret < 0) > return 0; > > diff --git a/lib/librte_eal/linux/eal/eal.c > b/lib/librte_eal/linux/eal/eal.c > index b5b71500c..5879e33e5 100644 > --- a/lib/librte_eal/linux/eal/eal.c > +++ b/lib/librte_eal/linux/eal/eal.c > @@ -1073,7 +1073,7 @@ rte_eal_init(int argc, char **argv) > */ > iova_mode =3D RTE_IOVA_VA; > RTE_LOG(DEBUG, EAL, "Physical addresses > are unavailable, selecting IOVA as VA mode.\n"); > -#if defined(RTE_LIBRTE_KNI) && LINUX_VERSION_CODE >=3D KERNEL_VERSION(4,= 6, > 0) > +#if defined(RTE_LIBRTE_KNI) && LINUX_VERSION_CODE > KERNEL_VERSION(4, 9, > 0) > } else if (rte_eal_check_module("rte_kni") =3D=3D= 1) { > iova_mode =3D RTE_IOVA_PA; > RTE_LOG(DEBUG, EAL, "KNI is loaded, > selecting IOVA as PA mode for better KNI perfomance.\n"); > @@ -1090,9 +1090,9 @@ rte_eal_init(int argc, char **argv) > RTE_LOG(DEBUG, EAL, "IOMMU is not > available, selecting IOVA as PA mode.\n"); > } > } > -#if defined(RTE_LIBRTE_KNI) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, > 0) > +#if defined(RTE_LIBRTE_KNI) && LINUX_VERSION_CODE <=3D KERNEL_VERSION(4,= 9, > 0) > /* Workaround for KNI which requires physical address to > work > - * in kernels < 4.6 > + * in kernels <=3D 4.9 > */ > if (iova_mode =3D=3D RTE_IOVA_VA && > rte_eal_check_module("rte_kni") =3D=3D 1)= { > diff --git a/lib/librte_kni/rte_kni.c b/lib/librte_kni/rte_kni.c > index 86995fc81..b564482fe 100644 > --- a/lib/librte_kni/rte_kni.c > +++ b/lib/librte_kni/rte_kni.c > @@ -98,7 +98,7 @@ static volatile int kni_fd =3D -1; > int > rte_kni_init(unsigned int max_kni_ifaces __rte_unused) > { > -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) > +#if LINUX_VERSION_CODE <=3D KERNEL_VERSION(4, 9, 0) > if (rte_eal_iova_mode() !=3D RTE_IOVA_PA) { > RTE_LOG(ERR, KNI, "KNI requires IOVA as PA\n"); > return -1; > -- > 2.21.0 > >