Re: pinctrl_cherryview: massive error messages (handle_bad_irq)

From: Mika Westerberg
Date: Thu Oct 20 2016 - 14:01:47 EST


On Thu, Oct 20, 2016 at 03:36:32PM +0000, Christian Steiner wrote:
> >> Currently I am using BIOS v1.22. Recently Acer released v1.23. I could
> >> test if the BIOS update solves the problem.
> >
> > Please try that first.
>
> Updating the BIOS to v1.23 solved the problem. Thank you very much for
> your advice!

Good to know :)

> > If that does not work, then I we may be able to mask all interrupts up
> > to nirqs - 1 but I first would like to check if the BIOS upgrade helps.
> >
> >>>> If you need more information or if I should test a patch, please let me
> >>>> know.
> >>>
> >>> Can you send me output of /proc/interrupts and
> >>> /sys/kernel/debug/pinctrl/INT33FF:*/pins.
> >>
> >> Of course:
> >>
> >>> $ cat /proc/interrupts
> >>> CPU0 CPU1 CPU2 CPU3
> >>> 0: 1388 0 0 0 IO-APIC 2-edge timer
> >>> 1: 17 3 4 3 IO-APIC 1-edge i8042
> >>> 8: 1 0 0 0 IO-APIC 8-edge rtc0
> >>> 9: 28 23 22 23 IO-APIC 9-fasteoi acpi
> >>> 12: 76 36 36 36 IO-APIC 12-edge i8042
> >>> 18: 0 0 0 0 IO-APIC 18-fasteoi i801_smbus
> >>> 45: 13 17 9 13 IO-APIC 45-fasteoi mmc0
> >>> 47: 0 0 0 0 IO-APIC 47-fasteoi mmc1
> >>> 115: 7816 7632 7694 7549 PCI-MSI 311296-edge ahci[0000:00:13.0]
> >>> 116: 43793 44661 43670 44402 PCI-MSI 1572864-edge eth0
> >>> 117: 10759 0 0 0 chv-gpio 0
> >>> 191: 0 0 0 0 chv-gpio 50 80860F14:01 cd
> >>> 196: 35 37 40 41 PCI-MSI 1048576-edge iwlwifi
> >>> 197: 24359 22517 23054 22852 PCI-MSI 327680-edge xhci_hcd
> >>> 198: 174515 168035 165519 167706 PCI-MSI 32768-edge i915
> >>> 199: 20 18 18 16 PCI-MSI 442368-edge snd_hda_intel:card0
> >>> NMI: 0 0 0 0 Non-maskable interrupts
> >>> LOC: 409748 405619 425239 440549 Local timer interrupts
> >>> SPU: 0 0 0 0 Spurious interrupts
> >>> PMI: 0 0 0 0 Performance monitoring interrupts
> >>> IWI: 0 0 0 0 IRQ work interrupts
> >>> RTR: 0 0 0 0 APIC ICR read retries
> >>> RES: 74598 69435 68734 60007 Rescheduling interrupts
> >>> CAL: 23842 28885 29873 26859 Function call interrupts
> >>> TLB: 17407 23763 25060 21008 TLB shootdowns
> >>> TRM: 0 0 0 0 Thermal event interrupts
> >>> THR: 0 0 0 0 Threshold APIC interrupts
> >>> MCE: 0 0 0 0 Machine check exceptions
> >>> MCP: 45 44 44 44 Machine check polls
> >>> ERR: 0
> >>> MIS: 0
> >>> PIN: 0 0 0 0 Posted-interrupt notification event
> >>> PIW: 0 0 0 0 Posted-interrupt wakeup event
>
> FYI: IRQ 117 is no longer listed in /proc/interrupts with BIOS v1.23.
>
> >>
> >>> $ cat /sys/kernel/debug/pinctrl/INT33FF:*/pin
> >>> registered pins: 24
> >>> pin 0 (PMU_SLP_S3_B) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 1 (PMU_BATLOW_B) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 2 (SUS_STAT_B) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 3 (PMU_SLP_S0IX_B) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 4 (PMU_AC_PRESENT) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 5 (PMU_PLTRST_B) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 6 (PMU_SUSCLK) mode 1 ctrl0 0x00010000 ctrl1 0x04c00000
> >>> pin 7 (PMU_SLP_LAN_B) mode 1 ctrl0 0x00010000 ctrl1 0x04c00000
> >>> pin 8 (PMU_PWRBTN_B) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 9 (PMU_SLP_S4_B) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> >>> pin 10 (PMU_WAKE_B) mode 1 ctrl0 0x00c10001 ctrl1 0x04c00000
> >>> pin 11 (PMU_WAKE_LAN_B) GPIO ctrl0 0x00018300 ctrl1 0x04c00000
> >>> pin 15 (MF_ISH_GPIO_3) mode 1 ctrl0 0x00010000 ctrl1 0x04c00000
> >>> pin 16 (MF_ISH_GPIO_7) GPIO ctrl0 0x00018102 ctrl1 0x04c00000
> >>> pin 17 (MF_ISH_I2C1_SCL) GPIO ctrl0 0x00018102 ctrl1 0x04c00000
> >>> pin 18 (MF_ISH_GPIO_1) mode 1 ctrl0 0x00010000 ctrl1 0x04c00000
> >>> pin 19 (MF_ISH_GPIO_5) GPIO ctrl0 0x10008201 ctrl1 0x04c00004
> >
> > It most probably is this one. Active high and the line is high so this
> > is generating interrupts all the time if not masked.
>
> Looks you were right. Here is a diff of the changes (-: BIOS v1.22, +:
> BIOS v1.23):
>
> -pin 19 (MF_ISH_GPIO_5) GPIO ctrl0 0x10008201 ctrl1 0x04c00004
> +pin 19 (MF_ISH_GPIO_5) GPIO ctrl0 0x10008200 ctrl1 0x04c00004

Yes the pin is now low instead of high so should not generate
interrupts.

> -pin 49 (MF_LPC_CLKOUT1) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
> +pin 49 (MF_LPC_CLKOUT1) mode 1 ctrl0 0x00010000 ctrl1 0x04c00000
> -pin 51 (MF_LPC_CLKOUT0) mode 1 ctrl0 0x00010000 ctrl1 0x04c00000
> +pin 51 (MF_LPC_CLKOUT0) mode 1 ctrl0 0x00010001 ctrl1 0x04c00000
>
> By the way, is the message
> > Cannot set affinity for irq 191
> in the above kernel logs something to care about?

It just means that the driver does not implement ->set_affinity() for
the IRQ which is fine as the GPIO hardware does not support that.