Re: genirq: Flags mismatch irq 4. 00000000 (serial) vs. 00000080 (goldfish_pdev_bus)

From: Dmitry Vyukov
Date: Mon Apr 04 2016 - 04:07:22 EST


On Mon, Apr 4, 2016 at 9:55 AM, Jiri Slaby <jslaby@xxxxxxx> wrote:
> On 04/02/2016, 12:35 PM, Dmitry Vyukov wrote:
>> Hello,
>>
>> After updating from 8e0f93cda48ed054e1216bab5c60017e1a5fc1e8 to
>> 05cf8077e54b20dddb756eaa26f3aeb5c38dd3cf (Apr 1) I've started seeing
>> the following warnings:
>>
>> genirq: Flags mismatch irq 4. 00000000 (serial) vs. 00000080 (goldfish_pdev_bus)
>> CPU: 3 PID: 6626 Comm: init Tainted: G W 4.6.0-rc1+ #338
>> Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
>> ffffffff87eb26a0 ffff88003da17618 ffffffff82c8ea9f ffffffff86f0c740
>> fffffbfff0fd64d4 ffff88003e8a6aa8 ffff88005eb4c4c8 00000000fffffff0
>> ffffffff874f6be0 ffff880034ae63a8 ffff88003da17708 ffffffff8149e73c
>> Call Trace:
>> [< inline >] __dump_stack lib/dump_stack.c:15
>> [<ffffffff82c8ea9f>] dump_stack+0x12e/0x18f lib/dump_stack.c:51
>> [<ffffffff8149e73c>] __setup_irq+0x11fc/0x1610 kernel/irq/manage.c:1369
>> [<ffffffff8149ef55>] request_threaded_irq+0x275/0x410 kernel/irq/manage.c:1652
>> [< inline >] request_irq include/linux/interrupt.h:147
> ...
>> They appear after boot every 10 seconds.
>> I am using qemu. Here are GOLDFISH related .config values:
>>
>> CONFIG_GOLDFISH=y
>> # CONFIG_X86_GOLDFISH is not set
>> CONFIG_KEYBOARD_GOLDFISH_EVENTS=y
>> CONFIG_GOLDFISH_TTY=y
>> CONFIG_BATTERY_GOLDFISH=y
>> CONFIG_FB_GOLDFISH=y
>> CONFIG_MMC_GOLDFISH=y
>> CONFIG_GOLDFISH_AUDIO=y
>> CONFIG_MTD_GOLDFISH_NAND=y
>> CONFIG_GOLDFISH_BUS=y
>> CONFIG_GOLDFISH_PIPE=y
>>
>> Is it a known issue? How can it be fixed?
>
> This is a conflict between request_irq of goldfish and 8250. Setting
> SERIAL_8250_SHARE_IRQ (which is the default) should make the trace gone.

I have it set, but still see the warning.

$ grep "8250" .config
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_CS=y
CONFIG_SERIAL_8250_NR_UARTS=32
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
# CONFIG_SERIAL_8250_FSL is not set
CONFIG_SERIAL_8250_DW=y
CONFIG_SERIAL_8250_FINTEK=y
CONFIG_SERIAL_8250_MID=y
CONFIG_SERIAL_8250_MOXA=y
# Non-8250 serial port support



> Note that GOLDFISH=y makes sense only if you build a goldfish kernel.
> I.e. setting both 8250 and goldfish does not make much sense IIRC.

Won't it happen with allmodconfig which seems to enable both?

$ make allmodconfig
# egrep "GOLDFISH|8250" .config
CONFIG_GOLDFISH=y
CONFIG_X86_GOLDFISH=y
CONFIG_KEYBOARD_GOLDFISH_EVENTS=m
CONFIG_GOLDFISH_TTY=m
CONFIG_SERIAL_8250=m
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCI=m
CONFIG_SERIAL_8250_CS=m
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_8250_BCM2835AUX=m
CONFIG_SERIAL_8250_DW=m
CONFIG_SERIAL_8250_RT288X=y
CONFIG_SERIAL_8250_FINTEK=m
CONFIG_SERIAL_8250_LPC18XX=m
CONFIG_SERIAL_8250_MID=m
CONFIG_SERIAL_8250_MOXA=m
# Non-8250 serial port support
CONFIG_BATTERY_GOLDFISH=m
CONFIG_FB_GOLDFISH=m
CONFIG_MMC_GOLDFISH=m
CONFIG_GOLDFISH_AUDIO=m
CONFIG_MTD_GOLDFISH_NAND=m
CONFIG_GOLDFISH_BUS=y
CONFIG_GOLDFISH_PIPE=m