On Thu, Dec 27, 2018 at 05:48:52AM -0500, Brian Masney wrote: > I tracked down the issue but I'm not exactly sure how to fix this yet. > The initial device probing of spmi/spmi-pmic-arb.c and > mfd/qcom-spmi-pmic.c triggers the function call > qpnpint_irq_domain_alloc() in spmi-pmic-arb.c, which associates the > hwirq with the Linux virq. There is no IRQ hierarchy setup at this point > since pinctrl-spmi-gpio.c is not initialized yet. This is when Linux > virq 54 is assigned to the pin for the volume up button. > > Further along in the boot process, gpio-keys is initialized, which calls > the alloc functions for the IRQ domains pinctrl-spmi-gpio.c and > spmi-pmic-arb.c. This is when Linux virq 110 is assigned for the volume > up button. The hwirq for the volume up button is now associated with two > Linux virqs (54 and 110). Later, when a hardware interrupt occurs, > irq_find_mapping() returns the first virq (54). I was able to get this working by calling irq_domain_disassociate() when this situation occurs, but it doesn't feel right. I sent out a v1 patch series and CCed everyone on this thread to it. Let's move the discussion there. Brian