Hi Linus-san Thanks for your reply! On 04/26/2016 06:20 PM, Linus Walleij wrote: > On Mon, Apr 25, 2016 at 11:32 AM, Cao Minh Hiep wrote: > >> Hello Linus Walleij-san >> >> We have tested Linux upstream v4.6-rc2 on Renesas's Lager board. >> When we tried to unbind the e6051000.gpio, the following warning messages >> occurs: >> >> "root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# echo e6051000.gpio > >> unbind >> [ 241.511034] ------------[ cut here ]------------ >> [ 241.525054] WARNING: CPU: 0 PID: 2104 at fs/proc/generic.c:575 >> remove_proc_entry+0x13c/0x160 >> [ 241.550456] remove_proc_entry: removing non-empty directory 'irq/169', >> leaking at least '6-0039' > Do you mean that you set up a handler in userspace, using the > deprecated sysfs ABI and then unbind the module providing the > IRQ resource? > Please see the attach file for procedure test of this case. In order to make sure that driver works normally after unbind and rebind the device. >> And we found a patch between v4.5 and v4.6-rc2 that causing of this issue. >> The patch is "ff2b1359 gpio: make the gpiochip a real device" > It seems the issue is not a bug in the kernel, the issue is that the > kernel is warning you about something that was wrong also before > but you didn't get a warning for it until now. > > It is not OK to unbind a driver providing IRQs. > > It is even unclear if we should even allow modules to provide > IRQs because there is no way to handle irqchips going away > when it has consumers. > > Maybe we should just do this? > > diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c > index 3fe8e773d95c..ae5e81358ec5 100644 > --- a/drivers/gpio/gpio-rcar.c > +++ b/drivers/gpio/gpio-rcar.c > @@ -562,6 +562,7 @@ static struct platform_driver gpio_rcar_device_driver = { > .driver = { > .name = "gpio_rcar", > .of_match_table = of_match_ptr(gpio_rcar_of_table), > + .suppress_bind_attrs = true, > } > }; > I have just tried to patch this patch on v4.6-rc2, then make a test. The results is: I could not unbind the device. "Welcome to Linaro 14.04 (GNU/Linux 4.6.0-rc2-dirty armv7l) * Documentation: https://wiki.linaro.org/ root@linaro-nano:~# uname -a Linux linaro-nano 4.6.0-rc2-dirty #8 SMP Wed Apr 27 13:40:12 JST 2016 armv7l armv7l armv7l GNU/Linux root@linaro-nano:~# cd /sys/bus/platform/drivers/gpio-keys; ls -d keyboard keyboard root@linaro-nano:/sys/bus/platform/drivers/gpio-keys# echo keyboard > unbind root@linaro-nano:/sys/bus/platform/drivers/gpio-keys# cd root@linaro-nano:~# root@linaro-nano:~# cd /sys/bus/platform/drivers/gpio_rcar; ls -d e6051000.gpio e6051000.gpio root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# echo e6051000.gpio > unbind -bash: unbind: Permission denied root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# ls e6050000.gpio e6052000.gpio e6054000.gpio uevent e6051000.gpio e6053000.gpio e6055000.gpio root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# " before patching the patch, gpio-rcar devices are shown as below: "root@linaro-nano:~# cd /sys/bus/platform/drivers/gpio_rcar; ls bind e6051000.gpio e6053000.gpio e6055000.gpio unbind e6050000.gpio e6052000.gpio e6054000.gpio uevent root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# " Best Regards, Jinso/Cao Minh Hiep.