Ticket #2237 (new defect)

Opened 4 years ago

Last modified 4 years ago

pcf50633 INT1 and INT3 flood logs with gadgetfs keyboard

Reported by: lindi Owned by: openmoko-kernel
Priority: normal Milestone:
Component: kernel Version: unspecified
Severity: normal Keywords:
Cc: Blocked By:
Blocking: Estimated Completion (week):
HasPatchForReview: no PatchReviewResult:
Reproducible:

Description

Steps to reproduce:
1) connect freerunner to a PC and setup ssh access over wlan since g_ether can not be used during test
2) tar zxf testcase1.tar.gz
3) cd testcase1
4) make
5) sudo bash setup.sh
6) sudo ./usb

Expected results:
6) freerunner shows up as a new usb keyboard on the PC side

Actual results:
6) freerunner shows up as a new usb keyboard on the PC side but on the freerunner side it starts to flood logs with about 8 lines/second:

Feb 21 19:02:32 ginger user.info kernel: [  288.060000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x20 INT4=0x00 INT5=0x00
Feb 21 19:02:32 ginger user.info kernel: [  288.135000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:32 ginger user.info kernel: [  288.155000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:33 ginger user.info kernel: [  288.775000] pcf50633 0-0073: INT1=0x80 INT2=0x00 INT3=0x10 INT4=0x00 INT5=0x00
Feb 21 19:02:33 ginger user.info kernel: [  288.840000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:33 ginger user.info kernel: [  288.860000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:33 ginger user.info kernel: [  288.990000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x20 INT4=0x00 INT5=0x00
Feb 21 19:02:33 ginger user.info kernel: [  289.060000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:33 ginger user.info kernel: [  289.080000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:34 ginger user.info kernel: [  289.800000] pcf50633 0-0073: INT1=0x80 INT2=0x00 INT3=0x10 INT4=0x00 INT5=0x00
Feb 21 19:02:34 ginger user.info kernel: [  289.865000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:34 ginger user.info kernel: [  289.885000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00
Feb 21 19:02:34 ginger user.info kernel: [  290.105000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x20 INT4=0x00 INT5=0x00
Feb 21 19:02:34 ginger user.info kernel: [  290.175000] pcf50633 0-0073: INT1=0x00 INT2=0x00 INT3=0x00 INT4=0x00 INT5=0x00

More info:
1) the keyboard gadget does not yet work reliably but that is not what this bug report is about :-)
2) I am using andy-tracking b8b36e5ec3db71d5
3) udevd seems to consume 5% cpu time constantly. strace shows

--- SIGCHLD (Child exited) @ 0 (0) ---
write(7, "\0"..., 1)                    = 1
sigreturn()                             = ? (mask now [HUP QUIT ABRT BUS USR1 SEGV PIPE ALRM TERM CHLD CONT STOP TSTP TTOU VTALRM PROF PWR SYS])
gettimeofday({1235235981, 461967}, NULL) = 0
select(7, [3 4 5 6], NULL, NULL, NULL)  = 2 (in [5 6])
recv(5, "change@/class/power_supply/adapte"..., 2560, 0) = 296
gettimeofday({1235235981, 479707}, NULL) = 0
unlink("/dev/.udev/failed/\\x2fclass\\x2fpower_supply\\x2fadapter") = -1 ENOENT (No such file or directory)
rmdir("/dev/.udev/failed")              = -1 ENOTEMPTY (Directory not empty)
stat64("/dev/.udev/queue", {st_mode=S_IFDIR|0755, st_size=60, ...}) = 0
symlink("/class/power_supply/adapter", "/dev/.udev/queue/2037") = 0
open("/dev/.udev/uevent_seqnum", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0644) = 8
write(8, "2037\n"..., 5)                = 5
close(8)                                = 0
read(6, "\0"..., 256)                   = 1
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, NULL) = 3020
gettimeofday({1235235981, 549209}, NULL) = 0
unlink("/dev/.udev/failed/\\x2fclass\\x2fpower_supply\\x2fusb") = -1 ENOENT (No such file or directory)
rmdir("/dev/.udev/failed")              = -1 ENOTEMPTY (Directory not empty)
unlink("/dev/.udev/queue/2036")         = 0
rmdir("/dev/.udev/queue")               = -1 ENOTEMPTY (Directory not empty)
wait4(-1, 0x3ea4cf8, WNOHANG, NULL)     = -1 ECHILD (No child processes)
open("/proc/stat", O_RDONLY|O_LARGEFILE) = 8
fstat64(8, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40020000
read(8, "cpu  3979 0 10751 65310 1394 0 29"..., 1024) = 386
close(8)                                = 0
munmap(0x40020000, 4096)                = 0

Attachments

testcase1.tar.gz (5.4 KB) - added by lindi 4 years ago.
incomplete keyboard gadget as a testcase

Change History

Changed 4 years ago by lindi

incomplete keyboard gadget as a testcase

comment:1 Changed 4 years ago by andy

INT1 bit is "second" interrupt, by definition you can only get one of those a second (in fact two due to a symptomless bug with level interrupt handling). INT3 thing is "USB current limit ON (0x10) and OFF (0x20)".

All of these are normally masked so we don't take care about them, I don't know why they are suddenly unmasked.

Can you dump the pcf50633 regs while this is happening so I can see the mask registers from that?

About udev, if I understand it then udev is spinning meddling with adapter node, it's suspicious that this is the one thing we talk about in pcf50633 but don't use in GTA02.

Note: See TracTickets for help on using tickets.