diff mbox series

[v6,02/10] irqchip/irq-msi-lib: Optionally set default irq_eoi/irq_ack

Message ID 20250217085657.789309-3-apatel@ventanamicro.com (mailing list archive)
State New
Headers show
Series RISC-V IMSIC driver improvements | expand

Commit Message

Anup Patel Feb. 17, 2025, 8:56 a.m. UTC
From: Thomas Gleixner <tglx@linutronix.de>

Introduce chip_flags in struct msi_parent_ops. This allows
msi_lib_init_dev_msi_info() set default irq_eoi/irq_ack
callbacks only when the corresponding flags are set in
the chip_flags.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
 drivers/irqchip/irq-gic-v2m.c    |  1 +
 drivers/irqchip/irq-imx-mu-msi.c |  1 +
 drivers/irqchip/irq-msi-lib.c    | 11 ++++++-----
 drivers/irqchip/irq-mvebu-gicp.c |  1 +
 drivers/irqchip/irq-mvebu-odmi.c |  1 +
 drivers/irqchip/irq-mvebu-sei.c  |  1 +
 include/linux/msi.h              | 11 +++++++++++
 7 files changed, 22 insertions(+), 5 deletions(-)

Comments

Mark Brown Feb. 19, 2025, 2:41 p.m. UTC | #1
On Mon, Feb 17, 2025 at 02:26:48PM +0530, Anup Patel wrote:
> From: Thomas Gleixner <tglx@linutronix.de>
> 
> Introduce chip_flags in struct msi_parent_ops. This allows
> msi_lib_init_dev_msi_info() set default irq_eoi/irq_ack
> callbacks only when the corresponding flags are set in
> the chip_flags.

I'm seeing boot regressions with qemu on arm64 in -next which bisect
down to this patch.  We hit a NULL pointer dereference:

<6>[    0.898900] virtio_blk virtio1: 1/0/0 default/read/poll queues
<5>[    0.910197] virtio_blk virtio1: [vda] 3906250 512-byte logical blocks (2.00 GB/1.86 GiB)
<1>[    0.924459] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
<1>[    0.924508] Mem abort info:
<1>[    0.924521]   ESR = 0x000000008600002b
<1>[    0.924559]   EC = 0x21: IABT (current EL), IL = 32 bits
<1>[    0.924580]   SET = 0, FnV = 0
<1>[    0.924597]   EA = 0, S1PTW = 0
<1>[    0.924616]   FSC = 0x2b: level -1 translation fault
<1>[    0.924667] [0000000000000000] user address but active_mm is swapper
<0>[    0.924833] Internal error: Oops: 000000008600002b [#1] PREEMPT SMP

...

<4>[    0.933487] Call trace:
<4>[    0.933767]  0x0 (P)
<4>[    0.934028]  handle_fasteoi_irq+0xb0/0x1cc
<4>[    0.934296]  handle_irq_desc+0x40/0x58
<4>[    0.934502]  generic_handle_domain_irq+0x1c/0x28
<4>[    0.934686]  gic_handle_irq+0x4c/0x120
<4>[    0.934866]  call_on_irq_stack+0x24/0x4c
<4>[    0.935034]  do_interrupt_handler+0x80/0x84
<4>[    0.935233]  el1_interrupt+0x34/0x68
<4>[    0.935417]  el1h_64_irq_handler+0x18/0x24
<4>[    0.935573]  el1h_64_irq+0x6c/0x70
<4>[    0.935775]  blk_mq_dispatch_rq_list+0x29c/0x6f0 (P)
<4>[    0.935964]  __blk_mq_sched_dispatch_requests+0x460/0x57c

Full log:

   https://lava.sirena.org.uk/scheduler/job/1126644

bisect log (there's a bunch of good commits added at the start since my
automation harvests results it already knows about to feed bisects):

# bad: [8936cec5cb6e27649b86fabf383d7ce4113bba49] Add linux-next specific files for 20250219
# good: [67961d4f4e34f5ed1aeebab08f42c2e706837ec5] Merge branch 'for-linux-next-fixes' of https://gitlab.freedesktop.org/drm/misc/kernel.git
# good: [d1a09c610027e446ed30c21f61c2f2443bf92a3f] MAINTAINERS: adjust the file entry in SPI OFFLOAD
# good: [a78f244a9150da0878a37a1b59fb0608b1ccfb9d] ASoC: SOF: imx: Fix error code in probe()
# good: [b20be2c77ce5341ded1a2d8aec119f6dca8ef1ad] ASoC: SOF: imx: Fix an IS_ERR() vs NULL bug in imx_parse_ioremap_memory()
# good: [5d9fca12f54d3e25e02521aa8f3ec5d53759b334] ASoC: amd: ps: fix inconsistent indenting warning in check_and_handle_sdw_dma_irq()
# good: [3f02dedf1566858736f351a8d4a3ce91375e48f1] ASoC: random cleanup
# good: [0770b7cc095e015af302f0758d3d85c7f17c719a] ASoC: tas2764: Random patches from the Asahi Linux
# good: [e0f421d73053eaeb441aa77054b75992705656c7] ASoC: SOF: ipc3: Use str_enabled_disabled() helper function
# good: [5c7e4c4da8586d2ef55a11a9f4df626b8ea9a146] ASoC: dt-bindings: wlf,wm8960: add 'port' property
# good: [783db6851c1821d8b983ffb12b99c279ff64f2ee] ASoC: ops: Enforce platform maximum on initial value
# good: [9f25b6f2568d50c247a8e3b031a0a5caee8c17d2] ASoC: wm_hubs: Use str_enable_disable() in wm_hubs_update_class_w()
# good: [9dc016eaba3a70febcd1db5f1a0beeb7430166aa] ASoC: SOF: Intel: Don't import non-existing module namespace
# good: [e08fe24c34d37d00e84009f2fb4c35f5978041e6] ASoC: SOF: Intel: Use str_enable_disable() helper
# good: [1c3b5f37409682184669457a5bdf761268eafbe5] ASoC: tas2764: Power up/down amp on mute ops
# good: [f37f1748564ac51d32f7588bd7bfc99913ccab8e] ASoC: tas2764: Mark SW_RESET as volatile
# good: [7e1caa679686dde5c24d60b139f234568045758f] ASoC: soc-pcm: makes dpcm_dapm_stream_event() void
# good: [d64c4c3d1c578f98d70db1c5e2535b47adce9d07] ASoC: tas2764: Add reg defaults for TAS2764_INT_CLK_CFG
# good: [40b1f89a1691c4b7740bec2c868f1e4c60346353] ASoC: remove dpcm_process_paths()
# good: [42da18e62652b58ba5ecd1524c146b202cda9bb7] ASoC: soc-pcm: cleanup dpcm_fe_dai_do_trigger()
# good: [3aebbcba4baaa81bc8c83f2229ed8e774cf40618] ASoC: soc-pcm: cleanup dpcm_dai_trigger_fe_be()
# good: [1248d29464cc682c2a1793cfc5d4ebeb374c6738] ASoC: soc-ops: makes snd_soc_read_signed() void
# good: [7f1186a8d738661b941b298fd6d1d5725ed71428] ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot()
# good: [238c863eb3d3c6ed58493bacfd1f4b36bdcfa92f] ASoC: soc-core: makes snd_soc_set_dmi_name() local
# good: [0c4a06395156d16ea33e959fccea84e4cfec04c4] ASoC: soc-pcm: remove duplicate param from __soc_pcm_hw_params()
# good: [08a66f55f7246d477b19620a953476dfc02beefc] ASoC: tas2764: Wait for ramp-down after shutdown
# good: [257a060fe219bb0dcb98f12ce34f04eca6d08352] ASoC: remove update from snd_soc_card
# good: [11c1967f1a796bf2ff56a7118147f1d39d9f5ee0] ASoC: soc-pcm: no need to check dpcm->fe on dpcm_be_connect()
# good: [994719ed6d81a6f4677875ab6730254c0bc484ea] ASoC: Intel: avs: Use str_on_off() in avs_dsp_core_power()
# good: [ae575d2145d1a2c8bb5d2835d7d54751f3b0bace] ASoC: tegra: Remove the isomgr_bw APIs export
# good: [828c0aa63706410503526d0ee522b9ac3232c86b] ASoC: amd: ps: use switch statements for acp pci revision id check
# good: [74e0fcbd705d4277267311f8f26a00bb8ce93820] gpiolib: add gpiod_multi_set_value_cansleep
# good: [f22ba3561daa792dd138ed543e0bf48efe0b999c] ASoC: SOF: imx-common: set sdev->pdata->hw_pdata after common is alloc'd
# good: [ad0fbcebb5f6e093d433a0873758a2778d747eb8] ASoC: adau1701: use gpiod_multi_set_value_cansleep
# good: [c6bb909b8f11b9403715a325b51c2bcf01e2bbc0] Merge branch 'slab/for-6.15/kfree_rcu_tiny' into slab/for-next
# good: [e957c96455e8f4c630d5e374312cad0633ca7e17] spi: offload: fix use after free
# good: [d795a052b0ddad3da83dda6ff522c1b1aaa4a525] spi: fix missing offload_flags doc
# good: [91931af18bd22437e08e2471f5484d6fbdd8ab93] gpiolib: add gpiod_multi_set_value_cansleep()
# good: [ff4d4158ef9143327a42f7be4298751cb0d1be69] spi: spi-offload-trigger-pwm: add extra headers
# good: [fcd7ace9a725ae034ff9f24cb94c9fe12a1f02da] spi: offload: types: include linux/bits.h
# good: [21aa330fec31bb530a4ef6c9555fb157d0711112] ASoC: fsl_micfil: Add decimation filter bypass mode support
# good: [e97d06cb4386af4e069a2dc713de70500538d0bd] ASoC: tscs454: Use str_enable_disable() in pll_power_event()
# good: [ad1212a9cc24b740b2711014933fac6ace32aa2d] arm64: dts: rockchip: Add SPDIF on RK3588
# good: [d1541caab053cf94b114582a23b51a8cb90f4a46] Add SDCA DisCo parsing support
# good: [f46eb2bfb878ce3345725252f77fa3ba36a0f087] spi: axi-spi-engine: add offload support
# good: [c5528214c7c0a753c908a7b353309ba665985fb4] ASoC: codecs: wcd93xx-sdw: fix of_property_read_bool() warnings
# good: [2c17e9ea0caa5555e31e154fa1b06260b816f5cc] dmaengine: idxd: Delete unnecessary NULL check
# good: [3c331bdeececb629669961a80c0f929301c088d2] Refactor imx drivers and introduce support for
# good: [93354d866ac44d0f9d65b2e4adb5cc9a1c1912c9] prandom: remove next_pseudo_random32
# good: [330cbb40bb3664a18a19760bd6dc6003d6624041] dt-bindings: ASoC: rockchip: Add compatible for RK3588 SPDIF
# good: [2f9523091a97abf8584a79ed406fd8ffe9063ec0] Merge branch 'misc' into for-next
# good: [651e0ed391b148f83afba0bfbd8a56e38e58c34d] ASoC: SOF: imx: introduce more common structures and functions
# good: [005859a2cf7aa349fbbfe433ab1769b15c535b72] ASoC: amd: Add support for ACP7.0 & ACP7.1
# good: [563e40153a56cbfae8721f9591022df5d930f939] ASoC: SOF: imx8: use IMX_SOF_* macros
# good: [700a281905f2a4ccf6f3b2d3cd6985e034b4b021] spi: add offload TX/RX streaming APIs
# good: [629dd55cf77bd3a8f80049150d3c05fef6d3b468] ASoC: SDCA: Minor formatting and naming tweaks
# good: [d7231be4b4657e5f922a4c6dc11e8dffc71fee87] spi: offload: add support for hardware triggers
# good: [d920908fe36c2b3a1c6fe444831e0c8c2a995fd1] Merge branch 'for-6.14-fixes' into for-next
# good: [07e3e514dd385300bd08da4a8df09240d272821e] ASoC: SOF: imx: merge imx8 and imx8ulp drivers
# good: [645753d01356ff1a756812f1c69c53eb5c9081cd] ASoC: SOF: imx8: use common imx chip interface
# good: [f98d42000216677d177384f202ff1cc896a7395f] ASoC: Intel: soc-acpi-intel-ptl-match typo fixups
# good: [5a19e1985d014fab9892348f6175a19143cec810] spi: axi-spi-engine: implement offload support
# good: [896530b7b0c08ee8b3296d5f012bfe1b0a979b86] ASoC: SOF: imx: merge imx8 and imx8m drivers
# good: [19f6748abbab8523a7b32a5e371e39d4d8d4aba5] ASoC: SDCA: Parse initialization write table
# good: [9ee6d50ae4b0fe14ed70a5265a05874d41e10848] ASoC: SDCA: Add support for Entity 0
# good: [f87c2a275033120e15213f3d65234d98e726c4b7] ASoC: SDCA: Add Channel Cluster parsing
# good: [ebb398ae1e052c4245b7bcea679fe073111db2ce] spi: offload-trigger: add PWM trigger driver
# good: [8e02d188698851436f76038ea998b726193d1b10] spi: add basic support for SPI offloading
# good: [5c93b20f6de4478e1fbcfb38eb46738bca74180e] ASoC: SDCA: Add support for IT/OT Entity properties
# good: [42b144cb6a2d87385fa0b124c975d6cf1e3ec630] ASoC: SDCA: Add SDCA Control parsing
# good: [e1101373df5cd7672d988bb4e9cdd5eb97003165] spi: dt-bindings: axi-spi-engine: add SPI offload properties
# good: [e80b8e5c53c30df1cba45258d10b04872b7eea67] ASoC: SDCA: Add support for clock Entity properties
# good: [9da195880f167ab7c2d595388decf783c9920121] ASoC: SDCA: Add support for PDE Entity properties
# good: [83f37ba7b76ab17e029ab4127ec64ccccce64c00] dt-bindings: trigger-source: add generic PWM trigger source
# good: [45e02edd8422b6c4a511f38403dbd805cd139733] ASoC: SOF: imx8: drop unneeded/unused macros/header includes
# good: [6cf5df1040ba0694aea6a5edc6f31811a442ea36] ASoC: SOF: imx: add driver for the imx95 chip
# good: [64fb5af1d1bbcf1b808e9bb092b22fa1b691ae63] ASoC: SDCA: Add parsing for Control range structures
# good: [996bf834d0b61cb5a1389356c1ed7db1230139d7] ASoC: SDCA: Add code to parse Function information
# good: [d0252b0b945ec67fd09fc764dcadf445fb7757ee] ASoC: amd: acp: amd-acp70-acpi-match: Add rt722 support
# good: [187150671d83324f1ca56f7ab5e00f16a3b9f2a9] ASoC: amd: acp: add RT711, RT714 & RT1316 support for ACP7.0 platform
# good: [fcb754602724fa2a1d0db72f13ddc3ef0306f911] ASoC: amd: ps: store acp revision id in SoundWire dma driver private data
# good: [43d6140cedad9f031b47dfde6f85856e007b3f04] ASoC: amd: ps: refactor soundwire dma interrupts enable/disable sequence
# good: [31e3100d5e1fe69f944f84867be0cbfa5fd380c8] ASoC: amd: acp: amd-acp70-acpi-match: Add RT1320 & RT722 combination soundwire machine
# good: [491628388005a26c02d6827e649284357daec213] ASoC: amd: ps: add callback functions for acp pci driver pm ops
# good: [1c35755f46423150e19ff57448786b4bb48fdb46] ASoC: amd: ps: implement function to restore dma config for ACP7.0 platform
# good: [0b6914a0121b4c9fc8f575b60a5dd43b74612908] ASoC: amd: ps: add soundwire dma interrupts handling for ACP7.0 platform
# good: [0eb8f83c055cb3461734710d1b1ce2dd4f01806e] ASoC: amd: ps: update module description
# good: [852c0b7204ded184924c41ab99b2ac7a70ad4dab] ASoC: Intel: soc-acpi-intel-ptl-match: add rt713_vb_l2_rt1320_l13
# good: [3898b189079c85735f57759b0d407518c01c745e] ASoC: amd: ps: add soundwire wake interrupt handling
# good: [c878d5c1a525b88807d9d79888fe8340bcbf1aa3] ASoC: amd: ps: add ACP7.0 & ACP7.1 specific soundwire dma driver changes
# good: [4b36a47e2d989b98953dbfb1e97da0f0169f5086] ASoC: amd: ps: use macro for ACP6.3 pci revision id
# good: [fde277dbcf53be685d0b9976d636366c80a74da8] ASoC: amd: ps: add pm ops related hw_ops for ACP7.0 & ACP7.1 platforms
# good: [91f505dc3a94c04421a2a51e8c40acf7ea67ecbc] ASoC: Intel: soc-acpi-intel-ptl-match: add rt712_vb + rt1320 support
# good: [552f66c40134542f15d4302837e7d581a0b8e217] ASoC: amd: update Pink Sardine platform Kconfig description
# good: [638ad2bdb2f994c8bd99cc40e0c4796a8617ccf3] ASoC: amd: acp: add machine driver changes for ACP7.0 and ACP7.1 platforms
# good: [4bb5b6f13fd83b32c8a93fbd399e7558415d1ce0] ASoC: amd: amd_sdw: Add quirks for Dell SKU's
# good: [e2ceac2f323625632f12dd5333092976298a0cde] ASoC: amd: ps: rename structure names, variable and other macros
# good: [0fa0843db17ccd427fc7a23d313aafa88fc89e04] ASoC: amd: ps: refactor soundwire dma driver code
# good: [7c0ea26c57b0bb72d503fe27d6533f5addc5e3a3] ASoC: amd: ps: add pci driver hw_ops for ACP7.0 & ACP7.1 variants
# good: [f1e91acacf86fb2cd7478af490326cb9aa63e8ae] ASoC: amd: ps: update file description and copyright year
# good: [0a27b2d7a224326fab543ca586d501fe1857b655] ASoC: amd: ps: add soundwire dma irq thread callback
# good: [6547577e94ae3d9f8ff30d3267fe7ec394e3b20d] ASoC: amd: ps: add callback to read acp pin configuration
# good: [605aab3b3ca83f58681841b2dd16d4a7baefde6c] ASoC: amd: ps: rename acp_restore_sdw_dma_config() function
# good: [4516be370ced14c4fb454fd6cc016e47bffe109e] ASoC: amd: ps: refactor soundwire dma interrupt handling
# good: [db746fff89a14419379226ce0df8b94f472cf38c] ASoC: amd: ps: add acp pci driver hw_ops for acp6.3 platform
# good: [a23ff143804d3b8c27157ffa19e48b4e22939115] ASoC: Intel: avs: Add support for MalibouLake
# good: [f0703ce627a25b4a1307d8a92cfd6d6bf7e27e7a] ASoC: cpcap: Implement jack headset detection
# good: [5585e342e8d38cc598279bdb87f235f8b954dd5a] cxl/memdev: Remove unused partition values
# good: [f2d161e5804d8da070988624b9edd179ef31b478] ASoC: and adn use snd_soc_ret()
# good: [6b8f162bd3fa82c3c1b3653100d04172c1dbd8a5] ASoC: SOF: Improve the spcm and ipc4 copier prints
# good: [46ab7d80ed4f378e02cb249bd49a76026a2d683f] Add static channel mapping between soundwire master
# good: [cb161c333927142818d6bf22a4da2b023fb2b8c9] ASoC: tas2781: Switch to use %ptTsr
# good: [96dd187c93afe0ae0535276a92ed488759ace5a2] This is continued work on Samsung S9(SM-9600)
# good: [153dbf4adad0082d030c30d20541df2b1af52db6] regmap: irq: Use one way of setting all bits in the register
# good: [861e232e15c278d6cfc5a675efe393b4838b1773] Merge branch 'for-6.15/fw-first-error-logging' into cxl-for-next
# good: [5ea46b4360791345bd0bf4c7bf8fff5151374ea1] ASoC: SOF: ipc4-pcm: Move out be_rate initialization from for loop in fixup
# good: [0e9a970d7b2cb98d741bc0e32ad8c8f30c009c63] ASoC: qcom: sdw: Add get and set channel maps support from codec to cpu dais
# good: [0a7c85b516830c0bb088b0bdb2f2c50c76fc531a] regulator: ad5398: Fix incorrect power down bit mask
# good: [315c2f0b53ba2645062627443a12cea73f3dad9c] acpi/ghes, cper: Recognize and cache CXL Protocol errors
# good: [2466b62268c020606d20b45e007c166399e639ee] ASoC: dapm: unexport dapm_mark_endpoints_dirty()
# good: [583348bd65ceaf4a5067a6267dd236929e1b4b37] ASoC: SOF: ipc4-topology: Improve the information in prepare_copier prints
# good: [ecfcee245cc99def0f6bf84ac75ac372f8ab65eb] ASoC: dapm: unexport snd_soc_dapm_init()
# good: [a0ef5b4b101424b8a666ed56bf1717dafe2d37f5] ASoC: simple-card: use snd_soc_ret()
# good: [4c7518062d638837cea915e0ffe30f846780639a] ASoC: SOF: ipc4: Add support for split firmware releases
# good: [3f78762d17701f0435ad958b2821dc3243ff34b3] ASoC: dapm: unexport snd_soc_dapm_update_dai()
# good: [9bbbf33a5ab84c0f3643f43350b0f473b60af5b8] spi: gpio: Enable a single always-selected device
# good: [062b7ef6b103dcbcb3c084e8ace8e74e260b2346] ASoC: soc-utils: care -EOPNOTSUPP on snd_soc_ret()
# good: [c06c4f7cbea1d8dc71485bfddef2849a1b721e67] ASoC: codecs: wcd937x: Add static channel mapping support in wcd937x-sdw
# good: [943116ba2a6ab472e8ad2d1e57a3f10f13485cc2] ASoC: add common snd_soc_ret() and use it
# good: [7796c97df6b1b2206681a07f3c80f6023a6593d5] soundwire: qcom: Add set_channel_map api support
# good: [78e66dd5f32a1a8e5ee6decadd4e4dffa7d2c40d] ASoC: mediatek: mt8186: Remove unused mt8186_afe_(suspend|resume)_clock
# good: [61eac5f7f6439e8fe99b5fb29406acb0fd7b83c6] efi/cper, cxl: Remove cper_cxl.h
# good: [860693187c597645b28a421d8acb26428b8afd3f] ASoC: SOF: pcm: Add snd_sof_pcm specific wrappers for dev_dbg() and dev_err()
# good: [2d7395b23dbf4c2d60be49b73e4c4705fc446662] ASoC: simple-card-utils: use snd_soc_ret()
# good: [be61cd4242e4a53f5cf989ee7573121d041444bc] ASoC: soc-pcm: use snd_soc_ret()
# good: [72826381215e2f9d2bd2f32f63f76a80942b7fdf] ASoC: dt-bindings: wcd937x-sdw: Add static channel mapping support
# good: [4d2ea16576c8aa1437048cf436bff85653f139fe] ASoC: SOF: pcm: Move period/buffer configuration print after platform open
# good: [169ec0a541aac8afb215ab591b0fd53276686014] ASoC: SOF: Relocate and rework functionality for PCM stream freeing
# good: [74a0ca4c7f19f1b273d665b3b53f7ae8af879658] ASoC: audio-graph-card: use snd_soc_ret()
# good: [8d83282e53185ec257a4ce08812e8fabee2c7212] ASoC: audio-graph-card2: use snd_soc_ret()
# good: [43ca2463df9de2c192b03a0f4dc964e6ba7d7993] cxl: Refactor user ioctl command path from mds to mailbox
# good: [b3d993c7566fed1c027c5c18f3ef482ba8e6307a] ASoC: amd: acp: Use str_low_high() helper function
# good: [215705db51eb23052c73126d2efb6acbc2db0424] spi: Replace custom fsleep() implementation
# good: [c108905a7423d44237d17374f845fc5bb9cb9728] spi: gpio: Remove stale documentation part
# good: [185ac20a7b055e025027d303b63dab456b4f5d5e] ASoC: rt722: get lane mapping property
# good: [3f75771987f32a9f512c8944e70e343f8c6d71c1] ASoC: SOF: mediatek: Use str_on_off() helper function
# good: [6603c5133daadbb3277fbd93be0d0d5b8ec928e8] ASoC: dt-bindings: atmel,at91-ssc: Convert to YAML format
# good: [678681828bf4abfd3c31f36390d2097682141d11] ASoC: dmic: Add DSD big endian format support
# good: [25fac20edd09b60651eabcc57c187b1277f43d08] spi: gpio: Support a single always-selected device
# good: [991d98f17d31644826977e49477544987000a08a] cxl: Make cxl_dpa_alloc() DPA partition number agnostic
# good: [78d9ee370ed33cd8b662981fe1f47cff7b4f0e43] dt-bindings: eeprom: at24: Add compatible for Puya P24C64F
# good: [e27c125040b1e1f26d910b46daabbe55e67fdf3b] ASoC: codecs: wcd934x: use wcd934x binding header
# good: [c2a756660324fceca26780a50950e6d91dfdc210] counter: ti-eqep: add direction support
# good: [8478dadc8148af311c3d43d4867cfb6632686ede] ASoC: dt-bindings: Add bindings for WCD934x DAIs
# good: [e3cd85963a20d2b92e77046a8d9f0777815f1f71] x86/mtrr: Use str_enabled_disabled() helper in print_mtrr_state()
# good: [652ffad172d089acb1a20e5fde1b66e687832b06] spi: fsi: Batch TX operations
# good: [b2f10aa2eb18d289e48097e0ed973e714322175b] x86/entry: Add __init to ia32_emulation_override_cmdline()
# good: [fb6ec1d27608c008bfe1ab0dfec3720990eb2451] ASoC: mediatek: mt6358: Remove unused functions
# good: [1a4a5a752fcd60797ed2cb7c06253c6433d13f63] ASoC: soc-ops: remove soc-dpcm.h
# good: [e92f042642aed6f6206caace892d9df2d0166841] ASoC: codecs: pcm3168a: Relax probing conditions
# good: [4a91fe4c0d683c56044579fb263c660f5d18efac] ASoC: tegra: Add interconnect support
# good: [79ebb596201c86712fe38b0ef73d25d07b932664] ASoC: Intel: avs: Add pcm3168a machine board
# good: [f0173cbe7fa79eafbdf32eed32337209f84ddacd] ASoC: Intel: avs: New gateway configuration mechanism
# good: [cbe37a4d2b3c25d2e2a94097e09b6d87461b8833] ASoC: Intel: avs: Configure basefw on TGL-based platforms
# good: [320155a61f7fc810a915644e9e2a451bdcea90b1] ASoC: Intel: avs: Remove unused gateway configuration code
# good: [e995c51903384be1c7aead246dc30cb5244179ac] ASoC: Intel: avs: Move DSP-boot steps into individual functions
# good: [7d92a38d67e5d937b64b20aa4fd14451ee1772f3] ASoC: codecs: pcm3168a: Allow for 24-bit in provider mode
# good: [6eab7034579917f207ca6d8e3f4e11e85e0ab7d5] ASoC: soc-core: Stop using of_property_read_bool() for non-boolean properties
# good: [856366dc924a9561dae39f252b45dfd6cc6895ce] ALSA: hda: Select avs-driver by default on MBL
# good: [3c32a4386909e8023b3c49253fec33d267be16bb] regulator: Add device tree support to AD5398
# good: [299ce4beaf714abe76e3ad106f2e745748f693e9] ASoC: rt722-sdca: Make use of new expanded MBQ regmap
# good: [a05143a8f713d9ae6abc41141dac52c66fca8b06] ASoC: SOF: topology: Use krealloc_array() to replace krealloc()
# good: [26a756fc10fac6f133ef47f12362a39769dfe24d] spi: zynqmp-gqspi: Clean up the driver a bit
# good: [dc561ab16d8be9cbe8f07a49a7b2f5428fbcfeea] ASoC: codecs: pcm3168a: Add ACPI match table
# good: [c9e9aa80022c6db71bc097a621a6145f39aa0ade] ASoC: mediatek: Remove unused mtk_memif_set_rate
# good: [b9fb91692af881736f8fa1741fa0dbadf07d99ee] ASoC: Intel: avs: pcm3168a board selection
# good: [4343af66b8e1df1d3a2e6f1f8612506cb45b2afd] ASoC: Intel: avs: Add WHM module support
# good: [f9a5c4b6afc79073491acdab7f1e943ee3a19fbb] ASoC: rt722-sdca: Add some missing readable registers
# good: [b5ec74c2aec76fbdff9bc16951455602e11902bf] arm64: dts: imx8mp-skov-reva: Use hardware signal for SD card VSELECT
# good: [c73be62caabbec6629689c705aea65e5ce364d5d] Revert "regulator: pca9450: Add SD_VSEL GPIO for LDO5"
# good: [9b32c86e40da792544c53076f5ec43f115e56687] spi: zynqmp-gqspi: Clean up fillgenfifo
# good: [d61009bd578ee7381a3cce5c506190ecb8f9d6e8] spi: zynqmp-gqspi: Reformat long line
# good: [7ed1b265021dd13ce5619501b388e489ddc8e204] ASoC: cpcap: Implement jack detection
# good: [c1ac98492d1584d31f335d233a5cd7a4d4116e5a] spi: realtek-rtl-snand: Drop unneeded assignment for cache_type
# good: [5a6a461079decea452fdcae955bccecf92e07e97] regulator: ad5398: Add device tree support
# good: [d2ead60d853189f8e5ec6b301fac1e60e0b4b47d] spi: zynqmp-gqspi: Add helpers for enabling/disabling DMA
# good: [f5aab0438ef17f01c5ecd25e61ae6a03f82a4586] regulator: pca9450: Fix enable register for LDO5
# good: [19d022d67d7353f0e6e9ba255435d3de93862ac4] regulator: ad5398: change enable bit name to improve readibility
# good: [02d4a97ce30c0494ce6a614cd54d583caa0f8016] dt-bindings: mfd: motorola-cpcap: Document audio-codec interrupts
# good: [3ce6f4f943ddd9edc03e450a2a0d89cb025b165b] regulator: pca9450: Fix control register for LDO5
# good: [89785306453ce6d949e783f6936821a0b7649ee2] spi: zynqmp-gqspi: Always acknowledge interrupts
# good: [f9cbf56b0a1966d977df87d15a5bdbff2c342062] dt-bindings: regulator: pca9450: Add properties for handling LDO5
# good: [5b4288792ff246cf2bda0c81cebcc02d1f631ca3] ASoC: cpcap: Implement .set_bias_level
# good: [995cf0e014b0144edf1125668a97c252c5ab775e] regmap: Reorder 'struct regmap'
# good: [ba54629287f58b22c1d37f80f1875373e4b51ea6] spi: zynqmp-gqspi: Add some more debug prints
# good: [aefadf03b3e319fe5c406a6e41a9eecd90ac423c] ipe: policy_fs: fix kernel-doc warnings
# good: [3566784817aeb1a733c95953998a29adc386d2ff] drm/i915/display: Update DBUF_TRACKER_STATE_SERVICE only on appropriate platforms
# good: [589c30de062eb4029f84ba4064209b4db153ac95] Merge branch 'for-6.14/intel-thc' into for-next
# good: [9fbf78b6d6cecc2e9833c2f74eb2edc027c9b4cb] Merge branch 'for-6.12/trivial' into for-next
# good: [5dcf8655cc80a48065ba0a224e794106c147c14b] Merge branch 'for-6.11/trivial' into for-next
# good: [7e17e80c3a7eb2734795f66ba946f933412d597f] Merge branch 'for-6.14/stack-order' into for-next
# good: [9871e6af43db3892811f5a4ed0ed2e2d7cf6cf3c] Merge branch 'for-6.11/sysfs-patch-replace' into for-next
git bisect start '8936cec5cb6e27649b86fabf383d7ce4113bba49' '67961d4f4e34f5ed1aeebab08f42c2e706837ec5' 'd1a09c610027e446ed30c21f61c2f2443bf92a3f' 'a78f244a9150da0878a37a1b59fb0608b1ccfb9d' 'b20be2c77ce5341ded1a2d8aec119f6dca8ef1ad' '5d9fca12f54d3e25e02521aa8f3ec5d53759b334' '3f02dedf1566858736f351a8d4a3ce91375e48f1' '0770b7cc095e015af302f0758d3d85c7f17c719a' 'e0f421d73053eaeb441aa77054b75992705656c7' '5c7e4c4da8586d2ef55a11a9f4df626b8ea9a146' '783db6851c1821d8b983ffb12b99c279ff64f2ee' '9f25b6f2568d50c247a8e3b031a0a5caee8c17d2' '9dc016eaba3a70febcd1db5f1a0beeb7430166aa' 'e08fe24c34d37d00e84009f2fb4c35f5978041e6' '1c3b5f37409682184669457a5bdf761268eafbe5' 'f37f1748564ac51d32f7588bd7bfc99913ccab8e' '7e1caa679686dde5c24d60b139f234568045758f' 'd64c4c3d1c578f98d70db1c5e2535b47adce9d07' '40b1f89a1691c4b7740bec2c868f1e4c60346353' '42da18e62652b58ba5ecd1524c146b202cda9bb7' '3aebbcba4baaa81bc8c83f2229ed8e774cf40618' '1248d29464cc682c2a1793cfc5d4ebeb374c6738' '7f1186a8d738661b941b298fd6d1d5725ed71428' '238c863eb3d3c6ed58493bacfd1f4b36bdcfa92f' '0c4a06395156d16ea33e959fccea84e4cfec04c4' '08a66f55f7246d477b19620a953476dfc02beefc' '257a060fe219bb0dcb98f12ce34f04eca6d08352' '11c1967f1a796bf2ff56a7118147f1d39d9f5ee0' '994719ed6d81a6f4677875ab6730254c0bc484ea' 'ae575d2145d1a2c8bb5d2835d7d54751f3b0bace' '828c0aa63706410503526d0ee522b9ac3232c86b' '74e0fcbd705d4277267311f8f26a00bb8ce93820' 'f22ba3561daa792dd138ed543e0bf48efe0b999c' 'ad0fbcebb5f6e093d433a0873758a2778d747eb8' 'c6bb909b8f11b9403715a325b51c2bcf01e2bbc0' 'e957c96455e8f4c630d5e374312cad0633ca7e17' 'd795a052b0ddad3da83dda6ff522c1b1aaa4a525' '91931af18bd22437e08e2471f5484d6fbdd8ab93' 'ff4d4158ef9143327a42f7be4298751cb0d1be69' 'fcd7ace9a725ae034ff9f24cb94c9fe12a1f02da' '21aa330fec31bb530a4ef6c9555fb157d0711112' 'e97d06cb4386af4e069a2dc713de70500538d0bd' 'ad1212a9cc24b740b2711014933fac6ace32aa2d' 'd1541caab053cf94b114582a23b51a8cb90f4a46' 'f46eb2bfb878ce3345725252f77fa3ba36a0f087' 'c5528214c7c0a753c908a7b353309ba665985fb4' '2c17e9ea0caa5555e31e154fa1b06260b816f5cc' '3c331bdeececb629669961a80c0f929301c088d2' '93354d866ac44d0f9d65b2e4adb5cc9a1c1912c9' '330cbb40bb3664a18a19760bd6dc6003d6624041' '2f9523091a97abf8584a79ed406fd8ffe9063ec0' '651e0ed391b148f83afba0bfbd8a56e38e58c34d' '005859a2cf7aa349fbbfe433ab1769b15c535b72' '563e40153a56cbfae8721f9591022df5d930f939' '700a281905f2a4ccf6f3b2d3cd6985e034b4b021' '629dd55cf77bd3a8f80049150d3c05fef6d3b468' 'd7231be4b4657e5f922a4c6dc11e8dffc71fee87' 'd920908fe36c2b3a1c6fe444831e0c8c2a995fd1' '07e3e514dd385300bd08da4a8df09240d272821e' '645753d01356ff1a756812f1c69c53eb5c9081cd' 'f98d42000216677d177384f202ff1cc896a7395f' '5a19e1985d014fab9892348f6175a19143cec810' '896530b7b0c08ee8b3296d5f012bfe1b0a979b86' '19f6748abbab8523a7b32a5e371e39d4d8d4aba5' '9ee6d50ae4b0fe14ed70a5265a05874d41e10848' 'f87c2a275033120e15213f3d65234d98e726c4b7' 'ebb398ae1e052c4245b7bcea679fe073111db2ce' '8e02d188698851436f76038ea998b726193d1b10' '5c93b20f6de4478e1fbcfb38eb46738bca74180e' '42b144cb6a2d87385fa0b124c975d6cf1e3ec630' 'e1101373df5cd7672d988bb4e9cdd5eb97003165' 'e80b8e5c53c30df1cba45258d10b04872b7eea67' '9da195880f167ab7c2d595388decf783c9920121' '83f37ba7b76ab17e029ab4127ec64ccccce64c00' '45e02edd8422b6c4a511f38403dbd805cd139733' '6cf5df1040ba0694aea6a5edc6f31811a442ea36' '64fb5af1d1bbcf1b808e9bb092b22fa1b691ae63' '996bf834d0b61cb5a1389356c1ed7db1230139d7' 'd0252b0b945ec67fd09fc764dcadf445fb7757ee' '187150671d83324f1ca56f7ab5e00f16a3b9f2a9' 'fcb754602724fa2a1d0db72f13ddc3ef0306f911' '43d6140cedad9f031b47dfde6f85856e007b3f04' '31e3100d5e1fe69f944f84867be0cbfa5fd380c8' '491628388005a26c02d6827e649284357daec213' '1c35755f46423150e19ff57448786b4bb48fdb46' '0b6914a0121b4c9fc8f575b60a5dd43b74612908' '0eb8f83c055cb3461734710d1b1ce2dd4f01806e' '852c0b7204ded184924c41ab99b2ac7a70ad4dab' '3898b189079c85735f57759b0d407518c01c745e' 'c878d5c1a525b88807d9d79888fe8340bcbf1aa3' '4b36a47e2d989b98953dbfb1e97da0f0169f5086' 'fde277dbcf53be685d0b9976d636366c80a74da8' '91f505dc3a94c04421a2a51e8c40acf7ea67ecbc' '552f66c40134542f15d4302837e7d581a0b8e217' '638ad2bdb2f994c8bd99cc40e0c4796a8617ccf3' '4bb5b6f13fd83b32c8a93fbd399e7558415d1ce0' 'e2ceac2f323625632f12dd5333092976298a0cde' '0fa0843db17ccd427fc7a23d313aafa88fc89e04' '7c0ea26c57b0bb72d503fe27d6533f5addc5e3a3' 'f1e91acacf86fb2cd7478af490326cb9aa63e8ae' '0a27b2d7a224326fab543ca586d501fe1857b655' '6547577e94ae3d9f8ff30d3267fe7ec394e3b20d' '605aab3b3ca83f58681841b2dd16d4a7baefde6c' '4516be370ced14c4fb454fd6cc016e47bffe109e' 'db746fff89a14419379226ce0df8b94f472cf38c' 'a23ff143804d3b8c27157ffa19e48b4e22939115' 'f0703ce627a25b4a1307d8a92cfd6d6bf7e27e7a' '5585e342e8d38cc598279bdb87f235f8b954dd5a' 'f2d161e5804d8da070988624b9edd179ef31b478' '6b8f162bd3fa82c3c1b3653100d04172c1dbd8a5' '46ab7d80ed4f378e02cb249bd49a76026a2d683f' 'cb161c333927142818d6bf22a4da2b023fb2b8c9' '96dd187c93afe0ae0535276a92ed488759ace5a2' '153dbf4adad0082d030c30d20541df2b1af52db6' '861e232e15c278d6cfc5a675efe393b4838b1773' '5ea46b4360791345bd0bf4c7bf8fff5151374ea1' '0e9a970d7b2cb98d741bc0e32ad8c8f30c009c63' '0a7c85b516830c0bb088b0bdb2f2c50c76fc531a' '315c2f0b53ba2645062627443a12cea73f3dad9c' '2466b62268c020606d20b45e007c166399e639ee' '583348bd65ceaf4a5067a6267dd236929e1b4b37' 'ecfcee245cc99def0f6bf84ac75ac372f8ab65eb' 'a0ef5b4b101424b8a666ed56bf1717dafe2d37f5' '4c7518062d638837cea915e0ffe30f846780639a' '3f78762d17701f0435ad958b2821dc3243ff34b3' '9bbbf33a5ab84c0f3643f43350b0f473b60af5b8' '062b7ef6b103dcbcb3c084e8ace8e74e260b2346' 'c06c4f7cbea1d8dc71485bfddef2849a1b721e67' '943116ba2a6ab472e8ad2d1e57a3f10f13485cc2' '7796c97df6b1b2206681a07f3c80f6023a6593d5' '78e66dd5f32a1a8e5ee6decadd4e4dffa7d2c40d' '61eac5f7f6439e8fe99b5fb29406acb0fd7b83c6' '860693187c597645b28a421d8acb26428b8afd3f' '2d7395b23dbf4c2d60be49b73e4c4705fc446662' 'be61cd4242e4a53f5cf989ee7573121d041444bc' '72826381215e2f9d2bd2f32f63f76a80942b7fdf' '4d2ea16576c8aa1437048cf436bff85653f139fe' '169ec0a541aac8afb215ab591b0fd53276686014' '74a0ca4c7f19f1b273d665b3b53f7ae8af879658' '8d83282e53185ec257a4ce08812e8fabee2c7212' '43ca2463df9de2c192b03a0f4dc964e6ba7d7993' 'b3d993c7566fed1c027c5c18f3ef482ba8e6307a' '215705db51eb23052c73126d2efb6acbc2db0424' 'c108905a7423d44237d17374f845fc5bb9cb9728' '185ac20a7b055e025027d303b63dab456b4f5d5e' '3f75771987f32a9f512c8944e70e343f8c6d71c1' '6603c5133daadbb3277fbd93be0d0d5b8ec928e8' '678681828bf4abfd3c31f36390d2097682141d11' '25fac20edd09b60651eabcc57c187b1277f43d08' '991d98f17d31644826977e49477544987000a08a' '78d9ee370ed33cd8b662981fe1f47cff7b4f0e43' 'e27c125040b1e1f26d910b46daabbe55e67fdf3b' 'c2a756660324fceca26780a50950e6d91dfdc210' '8478dadc8148af311c3d43d4867cfb6632686ede' 'e3cd85963a20d2b92e77046a8d9f0777815f1f71' '652ffad172d089acb1a20e5fde1b66e687832b06' 'b2f10aa2eb18d289e48097e0ed973e714322175b' 'fb6ec1d27608c008bfe1ab0dfec3720990eb2451' '1a4a5a752fcd60797ed2cb7c06253c6433d13f63' 'e92f042642aed6f6206caace892d9df2d0166841' '4a91fe4c0d683c56044579fb263c660f5d18efac' '79ebb596201c86712fe38b0ef73d25d07b932664' 'f0173cbe7fa79eafbdf32eed32337209f84ddacd' 'cbe37a4d2b3c25d2e2a94097e09b6d87461b8833' '320155a61f7fc810a915644e9e2a451bdcea90b1' 'e995c51903384be1c7aead246dc30cb5244179ac' '7d92a38d67e5d937b64b20aa4fd14451ee1772f3' '6eab7034579917f207ca6d8e3f4e11e85e0ab7d5' '856366dc924a9561dae39f252b45dfd6cc6895ce' '3c32a4386909e8023b3c49253fec33d267be16bb' '299ce4beaf714abe76e3ad106f2e745748f693e9' 'a05143a8f713d9ae6abc41141dac52c66fca8b06' '26a756fc10fac6f133ef47f12362a39769dfe24d' 'dc561ab16d8be9cbe8f07a49a7b2f5428fbcfeea' 'c9e9aa80022c6db71bc097a621a6145f39aa0ade' 'b9fb91692af881736f8fa1741fa0dbadf07d99ee' '4343af66b8e1df1d3a2e6f1f8612506cb45b2afd' 'f9a5c4b6afc79073491acdab7f1e943ee3a19fbb' 'b5ec74c2aec76fbdff9bc16951455602e11902bf' 'c73be62caabbec6629689c705aea65e5ce364d5d' '9b32c86e40da792544c53076f5ec43f115e56687' 'd61009bd578ee7381a3cce5c506190ecb8f9d6e8' '7ed1b265021dd13ce5619501b388e489ddc8e204' 'c1ac98492d1584d31f335d233a5cd7a4d4116e5a' '5a6a461079decea452fdcae955bccecf92e07e97' 'd2ead60d853189f8e5ec6b301fac1e60e0b4b47d' 'f5aab0438ef17f01c5ecd25e61ae6a03f82a4586' '19d022d67d7353f0e6e9ba255435d3de93862ac4' '02d4a97ce30c0494ce6a614cd54d583caa0f8016' '3ce6f4f943ddd9edc03e450a2a0d89cb025b165b' '89785306453ce6d949e783f6936821a0b7649ee2' 'f9cbf56b0a1966d977df87d15a5bdbff2c342062' '5b4288792ff246cf2bda0c81cebcc02d1f631ca3' '995cf0e014b0144edf1125668a97c252c5ab775e' 'ba54629287f58b22c1d37f80f1875373e4b51ea6' 'aefadf03b3e319fe5c406a6e41a9eecd90ac423c' '3566784817aeb1a733c95953998a29adc386d2ff' '589c30de062eb4029f84ba4064209b4db153ac95' '9fbf78b6d6cecc2e9833c2f74eb2edc027c9b4cb' '5dcf8655cc80a48065ba0a224e794106c147c14b' '7e17e80c3a7eb2734795f66ba946f933412d597f' '9871e6af43db3892811f5a4ed0ed2e2d7cf6cf3c'
# bad: [8936cec5cb6e27649b86fabf383d7ce4113bba49] Add linux-next specific files for 20250219
git bisect bad 8936cec5cb6e27649b86fabf383d7ce4113bba49
# good: [4aa591507214c82976992e1810d5ac121a8545d2] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git
git bisect good 4aa591507214c82976992e1810d5ac121a8545d2
# good: [38f28c2c14f7b6a204097792474f3f3fe8f87cd4] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
git bisect good 38f28c2c14f7b6a204097792474f3f3fe8f87cd4
# bad: [f300530bbb82416019ae01536ad40532d574bff0] Merge branch 'next' of https://github.com/kvm-x86/linux.git
git bisect bad f300530bbb82416019ae01536ad40532d574bff0
# bad: [5e8357bc3db2c901b02c62cfe7ff29831865440a] Merge branch into tip/master: 'x86/misc'
git bisect bad 5e8357bc3db2c901b02c62cfe7ff29831865440a
# good: [ce68de08a2cc95dc2cb6018a22673beed52f25c3] ASoC: fsl: imx-pcm-fiq: Switch to use hrtimer_setup()
git bisect good ce68de08a2cc95dc2cb6018a22673beed52f25c3
# bad: [4e3434bf99d811d00ece73028c77d6a81779557f] Merge branch into tip/master: 'timers/core'
git bisect bad 4e3434bf99d811d00ece73028c77d6a81779557f
# bad: [96bda1071c815489bd6678eb38670c4fec7e37ce] Merge branch into tip/master: 'irq/drivers'
git bisect bad 96bda1071c815489bd6678eb38670c4fec7e37ce
# good: [999f458c1771354371ba367dd84f55f9a62a4233] irqchip/riscv-imsic: Set irq_set_affinity() for IMSIC base
git bisect good 999f458c1771354371ba367dd84f55f9a62a4233
# bad: [213ea5f92da586fe137dfa55004ed0f7706cfae5] RISC-V: Select CONFIG_GENERIC_PENDING_IRQ
git bisect bad 213ea5f92da586fe137dfa55004ed0f7706cfae5
# bad: [44b70d9abe4c83a04804975f50fdf7c5594cb443] irqchip/riscv-imsic: Move to common MSI library
git bisect bad 44b70d9abe4c83a04804975f50fdf7c5594cb443
# bad: [1eb4e8fdac707e9e7766c6e1cd1f7cbaaee4eac4] irqchip/irq-msi-lib: Optionally set default irq_eoi()/irq_ack()
git bisect bad 1eb4e8fdac707e9e7766c6e1cd1f7cbaaee4eac4
# first bad commit: [1eb4e8fdac707e9e7766c6e1cd1f7cbaaee4eac4] irqchip/irq-msi-lib: Optionally set default irq_eoi()/irq_ack()
diff mbox series

Patch

diff --git a/drivers/irqchip/irq-gic-v2m.c b/drivers/irqchip/irq-gic-v2m.c
index be35c5349986..1e3476c335ca 100644
--- a/drivers/irqchip/irq-gic-v2m.c
+++ b/drivers/irqchip/irq-gic-v2m.c
@@ -255,6 +255,7 @@  static void __init gicv2m_teardown(void)
 static struct msi_parent_ops gicv2m_msi_parent_ops = {
 	.supported_flags	= GICV2M_MSI_FLAGS_SUPPORTED,
 	.required_flags		= GICV2M_MSI_FLAGS_REQUIRED,
+	.chip_flags		= MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
 	.bus_select_token	= DOMAIN_BUS_NEXUS,
 	.bus_select_mask	= MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
 	.prefix			= "GICv2m-",
diff --git a/drivers/irqchip/irq-imx-mu-msi.c b/drivers/irqchip/irq-imx-mu-msi.c
index 4342a21de1eb..69aacdfc8bef 100644
--- a/drivers/irqchip/irq-imx-mu-msi.c
+++ b/drivers/irqchip/irq-imx-mu-msi.c
@@ -214,6 +214,7 @@  static void imx_mu_msi_irq_handler(struct irq_desc *desc)
 static const struct msi_parent_ops imx_mu_msi_parent_ops = {
 	.supported_flags	= IMX_MU_MSI_FLAGS_SUPPORTED,
 	.required_flags		= IMX_MU_MSI_FLAGS_REQUIRED,
+	.chip_flags		= MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
 	.bus_select_token       = DOMAIN_BUS_NEXUS,
 	.bus_select_mask	= MATCH_PLATFORM_MSI,
 	.prefix			= "MU-MSI-",
diff --git a/drivers/irqchip/irq-msi-lib.c b/drivers/irqchip/irq-msi-lib.c
index d8e29fc0d406..51464c6257f3 100644
--- a/drivers/irqchip/irq-msi-lib.c
+++ b/drivers/irqchip/irq-msi-lib.c
@@ -28,6 +28,7 @@  bool msi_lib_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
 			       struct msi_domain_info *info)
 {
 	const struct msi_parent_ops *pops = real_parent->msi_parent_ops;
+	struct irq_chip *chip = info->chip;
 	u32 required_flags;
 
 	/* Parent ops available? */
@@ -92,10 +93,10 @@  bool msi_lib_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
 	info->flags			|= required_flags;
 
 	/* Chip updates for all child bus types */
-	if (!info->chip->irq_eoi)
-		info->chip->irq_eoi	= irq_chip_eoi_parent;
-	if (!info->chip->irq_ack)
-		info->chip->irq_ack	= irq_chip_ack_parent;
+	if (!chip->irq_eoi && (pops->chip_flags & MSI_CHIP_FLAG_SET_EOI))
+		chip->irq_eoi = irq_chip_eoi_parent;
+	if (!chip->irq_ack && (pops->chip_flags & MSI_CHIP_FLAG_SET_ACK))
+		chip->irq_ack = irq_chip_ack_parent;
 
 	/*
 	 * The device MSI domain can never have a set affinity callback. It
@@ -105,7 +106,7 @@  bool msi_lib_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
 	 * device MSI domain aside of mask/unmask which is provided e.g. by
 	 * PCI/MSI device domains.
 	 */
-	info->chip->irq_set_affinity	= msi_domain_set_affinity;
+	chip->irq_set_affinity = msi_domain_set_affinity;
 	return true;
 }
 EXPORT_SYMBOL_GPL(msi_lib_init_dev_msi_info);
diff --git a/drivers/irqchip/irq-mvebu-gicp.c b/drivers/irqchip/irq-mvebu-gicp.c
index 2b6183919ea4..d67f93f6d750 100644
--- a/drivers/irqchip/irq-mvebu-gicp.c
+++ b/drivers/irqchip/irq-mvebu-gicp.c
@@ -161,6 +161,7 @@  static const struct irq_domain_ops gicp_domain_ops = {
 static const struct msi_parent_ops gicp_msi_parent_ops = {
 	.supported_flags	= GICP_MSI_FLAGS_SUPPORTED,
 	.required_flags		= GICP_MSI_FLAGS_REQUIRED,
+	.chip_flags		= MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
 	.bus_select_token       = DOMAIN_BUS_GENERIC_MSI,
 	.bus_select_mask	= MATCH_PLATFORM_MSI,
 	.prefix			= "GICP-",
diff --git a/drivers/irqchip/irq-mvebu-odmi.c b/drivers/irqchip/irq-mvebu-odmi.c
index ff19bfd258dc..28f7e81df94f 100644
--- a/drivers/irqchip/irq-mvebu-odmi.c
+++ b/drivers/irqchip/irq-mvebu-odmi.c
@@ -157,6 +157,7 @@  static const struct irq_domain_ops odmi_domain_ops = {
 static const struct msi_parent_ops odmi_msi_parent_ops = {
 	.supported_flags	= ODMI_MSI_FLAGS_SUPPORTED,
 	.required_flags		= ODMI_MSI_FLAGS_REQUIRED,
+	.chip_flags		= MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
 	.bus_select_token	= DOMAIN_BUS_GENERIC_MSI,
 	.bus_select_mask	= MATCH_PLATFORM_MSI,
 	.prefix			= "ODMI-",
diff --git a/drivers/irqchip/irq-mvebu-sei.c b/drivers/irqchip/irq-mvebu-sei.c
index 065166ab5dbc..ebd4a9014e8d 100644
--- a/drivers/irqchip/irq-mvebu-sei.c
+++ b/drivers/irqchip/irq-mvebu-sei.c
@@ -356,6 +356,7 @@  static void mvebu_sei_reset(struct mvebu_sei *sei)
 static const struct msi_parent_ops sei_msi_parent_ops = {
 	.supported_flags	= SEI_MSI_FLAGS_SUPPORTED,
 	.required_flags		= SEI_MSI_FLAGS_REQUIRED,
+	.chip_flags		= MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
 	.bus_select_mask	= MATCH_PLATFORM_MSI,
 	.bus_select_token	= DOMAIN_BUS_GENERIC_MSI,
 	.prefix			= "SEI-",
diff --git a/include/linux/msi.h b/include/linux/msi.h
index b10093c4d00e..9abef442c146 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -558,11 +558,21 @@  enum {
 	MSI_FLAG_NO_AFFINITY		= (1 << 21),
 };
 
+/*
+ * Flags for msi_parent_ops::chip_flags
+ */
+enum {
+	MSI_CHIP_FLAG_SET_EOI		= (1 << 0),
+	MSI_CHIP_FLAG_SET_ACK		= (1 << 1),
+};
+
 /**
  * struct msi_parent_ops - MSI parent domain callbacks and configuration info
  *
  * @supported_flags:	Required: The supported MSI flags of the parent domain
  * @required_flags:	Optional: The required MSI flags of the parent MSI domain
+ * @chip_flags:		Optional: Select MSI chip callbacks to update with defaults
+ *			in msi_lib_init_dev_msi_info().
  * @bus_select_token:	Optional: The bus token of the real parent domain for
  *			irq_domain::select()
  * @bus_select_mask:	Optional: A mask of supported BUS_DOMAINs for
@@ -575,6 +585,7 @@  enum {
 struct msi_parent_ops {
 	u32		supported_flags;
 	u32		required_flags;
+	u32		chip_flags;
 	u32		bus_select_token;
 	u32		bus_select_mask;
 	const char	*prefix;