Re: [Bug]:LAGER: GPIO-KEYS: Warning occurs after unbinding the e6051000.gpio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <cm-hiep@xxxxxxxxxxx> 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.

1.Booting kernel.

2.Confirm the gpio keys device.
# cd /sys/bus/platform/drivers/gpio-keys; ls -d keyboard
keyboard

3.Do unbind the device
# cd /sys/bus/platform/drivers/gpio-keys; echo keyboard > unbind

4. Confirm the gpio rcars device
# cd /sys/bus/platform/drivers/gpio_rcar; ls -d e6051000.gpio
e6051000.gpio

5.Do unbind the device.
# cd /sys/bus/platform/drivers/gpio_rcar; echo e6051000.gpio > unbind

6.Confirm the gpio rcars device
# cd /sys/bus/platform/drivers/gpio_rcar; ls -d e6051000.gpio
ls: cannot access e6051000.gpio: No such file or directory

7. Do rebind the gpio rcar device.
cd /sys/bus/platform/drivers/gpio_rcar; echo e6051000.gpio > bind

8. Do rebind the gpio keys device.
# cd /sys/bus/platform/drivers/gpio-keys;  echo keyboard > bind

9. Confirm.


[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux