diff --git a/GNUmakefile b/GNUmakefile
index 45b7fbb..59a30f4 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -40,7 +40,7 @@ export RTE_SDK
 # directory list
 #
 
-ROOTDIRS-y := buildtools lib drivers app
+ROOTDIRS-y := buildtools lib drivers app kern
 ROOTDIRS-  := test
 
 include $(RTE_SDK)/mk/rte.sdkroot.mk
diff --git a/kern/Makefile b/kern/Makefile
new file mode 100644
index 0000000..c2c45a3
--- /dev/null
+++ b/kern/Makefile
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright 2017 NXP
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+DIRS-$(CONFIG_RTE_EAL_IGB_UIO) += igb_uio
+DIRS-$(CONFIG_RTE_KNI_KMOD) += kni
+
+include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/lib/librte_eal/linuxapp/igb_uio/Makefile b/kern/igb_uio/Makefile
similarity index 100%
rename from lib/librte_eal/linuxapp/igb_uio/Makefile
rename to kern/igb_uio/Makefile
diff --git a/lib/librte_eal/linuxapp/igb_uio/compat.h b/kern/igb_uio/compat.h
similarity index 100%
rename from lib/librte_eal/linuxapp/igb_uio/compat.h
rename to kern/igb_uio/compat.h
diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/kern/igb_uio/igb_uio.c
similarity index 100%
rename from lib/librte_eal/linuxapp/igb_uio/igb_uio.c
rename to kern/igb_uio/igb_uio.c
diff --git a/lib/librte_eal/linuxapp/kni/Makefile b/kern/kni/Makefile
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/Makefile
rename to kern/kni/Makefile
diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/kern/kni/compat.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/compat.h
rename to kern/kni/compat.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/README b/kern/kni/ethtool/README
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/README
rename to kern/kni/ethtool/README
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_82575.c b/kern/kni/ethtool/igb/e1000_82575.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_82575.c
rename to kern/kni/ethtool/igb/e1000_82575.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_82575.h b/kern/kni/ethtool/igb/e1000_82575.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_82575.h
rename to kern/kni/ethtool/igb/e1000_82575.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api.c b/kern/kni/ethtool/igb/e1000_api.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api.c
rename to kern/kni/ethtool/igb/e1000_api.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api.h b/kern/kni/ethtool/igb/e1000_api.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api.h
rename to kern/kni/ethtool/igb/e1000_api.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_defines.h b/kern/kni/ethtool/igb/e1000_defines.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_defines.h
rename to kern/kni/ethtool/igb/e1000_defines.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_hw.h b/kern/kni/ethtool/igb/e1000_hw.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_hw.h
rename to kern/kni/ethtool/igb/e1000_hw.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_i210.c b/kern/kni/ethtool/igb/e1000_i210.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_i210.c
rename to kern/kni/ethtool/igb/e1000_i210.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_i210.h b/kern/kni/ethtool/igb/e1000_i210.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_i210.h
rename to kern/kni/ethtool/igb/e1000_i210.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mac.c b/kern/kni/ethtool/igb/e1000_mac.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mac.c
rename to kern/kni/ethtool/igb/e1000_mac.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mac.h b/kern/kni/ethtool/igb/e1000_mac.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mac.h
rename to kern/kni/ethtool/igb/e1000_mac.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_manage.c b/kern/kni/ethtool/igb/e1000_manage.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_manage.c
rename to kern/kni/ethtool/igb/e1000_manage.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_manage.h b/kern/kni/ethtool/igb/e1000_manage.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_manage.h
rename to kern/kni/ethtool/igb/e1000_manage.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mbx.c b/kern/kni/ethtool/igb/e1000_mbx.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mbx.c
rename to kern/kni/ethtool/igb/e1000_mbx.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mbx.h b/kern/kni/ethtool/igb/e1000_mbx.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_mbx.h
rename to kern/kni/ethtool/igb/e1000_mbx.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_nvm.c b/kern/kni/ethtool/igb/e1000_nvm.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_nvm.c
rename to kern/kni/ethtool/igb/e1000_nvm.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_nvm.h b/kern/kni/ethtool/igb/e1000_nvm.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_nvm.h
rename to kern/kni/ethtool/igb/e1000_nvm.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_osdep.h b/kern/kni/ethtool/igb/e1000_osdep.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_osdep.h
rename to kern/kni/ethtool/igb/e1000_osdep.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c b/kern/kni/ethtool/igb/e1000_phy.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c
rename to kern/kni/ethtool/igb/e1000_phy.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.h b/kern/kni/ethtool/igb/e1000_phy.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.h
rename to kern/kni/ethtool/igb/e1000_phy.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_regs.h b/kern/kni/ethtool/igb/e1000_regs.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_regs.h
rename to kern/kni/ethtool/igb/e1000_regs.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb.h b/kern/kni/ethtool/igb/igb.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/igb.h
rename to kern/kni/ethtool/igb/igb.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_ethtool.c b/kern/kni/ethtool/igb/igb_ethtool.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/igb_ethtool.c
rename to kern/kni/ethtool/igb/igb_ethtool.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c b/kern/kni/ethtool/igb/igb_main.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
rename to kern/kni/ethtool/igb/igb_main.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_param.c b/kern/kni/ethtool/igb/igb_param.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/igb_param.c
rename to kern/kni/ethtool/igb/igb_param.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_regtest.h b/kern/kni/ethtool/igb/igb_regtest.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/igb_regtest.h
rename to kern/kni/ethtool/igb/igb_regtest.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_vmdq.c b/kern/kni/ethtool/igb/igb_vmdq.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/igb_vmdq.c
rename to kern/kni/ethtool/igb/igb_vmdq.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_vmdq.h b/kern/kni/ethtool/igb/igb_vmdq.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/igb_vmdq.h
rename to kern/kni/ethtool/igb/igb_vmdq.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/kern/kni/ethtool/igb/kcompat.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
rename to kern/kni/ethtool/igb/kcompat.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe.h b/kern/kni/ethtool/ixgbe/ixgbe.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe.h
rename to kern/kni/ethtool/ixgbe/ixgbe.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82598.c b/kern/kni/ethtool/ixgbe/ixgbe_82598.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82598.c
rename to kern/kni/ethtool/ixgbe/ixgbe_82598.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82598.h b/kern/kni/ethtool/ixgbe/ixgbe_82598.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82598.h
rename to kern/kni/ethtool/ixgbe/ixgbe_82598.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c b/kern/kni/ethtool/ixgbe/ixgbe_82599.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c
rename to kern/kni/ethtool/ixgbe/ixgbe_82599.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.h b/kern/kni/ethtool/ixgbe/ixgbe_82599.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.h
rename to kern/kni/ethtool/ixgbe/ixgbe_82599.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_api.c b/kern/kni/ethtool/ixgbe/ixgbe_api.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_api.c
rename to kern/kni/ethtool/ixgbe/ixgbe_api.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_api.h b/kern/kni/ethtool/ixgbe/ixgbe_api.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_api.h
rename to kern/kni/ethtool/ixgbe/ixgbe_api.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_common.c b/kern/kni/ethtool/ixgbe/ixgbe_common.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_common.c
rename to kern/kni/ethtool/ixgbe/ixgbe_common.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_common.h b/kern/kni/ethtool/ixgbe/ixgbe_common.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_common.h
rename to kern/kni/ethtool/ixgbe/ixgbe_common.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_dcb.h b/kern/kni/ethtool/ixgbe/ixgbe_dcb.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_dcb.h
rename to kern/kni/ethtool/ixgbe/ixgbe_dcb.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_ethtool.c b/kern/kni/ethtool/ixgbe/ixgbe_ethtool.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_ethtool.c
rename to kern/kni/ethtool/ixgbe/ixgbe_ethtool.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_fcoe.h b/kern/kni/ethtool/ixgbe/ixgbe_fcoe.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_fcoe.h
rename to kern/kni/ethtool/ixgbe/ixgbe_fcoe.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_main.c b/kern/kni/ethtool/ixgbe/ixgbe_main.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_main.c
rename to kern/kni/ethtool/ixgbe/ixgbe_main.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_mbx.h b/kern/kni/ethtool/ixgbe/ixgbe_mbx.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_mbx.h
rename to kern/kni/ethtool/ixgbe/ixgbe_mbx.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_osdep.h b/kern/kni/ethtool/ixgbe/ixgbe_osdep.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_osdep.h
rename to kern/kni/ethtool/ixgbe/ixgbe_osdep.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_phy.c b/kern/kni/ethtool/ixgbe/ixgbe_phy.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_phy.c
rename to kern/kni/ethtool/ixgbe/ixgbe_phy.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_phy.h b/kern/kni/ethtool/ixgbe/ixgbe_phy.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_phy.h
rename to kern/kni/ethtool/ixgbe/ixgbe_phy.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_type.h b/kern/kni/ethtool/ixgbe/ixgbe_type.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_type.h
rename to kern/kni/ethtool/ixgbe/ixgbe_type.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_x540.c b/kern/kni/ethtool/ixgbe/ixgbe_x540.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_x540.c
rename to kern/kni/ethtool/ixgbe/ixgbe_x540.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_x540.h b/kern/kni/ethtool/ixgbe/ixgbe_x540.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_x540.h
rename to kern/kni/ethtool/ixgbe/ixgbe_x540.h
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.c b/kern/kni/ethtool/ixgbe/kcompat.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.c
rename to kern/kni/ethtool/ixgbe/kcompat.c
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h b/kern/kni/ethtool/ixgbe/kcompat.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h
rename to kern/kni/ethtool/ixgbe/kcompat.h
diff --git a/lib/librte_eal/linuxapp/kni/kni_dev.h b/kern/kni/kni_dev.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/kni_dev.h
rename to kern/kni/kni_dev.h
diff --git a/lib/librte_eal/linuxapp/kni/kni_ethtool.c b/kern/kni/kni_ethtool.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/kni_ethtool.c
rename to kern/kni/kni_ethtool.c
diff --git a/lib/librte_eal/linuxapp/kni/kni_fifo.h b/kern/kni/kni_fifo.h
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/kni_fifo.h
rename to kern/kni/kni_fifo.h
diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/kern/kni/kni_misc.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/kni_misc.c
rename to kern/kni/kni_misc.c
diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c b/kern/kni/kni_net.c
similarity index 100%
rename from lib/librte_eal/linuxapp/kni/kni_net.c
rename to kern/kni/kni_net.c
diff --git a/lib/librte_eal/linuxapp/Makefile b/lib/librte_eal/linuxapp/Makefile
index 2ebdf31..5e100fb 100644
--- a/lib/librte_eal/linuxapp/Makefile
+++ b/lib/librte_eal/linuxapp/Makefile
@@ -32,8 +32,6 @@
 include $(RTE_SDK)/mk/rte.vars.mk
 
 DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal
-DIRS-$(CONFIG_RTE_EAL_IGB_UIO) += igb_uio
-DIRS-$(CONFIG_RTE_KNI_KMOD) += kni
 DEPDIRS-kni := eal
 
 include $(RTE_SDK)/mk/rte.subdir.mk
