Skip to content

install.sh doesn't remove the old igb_uio module and install the new one when compiling dpdk #83

@lyuxiaosu

Description

@lyuxiaosu

Bug Report

Current Behavior
install.sh doesn't reinstall igb_uio module generated by dpdk if it finds the system has already installed one. Since dpdk provides the driver of igb_uio which might be often updated, the old igb_uio module should be removed and replaced by the dpdk's. This can cause a run-time error for running dpdk_iface_main to create a dpdk-iface device.

Expected behavior/code
igb_uio module should be removed and re-installed at each time of compiling dpdk

Steps to reproduce

  • Apply for a new machine or reboot a machine from cloudlab, the system has already installed a default igb_uio, use grep -m 1 "igb_uio" /proc/modules to display:

igb_uio 2446317 0 - Live 0x0000000000000000 (OX)

  • Then run install.sh to compile dpdk, and use grep -m 1 "igb_uio" /proc/modules to display again:

igb_uio 2446317 0 - Live 0x0000000000000000 (OX)

The old igb_uio module was not replaced by the new one.

  • Run setup_mtcp_onvm_env.sh to create a dpdk-iface device, an error happened:
xiaosuGW@node2:~/mtcp$ ./setup_mtcp_onvm_env.sh
Checking ldflags.txt...
RTE_SDK env variable is set to /users/xiaosuGW/openNetVM-dev/dpdk
RTE_TARGET env variable is set to x86_64-native-linuxapp-gcc
Are you using an Intel NIC (y/n)? y
Creating dpdk interface entries
make -C /lib/modules/3.13.0-117-generic/build/ M=/users/xiaosuGW/mtcp/dpdk-iface-kmod modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-117-generic'
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-117-generic'
make -C /lib/modules/3.13.0-117-generic/build/ M=/users/xiaosuGW/mtcp/dpdk-iface-kmod modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-117-generic'
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-117-generic'
sudo ./dpdk_iface_main
Removing existing device node entry... not present.
Creating device node entry... done.
Setting permissions on the device node entry... done.
Scanning the system for dpdk-compatible devices... done.
Clearing previous entries
ioctl call failed!
make: *** [run] Error 1

Environment

  • OS: cloudlab machines
  • onvm version: develop branch with commit e305489b76c868e722470c7799625de90d5f37bb
  • dpdk version: 18.11.0
  • mtcp: branch onvm_build_readme_fix

Possible Solution
Removing the old igb_uio and re-installing the new one under $RTE_SDK/$RTE_TARGET/kmod can resolve this problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions