wjz304 / mlnx-ofed-kernel Goto Github PK
View Code? Open in Web Editor NEWLicense: Other
License: Other
Content: 1. Overview 2. Directory structure 3. HOWTO add a new feature patch(es) 4. HOWTO add backport patches 5. Check compilation 6. Submitting to Gerrit Overview: --------- The general idea is based on compat-wireless project https://lkml.org/lkml/2011/9/9/327 Compat Wiki: https://backports.wiki.kernel.org/index.php/Main_Page https://backports.wiki.kernel.org/index.php/Documentation Also it utilizes autotools. Directory structure: -------------------- MLNX_OFED-3.x (mlnx_rdma) git tree structure: Compat files: compat/ include/linux/compat*.h ofed_scripts/gen-compat-autoconf.sh ofed_scripts/gen-compat-config.sh include/linux/<headers to update existing headers by #include_next and adding new stuff>*.h Autotools: compat/config compat/autogen.sh compat/configure.ac Feautes (Each feautre should be a separate directory): features/<index for sorting patch apply order>-<feaure name> Backport patches: backports/<one patch file for each module!> Kernel subtree based on upstream kernel: include/ drivers/ net/ --------------------- Compilation procedure: # cd mlnx_rdma # git checkout master # ./configure <params> E.g.: ./configure --with-core-mod --with-user_mad-mod --with-user_access-mod --with-addr_trans-mod --with-mlx4-mod --with-mlx4_en-mod --with-mlx5-mod --with-ipoib-mod --with-srp-mod --with-rds-mod --with-iser-mod Note: If "backports_applied" file exist then backport patches will not be applied. # make distclean # make # make install HOWTO add a new feature/fix: ---------------------------- Start with updated branch (equal to “master”). Add the new code. Check compilation on the latest kernel base. # ./configure <params> --without-backport-patches Note: Provide path to kernel sources if needed: --kernel-version <version> --kernel-sources <path to sources> # make distclean # make # make install Check your feature. Commit the changes. Add backports if required. See "Check compilation". Note: Make sure your commits pass linux/scripts/checkpatch.pl Backport patches may not pass this check HOWTO add backport patches: --------------------------- Start with updated branch (eg: equal to “master”). !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! NOTE: BACKPORT PATCHES MAY CHANGE FILES UNDER FOLLOWING DIRECTORIES !!! !!! include/rdma/ !!! !!! include/linux/mlx4/ !!! !!! include/linux/mlx5/ !!! !!! drivers/ !!! !!! net/ !!! !!! AND SHOULD NOT TOUCH FILES UNDER ofed_scripts, compat and compat headers under include/linux/ !!! !!! CHANGES TO THE FILES UNDER ofed_scripts, compat and include/linux/compat*.h SHOULD BE COMMITTED DIRECTLY !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $ /bin/rm -f backports_applied Run configure (check parameters) $ ./configure --with-core-mod --with-user_mad-mod --with-user_access-mod --with-addr_trans-mod --with-mlx4-mod --with-mlx4_en-mod --with-mlx5-mod --with-ipoib-mod --with-srp-mod --with-rds-mod --with-iser-mod All backports are applied. $ make KBUILD_NOCMDDEP=1 2>&1 | tee log In case of undefined variable/function refer to: https://backports.wiki.kernel.org/index.php/Documentation/compat If some functionality was backported to some supported Distro need to add CONFIG_COMPAT_... flag (or even better, use autotools and define flags like HAVE_... see compat/config/rdma.m4): For example, "netdev_get_prio_tc_map" was added in 2.6.39 but backported to RHEL6.[23] ifeq ($(RHEL_MAJOR),6) CFLAGS += -DCONFIG_COMPAT_IS_PRIO_TC_MAP ... endif diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 0bf5a9d..f0f75b6 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -1844,10 +1844,14 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv) route->path_rec->reversible = 1; route->path_rec->pkey = cpu_to_be16(0xffff); route->path_rec->mtu_selector = IB_SA_EQ; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) || defined(CONFIG_COMPAT_IS_PRIO_TC_MAP) route->path_rec->sl = netdev_get_prio_tc_map( ndev->priv_flags & IFF_802_1Q_VLAN ? vlan_dev_real_dev(ndev) : ndev, rt_tos2priority(id_priv->tos)); +#else + route->path_rec->sl = id_priv->tos >> 5; +#endif Create a new backport patch from the diff above: 1. Commit the change. 2. Squash/Fixup the commit to the original commit that backported the relevant module (unless you are backporting a new module). 3. Get updated/new patches: $ ./ofed_scripts/ofed_get_patches.sh Change branch to the original (E.g. “master”) Update/add new relevant patches under "backports" directory $ cp -a ./backports_new/0XXX-<new patch>.patch backports $ git add backports $ git commit -s -m ”BACKPORTS: Added RHEL6.[23] support” backports/ Check compilation: ------------------ Use your user and not "root". $ cd /mswg/projects/art $ git_url=<git url> git_branch=<git branch> ./build mlnx_rdma Submitting to Gerrit: --------------------- Please refer to http://wiki.lab.mtl.com/tiki/tiki-index.php?page=Code+Review&structure=OFED-LE#Gerrit
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.