All of lore.kernel.org
 help / color / mirror / Atom feed
* USB: OHCI: high softirq load
@ 2017-01-16  7:45 Antoine Aubert
  2017-01-16  9:02 ` Boris Brezillon
  0 siblings, 1 reply; 7+ messages in thread
From: Antoine Aubert @ 2017-01-16  7:45 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Im working on a AT91SAM9G25cu board
(arch/arm/boot/dts/at91-kizboxmini.dts). We use linux-4.1.31, and when
OHCI is enabled, I got some wired effects.

eg with 3 FTDI pluged, interrupts: more than 3.5k/s, cpu softirq > 24%,
loadavg > 0.5

This issue disappear when disabling OHCI and use EHCI only.

What are the usual causes, and where to begin with ?

Thanks in advance,

-- 
Antoine Aubert
a.aubert at overkiz.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* USB: OHCI: high softirq load
  2017-01-16  7:45 USB: OHCI: high softirq load Antoine Aubert
@ 2017-01-16  9:02 ` Boris Brezillon
  2017-01-16 10:31   ` Antoine Aubert
  0 siblings, 1 reply; 7+ messages in thread
From: Boris Brezillon @ 2017-01-16  9:02 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Antoine,

On Mon, 16 Jan 2017 08:45:58 +0100
Antoine Aubert <a.aubert@overkiz.com> wrote:

> Hi,
> 
> Im working on a AT91SAM9G25cu board
> (arch/arm/boot/dts/at91-kizboxmini.dts). We use linux-4.1.31, and when
> OHCI is enabled, I got some wired effects.

Can you test on a more recent kernel (4.9 or 4.10-rc4)?

> 
> eg with 3 FTDI pluged, interrupts: more than 3.5k/s, cpu softirq > 24%,
> loadavg > 0.5

Can you check which interrupt is triggered (cat /proc/interrupts), and
enable debug messages in drivers/usb/host/ohci-at91.c?

Thanks,

Boris

> 
> This issue disappear when disabling OHCI and use EHCI only.
> 
> What are the usual causes, and where to begin with ?
> 
> Thanks in advance,
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* USB: OHCI: high softirq load
  2017-01-16  9:02 ` Boris Brezillon
@ 2017-01-16 10:31   ` Antoine Aubert
  2017-01-16 10:54     ` Antoine Aubert
  0 siblings, 1 reply; 7+ messages in thread
From: Antoine Aubert @ 2017-01-16 10:31 UTC (permalink / raw)
  To: linux-arm-kernel

Thx for your answer Boris

Le 16/01/2017 ? 10:02, Boris Brezillon a ?crit :
> Hi Antoine,
>
> On Mon, 16 Jan 2017 08:45:58 +0100
> Antoine Aubert <a.aubert@overkiz.com> wrote:
>
>> Hi,
>>
>> Im working on a AT91SAM9G25cu board
>> (arch/arm/boot/dts/at91-kizboxmini.dts). We use linux-4.1.31, and when
>> OHCI is enabled, I got some wired effects.
> Can you test on a more recent kernel (4.9 or 4.10-rc4)?
I'll give a try, just need little time ;)
>
>> eg with 3 FTDI pluged, interrupts: more than 3.5k/s, cpu softirq > 24%,
>> loadavg > 0.5
> Can you check which interrupt is triggered (cat /proc/interrupts),
cat /proc/interrupts
           CPU0      
 16:       2286  atmel-aic   1 Level     pmc, at91_tick, at91_rtc, ttyS0
 17:          0       PMC  17 Level     main_rc_osc
 18:          0       PMC   0 Level     main_osc
 19:          0       PMC  16 Level     mainck
 20:          0       PMC   1 Level     clk-plla
 21:          0       PMC   6 Level     clk-utmi
 22:          0       PMC   3 Level     clk-master
 23:     945527  atmel-aic  17 Level     tc_clkevt
 24:      21815  atmel-aic  20 Level     at_hdmac
 25:          0  atmel-aic  21 Level     at_hdmac
 30:     120299  atmel-aic  24 Level     eth0
 31:   22783651  atmel-aic  22 Level     ehci_hcd:usb1, ohci_hcd:usb2
 99:          0      GPIO  16 Edge      PB_RST
100:          0      GPIO  17 Edge      PB_PROG
Err:          0

>  and
> enable debug messages in drivers/usb/host/ohci-at91.c?
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.31 (antoine at ltp.antoine) (gcc version
4.9.2 (GCC) ) #1 Mon Jan 16 11:04:03 CET 2017
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine model: Overkiz Kizbox Mini RailDIN
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: Data cache writeback
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on. 
Total pages: 32512
[    0.000000] Kernel command line: panic=5 oops=panic root=ubi0:root
rootfstype=ubifs ubi.mtd=ubi rw console=ttyS0,115200 earlyprintk
loglevel=7 dyndbg='file ohci-at91.c +p'
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536
bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 125076K/131072K available (3204K kernel code,
136K rwdata, 1116K rodata, 132K init, 84K bss, 5996K reserved, 0K
cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc04404b4   (4322 kB)
[    0.000000]       .init : 0xc0441000 - 0xc0462000   ( 132 kB)
[    0.000000]       .data : 0xc0462000 - 0xc0484310   ( 137 kB)
[    0.000000]        .bss : 0xc0484310 - 0xc0499550   (  85 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] clocksource pit: mask: 0x7ffffff max_cycles: 0x7ffffff,
max_idle_ns: 7167226906 ns
[    0.000000] sched_clock: 32 bits at 128 Hz, resolution 7812500ns,
wraps every 16777215996093750ns
[    0.007812] Calibrating delay loop... 198.76 BogoMIPS (lpj=775168)
[    0.078125] pid_max: default: 32768 minimum: 301
[    0.085937] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.093750] Mountpoint-cache hash table entries: 1024 (order: 0, 4096
bytes)
[    0.101562] CPU: Testing write buffer coherency: ok
[    0.101562] Setting up static identity map for 0x20008400 - 0x2000847c
[    0.117187] dynamic_debug:ddebug_tokenize: unclosed quote: file
[    0.125000] dynamic_debug:ddebug_exec_query: tokenize failed
[    0.132812] devtmpfs: initialized
[    0.164062] clocksource jiffies: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 14931722236523437 ns
[    0.171875] pinctrl core: initialized pinctrl subsystem
[    0.179687] NET: Registered protocol family 16
[    0.187500] DMA: preallocated 256 KiB pool for atomic coherent
allocations
[    0.195312] AT91: Detected SoC family: at91sam9x5
[    0.203125] AT91: Detected SoC: at91sam9g25, revision 1
[    0.226562] gpio-at91 fffff400.gpio: at address fefff400
[    0.234375] gpio-at91 fffff600.gpio: at address fefff600
[    0.242187] gpio-at91 fffff800.gpio: at address fefff800
[    0.250000] gpio-at91 fffffa00.gpio: at address fefffa00
[    0.257812] pinctrl-at91 ahb:apb:pinctrl at fffff400: initialized AT91
pinctrl driver
[    0.265625] clocksource tcb_clksrc: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 114675631333 ns
[    4.718750] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    4.726562] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    4.734375] NET: Registered protocol family 1
[    4.742187] futex hash table entries: 256 (order: -1, 3072 bytes)
[    4.789062] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    4.804687] io scheduler noop registered (default)
[    4.812500] fffff200.serial: ttyS0 at MMIO 0xfffff200 (irq = 16,
base_baud = 8333333) is a ATMEL_SERIAL
[    4.820312] console [ttyS0] enabled
[    4.828125] bootconsole [earlycon0] disabled
[    4.851562] brd: module loaded
[    4.882812] loop: module loaded
[    4.898437] atmel_nand 40000000.nand: Use On Flash BBT
[    4.898437] atmel_nand 40000000.nand: Using dma0chan0 for DMA transfers.
[    4.906250] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xf1
[    4.914062] nand: Micron MT29F1G08ABAEAWP
[    4.921875] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048,
OOB size: 64
[    4.929687] atmel_nand 40000000.nand: minimum ECC: 4 bits in 512 bytes
[    4.929687] atmel_nand 40000000.nand: Initialize PMECC params, cap:
4, sector: 512
[    4.945312] Bad block table found at page 65472, version 0x01
[    4.945312] Bad block table found at page 65408, version 0x01
[    4.953125] 2 ofpart partitions found on MTD device atmel_nand
[    4.960937] Creating 2 MTD partitions on "atmel_nand":
[    4.968750] 0x000000000000-0x000000020000 : "bootstrap"
[    4.976562] 0x000000020000-0x000008000000 : "ubi"
[    4.992187] macb f802c000.ethernet (unnamed net_device)
(uninitialized): invalid hw address, using random
[    5.000000] libphy: MACB_mii_bus: probed
[    5.093750] macb f802c000.ethernet eth0: Cadence MACB rev 0x0001010c
at 0xf802c000 irq 30 (8e:06:02:88:ed:97)
[    5.101562] macb f802c000.ethernet eth0: attached PHY driver [Micrel
KSZ8081 or KSZ8091] (mii_bus:phy_addr=f802c000.etherne:01, irq=-1)
[    5.109375] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    5.117187] ehci-atmel: EHCI Atmel driver
[    5.125000] atmel-ehci 700000.ehci: EHCI Host Controller
[    5.125000] atmel-ehci 700000.ehci: new USB bus registered, assigned
bus number 1
[    5.140625] atmel-ehci 700000.ehci: irq 31, io mem 0x00700000
[    5.156250] atmel-ehci 700000.ehci: USB 2.0 started, EHCI 1.00
[    5.156250] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    5.164062] usb usb1: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[    5.171875] usb usb1: Product: EHCI Host Controller
[    5.179687] usb usb1: Manufacturer: Linux 4.1.31 ehci_hcd
[    5.179687] usb usb1: SerialNumber: 700000.ehci
[    5.187500] hub 1-0:1.0: USB hub found
[    5.195312] hub 1-0:1.0: 3 ports detected
[    5.203125] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    5.203125] ohci-atmel: OHCI Atmel driver
[    5.210937] at91_ohci 600000.ohci: start
[    5.210937] at91_ohci 600000.ohci: USB Host Controller
[    5.218750] at91_ohci 600000.ohci: new USB bus registered, assigned
bus number 2
[    5.226562] at91_ohci 600000.ohci: irq 31, io mem 0x00600000
[    5.289062] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    5.296875] usb usb2: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[    5.304687] usb usb2: Product: USB Host Controller
[    5.304687] usb usb2: Manufacturer: Linux 4.1.31 ohci_hcd
[    5.312500] usb usb2: SerialNumber: at91
[    5.320312] hub 2-0:1.0: USB hub found
[    5.320312] at91_ohci 600000.ohci:
ohci_at91_hub_control(c7a86800,0xa006,0x2900,0x0000,c78b8b60,000f)
[    5.320312] at91_ohci 600000.ohci: wHubCharacteristics 0x0002
[    5.328125] at91_ohci 600000.ohci: wHubCharacteristics after 0x0001
[    5.328125] hub 2-0:1.0: 1 port detected
[    5.328125] at91_ohci 600000.ohci:
ohci_at91_hub_control(c7a86800,0xa000,0x0000,0x0000,c78b8b80,0004)
[    5.328125] at91_ohci 600000.ohci:
ohci_at91_hub_control(c7a86800,0x2303,0x0008,0x0001,c78b8c00,0000)
[    5.328125] at91_ohci 600000.ohci: SetPortFeat: POWER
[    5.328125] rtc rtc0: alarm rollover not handled
[    5.335937] rtc rtc0: invalid alarm value: 1900-1-1 0:0:0
[    5.343750] at91_rtc fffffeb0.rtc: rtc core: registered fffffeb0.rtc
as rtc0
[    5.351562] at91_rtc fffffeb0.rtc: AT91 Real Time Clock driver.
[    5.359375] AT91: Starting after software reset
[    5.367187] at91sam9_wdt: enabled (heartbeat=15 sec, nowayout=1)
[    5.375000] hidraw: raw HID events driver (C) Jiri Kosina
[    5.382812] usbcore: registered new interface driver usbhid
[    5.382812] usbhid: USB HID core driver
[    5.390625] NET: Registered protocol family 17
[    5.398437] bridge: automatic filtering via arp/ip/ip6tables has been
deprecated. Update your scripts to load br_netfilter if you need this.
[    5.421875] ubi0: attaching mtd1
[    5.429687] at91_ohci 600000.ohci:
ohci_at91_hub_control(c7a86800,0xa300,0x0000,0x0001,c7980a00,0004)
[    5.429687] at91_ohci 600000.ohci: GetPortStatus(0)
[    5.546875] usb 1-1: new high-speed USB device number 2 using atmel-ehci
[    5.703125] usb 1-1: New USB device found, idVendor=0424, idProduct=2512
[    5.703125] usb 1-1: New USB device strings: Mfr=0, Product=0,
SerialNumber=0
[    5.718750] hub 1-1:1.0: USB hub found
[    5.718750] hub 1-1:1.0: 2 ports detected
[    5.906250] ubi0: scanning is finished
[    5.929687] ubi0: attached mtd1 (name "ubi", size 127 MiB)
[    5.937500] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976
bytes
[    5.945312] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    5.945312] ubi0: VID header offset: 2048 (aligned 2048), data
offset: 4096
[    5.953125] ubi0: good PEBs: 1019, bad PEBs: 4, corrupted PEBs: 0
[    5.960937] ubi0: user volume: 9, internal volumes: 1, max. volumes
count: 128
[    5.968750] ubi0: max/mean erase counter: 22/16, WL threshold: 4096,
image sequence number: 1226704751
[    5.976562] ubi0: available PEBs: 94, total reserved PEBs: 925, PEBs
reserved for bad PEB handling: 16
[    5.984375] ubi0: background thread "ubi_bgt0d" started, PID 375
[    6.039062] input: gpio_keys as /devices/soc0/gpio_keys/input/input0
[    6.046875] at91_rtc fffffeb0.rtc: setting system clock to 2017-01-16
10:22:55 UTC (1484562175)
[    6.062500] usb 1-1.1: new full-speed USB device number 3 using
atmel-ehci
[    6.085937] UBIFS (ubi0:7): background thread "ubifs_bgt0_7" started,
PID 434
[    6.109375] UBIFS (ubi0:7): recovery needed
[    6.187500] usb 1-1.1: New USB device found, idVendor=2d71,
idProduct=0703
[    6.195312] usb 1-1.1: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[    6.203125] usb 1-1.1: Product: C
[    6.210937] usb 1-1.1: Manufacturer: OVERKIZ SAS
[    6.210937] usb 1-1.1: SerialNumber: 12-16
[    6.234375] UBIFS (ubi0:7): recovery completed
[    6.234375] UBIFS (ubi0:7): UBIFS: mounted UBI device 0, volume 7,
name "root"
[    6.242187] UBIFS (ubi0:7): LEB size: 126976 bytes (124 KiB),
min./max. I/O unit sizes: 2048 bytes/2048 bytes
[    6.250000] UBIFS (ubi0:7): FS size: 49393664 bytes (47 MiB, 389
LEBs), journal size 9023488 bytes (8 MiB, 72 LEBs)
[    6.257812] UBIFS (ubi0:7): reserved for root: 0 bytes (0 KiB)
[    6.265625] UBIFS (ubi0:7): media format: w4/r0 (latest is w4/r0),
UUID 8FB0025A-D045-4284-B10B-16D0A55EFC51, small LPT model
[    6.281250] VFS: Mounted root (ubifs filesystem) on device 0:13.
[    6.289062] devtmpfs: mounted
[    6.289062] Freeing unused kernel memory: 132K (c0441000 - c0462000)
[    6.359375] usb 1-1.2: new high-speed USB device number 4 using
atmel-ehci
[    6.476562] usb 1-1.2: New USB device found, idVendor=0424,
idProduct=2512
[    6.484375] usb 1-1.2: New USB device strings: Mfr=0, Product=0,
SerialNumber=0
[    6.492187] hub 1-1.2:1.0: USB hub found
[    6.500000] hub 1-1.2:1.0: 2 ports detected
[    6.789062] usb 1-1.2.1: new full-speed USB device number 5 using
atmel-ehci
[    6.921875] usb 1-1.2.1: New USB device found, idVendor=2d71,
idProduct=0702
[    6.921875] usb 1-1.2.1: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[    6.929687] usb 1-1.2.1: Product: B
[    6.937500] usb 1-1.2.1: Manufacturer: OVERKIZ SAS
[    6.945312] usb 1-1.2.1: SerialNumber: 12-16
[    7.132812] usb 1-1.2.2: new high-speed USB device number 6 using
atmel-ehci
[    7.250000] usb 1-1.2.2: New USB device found, idVendor=0424,
idProduct=2512
[    7.257812] usb 1-1.2.2: New USB device strings: Mfr=0, Product=0,
SerialNumber=0
[    7.335937] hub 1-1.2.2:1.0: USB hub found
[    7.382812] hub 1-1.2.2:1.0: 2 ports detected
[    7.476562] usbcore: registered new interface driver usbserial
[    7.476562] usbcore: registered new interface driver usbserial_generic
[    7.484375] usbserial: USB Serial support registered for generic
[    7.632812] usbcore: registered new interface driver ftdi_sio
[    7.640625] usbserial: USB Serial support registered for FTDI USB
Serial Device
[    7.648437] ftdi_sio 1-1.1:1.0: FTDI USB Serial Device converter detected
[    7.656250] usb 1-1.1: Detected FT232RL
[    7.679687] usb 1-1.2.2.1: new full-speed USB device number 7 using
atmel-ehci
[    7.796875] usb 1-1.1: FTDI USB Serial Device converter now attached
to ttyUSB0
[    7.804687] ftdi_sio 1-1.2.1:1.0: FTDI USB Serial Device converter
detected
[    7.812500] usb 1-1.2.1: Detected FT232RL
[    7.820312] cfg80211: Calling CRDA to update world regulatory domain
[    7.828125] usb 1-1.2.2.1: New USB device found, idVendor=2d71,
idProduct=0700
[    7.835937] usb 1-1.2.2.1: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[    7.843750] usb 1-1.2.2.1: Product: A
[    7.851562] usb 1-1.2.2.1: Manufacturer: OVERKIZ SAS
[    7.851562] usb 1-1.2.2.1: SerialNumber: 12-16
[    7.914062] usb 1-1.2.1: FTDI USB Serial Device converter now
attached to ttyUSB1
[    8.000000] ftdi_sio 1-1.2.2.1:1.0: FTDI USB Serial Device converter
detected
[    8.007812] usb 1-1.2.2.1: Detected FT232RL
[    8.054687] usb 1-1.2.2.1: FTDI USB Serial Device converter now
attached to ttyUSB2
[    8.187500] usb 1-1.2.2.2: new high-speed USB device number 8 using
atmel-ehci
[    8.312500] usb 1-1.2.2.2: New USB device found, idVendor=7392,
idProduct=7811
[    8.320312] usb 1-1.2.2.2: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[    8.328125] usb 1-1.2.2.2: Product: 802.11n WLAN Adapter
[    8.328125] usb 1-1.2.2.2: Manufacturer: Realtek
[    8.335937] usb 1-1.2.2.2: SerialNumber: 00e04c000001

>
> Thanks,
>
> Boris
>
>> This issue disappear when disabling OHCI and use EHCI only.
>>
>> What are the usual causes, and where to begin with ?
>>
>> Thanks in advance,
>>
Thanks,

^ permalink raw reply	[flat|nested] 7+ messages in thread

* USB: OHCI: high softirq load
  2017-01-16 10:31   ` Antoine Aubert
@ 2017-01-16 10:54     ` Antoine Aubert
  2017-01-16 11:14       ` Boris Brezillon
  0 siblings, 1 reply; 7+ messages in thread
From: Antoine Aubert @ 2017-01-16 10:54 UTC (permalink / raw)
  To: linux-arm-kernel

Also, I made a big misunderstanding

With EHCI + OHCI = high level of softirq (USB2.0)

OHCI only = normal level

Le 16/01/2017 ? 11:31, Antoine Aubert a ?crit :
> Thx for your answer Boris
>
> Le 16/01/2017 ? 10:02, Boris Brezillon a ?crit :
>> Hi Antoine,
>>
>> On Mon, 16 Jan 2017 08:45:58 +0100
>> Antoine Aubert <a.aubert@overkiz.com> wrote:
>>
>>> Hi,
>>>
>>> Im working on a AT91SAM9G25cu board
>>> (arch/arm/boot/dts/at91-kizboxmini.dts). We use linux-4.1.31, and when
>>> OHCI is enabled, I got some wired effects.
>> Can you test on a more recent kernel (4.9 or 4.10-rc4)?
> I'll give a try, just need little time ;)
>>> eg with 3 FTDI pluged, interrupts: more than 3.5k/s, cpu softirq > 24%,
>>> loadavg > 0.5
>> Can you check which interrupt is triggered (cat /proc/interrupts),
> cat /proc/interrupts
>            CPU0      
>  16:       2286  atmel-aic   1 Level     pmc, at91_tick, at91_rtc, ttyS0
>  17:          0       PMC  17 Level     main_rc_osc
>  18:          0       PMC   0 Level     main_osc
>  19:          0       PMC  16 Level     mainck
>  20:          0       PMC   1 Level     clk-plla
>  21:          0       PMC   6 Level     clk-utmi
>  22:          0       PMC   3 Level     clk-master
>  23:     945527  atmel-aic  17 Level     tc_clkevt
>  24:      21815  atmel-aic  20 Level     at_hdmac
>  25:          0  atmel-aic  21 Level     at_hdmac
>  30:     120299  atmel-aic  24 Level     eth0
>  31:   22783651  atmel-aic  22 Level     ehci_hcd:usb1, ohci_hcd:usb2
>  99:          0      GPIO  16 Edge      PB_RST
> 100:          0      GPIO  17 Edge      PB_PROG
> Err:          0
>
>>  and
>> enable debug messages in drivers/usb/host/ohci-at91.c?
> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Linux version 4.1.31 (antoine at ltp.antoine) (gcc version
> 4.9.2 (GCC) ) #1 Mon Jan 16 11:04:03 CET 2017
> [    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
> [    0.000000] CPU: VIVT data cache, VIVT instruction cache
> [    0.000000] Machine model: Overkiz Kizbox Mini RailDIN
> [    0.000000] bootconsole [earlycon0] enabled
> [    0.000000] Memory policy: Data cache writeback
> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on. 
> Total pages: 32512
> [    0.000000] Kernel command line: panic=5 oops=panic root=ubi0:root
> rootfstype=ubifs ubi.mtd=ubi rw console=ttyS0,115200 earlyprintk
> loglevel=7 dyndbg='file ohci-at91.c +p'
> [    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
> [    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536
> bytes)
> [    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
> [    0.000000] Memory: 125076K/131072K available (3204K kernel code,
> 136K rwdata, 1116K rodata, 132K init, 84K bss, 5996K reserved, 0K
> cma-reserved)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
> [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
> [    0.000000]     vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
> [    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
> [    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
> [    0.000000]       .text : 0xc0008000 - 0xc04404b4   (4322 kB)
> [    0.000000]       .init : 0xc0441000 - 0xc0462000   ( 132 kB)
> [    0.000000]       .data : 0xc0462000 - 0xc0484310   ( 137 kB)
> [    0.000000]        .bss : 0xc0484310 - 0xc0499550   (  85 kB)
> [    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> [    0.000000] NR_IRQS:16 nr_irqs:16 16
> [    0.000000] clocksource pit: mask: 0x7ffffff max_cycles: 0x7ffffff,
> max_idle_ns: 7167226906 ns
> [    0.000000] sched_clock: 32 bits at 128 Hz, resolution 7812500ns,
> wraps every 16777215996093750ns
> [    0.007812] Calibrating delay loop... 198.76 BogoMIPS (lpj=775168)
> [    0.078125] pid_max: default: 32768 minimum: 301
> [    0.085937] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.093750] Mountpoint-cache hash table entries: 1024 (order: 0, 4096
> bytes)
> [    0.101562] CPU: Testing write buffer coherency: ok
> [    0.101562] Setting up static identity map for 0x20008400 - 0x2000847c
> [    0.117187] dynamic_debug:ddebug_tokenize: unclosed quote: file
> [    0.125000] dynamic_debug:ddebug_exec_query: tokenize failed
> [    0.132812] devtmpfs: initialized
> [    0.164062] clocksource jiffies: mask: 0xffffffff max_cycles:
> 0xffffffff, max_idle_ns: 14931722236523437 ns
> [    0.171875] pinctrl core: initialized pinctrl subsystem
> [    0.179687] NET: Registered protocol family 16
> [    0.187500] DMA: preallocated 256 KiB pool for atomic coherent
> allocations
> [    0.195312] AT91: Detected SoC family: at91sam9x5
> [    0.203125] AT91: Detected SoC: at91sam9g25, revision 1
> [    0.226562] gpio-at91 fffff400.gpio: at address fefff400
> [    0.234375] gpio-at91 fffff600.gpio: at address fefff600
> [    0.242187] gpio-at91 fffff800.gpio: at address fefff800
> [    0.250000] gpio-at91 fffffa00.gpio: at address fefffa00
> [    0.257812] pinctrl-at91 ahb:apb:pinctrl at fffff400: initialized AT91
> pinctrl driver
> [    0.265625] clocksource tcb_clksrc: mask: 0xffffffff max_cycles:
> 0xffffffff, max_idle_ns: 114675631333 ns
> [    4.718750] UDP hash table entries: 256 (order: 0, 4096 bytes)
> [    4.726562] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
> [    4.734375] NET: Registered protocol family 1
> [    4.742187] futex hash table entries: 256 (order: -1, 3072 bytes)
> [    4.789062] squashfs: version 4.0 (2009/01/31) Phillip Lougher
> [    4.804687] io scheduler noop registered (default)
> [    4.812500] fffff200.serial: ttyS0 at MMIO 0xfffff200 (irq = 16,
> base_baud = 8333333) is a ATMEL_SERIAL
> [    4.820312] console [ttyS0] enabled
> [    4.828125] bootconsole [earlycon0] disabled
> [    4.851562] brd: module loaded
> [    4.882812] loop: module loaded
> [    4.898437] atmel_nand 40000000.nand: Use On Flash BBT
> [    4.898437] atmel_nand 40000000.nand: Using dma0chan0 for DMA transfers.
> [    4.906250] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xf1
> [    4.914062] nand: Micron MT29F1G08ABAEAWP
> [    4.921875] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048,
> OOB size: 64
> [    4.929687] atmel_nand 40000000.nand: minimum ECC: 4 bits in 512 bytes
> [    4.929687] atmel_nand 40000000.nand: Initialize PMECC params, cap:
> 4, sector: 512
> [    4.945312] Bad block table found at page 65472, version 0x01
> [    4.945312] Bad block table found at page 65408, version 0x01
> [    4.953125] 2 ofpart partitions found on MTD device atmel_nand
> [    4.960937] Creating 2 MTD partitions on "atmel_nand":
> [    4.968750] 0x000000000000-0x000000020000 : "bootstrap"
> [    4.976562] 0x000000020000-0x000008000000 : "ubi"
> [    4.992187] macb f802c000.ethernet (unnamed net_device)
> (uninitialized): invalid hw address, using random
> [    5.000000] libphy: MACB_mii_bus: probed
> [    5.093750] macb f802c000.ethernet eth0: Cadence MACB rev 0x0001010c
> at 0xf802c000 irq 30 (8e:06:02:88:ed:97)
> [    5.101562] macb f802c000.ethernet eth0: attached PHY driver [Micrel
> KSZ8081 or KSZ8091] (mii_bus:phy_addr=f802c000.etherne:01, irq=-1)
> [    5.109375] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> [    5.117187] ehci-atmel: EHCI Atmel driver
> [    5.125000] atmel-ehci 700000.ehci: EHCI Host Controller
> [    5.125000] atmel-ehci 700000.ehci: new USB bus registered, assigned
> bus number 1
> [    5.140625] atmel-ehci 700000.ehci: irq 31, io mem 0x00700000
> [    5.156250] atmel-ehci 700000.ehci: USB 2.0 started, EHCI 1.00
> [    5.156250] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
> [    5.164062] usb usb1: New USB device strings: Mfr=3, Product=2,
> SerialNumber=1
> [    5.171875] usb usb1: Product: EHCI Host Controller
> [    5.179687] usb usb1: Manufacturer: Linux 4.1.31 ehci_hcd
> [    5.179687] usb usb1: SerialNumber: 700000.ehci
> [    5.187500] hub 1-0:1.0: USB hub found
> [    5.195312] hub 1-0:1.0: 3 ports detected
> [    5.203125] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
> [    5.203125] ohci-atmel: OHCI Atmel driver
> [    5.210937] at91_ohci 600000.ohci: start
> [    5.210937] at91_ohci 600000.ohci: USB Host Controller
> [    5.218750] at91_ohci 600000.ohci: new USB bus registered, assigned
> bus number 2
> [    5.226562] at91_ohci 600000.ohci: irq 31, io mem 0x00600000
> [    5.289062] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
> [    5.296875] usb usb2: New USB device strings: Mfr=3, Product=2,
> SerialNumber=1
> [    5.304687] usb usb2: Product: USB Host Controller
> [    5.304687] usb usb2: Manufacturer: Linux 4.1.31 ohci_hcd
> [    5.312500] usb usb2: SerialNumber: at91
> [    5.320312] hub 2-0:1.0: USB hub found
> [    5.320312] at91_ohci 600000.ohci:
> ohci_at91_hub_control(c7a86800,0xa006,0x2900,0x0000,c78b8b60,000f)
> [    5.320312] at91_ohci 600000.ohci: wHubCharacteristics 0x0002
> [    5.328125] at91_ohci 600000.ohci: wHubCharacteristics after 0x0001
> [    5.328125] hub 2-0:1.0: 1 port detected
> [    5.328125] at91_ohci 600000.ohci:
> ohci_at91_hub_control(c7a86800,0xa000,0x0000,0x0000,c78b8b80,0004)
> [    5.328125] at91_ohci 600000.ohci:
> ohci_at91_hub_control(c7a86800,0x2303,0x0008,0x0001,c78b8c00,0000)
> [    5.328125] at91_ohci 600000.ohci: SetPortFeat: POWER
> [    5.328125] rtc rtc0: alarm rollover not handled
> [    5.335937] rtc rtc0: invalid alarm value: 1900-1-1 0:0:0
> [    5.343750] at91_rtc fffffeb0.rtc: rtc core: registered fffffeb0.rtc
> as rtc0
> [    5.351562] at91_rtc fffffeb0.rtc: AT91 Real Time Clock driver.
> [    5.359375] AT91: Starting after software reset
> [    5.367187] at91sam9_wdt: enabled (heartbeat=15 sec, nowayout=1)
> [    5.375000] hidraw: raw HID events driver (C) Jiri Kosina
> [    5.382812] usbcore: registered new interface driver usbhid
> [    5.382812] usbhid: USB HID core driver
> [    5.390625] NET: Registered protocol family 17
> [    5.398437] bridge: automatic filtering via arp/ip/ip6tables has been
> deprecated. Update your scripts to load br_netfilter if you need this.
> [    5.421875] ubi0: attaching mtd1
> [    5.429687] at91_ohci 600000.ohci:
> ohci_at91_hub_control(c7a86800,0xa300,0x0000,0x0001,c7980a00,0004)
> [    5.429687] at91_ohci 600000.ohci: GetPortStatus(0)
> [    5.546875] usb 1-1: new high-speed USB device number 2 using atmel-ehci
> [    5.703125] usb 1-1: New USB device found, idVendor=0424, idProduct=2512
> [    5.703125] usb 1-1: New USB device strings: Mfr=0, Product=0,
> SerialNumber=0
> [    5.718750] hub 1-1:1.0: USB hub found
> [    5.718750] hub 1-1:1.0: 2 ports detected
> [    5.906250] ubi0: scanning is finished
> [    5.929687] ubi0: attached mtd1 (name "ubi", size 127 MiB)
> [    5.937500] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976
> bytes
> [    5.945312] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
> [    5.945312] ubi0: VID header offset: 2048 (aligned 2048), data
> offset: 4096
> [    5.953125] ubi0: good PEBs: 1019, bad PEBs: 4, corrupted PEBs: 0
> [    5.960937] ubi0: user volume: 9, internal volumes: 1, max. volumes
> count: 128
> [    5.968750] ubi0: max/mean erase counter: 22/16, WL threshold: 4096,
> image sequence number: 1226704751
> [    5.976562] ubi0: available PEBs: 94, total reserved PEBs: 925, PEBs
> reserved for bad PEB handling: 16
> [    5.984375] ubi0: background thread "ubi_bgt0d" started, PID 375
> [    6.039062] input: gpio_keys as /devices/soc0/gpio_keys/input/input0
> [    6.046875] at91_rtc fffffeb0.rtc: setting system clock to 2017-01-16
> 10:22:55 UTC (1484562175)
> [    6.062500] usb 1-1.1: new full-speed USB device number 3 using
> atmel-ehci
> [    6.085937] UBIFS (ubi0:7): background thread "ubifs_bgt0_7" started,
> PID 434
> [    6.109375] UBIFS (ubi0:7): recovery needed
> [    6.187500] usb 1-1.1: New USB device found, idVendor=2d71,
> idProduct=0703
> [    6.195312] usb 1-1.1: New USB device strings: Mfr=1, Product=2,
> SerialNumber=3
> [    6.203125] usb 1-1.1: Product: C
> [    6.210937] usb 1-1.1: Manufacturer: OVERKIZ SAS
> [    6.210937] usb 1-1.1: SerialNumber: 12-16
> [    6.234375] UBIFS (ubi0:7): recovery completed
> [    6.234375] UBIFS (ubi0:7): UBIFS: mounted UBI device 0, volume 7,
> name "root"
> [    6.242187] UBIFS (ubi0:7): LEB size: 126976 bytes (124 KiB),
> min./max. I/O unit sizes: 2048 bytes/2048 bytes
> [    6.250000] UBIFS (ubi0:7): FS size: 49393664 bytes (47 MiB, 389
> LEBs), journal size 9023488 bytes (8 MiB, 72 LEBs)
> [    6.257812] UBIFS (ubi0:7): reserved for root: 0 bytes (0 KiB)
> [    6.265625] UBIFS (ubi0:7): media format: w4/r0 (latest is w4/r0),
> UUID 8FB0025A-D045-4284-B10B-16D0A55EFC51, small LPT model
> [    6.281250] VFS: Mounted root (ubifs filesystem) on device 0:13.
> [    6.289062] devtmpfs: mounted
> [    6.289062] Freeing unused kernel memory: 132K (c0441000 - c0462000)
> [    6.359375] usb 1-1.2: new high-speed USB device number 4 using
> atmel-ehci
> [    6.476562] usb 1-1.2: New USB device found, idVendor=0424,
> idProduct=2512
> [    6.484375] usb 1-1.2: New USB device strings: Mfr=0, Product=0,
> SerialNumber=0
> [    6.492187] hub 1-1.2:1.0: USB hub found
> [    6.500000] hub 1-1.2:1.0: 2 ports detected
> [    6.789062] usb 1-1.2.1: new full-speed USB device number 5 using
> atmel-ehci
> [    6.921875] usb 1-1.2.1: New USB device found, idVendor=2d71,
> idProduct=0702
> [    6.921875] usb 1-1.2.1: New USB device strings: Mfr=1, Product=2,
> SerialNumber=3
> [    6.929687] usb 1-1.2.1: Product: B
> [    6.937500] usb 1-1.2.1: Manufacturer: OVERKIZ SAS
> [    6.945312] usb 1-1.2.1: SerialNumber: 12-16
> [    7.132812] usb 1-1.2.2: new high-speed USB device number 6 using
> atmel-ehci
> [    7.250000] usb 1-1.2.2: New USB device found, idVendor=0424,
> idProduct=2512
> [    7.257812] usb 1-1.2.2: New USB device strings: Mfr=0, Product=0,
> SerialNumber=0
> [    7.335937] hub 1-1.2.2:1.0: USB hub found
> [    7.382812] hub 1-1.2.2:1.0: 2 ports detected
> [    7.476562] usbcore: registered new interface driver usbserial
> [    7.476562] usbcore: registered new interface driver usbserial_generic
> [    7.484375] usbserial: USB Serial support registered for generic
> [    7.632812] usbcore: registered new interface driver ftdi_sio
> [    7.640625] usbserial: USB Serial support registered for FTDI USB
> Serial Device
> [    7.648437] ftdi_sio 1-1.1:1.0: FTDI USB Serial Device converter detected
> [    7.656250] usb 1-1.1: Detected FT232RL
> [    7.679687] usb 1-1.2.2.1: new full-speed USB device number 7 using
> atmel-ehci
> [    7.796875] usb 1-1.1: FTDI USB Serial Device converter now attached
> to ttyUSB0
> [    7.804687] ftdi_sio 1-1.2.1:1.0: FTDI USB Serial Device converter
> detected
> [    7.812500] usb 1-1.2.1: Detected FT232RL
> [    7.820312] cfg80211: Calling CRDA to update world regulatory domain
> [    7.828125] usb 1-1.2.2.1: New USB device found, idVendor=2d71,
> idProduct=0700
> [    7.835937] usb 1-1.2.2.1: New USB device strings: Mfr=1, Product=2,
> SerialNumber=3
> [    7.843750] usb 1-1.2.2.1: Product: A
> [    7.851562] usb 1-1.2.2.1: Manufacturer: OVERKIZ SAS
> [    7.851562] usb 1-1.2.2.1: SerialNumber: 12-16
> [    7.914062] usb 1-1.2.1: FTDI USB Serial Device converter now
> attached to ttyUSB1
> [    8.000000] ftdi_sio 1-1.2.2.1:1.0: FTDI USB Serial Device converter
> detected
> [    8.007812] usb 1-1.2.2.1: Detected FT232RL
> [    8.054687] usb 1-1.2.2.1: FTDI USB Serial Device converter now
> attached to ttyUSB2
> [    8.187500] usb 1-1.2.2.2: new high-speed USB device number 8 using
> atmel-ehci
> [    8.312500] usb 1-1.2.2.2: New USB device found, idVendor=7392,
> idProduct=7811
> [    8.320312] usb 1-1.2.2.2: New USB device strings: Mfr=1, Product=2,
> SerialNumber=3
> [    8.328125] usb 1-1.2.2.2: Product: 802.11n WLAN Adapter
> [    8.328125] usb 1-1.2.2.2: Manufacturer: Realtek
> [    8.335937] usb 1-1.2.2.2: SerialNumber: 00e04c000001
>
>> Thanks,
>>
>> Boris
>>
>>> This issue disappear when disabling OHCI and use EHCI only.
>>>
>>> What are the usual causes, and where to begin with ?
>>>
>>> Thanks in advance,
>>>
> Thanks,
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* USB: OHCI: high softirq load
  2017-01-16 10:54     ` Antoine Aubert
@ 2017-01-16 11:14       ` Boris Brezillon
  2017-01-16 14:47         ` Johan Hovold
  0 siblings, 1 reply; 7+ messages in thread
From: Boris Brezillon @ 2017-01-16 11:14 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 16 Jan 2017 11:54:23 +0100
Antoine Aubert <a.aubert@overkiz.com> wrote:

> Also, I made a big misunderstanding
> 
> With EHCI + OHCI = high level of softirq (USB2.0)

Well, the number of irqs and softirqs are likely to be related (you
usually trigger a softirq after you received an hardirq).

> 
> OHCI only = normal level

What about EHCI only? And what happens if you only plug 1 device?
Please share the content of /proc/interrupts (and everything you think
is relevant) for each of these cases.

> 
> Le 16/01/2017 ? 11:31, Antoine Aubert a ?crit :
> > Thx for your answer Boris
> >
> > Le 16/01/2017 ? 10:02, Boris Brezillon a ?crit :  
> >> Hi Antoine,
> >>
> >> On Mon, 16 Jan 2017 08:45:58 +0100
> >> Antoine Aubert <a.aubert@overkiz.com> wrote:
> >>  
> >>> Hi,
> >>>
> >>> Im working on a AT91SAM9G25cu board
> >>> (arch/arm/boot/dts/at91-kizboxmini.dts). We use linux-4.1.31, and when
> >>> OHCI is enabled, I got some wired effects.  
> >> Can you test on a more recent kernel (4.9 or 4.10-rc4)?  
> > I'll give a try, just need little time ;)  
> >>> eg with 3 FTDI pluged, interrupts: more than 3.5k/s, cpu softirq > 24%,
> >>> loadavg > 0.5  
> >> Can you check which interrupt is triggered (cat /proc/interrupts),  
> > cat /proc/interrupts
> >            CPU0      
> >  16:       2286  atmel-aic   1 Level     pmc, at91_tick, at91_rtc, ttyS0
> >  17:          0       PMC  17 Level     main_rc_osc
> >  18:          0       PMC   0 Level     main_osc
> >  19:          0       PMC  16 Level     mainck
> >  20:          0       PMC   1 Level     clk-plla
> >  21:          0       PMC   6 Level     clk-utmi
> >  22:          0       PMC   3 Level     clk-master
> >  23:     945527  atmel-aic  17 Level     tc_clkevt
> >  24:      21815  atmel-aic  20 Level     at_hdmac
> >  25:          0  atmel-aic  21 Level     at_hdmac
> >  30:     120299  atmel-aic  24 Level     eth0
> >  31:   22783651  atmel-aic  22 Level     ehci_hcd:usb1, ohci_hcd:usb2
> >  99:          0      GPIO  16 Edge      PB_RST
> > 100:          0      GPIO  17 Edge      PB_PROG
> > Err:          0
> >  
> >>  and
> >> enable debug messages in drivers/usb/host/ohci-at91.c?  

Actually, I was asking for debug messages. You can enable them
dynamically with dynamic printk [1].
BTW, please use pastebin (or any other alternative) to share these
information.

Thanks,

Boris

[1]http://lxr.free-electrons.com/source/Documentation/dynamic-debug-howto.txt

^ permalink raw reply	[flat|nested] 7+ messages in thread

* USB: OHCI: high softirq load
  2017-01-16 11:14       ` Boris Brezillon
@ 2017-01-16 14:47         ` Johan Hovold
  2017-01-16 16:11           ` Antoine Aubert
  0 siblings, 1 reply; 7+ messages in thread
From: Johan Hovold @ 2017-01-16 14:47 UTC (permalink / raw)
  To: linux-arm-kernel

[ +CC: linux-usb ]

On Mon, Jan 16, 2017 at 12:14:03PM +0100, Boris Brezillon wrote:
> On Mon, 16 Jan 2017 11:54:23 +0100
> Antoine Aubert <a.aubert@overkiz.com> wrote:
> 
> > Also, I made a big misunderstanding
> > 
> > With EHCI + OHCI = high level of softirq (USB2.0)
> 
> Well, the number of irqs and softirqs are likely to be related (you
> usually trigger a softirq after you received an hardirq).
> 
> > 
> > OHCI only = normal level
> 
> What about EHCI only? And what happens if you only plug 1 device?
> Please share the content of /proc/interrupts (and everything you think
> is relevant) for each of these cases.
> 
> > 
> > Le 16/01/2017 ? 11:31, Antoine Aubert a ?crit :
> > > Thx for your answer Boris
> > >
> > > Le 16/01/2017 ? 10:02, Boris Brezillon a ?crit :  
> > >> Hi Antoine,
> > >>
> > >> On Mon, 16 Jan 2017 08:45:58 +0100
> > >> Antoine Aubert <a.aubert@overkiz.com> wrote:
> > >>  
> > >>> Hi,
> > >>>
> > >>> Im working on a AT91SAM9G25cu board
> > >>> (arch/arm/boot/dts/at91-kizboxmini.dts). We use linux-4.1.31, and when
> > >>> OHCI is enabled, I got some wired effects.  
> > >> Can you test on a more recent kernel (4.9 or 4.10-rc4)?  
> > > I'll give a try, just need little time ;)  
> > >>> eg with 3 FTDI pluged, interrupts: more than 3.5k/s, cpu softirq > 24%,
> > >>> loadavg > 0.5  
> > >> Can you check which interrupt is triggered (cat /proc/interrupts),  
> > > cat /proc/interrupts
> > >            CPU0      
> > >  16:       2286  atmel-aic   1 Level     pmc, at91_tick, at91_rtc, ttyS0
> > >  17:          0       PMC  17 Level     main_rc_osc
> > >  18:          0       PMC   0 Level     main_osc
> > >  19:          0       PMC  16 Level     mainck
> > >  20:          0       PMC   1 Level     clk-plla
> > >  21:          0       PMC   6 Level     clk-utmi
> > >  22:          0       PMC   3 Level     clk-master
> > >  23:     945527  atmel-aic  17 Level     tc_clkevt
> > >  24:      21815  atmel-aic  20 Level     at_hdmac
> > >  25:          0  atmel-aic  21 Level     at_hdmac
> > >  30:     120299  atmel-aic  24 Level     eth0
> > >  31:   22783651  atmel-aic  22 Level     ehci_hcd:usb1, ohci_hcd:usb2
> > >  99:          0      GPIO  16 Edge      PB_RST
> > > 100:          0      GPIO  17 Edge      PB_PROG
> > > Err:          0

Note that the ftdi driver uses a low-latency setting by default which
implies that the device sends a status update every millisecond. Hence,
the 1k interrupts per second (per device) while the port is open is
expected.

You can disable the low-latency behaviour using setserial:

	setserial /dev/ttyUSB0 ^low_latency

and see the number of interrupts drop to 1/16th. This can then be
reduced further by changing the latency_timer from its
(non-low-latency) default of 16 ms, for example:

	echo 64 >/sys/bus/usb-serial/devices/ttyUSB0/latency_timer

Johan

^ permalink raw reply	[flat|nested] 7+ messages in thread

* USB: OHCI: high softirq load
  2017-01-16 14:47         ` Johan Hovold
@ 2017-01-16 16:11           ` Antoine Aubert
  0 siblings, 0 replies; 7+ messages in thread
From: Antoine Aubert @ 2017-01-16 16:11 UTC (permalink / raw)
  To: linux-arm-kernel

Thanks Johan, you save my day.

Indeed, soft irq coming from ftdi_sio updates, with very high rate.
(dyndbg='file drivers/usb/* +p')

reducing latency timer = reducing sofirq.

Problem solved.

Antoine Aubert
a.aubert at overkiz.com

Le 16/01/2017 ? 15:47, Johan Hovold a ?crit :
> [ +CC: linux-usb ]
>
> On Mon, Jan 16, 2017 at 12:14:03PM +0100, Boris Brezillon wrote:
>> On Mon, 16 Jan 2017 11:54:23 +0100
>> Antoine Aubert <a.aubert@overkiz.com> wrote:
>>
>>> Also, I made a big misunderstanding
>>>
>>> With EHCI + OHCI = high level of softirq (USB2.0)
>> Well, the number of irqs and softirqs are likely to be related (you
>> usually trigger a softirq after you received an hardirq).
>>
>>> OHCI only = normal level
>> What about EHCI only? And what happens if you only plug 1 device?
>> Please share the content of /proc/interrupts (and everything you think
>> is relevant) for each of these cases.
>>
>>> Le 16/01/2017 ? 11:31, Antoine Aubert a ?crit :
>>>> Thx for your answer Boris
>>>>
>>>> Le 16/01/2017 ? 10:02, Boris Brezillon a ?crit :  
>>>>> Hi Antoine,
>>>>>
>>>>> On Mon, 16 Jan 2017 08:45:58 +0100
>>>>> Antoine Aubert <a.aubert@overkiz.com> wrote:
>>>>>  
>>>>>> Hi,
>>>>>>
>>>>>> Im working on a AT91SAM9G25cu board
>>>>>> (arch/arm/boot/dts/at91-kizboxmini.dts). We use linux-4.1.31, and when
>>>>>> OHCI is enabled, I got some wired effects.  
>>>>> Can you test on a more recent kernel (4.9 or 4.10-rc4)?  
>>>> I'll give a try, just need little time ;)  
>>>>>> eg with 3 FTDI pluged, interrupts: more than 3.5k/s, cpu softirq > 24%,
>>>>>> loadavg > 0.5  
>>>>> Can you check which interrupt is triggered (cat /proc/interrupts),  
>>>> cat /proc/interrupts
>>>>            CPU0      
>>>>  16:       2286  atmel-aic   1 Level     pmc, at91_tick, at91_rtc, ttyS0
>>>>  17:          0       PMC  17 Level     main_rc_osc
>>>>  18:          0       PMC   0 Level     main_osc
>>>>  19:          0       PMC  16 Level     mainck
>>>>  20:          0       PMC   1 Level     clk-plla
>>>>  21:          0       PMC   6 Level     clk-utmi
>>>>  22:          0       PMC   3 Level     clk-master
>>>>  23:     945527  atmel-aic  17 Level     tc_clkevt
>>>>  24:      21815  atmel-aic  20 Level     at_hdmac
>>>>  25:          0  atmel-aic  21 Level     at_hdmac
>>>>  30:     120299  atmel-aic  24 Level     eth0
>>>>  31:   22783651  atmel-aic  22 Level     ehci_hcd:usb1, ohci_hcd:usb2
>>>>  99:          0      GPIO  16 Edge      PB_RST
>>>> 100:          0      GPIO  17 Edge      PB_PROG
>>>> Err:          0
> Note that the ftdi driver uses a low-latency setting by default which
> implies that the device sends a status update every millisecond. Hence,
> the 1k interrupts per second (per device) while the port is open is
> expected.
>
> You can disable the low-latency behaviour using setserial:
>
> 	setserial /dev/ttyUSB0 ^low_latency
>
> and see the number of interrupts drop to 1/16th. This can then be
> reduced further by changing the latency_timer from its
> (non-low-latency) default of 16 ms, for example:
>
> 	echo 64 >/sys/bus/usb-serial/devices/ttyUSB0/latency_timer
>
> Johan

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-01-16 16:11 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-16  7:45 USB: OHCI: high softirq load Antoine Aubert
2017-01-16  9:02 ` Boris Brezillon
2017-01-16 10:31   ` Antoine Aubert
2017-01-16 10:54     ` Antoine Aubert
2017-01-16 11:14       ` Boris Brezillon
2017-01-16 14:47         ` Johan Hovold
2017-01-16 16:11           ` Antoine Aubert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.