On 3/26/20 12:34 AM, Rohit Sarkar wrote: >>>>> >>>>> The command I used for building was "make -C /home/rohit/LINUX/kernels/staging M=$(pwd)" >>>>> and for installing the modules: "sudo make -C /home/rohit/LINUX/kernels/staging M=$(pwd) modules_install" >>>>> both were executed from the usbhid directory. >>>> >>>> why those commands? seems unusual. >>> My Linux kernel source is in the directory mentioned in the commands. So >>> it is same as running "make M=drivers/hid/usbhid/" from the linux kernel >>> source root. >> >> So /home/rohit/kernels/staging is the top-level kernel source directory? >> >> "M=dir" is for external modules to be built. AFAICT you are not building any >> external modules. >> >> Just run >> $ cd <top of kernel source tree> >> $ make all >> $ sudo make install > Further, on my system it takes a significant amount of time to run "make > all" for some reason. (30 minutes) even though I have previously > built the kernel and not pulled any update. > AFAIK, make is only supposed to build the files that have > changed. Idk why it is also compiling other files. Most of the time is > taken by make running modpost. > > That is the reason I tried to build and install only the hid folder OK, I get that. For a driver that is built as a loadable module, you should be able to edit the driver, build it, unload previous version (rmmod), load new version (modprobe or insmod), and test it, without having to reboot the kernel. [until an oops or BUG or WARN happens] If you don't "install" the new module file, I think that modprobe will look in /lib/modules/kernel_version/* for the module file and find the old one. In this case I usually use "insmod path_to_new_driver_file" to load & test it. -- ~Randy