Date: Fri, 19 Jul 2024 09:35:04 +0200
From: Takashi Iwai <tiwai@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mark Brown <broonie@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>,
 Linux Sound Mailing List <linux-sound@vger.kernel.org>, Linux Kernel
 Mailing List <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] sound updates for 6.11-rc1

Linus,

please pull sound updates for v6.11-rc1 from:

  git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git tags/sound-6.11-rc1

The topmost commit is 4594d26fca91fab0e1621d2ab196f3f9bab96bc8

----------------------------------------------------------------

sound updates for 6.11-rc1

Lots of changes in this cycle, but mostly for cleanups and
refactoring.  Significant amount of changes are about DT schema
conversions for ASoC at this time while we see other usual
suspects, too.  Some highlights below:

Core:
- Re-introduction of PCM sync ID support API
- MIDI2 time-base extension in ALSA sequencer API

ASoC:
- Syncing of features between simple-audio-card and the two
  audio-graph cards
- Support for specifying the order of operations for components
  within cards to allow quirking for unusual systems
- Lots of DT schema conversions
- Continued SOF/Intel updates for topology, SoundWire, IPC3/4
- New support for Asahi Kasei AK4619, Cirrus Logic CS530x, Everest
  Semiconductors ES8311, NXP i.MX95 and LPC32xx, Qualcomm LPASS
  v2.5 and WCD937x, Realtek RT1318 and RT1320 and Texas
  Instruments PCM5242

HD-audio:
- More quirks, Intel PantherLake support, senarytech codec support
- Refactoring of Cirrus codec component-binding

Others:
- ALSA control kselftest improvements, and fixes for input value
  checks in various drivers

----------------------------------------------------------------

Abdulrasaq Lawani (1):
      dt-bindings: sound: Convert max98088 to dtschema

Aleksandr Mishin (2):
      ASoC: qcom: Adjust issues in case of DT error in asoc_qcom_lpass_cpu_platform_probe()
      ASoC: amd: Adjust error handling in case of absent codec device

Amadeusz Sławiński (13):
      ASoC: topology: Simplify code
      ASoC: topology: Do not do unnecessary dobj management
      ASoC: topology: Properly initialize soc_enum values
      ASoC: topology: Cleanup soc_tplg_dapm_widget_dbytes_create
      ASoC: topology: Cleanup soc_tplg_dapm_widget_dmixer_create
      ASoC: topology: Cleanup soc_tplg_dapm_widget_denum_create
      ASoC: topology: Correctly set shift_r in soc_tplg_denum_create()
      ASoC: topology: Align dynamic object initialization for controls
      ASoC: topology: Rename function creating widget kcontrol
      ASoC: topology: Reshuffle function placement
      ASoC: topology: Unify code for creating standalone and widget bytes control
      ASoC: topology: Unify code for creating standalone and widget mixer control
      ASoC: topology: Unify code for creating standalone and widget enum control

Andrejs Cainikovs (3):
      ASoC: nau8822: move nau8822_set_dai_sysclk()
      ASoC: nau8822: set NAU8822_REFIMP_80K only once
      ASoC: nau8822: add MCLK support

Andy Shevchenko (6):
      ASoC: codecs: Remove unused of_gpio.h
      ASoC: fsl: Remove unused of_gpio.h
      ASoC: rockchip: Remove unused of_gpio.h
      ASoC: codecs: Replace of_gpio.h by proper one
      ASoC: generic: Replace of_gpio.h by proper one
      ASoC: samsung: Replace of_gpio.h by proper one

Animesh Agarwal (11):
      ASoC: dt-bindings: ak4554: Convert to dtschema
      ASoC: dt-bindings: linux,spdif: Convert spdif-reciever.txt to dtschema
      ASoC: dt-bindings: wlf,wm8782: Convert to dtschema
      ASoC: dt-bindings: wlf,wm8804: Convert to dtschema
      ASoC: dt-bindings: realtek,rt5631: Convert to dtschema
      ASoC: dt-bindings: realtek,rt5514: Convert to dtschema
      ASoC: dt-bindings: realtek,rt5659: Convert to dtschema
      ASoC: dt-bindings: realtek,rt5677: Convert to dtschema
      ASoC: dt-bindings: realtek,rt5645: Convert to dtschema
      ASoC: dt-bindings: cirrus,cs4270: Convert to dtschema
      ASoC: dt-bindings: cirrus,cs42xx8: Convert to dtschema

Artur Weber (6):
      ASoC: dt-bindings: samsung,midas-audio: Add headset mic bias supply
      ASoC: dt-bindings: samsung,midas-audio: Add GPIO-based headset jack detection
      ASoC: samsung: midas_wm1811: Use SND_SOC_DAPM_REGULATOR_SUPPLY for bias regulators
      ASoC: samsung: midas_wm1811: Add headset mic bias supply support
      ASoC: samsung: midas_wm1811: Add GPIO-based headset jack detection
      ASoC: samsung: midas_wm1811: Use dev_err_probe where appropriate

Bard Liao (8):
      ASoC: Intel: sof_sdw_cs42l42: use dai parameter
      ASoC: Intel: sof_sdw_rt711: use dai parameter
      ASoC: Intel: sof_sdw_rt5682: use dai parameter
      ASoC: Intel: sof_sdw_rt700: use dai parameter
      ASoC: Intel: sof_sdw_rt_dmic: use from dai parameter
      ASoC: Intel: sof_sdw_rt_sdca_jack_common: use dai parameter
      ASoC: Intel: sof_sdw: remove get_codec_dai_by_name
      ASoC: Intel: sof_sdw: select PINCTRL_CS42L43 and SPI_CS42L43

Brent Lu (8):
      ASoC: SOF: sof-audio: rename dai clock setting query function
      ASoC: SOF: sof-audio: add sof_dai_get_tdm_slots function
      ASoC: SOF: ipc3-topology: support tdm slot number query
      ASoC: SOF: ipc4-topology: support tdm slot number query
      ASoC: Intel: maxim-common: rewrite max_98373_hw_params function
      ASoC: Intel: sof_da7219: remove local max98373 ops
      ASoC: Intel: sof_da7219: disable max98373 speaker pins in late_probe
      ASoC: Intel: maxim-common: add max_98373_get_tx_mask function

Chancel Liu (3):
      ASoC: dt-bindings: fsl_rpmsg: Add compatible string for i.MX95
      ASoC: fsl_rpmsg: Add support for i.MX95 platform
      ASoC: fsl_xcvr: Improve suspend/resume flow in fsl_xcvr_trigger()

Charles Keepax (3):
      ASoC: Intel: sof_sdw: Add missing controls for cs42l43/cs35l56
      ASoC: Intel: soc-acpi: Add match entries for some cs42l43 laptops
      ASoC: Intel: sof_sdw: Add quirks for some new Dell laptops

Chen Ni (2):
      ASoC: max98088: Check for clk_prepare_enable() error
      ASoC: Intel: sof_sdw: Convert comma to semicolon

Christian Hewitt (2):
      ASoC: Add support for ti,pcm5242 to the pcm512x driver
      ASoC: dt-bindings: add ti,pcm5242 to pcm512x

Christophe JAILLET (8):
      ASoC: topology: Constify an argument of snd_soc_tplg_component_load()
      ASoC: Intel: avs: Constify struct snd_soc_tplg_ops
      ASoC: qdsp6: audioreach: Constify struct snd_soc_tplg_ops
      ASoC: Intel: Skylake: Constify struct snd_soc_tplg_ops
      ASoC: SOF: topology: Constify struct snd_soc_tplg_ops
      const_structs.checkpatch: add snd_soc_tplg_ops
      ASoC: intel: Constify struct snd_soc_ops
      ASoC: SOF: mediatek: Constify struct mtk_adsp_ipc_ops

Dan Carpenter (1):
      ASoC: samsung: midas_wm1811: Fix error code in probe()

Dr. David Alan Gilbert (4):
      ASoC: codecs: lpass-rx-macro: remove unused struct 'rx_macro_reg_mask_val'
      ASoC: codecs: wm0010: remove unused struct 'wm0010_spi_msg'
      ASoC: codecs: cx2072x: remove unused struct 'cx2072x_eq_ctrl'
      ALSA: xen-front: remove unused struct 'alsa_sndif_hw_param'

Edson Juliano Drosdeck (1):
      ALSA: hda/realtek: Enable headset mic on Positivo SU C1400

Elinor Montmasson (5):
      ASoC: fsl-asoc-card: add support for dai links with multiple codecs
      ASoC: fsl-asoc-card: add second dai link component for codecs
      ASoC: fsl-asoc-card: add compatibility to use 2 codecs in dai-links
      ASoC: fsl-asoc-card: merge spdif support from imx-spdif.c
      ASoC: dt-bindings: update fsl-asoc-card bindings after imx-spdif merge

Fabio Estevam (3):
      ASoC: fsl: fsl_aud2htx: Switch to RUNTIME_PM_OPS()
      ASoC: fsl: fsl_easrc: Switch to RUNTIME_PM_OPS()
      ASoC: fsl: fsl_xcvr: Switch to RUNTIME_PM_OPS()

Hao Ge (1):
      ASoc: PCM6240: Return directly after a failed devm_kzalloc() in pcmdevice_i2c_probe()

Herve Codina (10):
      ASoC: fsl: fsl_qmc_audio: Check devm_kasprintf() returned value
      ASoC: fsl: fsl_qmc_audio: Fix issues detected by checkpatch
      ASoC: fsl: fsl_qmc_audio: Split channel buffer and PCM pointer handling
      ASoC: fsl: fsl_qmc_audio: Identify the QMC channel involved in completion routines
      ASoC: fsl: fsl_qmc_audio: Introduce qmc_audio_pcm_{read,write}_submit()
      ASoC: fsl: fsl_qmc_audio: Introduce qmc_dai_constraints_interleaved()
      soc: fsl: cpm1: qmc: Introduce functions to get a channel from a phandle list
      soc: fsl: cpm1: qmc: Introduce qmc_chan_count_phandles()
      dt-bindings: sound: fsl,qmc-audio: Add support for multiple QMC channels per DAI
      ASoC: fsl: fsl_qmc_audio: Add support for non-interleaved mode.

Jack Yu (1):
      ASoC: rt1318: Add RT1318 audio amplifier driver

Jaroslav Kysela (3):
      ALSA: pcm: reinvent the stream synchronization ID API
      ALSA: pcm: optimize and clarify stream synchronization ID API
      ALSA: pcm: Fix id copying in snd_pcm_set_sync_per_card()

Javier Carrasco (9):
      ASoC: cs35l34: Constify struct regmap_config
      ASoC: cs35l35: Constify struct regmap_config
      ASoC: cs35l36: Constify struct regmap_config
      ASoC: cs53l30: Constify struct regmap_config
      ASoC: jz4760: Constify struct regmap_config
      ASoC: jz4770: Constify struct regmap_config
      ASoC: wsa881x: Constify struct regmap_config
      ASoC: wsa883x: Constify struct regmap_config
      ASoC: wsa884x: Constify struct regmap_config

Jeff Johnson (2):
      ASoC: amd: add missing MODULE_DESCRIPTION() macros
      ASoC: fsl: imx-pcm-fiq: add missing MODULE_DESCRIPTION() macro

Jerome Brunet (2):
      ASoC: soc-utils: allow sample rate up to 768kHz for the dummy dai
      ASoC: meson: tdm: add sample rate support up to 768kHz

Jiaxin Yu (1):
      ASoC: mediatek: mt6358: Add "Dmic Mode Switch" kcontrol for switch DMIC mode.

Khanh Le (1):
      ASoC: Add ak4619 codec support

Krzysztof Kozlowski (70):
      ASoC: Constify channel mapping array arguments in set_channel_map()
      ASoC: qcom: q6apm-lpass-dais: Implement proper channel mapping
      ASoC: qcom: qdsp6: Set channel mapping instead of fixed defaults
      ASoC: qcom: x1e80100: Correct channel mapping
      ASoC: codecs: wcd938x: Drop unused duplicated MIC2 bias register defines
      ASoC: codecs: wcd938x: Unify define used for MIC2 bias register
      ASoC: codecs: wcd939x: Unify define used for MIC bias registers
      ASoC: codecs: wcd939x: Minor white-space and define cleanup
      ASoC: codecs: wcd939x: Unify define used for MIC bias VOUT registers
      ASoC: codecs: wcd938x: Drop no-op ADC2_BCS Disable Switch
      ASoC: soc-dai.h: Constify DAI ops auto_selectable_formats
      ASoC: Constify DAI ops auto_selectable_formats
      ASoC: Constify of_phandle_args in snd_soc_dai_driver
      ASoC: Constify of_phandle_args in snd_soc_dai_link_component
      ASoC: Constify passed data to core function
      ASoC: Constify DAI passed to get_channel_map
      ASoC: Constify return of snd_soc_dai_get_pcm_stream()
      ASoC: qcom: x1e80100: Add USB DisplayPort plug support
      ASoC: codecs: wcd-mbhc: Constify passed MBHC reg fields
      ASoC: codecs: wcd9335: Drop unused state container fields
      ASoC: codecs: wcd9335: Constify static data
      ASoC: codecs: wcd9335: Handle nicer probe deferral and simplify with dev_err_probe()
      ASoC: codecs: wcd9335: Drop unneeded error message
      ASoC: codecs: wcd9335: Drop unused dmic rate handling
      ASoC: codecs: wcd934x: Drop unused interp path enum
      ASoC: codecs: wcd934x: Constify static data
      ASoC: codecs: wcd934x: Drop unused mic bias voltage fields
      ASoC: codecs: wcd934x: Handle nicer probe deferral and simplify with dev_err_probe()
      ASoC: codecs: wcd937x: Constify static data
      ASoC: codecs: wcd937x: Constify wcd937x_sdw_ch_info
      ASoC: codecs: wcd937x: Drop unused enums, defines and types
      ASoC: codecs: wcd937x: Drop unused state container fields
      ASoC: codecs: wcd937x: Drop unused chipid member
      ASoC: codecs: wcd938x: Constify static data
      ASoC: codecs: wcd938x: Constify wcd938x_sdw_ch_info
      ASoC: codecs: wcd938x: Drop unused RX/TX direction enum
      ASoC: codecs: wcd938x: Drop unused num_ports field
      ASoC: codecs: wcd939x: Constify static data
      ASoC: codecs: wcd939x: Constify wcd939x_sdw_ch_info
      ASoC: codecs: wcd939x: Drop unused RX/TX direction enum
      ASoC: codecs: wcd939x: Drop unused num_ports field
      ASoC: codecs: lpass-rx-macro: add missing handling of v2.1 codec
      ASoC: codecs: lpass-wsa-macro: Drop unused define
      ASoC: codecs: lpass-wsa-macro: Prepare to accommodate new codec versions
      ASoC: codecs: lpass-wsa-macro: Correct support for newer v2.5 version
      ASoC: codecs: lpass-macro: Gracefully handle unknown version
      ASoC: codecs: lpass-macro: Use enum for handling codec version
      ASoC: codecs: lpass-wsa-macro: add missing select of common code
      ASoC: codecs: lpass-rx-macro: Fix using NULL pointer in probe() dev_err
      ASoC: codecs: lpass-wsa-macro: Fix using NULL pointer in probe() dev_err
      ASoC: codecs: lpass-rx-macro: Simplify PDS cleanup with devm
      ASoC: codecs: lpass-rx-macro: Simplify with cleanup.h
      ASoC: codecs: lpass-rx-macro: Keep static regmap_config as const
      ASoC: dapm: Use unsigned for number of widgets in snd_soc_dapm_new_controls()
      ASoC: codecs: lpass-rx-macro: Use unsigned for number of widgets
      ASoC: codecs: lpass-wsa-macro: Simplify with cleanup.h
      ASoC: codecs: wcd939x: Fix typec mux and switch leak during device removal
      ASoC: codecs: audio-iio-aux: Simplify audio_iio_aux_add_dapms() with cleanup.h
      ASoC: codecs: audio-iio-aux: Simplify audio_iio_aux_probe() with cleanup.h
      ASoC: codecs: wcd9335: Simplify with cleanup.h
      ASoC: codecs: wcd934x: Simplify with cleanup.h
      ASoC: simple-card-utils: Simplify with cleanup.h
      ASoC: audio-graph-card: Use cleanup.h instead of devm_kfree()
      ASoC: audio-graph-card2: Use cleanup.h instead of devm_kfree()
      ASoC: simple-card: Use cleanup.h instead of devm_kfree()
      ASoC: ops: Simplify with cleanup.h
      ASoC: dapm: Simplify dapm_cnew_widget() with cleanup.h
      ASoC: dapm: Simplify snd_soc_dai_link_event_pre_pmu() with cleanup.h
      ASoC: codecs: aw88395: Simplify with cleanup.h
      ASoC: qcom: topology: Simplify with cleanup.h

Kuninori Morimoto (22):
      ASoC: simple-card-utils: remove both playback/capture_only check
      ASoC: audio-graph-card2: add ep_to_port() / port_to_ports()
      ASoC: audio-graph-card2: remove ports node name check
      ASoC: audio-graph-card2: expand dai_link property part
      ASoC: audio-graph-card2: merge graph_parse_mclk_fs() into graph_link_init()
      ASoC: audio-graph-card: add ep_to_port() / port_to_ports()
      ASoC: audio-graph-card: remove ports node name check
      ASoC: audio-graph-card: enable playback/capture_only property
      ASoC: audio-graph-card: merge graph_parse_mclk_fs() into graph_link_init()
      ASoC: simple-audio-card: enable playback/capture_only property
      ASoC: simple-audio-card: merge simple_parse_mclk_fs() into simple_link_init()
      ASoC: audio-graph-card2: add support for aux devices
      ASoC: dt-bindings: audio-graph-card2: add support for aux devices
      ASoC: dt-bindings: ak4619: Add initial DT binding
      ASoC: dt-bindings: add missing vender prefix on filename
      ASoC: audio-graph-port: add link-trigger-order
      ASoC: simple-card-utils: add link-trigger-order support
      ASoC: simple-audio-card: add link-trigger-order support
      ASoC: audio-graph-card: add link-trigger-order support
      ASoC: audio-graph-card2: add link-trigger-order support
      ASoC: simple-audio-mux: enable to select MUX names
      ASoC: dt-bindings: simple-audio-mux: add state-labels property

Linus Walleij (1):
      ASoC: tas5086: Convert to GPIO descriptors

Lukas Bulwahn (1):
      MAINTAINERS: adjust file entries after adding vendor prefix in sound dtbs

Manikantan R (1):
      ASoC: dt-bindings: wsa883x: Document port mapping property

Mark Brown (3):
      kselftest/alsa: Fix validation of writes to volatile controls
      kselftest/alsa: Use card name rather than number in test names
      kselftest/alsa: Log the PCM ID in pcm-test

Matteo Martelli (2):
      ASoC: es8311: dt-bindings: add everest es8311 codec
      ASoC: codecs: es8311: add everest es8311 codec support

Maxim Kochetkov (2):
      ASoC: dt-bindings: nau8824: Add master clock handling
      ASoC: codecs: nau8824: Add master clock handling

Mithil Bavishi (1):
      ASoC: dt-bindings: omap-mcpdm: Convert to DT schema

Mohammad Rafi Shaik (3):
      ASoC: codecs: wcd937x-sdw: Fix Unbalanced pm_runtime_enable
      ASoC: codecs: wcd937x: Remove the string compare in MIC BIAS widget settings
      ASoC: codecs: wcd937x: Remove separate handling for vdd-buck supply

Mohan Kumar (2):
      ASoC: simple-card-utils: Split simple_fixup_sample_fmt func
      ASoC: tegra: I2S client convert formats handling

Nathan Chancellor (2):
      ASoC: fsl: lpc3xxx-i2s: Avoid using ret uninitialized in lpc32xx_i2s_probe()
      ASoC: fsl: lpc3xxx-i2s: Include bitfield.h for FIELD_PREP

Neil Armstrong (5):
      ASoC: dt-bindings: convert amlogic,g12a-tohdmitx to dt-schema
      ASoC: dt-bindings: convert tas571x.txt to dt-schema
      ASoC: dt-bindings: convert everest,es7241.txt to dt-schema
      ASoC: dt-bindings: convert everest,es7134.txt to dt-schema
      ASoC: dt-bindings: amlogic,gx-sound-card: drop minItems for audio-widgets

Paul Handrigan (4):
      ASoC: dt-bindings: cirrus,cs530x: Add initial DT binding
      ASoC: cs530x: Support for cs530x ADCs
      ASoC: cs530x: Calculate proper bclk rate using TDM
      ASoC: cs530x: Remove bclk from private structure

Peter Ujfalusi (4):
      ASoC: SOF: ipc4-topology: Add support for NHLT with 16-bit only DMIC blob
      ASoC: SOF: Intel: pci-tgl: Align ADL-N sof_dev_desc struct name to convention
      ASoC: SOF: ipc4-topology: Use correct queue_id for requesting input pin format
      ASoC: SOF: ipc4-topology: Use single token list for the copiers

Pierre-Louis Bossart (9):
      ASoC: SOF: Intel: hda: print PCI class info only once
      ACPI: utils: introduce acpi_get_local_u64_address()
      soundwire: slave: simplify code with acpi_get_local_u64_address()
      ALSA: hda: intel-sdw-acpi: use acpi_get_local_u64_address()
      PCI: Add INTEL_HDA_PTL to pci_ids.h
      ALSA: hda: hda-intel: add PantherLake support
      ALSA: hda: intel-dsp-config: Add PTL support
      ASoC: Intel: sof_sdw: fix jack detection on ADL-N variant RVP
      ASoC: Intel: sof_sdw: add quirk for Dell SKU 0B8C

Piotr Wojtaszczyk (2):
      ASoC: dt-bindings: lpc32xx: Add lpc32xx i2s DT binding
      ASoC: fsl: Add i2s and pcm drivers for LPC32xx CPUs

Prasad Kumpatla (7):
      ASoC: dt-bindings: document wcd937x Audio Codec
      ASoC: codecs: wcd937x-sdw: add SoundWire driver
      ASoC: codecs: wcd937x: add wcd937x codec driver
      ASoC: codecs: wcd937x: add basic controls
      ASoC: codecs: wcd937x: add playback dapm widgets
      ASoC: codecs: wcd937x: add capture dapm widgets
      ASoC: codecs: wcd937x: add audio routing and Kconfig

Rayyan Ansari (2):
      ASoC: dt-bindings: qcom,msm8916-wcd-digital-codec: convert to dtschema
      ASoC: dt-bindings: qcom,apq8096-sndcard: use dtschema

Ricard Wanderlof (3):
      ASoC: dt-bindings: tlv320adc3xxx: Fix incorrect GPIO description
      ASoC: dt-bindings: tlv320adc3xxx: Add MICBIAS-as-GPO properties
      ASoC: tlv320adc3xxx: Add support for using MICBIAS pins as GPO

Richard Fitzgerald (10):
      ASoC: cs35l56: Revert support for dual-ownership of ASP registers
      ASoC: cs35l56: Remove support for A1 silicon
      ASoC: cs35l56: Remove redundant clearing of clk_stop_mode1
      firmware: cs_dsp: Don't allow writes to read-only controls
      ASoC: cs35l56: Use header defines for Speaker Volume control definition
      ASoC: cs35l56: Limit Speaker Volume to +12dB maximum
      firmware: cs_dsp: Don't allocate temporary buffer for info text
      firmware: cs_dsp: Make wmfw and bin filename arguments const char *
      firmware: cs_dsp: Clarify wmfw format version log message
      firmware: cs_dsp: Rename fw_ver to wmfw_ver

Rob Herring (Arm) (2):
      ASoC: PCM6240: Use of_property_read_reg()
      ASoC: tas2781: Use of_property_read_reg()

Seunghun Han (1):
      ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book Pro 360

Shenghao Ding (9):
      ASoc: tas2781: Enable RCA-based playback without DSP firmware download
      ASoc: tas2781: Add name_prefix as the prefix name of firmwares and kcontrol to support corresponding TAS2563/TAS2781s
      ASoc: tas2781: Add name_prefix as the prefix name of DSP firmwares and calibrated data files
      ASoc: tas2781: Set "Speaker Force Firmware Load" as the common kcontrol for both tas27871 and tas2563
      ASoc: pcm6240: Remove unnecessary name-prefix for all the controls
      ASoc: TAS2781: replace beXX_to_cpup with get_unaligned_beXX for potentially broken alignment
      ASoc: TAS2781: rename the tas2781_reset as tasdevice_reset
      ASoC: tas2781: Add new Kontrol to set tas2563 digital Volume
      ALSA: hda/tas2781: Add new quirk for Lenovo Hera2 Laptop

Shengjiu Wang (10):
      ASoC: dt-bindings: fsl,mqs: Add i.MX95 platform support
      ASoC: fsl_mqs: Add i.MX95 platform support
      ASoC: dt-bindings: fsl,xcvr: Add compatible string for i.MX95
      ASoC: fsl_xcvr: Add support for i.MX95 platform
      ASoC: fsl_sai: Add separate DAI for transmitter and receiver
      ASoC: fsl_audmix: Split playback and capture stream to different DAI
      ASoC: imx-audmix: Split capture device for audmix
      ASoC: dt-bindings: fsl,xcvr: Adjust the number of interrupts
      ASoC: ak4458: remove "reset-gpios" property handler
      ALSA: pcm_dmaengine: Don't synchronize DMA channel when DMA is paused

Shuming Fan (4):
      ASoC: rt1320: Add RT1320 SDCA vendor-specific driver
      ASoC: rt711-sdca: add GE selected mode control
      ASoC: rt712-sdca: change the definition name of SDCA channel number
      ASoC: rt712-sdca: add the function for version B

Simon Trimmer (7):
      ASoC: cs35l56: Attempt to read from cirrus,speaker-id device property first
      ALSA: hda: hda_component: Introduce component parent structure
      ALSA: hda: hda_component: Change codecs to use component parent structure
      ALSA: hda: hda_component: Move codec field into the parent
      ALSA: hda: hda_component: Protect shared data with a mutex
      ALSA: hda: cs35l56: Perform firmware download in the background
      ASoC: cs35l56: Accept values greater than 0 as IRQ numbers

Srinivas Kandagatla (9):
      ASoC: codecs: lpass-macro: add helpers to get codec version
      ASoC: codec: lpass-rx-macro: prepare driver to accomdate new codec versions
      ASoC: codec: lpass-rx-macro: add support for 2.5 codec version
      ASoC: qcom: q6dsp: parse Display port tokens
      ASoC: qcom: common: add Display port Jack function
      ASoC: qcom: sc8280xp: add Display port Jack
      ASoC: codecs: wsa883x: parse port-mapping information
      ASoC: dt-bindings: wsa8840: Document port mapping property
      ASoC: codecs: wsa884x: parse port-mapping information

Stefan Binding (1):
      ALSA: hda: cs35l41: Fix missing Speaker ID GPIO description in _DSD

Takashi Iwai (15):
      ALSA: vmaster: Return error for invalid input values
      ALSA: hda: Return -EINVAL for invalid volume/switch inputs
      ALSA: control: Apply sanity check of input values for user elements
      ALSA: chmap: Mark Channel Map controls as volatile
      ALSA: hda: Add input value sanity checks to HDMI channel map controls
      ALSA: control: Allow NULL passed to snd_ctl_remove()
      ALSA: sb: Drop NULL check for snd_ctl_remove()
      ALSA: hda: Drop NULL check for snd_ctl_remove()
      ALSA: spi: Drop NULL check for snd_ctl_remove()
      ALSA: pcm_dmaengine: Unify two close functions
      ALSA: pcm: Fix missing export of snd_pcm_set_sync_per-card()
      ALSA: seq: Add tempo base unit for MIDI2 Set Tempo messages
      ALSA: usb: Fix UBSAN warning in parse_audio_unit()
      ALSA: usb: Use BIT() for bit values
      ALSA: seq: ump: Skip useless ports for static blocks

Tony Luck (1):
      ASoC: Intel: avs: es8336: Switch to new Intel CPU model defines

Uwe Kleine-König (2):
      ASoC: codecs: Drop explicit initialization of struct i2c_device_id::driver_data to 0
      ALSA: ppc: keywest: Drop explicit initialization of struct i2c_device_id::driver_data to 0

Vijendar Mukunda (5):
      ASoC: amd: acp: remove acp_i2s_probe function
      ASoC: amd: acp: remove unused variables from acp_resource structure
      ASoC: amd: acp: modify conditional check for programming i2s mclk
      ASoC: amd: acp: move i2s clock generation sequence
      ASoC: amd: acp: add pcm constraints for buffer size and period size

Xiaxi Shen (1):
      ASoC: dt-bindings: ak4104: convert to dt schema

Yang Li (1):
      ASoC: Remove unneeded semicolon

Zhang Yi (3):
      ASoC: codecs: ES8326: Slove headphone detection issue
      ASoC: codecs: ES8326: Minimize the pop noise
      ASoC: codecs: ES8326: regcache_sync error issue

Zhu Jun (1):
      selftests/alsa:Fix printf format string in pcm-test.c

bo liu (1):
      ALSA: hda/senarytech: add senarytech codec support

---
 Documentation/devicetree/bindings/sound/ak4104.txt |   25 -
 Documentation/devicetree/bindings/sound/ak4554.txt |   11 -
 .../bindings/sound/amlogic,g12a-tohdmitx.txt       |   58 -
 .../bindings/sound/amlogic,g12a-tohdmitx.yaml      |   54 +
 .../bindings/sound/amlogic,gx-sound-card.yaml      |    1 -
 .../bindings/sound/asahi-kasei,ak4104.yaml         |   49 +
 .../sound/{ak4375.yaml => asahi-kasei,ak4375.yaml} |    2 +-
 .../bindings/sound/asahi-kasei,ak4554.yaml         |   27 +
 .../sound/{ak4613.yaml => asahi-kasei,ak4613.yaml} |    2 +-
 .../bindings/sound/asahi-kasei,ak4619.yaml         |   62 +
 .../sound/{ak4642.yaml => asahi-kasei,ak4642.yaml} |    2 +-
 .../bindings/sound/audio-graph-card2.yaml          |    5 +
 .../bindings/sound/audio-graph-port.yaml           |    9 +
 .../devicetree/bindings/sound/cirrus,cs4270.yaml   |   59 +
 .../devicetree/bindings/sound/cirrus,cs42xx8.yaml  |   81 +
 .../devicetree/bindings/sound/cirrus,cs530x.yaml   |   85 +
 Documentation/devicetree/bindings/sound/cs4270.txt |   21 -
 .../devicetree/bindings/sound/cs42xx8.txt          |   34 -
 .../devicetree/bindings/sound/everest,es7134.txt   |   15 -
 .../devicetree/bindings/sound/everest,es71x4.yaml  |   62 +
 .../devicetree/bindings/sound/everest,es7241.txt   |   28 -
 .../devicetree/bindings/sound/everest,es7241.yaml  |   67 +
 .../devicetree/bindings/sound/everest,es8316.yaml  |    7 +-
 .../bindings/sound/fsl,imx-audio-spdif.yaml        |   66 -
 .../devicetree/bindings/sound/fsl,mqs.yaml         |    2 +
 .../devicetree/bindings/sound/fsl,qmc-audio.yaml   |   41 +-
 .../devicetree/bindings/sound/fsl,rpmsg.yaml       |    1 +
 .../sound/{sgtl5000.yaml => fsl,sgtl5000.yaml}     |    2 +-
 .../devicetree/bindings/sound/fsl,xcvr.yaml        |   43 +-
 .../devicetree/bindings/sound/fsl-asoc-card.yaml   |   53 +-
 .../{linux,spdif-dit.yaml => linux,spdif.yaml}     |    8 +-
 .../devicetree/bindings/sound/maxim,max98088.txt   |   23 -
 .../devicetree/bindings/sound/maxim,max98088.yaml  |   47 +
 .../sound/{zl38060.yaml => mscc,zl38060.yaml}      |    2 +-
 .../devicetree/bindings/sound/nuvoton,nau8824.yaml |    8 +
 .../devicetree/bindings/sound/nxp,lpc3220-i2s.yaml |   73 +
 .../devicetree/bindings/sound/omap-mcpdm.txt       |   30 -
 .../devicetree/bindings/sound/pcm512x.txt          |    2 +-
 .../devicetree/bindings/sound/qcom,apq8096.txt     |  128 -
 .../sound/qcom,msm8916-wcd-digital-codec.yaml      |   55 +
 .../bindings/sound/qcom,msm8916-wcd-digital.txt    |   20 -
 .../devicetree/bindings/sound/qcom,sm8250.yaml     |    1 +
 .../bindings/sound/qcom,wcd937x-sdw.yaml           |   91 +
 .../devicetree/bindings/sound/qcom,wcd937x.yaml    |   82 +
 .../devicetree/bindings/sound/qcom,wsa883x.yaml    |    8 +
 .../devicetree/bindings/sound/qcom,wsa8840.yaml    |    8 +
 .../sound/{rt1019.yaml => realtek,rt1019.yaml}     |    2 +-
 .../devicetree/bindings/sound/realtek,rt5514.yaml  |   70 +
 .../devicetree/bindings/sound/realtek,rt5631.yaml  |   67 +
 .../devicetree/bindings/sound/realtek,rt5645.yaml  |  131 +
 .../devicetree/bindings/sound/realtek,rt5659.yaml  |  129 +
 .../devicetree/bindings/sound/realtek,rt5677.yaml  |  135 +
 Documentation/devicetree/bindings/sound/rt5514.txt |   37 -
 Documentation/devicetree/bindings/sound/rt5631.txt |   48 -
 Documentation/devicetree/bindings/sound/rt5645.txt |   82 -
 Documentation/devicetree/bindings/sound/rt5659.txt |   89 -
 Documentation/devicetree/bindings/sound/rt5677.txt |   78 -
 .../bindings/sound/samsung,midas-audio.yaml        |   33 +
 .../bindings/sound/simple-audio-mux.yaml           |    6 +
 .../devicetree/bindings/sound/spdif-receiver.txt   |   10 -
 .../devicetree/bindings/sound/tas571x.txt          |   49 -
 .../devicetree/bindings/sound/ti,omap4-mcpdm.yaml  |   73 +
 .../sound/{tas2562.yaml => ti,tas2562.yaml}        |    2 +-
 .../sound/{tas2770.yaml => ti,tas2770.yaml}        |    2 +-
 .../sound/{tas27xx.yaml => ti,tas27xx.yaml}        |    2 +-
 .../devicetree/bindings/sound/ti,tas57xx.yaml      |  133 +
 .../sound/{tas5805m.yaml => ti,tas5805m.yaml}      |    2 +-
 .../bindings/sound/ti,tlv320adc3xxx.yaml           |   32 +-
 .../{tlv320adcx140.yaml => ti,tlv320adcx140.yaml}  |    2 +-
 .../sound/{wm8750.yaml => wlf,wm8750.yaml}         |    2 +-
 .../devicetree/bindings/sound/wlf,wm8782.yaml      |   47 +
 .../devicetree/bindings/sound/wlf,wm8804.yaml      |   58 +
 Documentation/devicetree/bindings/sound/wm8782.txt |   24 -
 Documentation/devicetree/bindings/sound/wm8804.txt |   25 -
 MAINTAINERS                                        |   26 +-
 arch/arm/configs/imx_v6_v7_defconfig               |    1 -
 arch/arm64/configs/defconfig                       |    1 -
 drivers/acpi/utils.c                               |   16 +-
 drivers/firmware/cirrus/cs_dsp.c                   |   71 +-
 drivers/soc/fsl/qe/qmc.c                           |   32 +-
 drivers/soundwire/slave.c                          |   13 +-
 include/dt-bindings/sound/audio-graph.h            |   26 +
 include/linux/acpi.h                               |    1 +
 include/linux/firmware/cirrus/cs_dsp.h             |   10 +-
 include/linux/firmware/mediatek/mtk-adsp-ipc.h     |    2 +-
 include/linux/pci_ids.h                            |    1 +
 include/soc/fsl/qe/qmc.h                           |   27 +-
 include/sound/cs35l41.h                            |    4 +-
 include/sound/cs35l56.h                            |   13 +-
 include/sound/pcm.h                                |   16 +-
 include/sound/rt1318.h                             |   16 +
 include/sound/simple_card_utils.h                  |    8 +-
 include/sound/soc-dai.h                            |   36 +-
 include/sound/soc-dapm.h                           |    2 +-
 include/sound/soc-topology.h                       |    2 +-
 include/sound/soc.h                                |   19 +-
 include/sound/sof.h                                |    1 +
 include/sound/tas2781-dsp.h                        |   11 +-
 include/sound/tas2781-tlv.h                        |  262 +-
 include/sound/tas2781.h                            |   10 +-
 include/uapi/sound/asequencer.h                    |    7 +-
 include/uapi/sound/asound.h                        |    9 +-
 scripts/const_structs.checkpatch                   |    1 +
 sound/core/control.c                               |    9 +-
 sound/core/pcm_dmaengine.c                         |   40 +-
 sound/core/pcm_lib.c                               |   52 +-
 sound/core/pcm_native.c                            |    6 +
 sound/core/seq/seq_clientmgr.c                     |    4 +
 sound/core/seq/seq_queue.c                         |    6 +-
 sound/core/seq/seq_timer.c                         |   21 +-
 sound/core/seq/seq_timer.h                         |    4 +-
 sound/core/seq/seq_ump_client.c                    |   16 +
 sound/core/vmaster.c                               |    8 +
 sound/hda/hdac_device.c                            |    1 +
 sound/hda/hdmi_chmap.c                             |   18 +
 sound/hda/intel-dsp-config.c                       |    9 +
 sound/hda/intel-sdw-acpi.c                         |    6 +-
 sound/isa/sb/emu8000.c                             |    6 +-
 sound/isa/sb/sb16_csp.c                            |   12 +-
 sound/pci/emu10k1/p16v.c                           |   17 +-
 sound/pci/hda/Kconfig                              |   11 +
 sound/pci/hda/Makefile                             |    2 +
 sound/pci/hda/cs35l41_hda.c                        |  129 +-
 sound/pci/hda/cs35l41_hda.h                        |    1 +
 sound/pci/hda/cs35l41_hda_property.c               |   15 +
 sound/pci/hda/cs35l56_hda.c                        |  115 +-
 sound/pci/hda/cs35l56_hda.h                        |    3 +
 sound/pci/hda/hda_codec.c                          |   23 +-
 sound/pci/hda/hda_component.c                      |   75 +-
 sound/pci/hda/hda_component.h                      |   48 +-
 sound/pci/hda/hda_cs_dsp_ctl.c                     |    2 +-
 sound/pci/hda/hda_intel.c                          |    2 +
 sound/pci/hda/patch_realtek.c                      |   20 +-
 sound/pci/hda/patch_senarytech.c                   |  244 ++
 sound/pci/hda/tas2781_hda_i2c.c                    |   48 +-
 sound/ppc/keywest.c                                |    4 +-
 sound/soc/amd/acp-es8336.c                         |    4 +-
 sound/soc/amd/acp/acp-i2s.c                        |   19 +-
 sound/soc/amd/acp/acp-legacy-common.c              |    1 +
 sound/soc/amd/acp/acp-pci.c                        |    1 +
 sound/soc/amd/acp/acp-pdm.c                        |    1 +
 sound/soc/amd/acp/acp-platform.c                   |   14 +
 sound/soc/amd/acp/acp-rembrandt.c                  |    7 +-
 sound/soc/amd/acp/acp-renoir.c                     |    2 -
 sound/soc/amd/acp/acp63.c                          |    7 +-
 sound/soc/amd/acp/acp70.c                          |    2 -
 sound/soc/amd/acp/amd.h                            |    3 +-
 sound/soc/amd/ps/ps-mach.c                         |    1 +
 sound/soc/amd/renoir/acp3x-rn.c                    |    1 +
 sound/soc/amd/yc/acp6x-mach.c                      |    1 +
 sound/soc/codecs/Kconfig                           |   56 +
 sound/soc/codecs/Makefile                          |   19 +
 sound/soc/codecs/adau7118.c                        |    6 +-
 sound/soc/codecs/ak4118.c                          |    1 -
 sound/soc/codecs/ak4458.c                          |   12 +-
 sound/soc/codecs/ak4613.c                          |    2 +-
 sound/soc/codecs/ak4619.c                          |  912 ++++++
 sound/soc/codecs/audio-iio-aux.c                   |   83 +-
 sound/soc/codecs/aw87390.c                         |    2 +-
 sound/soc/codecs/aw88261.c                         |    2 +-
 sound/soc/codecs/aw88395/aw88395.c                 |    4 +-
 sound/soc/codecs/aw88395/aw88395_lib.c             |   51 +-
 sound/soc/codecs/aw88399.c                         |    4 +-
 sound/soc/codecs/cs35l34.c                         |    2 +-
 sound/soc/codecs/cs35l35.c                         |    2 +-
 sound/soc/codecs/cs35l36.c                         |    2 +-
 sound/soc/codecs/cs35l41-lib.c                     |    4 +-
 sound/soc/codecs/cs35l41.c                         |    3 +-
 sound/soc/codecs/cs35l56-sdw.c                     |   75 -
 sound/soc/codecs/cs35l56-shared.c                  |  133 +-
 sound/soc/codecs/cs35l56.c                         |  211 +-
 sound/soc/codecs/cs35l56.h                         |    2 -
 sound/soc/codecs/cs530x-i2c.c                      |   72 +
 sound/soc/codecs/cs530x.c                          |  971 +++++++
 sound/soc/codecs/cs530x.h                          |  223 ++
 sound/soc/codecs/cs53l30.c                         |    3 +-
 sound/soc/codecs/cx2072x.c                         |    5 -
 sound/soc/codecs/da7213.c                          |    2 +-
 sound/soc/codecs/es8311.c                          |  973 +++++++
 sound/soc/codecs/es8311.h                          |  162 ++
 sound/soc/codecs/es8326.c                          |   58 +-
 sound/soc/codecs/framer-codec.c                    |    2 +-
 sound/soc/codecs/hdmi-codec.c                      |    2 +-
 sound/soc/codecs/idt821034.c                       |    2 +-
 sound/soc/codecs/jz4760.c                          |    2 +-
 sound/soc/codecs/jz4770.c                          |    2 +-
 sound/soc/codecs/lpass-macro-common.c              |   23 +
 sound/soc/codecs/lpass-macro-common.h              |   41 +
 sound/soc/codecs/lpass-rx-macro.c                  |  623 ++--
 sound/soc/codecs/lpass-tx-macro.c                  |    2 +-
 sound/soc/codecs/lpass-va-macro.c                  |   31 +-
 sound/soc/codecs/lpass-wsa-macro.c                 |  644 ++++-
 sound/soc/codecs/max98088.c                        |   10 +-
 sound/soc/codecs/max98390.c                        |    1 -
 sound/soc/codecs/max98504.c                        |    6 +-
 sound/soc/codecs/mt6358.c                          |   38 +-
 sound/soc/codecs/nau8822.c                         |   76 +-
 sound/soc/codecs/nau8822.h                         |    1 +
 sound/soc/codecs/nau8824.c                         |   21 +-
 sound/soc/codecs/nau8824.h                         |    1 +
 sound/soc/codecs/pcm3168a.c                        |    3 +-
 sound/soc/codecs/pcm512x-i2c.c                     |    2 +
 sound/soc/codecs/pcm512x-spi.c                     |    2 +
 sound/soc/codecs/pcm6240.c                         |   67 +-
 sound/soc/codecs/peb2466.c                         |    2 +-
 sound/soc/codecs/rk817_codec.c                     |    1 -
 sound/soc/codecs/rt1318.c                          | 1354 +++++++++
 sound/soc/codecs/rt1318.h                          |  342 +++
 sound/soc/codecs/rt1320-sdw.c                      | 2260 +++++++++++++++
 sound/soc/codecs/rt1320-sdw.h                      |   94 +
 sound/soc/codecs/rt711-sdca.c                      |   72 +
 sound/soc/codecs/rt711-sdca.h                      |    1 +
 sound/soc/codecs/rt712-sdca-sdw.c                  |   36 +-
 sound/soc/codecs/rt712-sdca-sdw.h                  |   95 +-
 sound/soc/codecs/rt712-sdca.c                      |  665 ++++-
 sound/soc/codecs/rt712-sdca.h                      |   48 +-
 sound/soc/codecs/simple-mux.c                      |   55 +-
 sound/soc/codecs/tas2552.c                         |    1 -
 sound/soc/codecs/tas2764.c                         |    1 -
 sound/soc/codecs/tas2770.c                         |    1 -
 sound/soc/codecs/tas2780.c                         |    1 -
 sound/soc/codecs/tas2781-comlib.c                  |   21 +-
 sound/soc/codecs/tas2781-fmwlib.c                  |   89 +-
 sound/soc/codecs/tas2781-i2c.c                     |  233 +-
 sound/soc/codecs/tas5086.c                         |   27 +-
 sound/soc/codecs/tlv320adc3xxx.c                   |  106 +-
 sound/soc/codecs/tlv320adcx140.c                   |    1 -
 sound/soc/codecs/tlv320aic31xx.c                   |    1 -
 sound/soc/codecs/ts3a227e.c                        |    1 -
 sound/soc/codecs/wcd-mbhc-v2.c                     |    4 +-
 sound/soc/codecs/wcd-mbhc-v2.h                     |    4 +-
 sound/soc/codecs/wcd9335.c                         |  128 +-
 sound/soc/codecs/wcd934x.c                         |   72 +-
 sound/soc/codecs/wcd937x-sdw.c                     | 1137 ++++++++
 sound/soc/codecs/wcd937x.c                         | 2971 ++++++++++++++++++++
 sound/soc/codecs/wcd937x.h                         |  624 ++++
 sound/soc/codecs/wcd938x-sdw.c                     |    4 +-
 sound/soc/codecs/wcd938x.c                         |   36 +-
 sound/soc/codecs/wcd938x.h                         |   10 +-
 sound/soc/codecs/wcd939x-sdw.c                     |    4 +-
 sound/soc/codecs/wcd939x.c                         |  176 +-
 sound/soc/codecs/wcd939x.h                         |   18 +-
 sound/soc/codecs/wm0010.c                          |    8 -
 sound/soc/codecs/wm_adsp.c                         |    2 +-
 sound/soc/codecs/wsa881x.c                         |    2 +-
 sound/soc/codecs/wsa883x.c                         |   11 +-
 sound/soc/codecs/wsa884x.c                         |   10 +-
 sound/soc/fsl/Kconfig                              |   18 +-
 sound/soc/fsl/Makefile                             |    4 +-
 sound/soc/fsl/fsl-asoc-card.c                      |  383 ++-
 sound/soc/fsl/fsl_aud2htx.c                        |   11 +-
 sound/soc/fsl/fsl_audmix.c                         |   16 +-
 sound/soc/fsl/fsl_easrc.c                          |   10 +-
 sound/soc/fsl/fsl_mqs.c                            |   46 +-
 sound/soc/fsl/fsl_qmc_audio.c                      |  591 ++--
 sound/soc/fsl/fsl_rpmsg.c                          |    9 +
 sound/soc/fsl/fsl_sai.c                            |  141 +-
 sound/soc/fsl/fsl_sai.h                            |    4 +-
 sound/soc/fsl/fsl_xcvr.c                           |  179 +-
 sound/soc/fsl/fsl_xcvr.h                           |   91 +
 sound/soc/fsl/imx-audmix.c                         |   79 +-
 sound/soc/fsl/imx-es8328.c                         |    1 -
 sound/soc/fsl/imx-pcm-fiq.c                        |    1 +
 sound/soc/fsl/imx-rpmsg.c                          |    2 -
 sound/soc/fsl/imx-spdif.c                          |  103 -
 sound/soc/fsl/lpc3xxx-i2s.c                        |  375 +++
 sound/soc/fsl/lpc3xxx-i2s.h                        |   80 +
 sound/soc/fsl/lpc3xxx-pcm.c                        |   72 +
 sound/soc/generic/audio-graph-card.c               |  113 +-
 .../soc/generic/audio-graph-card2-custom-sample.c  |    3 +-
 sound/soc/generic/audio-graph-card2.c              |  189 +-
 sound/soc/generic/simple-card-utils.c              |  133 +-
 sound/soc/generic/simple-card.c                    |   71 +-
 sound/soc/generic/test-component.c                 |    2 +-
 sound/soc/intel/avs/boards/es8336.c                |    8 +-
 sound/soc/intel/avs/pcm.c                          |    4 +-
 sound/soc/intel/avs/topology.c                     |    2 +-
 sound/soc/intel/boards/Kconfig                     |    2 +
 sound/soc/intel/boards/bdw-rt5650.c                |    2 +-
 sound/soc/intel/boards/ehl_rt5660.c                |    2 +-
 sound/soc/intel/boards/kbl_da7219_max98357a.c      |    4 +-
 sound/soc/intel/boards/kbl_da7219_max98927.c       |    6 +-
 sound/soc/intel/boards/kbl_rt5660.c                |    2 +-
 sound/soc/intel/boards/kbl_rt5663_max98927.c       |    8 +-
 .../soc/intel/boards/kbl_rt5663_rt5514_max98927.c  |    6 +-
 sound/soc/intel/boards/sof_board_helpers.h         |    2 -
 sound/soc/intel/boards/sof_da7219.c                |   57 +-
 sound/soc/intel/boards/sof_es8336.c                |    2 +-
 sound/soc/intel/boards/sof_maxim_common.c          |  114 +-
 sound/soc/intel/boards/sof_nau8825.c               |    2 +-
 sound/soc/intel/boards/sof_realtek_common.c        |    2 +-
 sound/soc/intel/boards/sof_rt5682.c                |    2 +-
 sound/soc/intel/boards/sof_sdw.c                   |   64 +-
 sound/soc/intel/boards/sof_sdw_common.h            |    6 +-
 sound/soc/intel/boards/sof_sdw_cs42l42.c           |   11 +-
 sound/soc/intel/boards/sof_sdw_rt5682.c            |   11 +-
 sound/soc/intel/boards/sof_sdw_rt700.c             |   11 +-
 sound/soc/intel/boards/sof_sdw_rt711.c             |   11 +-
 sound/soc/intel/boards/sof_sdw_rt_amp.c            |    2 +-
 sound/soc/intel/boards/sof_sdw_rt_dmic.c           |   14 +-
 .../soc/intel/boards/sof_sdw_rt_sdca_jack_common.c |   11 +-
 sound/soc/intel/boards/sof_wm8804.c                |    2 +-
 sound/soc/intel/common/soc-acpi-intel-arl-match.c  |   50 +
 sound/soc/intel/common/soc-acpi-intel-rpl-match.c  |   50 +
 sound/soc/intel/skylake/skl-topology.c             |    2 +-
 sound/soc/meson/axg-fifo.c                         |    2 +-
 sound/soc/meson/axg-frddr.c                        |    4 +-
 sound/soc/meson/axg-tdm.h                          |    2 +-
 sound/soc/meson/axg-toddr.c                        |    4 +-
 sound/soc/qcom/common.c                            |   35 +
 sound/soc/qcom/common.h                            |    3 +
 sound/soc/qcom/lpass-cpu.c                         |    4 +
 sound/soc/qcom/qdsp6/audioreach.c                  |   30 +-
 sound/soc/qcom/qdsp6/audioreach.h                  |    2 +-
 sound/soc/qcom/qdsp6/q6afe-dai.c                   |   16 +-
 sound/soc/qcom/qdsp6/q6apm-dai.c                   |    3 +
 sound/soc/qcom/qdsp6/q6apm-lpass-dais.c            |   21 +-
 sound/soc/qcom/qdsp6/topology.c                    |   38 +-
 sound/soc/qcom/sc8280xp.c                          |   15 +
 sound/soc/qcom/x1e80100.c                          |   38 +
 sound/soc/rockchip/rockchip_i2s.c                  |    1 -
 sound/soc/rockchip/rockchip_spdif.c                |    1 -
 sound/soc/samsung/Kconfig                          |    2 +-
 sound/soc/samsung/aries_wm8994.c                   |    2 +-
 sound/soc/samsung/midas_wm1811.c                   |  350 ++-
 sound/soc/sh/fsi.c                                 |    2 +-
 sound/soc/sh/rcar/core.c                           |    2 +-
 sound/soc/soc-core.c                               |    4 +-
 sound/soc/soc-dai.c                                |   18 +-
 sound/soc/soc-dapm.c                               |   49 +-
 sound/soc/soc-ops.c                                |   26 +-
 sound/soc/soc-pcm.c                                |   26 +-
 sound/soc/soc-topology.c                           |  618 ++--
 sound/soc/soc-utils.c                              |   19 +-
 sound/soc/sof/intel/hda.c                          |    4 +-
 sound/soc/sof/intel/pci-tgl.c                      |    4 +-
 sound/soc/sof/ipc3-topology.c                      |   14 +-
 sound/soc/sof/ipc4-topology.c                      |   71 +-
 sound/soc/sof/mediatek/mt8186/mt8186.c             |    2 +-
 sound/soc/sof/mediatek/mt8195/mt8195.c             |    2 +-
 sound/soc/sof/sof-audio.c                          |   20 +-
 sound/soc/sof/sof-audio.h                          |    9 +-
 sound/soc/sof/topology.c                           |    4 +-
 sound/soc/tegra/tegra210_i2s.c                     |   71 +-
 sound/soc/tegra/tegra210_i2s.h                     |    2 +
 sound/spi/at73c213.c                               |    8 +-
 sound/usb/format.c                                 |   17 +-
 sound/usb/mixer.c                                  |   45 +-
 sound/usb/mixer_quirks.c                           |   20 +-
 sound/xen/xen_snd_front_alsa.c                     |    5 -
 tools/testing/selftests/alsa/mixer-test.c          |  143 +-
 tools/testing/selftests/alsa/pcm-test.c            |   70 +-
 352 files changed, 21518 insertions(+), 4532 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/sound/ak4104.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/ak4554.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.txt
 create mode 100644 Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/asahi-kasei,ak4104.yaml
 rename Documentation/devicetree/bindings/sound/{ak4375.yaml => asahi-kasei,ak4375.yaml} (94%)
 create mode 100644 Documentation/devicetree/bindings/sound/asahi-kasei,ak4554.yaml
 rename Documentation/devicetree/bindings/sound/{ak4613.yaml => asahi-kasei,ak4613.yaml} (94%)
 create mode 100644 Documentation/devicetree/bindings/sound/asahi-kasei,ak4619.yaml
 rename Documentation/devicetree/bindings/sound/{ak4642.yaml => asahi-kasei,ak4642.yaml} (94%)
 create mode 100644 Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/cirrus,cs42xx8.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/cirrus,cs530x.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/cs4270.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/cs42xx8.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/everest,es7134.txt
 create mode 100644 Documentation/devicetree/bindings/sound/everest,es71x4.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/everest,es7241.txt
 create mode 100644 Documentation/devicetree/bindings/sound/everest,es7241.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/fsl,imx-audio-spdif.yaml
 rename Documentation/devicetree/bindings/sound/{sgtl5000.yaml => fsl,sgtl5000.yaml} (97%)
 rename Documentation/devicetree/bindings/sound/{linux,spdif-dit.yaml => linux,spdif.yaml} (75%)
 delete mode 100644 Documentation/devicetree/bindings/sound/maxim,max98088.txt
 create mode 100644 Documentation/devicetree/bindings/sound/maxim,max98088.yaml
 rename Documentation/devicetree/bindings/sound/{zl38060.yaml => mscc,zl38060.yaml} (96%)
 create mode 100644 Documentation/devicetree/bindings/sound/nxp,lpc3220-i2s.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/omap-mcpdm.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/qcom,apq8096.txt
 create mode 100644 Documentation/devicetree/bindings/sound/qcom,msm8916-wcd-digital-codec.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/qcom,msm8916-wcd-digital.txt
 create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml
 rename Documentation/devicetree/bindings/sound/{rt1019.yaml => realtek,rt1019.yaml} (90%)
 create mode 100644 Documentation/devicetree/bindings/sound/realtek,rt5514.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/realtek,rt5631.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/realtek,rt5645.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/realtek,rt5659.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/realtek,rt5677.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/rt5514.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/rt5631.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/rt5645.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/rt5659.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/rt5677.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/spdif-receiver.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/tas571x.txt
 create mode 100644 Documentation/devicetree/bindings/sound/ti,omap4-mcpdm.yaml
 rename Documentation/devicetree/bindings/sound/{tas2562.yaml => ti,tas2562.yaml} (97%)
 rename Documentation/devicetree/bindings/sound/{tas2770.yaml => ti,tas2770.yaml} (97%)
 rename Documentation/devicetree/bindings/sound/{tas27xx.yaml => ti,tas27xx.yaml} (97%)
 create mode 100644 Documentation/devicetree/bindings/sound/ti,tas57xx.yaml
 rename Documentation/devicetree/bindings/sound/{tas5805m.yaml => ti,tas5805m.yaml} (95%)
 rename Documentation/devicetree/bindings/sound/{tlv320adcx140.yaml => ti,tlv320adcx140.yaml} (99%)
 rename Documentation/devicetree/bindings/sound/{wm8750.yaml => wlf,wm8750.yaml} (92%)
 create mode 100644 Documentation/devicetree/bindings/sound/wlf,wm8782.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/wlf,wm8804.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/wm8782.txt
 delete mode 100644 Documentation/devicetree/bindings/sound/wm8804.txt
 create mode 100644 include/dt-bindings/sound/audio-graph.h
 create mode 100644 include/sound/rt1318.h
 create mode 100644 sound/pci/hda/patch_senarytech.c
 create mode 100644 sound/soc/codecs/ak4619.c
 create mode 100644 sound/soc/codecs/cs530x-i2c.c
 create mode 100644 sound/soc/codecs/cs530x.c
 create mode 100644 sound/soc/codecs/cs530x.h
 create mode 100644 sound/soc/codecs/es8311.c
 create mode 100644 sound/soc/codecs/es8311.h
 create mode 100644 sound/soc/codecs/rt1318.c
 create mode 100644 sound/soc/codecs/rt1318.h
 create mode 100644 sound/soc/codecs/rt1320-sdw.c
 create mode 100644 sound/soc/codecs/rt1320-sdw.h
 create mode 100644 sound/soc/codecs/wcd937x-sdw.c
 create mode 100644 sound/soc/codecs/wcd937x.c
 create mode 100644 sound/soc/codecs/wcd937x.h
 delete mode 100644 sound/soc/fsl/imx-spdif.c
 create mode 100644 sound/soc/fsl/lpc3xxx-i2s.c
 create mode 100644 sound/soc/fsl/lpc3xxx-i2s.h
 create mode 100644 sound/soc/fsl/lpc3xxx-pcm.c


.
Date: Fri, 19 Jul 2024 11:36:11 +0200
From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Subject: [GIT PULL] power sequencing fixes for v6.11-rc1

From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

Linus,

Please pull the following set of fixes for power sequencing. There's one
fix for an invalid pointer dereference in error path reported by smatch
and two patches that address the noisy config choices you reported earlier
this week.

Bartosz

The following changes since commit e763c9ec71dd462337d0b671ec5014b737c5342e:

  Merge tag 'pwrseq-updates-for-v6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux (2024-07-15 17:34:31 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git tags/pwrseq-fixes-for-v6.11-rc1

for you to fetch changes up to 1a8c67a8b21e26843d5641c55f48130b3e323ce8:

  arm64: qcom: don't select HAVE_PWRCTL when PCI=n (2024-07-19 09:49:24 +0200)

----------------------------------------------------------------
power sequencing fixes for v6.11-rc1

- fix an invalid pointer dereference in error path in pwrseq core
- reduce the Kconfig noise from PCI pwrctl choices

----------------------------------------------------------------
Arnd Bergmann (1):
      arm64: qcom: don't select HAVE_PWRCTL when PCI=n

Bartosz Golaszewski (2):
      power: sequencing: fix an invalid pointer dereference in error path
      Kconfig: reduce the amount of power sequencing noise

 arch/arm64/Kconfig.platforms            |  1 +
 drivers/net/wireless/ath/ath11k/Kconfig |  1 +
 drivers/net/wireless/ath/ath12k/Kconfig |  1 +
 drivers/pci/pwrctl/Kconfig              | 11 +++--------
 drivers/power/sequencing/core.c         |  3 ++-
 5 files changed, 8 insertions(+), 9 deletions(-)

.
Date: Fri, 19 Jul 2024 19:22:38 +0900
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>, Andrii Nakryiko
 <andrii@kernel.org>, Jeff Johnson <quic_jjohnson@quicinc.com>, Jiri Olsa
 <jolsa@kernel.org>, Steven Rostedt <rostedt@goodmis.org>, Stephen Rothwell
 <sfr@canb.auug.org.au>, linux-kernel@vger.kernel.org
Subject: [GIT PULL] probes: Fix for v6.11 pre-rc1

Hi Linus,

Probes fixes for v6.11 pre-rc1:

- uprobe: Add sys_uretprobe entry to scripts/syscall.tbl.


Please pull the latest probes-fixes-v6.11-pre-rc tree, which can be found at:


  git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
probes-fixes-v6.11-pre-rc

Tag SHA1: 4f9c2075da85cb89b4c36fc11250b803d979f345
Head SHA1: 5c28424e9a348f95e3c634fe2ed6da8af29cc870


Masami Hiramatsu (Google) (1):
      syscalls: Fix to add sys_uretprobe to syscall.tbl

----
 scripts/syscall.tbl | 1 +
 1 file changed, 1 insertion(+)
---------------------------
commit 5c28424e9a348f95e3c634fe2ed6da8af29cc870
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Fri Jul 19 14:35:51 2024 +0900

    syscalls: Fix to add sys_uretprobe to syscall.tbl
    
    Add sys_uretprobe entry to scripts/syscall.tbl as same as
    arch/x86/entry/syscalls/syscall_64.tbl.
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Closes: https://lore.kernel.org/all/20240719102824.1e086a40@canb.auug.org.au/
    Fixes: 63ded110979b ("uprobe: Change uretprobe syscall scope and number")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>

diff --git a/scripts/syscall.tbl b/scripts/syscall.tbl
index 797e20ea99a2..591d85e8ca7e 100644
--- a/scripts/syscall.tbl
+++ b/scripts/syscall.tbl
@@ -402,3 +402,4 @@
 460	common	lsm_set_self_attr		sys_lsm_set_self_attr
 461	common	lsm_list_modules		sys_lsm_list_modules
 462	common	mseal				sys_mseal
+467	common	uretprobe			sys_uretprobe
-- 
Masami Hiramatsu (Google) <mhiramat@kernel.org>

.
Date: Fri, 19 Jul 2024 12:21:38 +0100
From: Will Deacon <will@kernel.org>
To: torvalds@linux-foundation.org
Cc: joro@8bytes.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev
Subject: [GIT PULL] IOMMU Updates for Linux v6.11

Hi Linus,

Please pull these IOMMU updates for v6.11.

I've been looking after the IOMMU tree in Joerg's absence [1] for the
past few weeks and I was expecting him back at the start of this week to
send the pull. However, I've not heard from him at all and figured that
I may as well send this now rather than wait until the second week of
the merge window.

A few minor fixes have started showing up too, so I may end up sending
you a follow-up next week anyway.

A summary of all the changes is included in the tag.

Cheers,

Will

[1] https://lore.kernel.org/r/Zn6xFZanlWhN5kw3@8bytes.org

--->8

The following changes since commit 83a7eefedc9b56fe7bfeff13b6c7356688ffa670:

  Linux 6.10-rc3 (2024-06-09 14:19:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git tags/iommu-updates-v6.11

for you to fetch changes up to 8b6c32e831ef4496b51a68ddc5be9bb9e8d2337d:

  Merge branch 'iommu/iommufd/paging-domain-alloc' into iommu/next (2024-07-12 16:57:47 +0100)

----------------------------------------------------------------
IOMMU Updates for Linux v6.11

- Core:
  * Support for the "ats-supported" device-tree property.

  * Removal of the 'ops' field from 'struct iommu_fwspec'.

  * Introduction of iommu_paging_domain_alloc() and partial conversion
    of existing users.

  * Introduce 'struct iommu_attach_handle' and provide corresponding
    IOMMU interfaces which will be used by the IOMMUFD subsystem.

  * Remove stale documentation.

  * Add missing MODULE_DESCRIPTION() macro.

  * Misc cleanups.

- Allwinner Sun50i:
  * Ensure bypass mode is disabled on H616 SoCs.

  * Ensure page-tables are allocated below 4GiB for the 32-bit
    page-table walker.

  * Add new device-tree compatible strings.

- AMD Vi:
  * Use try_cmpxchg64() instead of cmpxchg64() when updating pte.

- Arm SMMUv2:
  * Print much more useful information on context faults.

  * Fix Qualcomm TBU probing when CONFIG_ARM_SMMU_QCOM_DEBUG=n.

  * Add new Qualcomm device-tree bindings.

- Arm SMMUv3:
  * Support for hardware update of access/dirty bits and reporting via
    IOMMUFD.

  * More driver rework from Jason, this time updating the PASID/SVA support
    to prepare for full IOMMUFD support.

  * Add missing MODULE_DESCRIPTION() macro.

  * Minor fixes and cleanups.

- NVIDIA Tegra:

  * Fix for benign fwspec initialisation issue exposed by rework on the
    core branch.

- Intel VT-d:

  * Use try_cmpxchg64() instead of cmpxchg64() when updating pte.

  * Use READ_ONCE() to read volatile descriptor status.

  * Remove support for handling Execute-Requested requests.

  * Avoid calling iommu_domain_alloc().

  * Minor fixes and refactoring.

- Qualcomm MSM:

  * Updates to the device-tree bindings.

----------------------------------------------------------------
Akhil P Oommen (1):
      dt-bindings: arm-smmu: Add X1E80100 GPU SMMU

Andre Przywara (3):
      iommu: sun50i: allocate page tables from below 4 GiB
      dt-bindings: iommu: add new compatible strings
      iommu: sun50i: Add H616 compatible string

Andy Shevchenko (1):
      iommu/arm-smmu-v3: Use *-y instead of *-objs in Makefile

Bjorn Andersson (1):
      dt-bindings: arm-smmu: Fix Qualcomm SC8180X binding

David Heidelberg (1):
      dt-bindings: iommu: Convert msm,iommu-v0 to yaml

Georgi Djakov (1):
      iommu/arm-smmu-qcom: Register the TBU driver in qcom_smmu_impl_init

Jacob Pan (1):
      iommu/vt-d: Handle volatile descriptor status read

Jason Gunthorpe (16):
      iommu/arm-smmu-v3: Convert to domain_alloc_sva()
      iommu/arm-smmu-v3: Start building a generic PASID layer
      iommu/arm-smmu-v3: Make smmu_domain->devices into an allocated list
      iommu/arm-smmu-v3: Make changing domains be hitless for ATS
      iommu/arm-smmu-v3: Add ssid to struct arm_smmu_master_domain
      iommu/arm-smmu-v3: Do not use master->sva_enable to restrict attaches
      iommu/arm-smmu-v3: Thread SSID through the arm_smmu_attach_*() interface
      iommu/arm-smmu-v3: Make SVA allocate a normal arm_smmu_domain
      iommu/arm-smmu-v3: Keep track of arm_smmu_master_domain for SVA
      iommu/arm-smmu-v3: Put the SVA mmu notifier in the smmu_domain
      iommu/arm-smmu-v3: Allow IDENTITY/BLOCKED to be set while PASID is used
      iommu/arm-smmu-v3: Test the STE S1DSS functionality
      iommu/arm-smmu-v3: Allow a PASID to be set when RID is IDENTITY/BLOCKED
      iommu/arm-smmu-v3: Allow setting a S1 domain to a PASID
      iommu/arm-smmu-v3: Do not zero the strtab twice
      iommu/arm-smmu-v3: Shrink the strtab l1_desc array

Jean-Philippe Brucker (4):
      iommu/arm-smmu-v3: Add feature detection for HTTU
      dt-bindings: PCI: generic: Add ats-supported property
      iommu/of: Support ats-supported device-tree property
      arm64: dts: fvp: Enable PCIe ATS for Base RevC FVP

Jeff Johnson (2):
      iommu/iova: Add missing MODULE_DESCRIPTION() macro
      iommu/arm-smmu-v3: add missing MODULE_DESCRIPTION() macro

Jernej Skrabec (1):
      iommu: sun50i: clear bypass register

Joao Martins (1):
      iommu/arm-smmu-v3: Add support for dirty tracking in domain alloc

Jon Pan-Doh (1):
      iommu/vt-d: Fix identity map bounds in si_domain_init()

Kunkun Jiang (1):
      iommu/arm-smmu-v3: Enable HTTU for stage1 with io-pgtable mapping

Lu Baolu (21):
      iommu: Make iommu_sva_domain_alloc() static
      iommu/vt-d: Remove comment for def_domain_type
      iommu/vt-d: Remove control over Execute-Requested requests
      iommu/vt-d: Downgrade warning for pre-enabled IR
      iommu/vt-d: Add helper to allocate paging domain
      iommu/vt-d: Add helper to flush caches for context change
      iommu/vt-d: Refactor PCI PRI enabling/disabling callbacks
      iommu: Introduce domain attachment handle
      iommu: Remove sva handle list
      iommu: Add attach handle to struct iopf_group
      iommu: Extend domain attach group with handle support
      iommu: Add iommu_paging_domain_alloc() interface
      iommufd: Use iommu_paging_domain_alloc()
      vfio/type1: Use iommu_paging_domain_alloc()
      vhost-vdpa: Use iommu_paging_domain_alloc()
      drm/msm: Use iommu_paging_domain_alloc()
      wifi: ath10k: Use iommu_paging_domain_alloc()
      wifi: ath11k: Use iommu_paging_domain_alloc()
      RDMA/usnic: Use iommu_paging_domain_alloc()
      iommu/vt-d: Limit max address mask to MAX_AGAW_PFN_WIDTH
      iommu/vt-d: Fix aligned pages in calculate_psi_aligned_address()

Mark-PK Tsai (1):
      docs: iommu: Remove outdated Documentation/userspace-api/iommu.rst

Mostafa Saleh (1):
      iommu/arm-smmu-v3: Avoid uninitialized asid in case of error

Neil Armstrong (1):
      dt-bindings: iommu: qcom,iommu: Add MSM8953 GPU IOMMU to SMMUv2 compatibles

Rob Clark (3):
      iommu/arm-smmu: Add CB prefix to register bitfields
      iommu/arm-smmu-qcom-debug: Do not print for handled faults
      iommu/arm-smmu: Pretty-print context fault related regs

Robin Murphy (6):
      iommu/dma: Prune redundant pgprot arguments
      iommu/mediatek-v1: Clean up redundant fwspec checks
      iommu: Resolve fwspec ops automatically
      ACPI: Retire acpi_iommu_fwspec_ops()
      OF: Simplify of_iommu_configure()
      iommu: Remove iommu_fwspec ops

Shameer Kolothum (3):
      iommu/arm-smmu-v3: Add support for domain_alloc_user fn
      iommu/io-pgtable-arm: Add read_and_clear_dirty() support
      iommu: Move IOMMU_DIRTY_NO_CLEAR define

Uros Bizjak (3):
      iommu/amd: Use try_cmpxchg64() in v2_alloc_pte()
      iommu/vt-d: Use try_cmpxchg64() in intel_pasid_get_entry()
      iommufd: Use atomic_long_try_cmpxchg() in incr_user_locked_vm()

Will Deacon (14):
      Merge branch 'for-joerg/arm-smmu/bindings' into for-joerg/arm-smmu/next
      Merge branch 'for-joerg/arm-smmu/updates' into for-joerg/arm-smmu/next
      iommu/tegra-smmu: Pass correct fwnode to iommu_fwspec_init()
      Merge branch 'iommu/allwinner/sun50i' into iommu/next
      Merge branch 'iommu/amd/amd-vi' into iommu/next
      Merge branch 'iommu/arm/smmu' into iommu/next
      Merge branch 'iommu/intel/vt-d' into iommu/next
      Merge branch 'iommu/nvidia/tegra' into iommu/next
      Merge branch 'iommu/qualcomm/msm' into iommu/next
      Merge branch 'iommu/core' into iommu/next
      Merge branch 'iommu/fwspec-ops-removal' into iommu/next
      Merge branch 'iommu/pci/ats' into iommu/next
      Merge branch 'iommu/iommufd/attach-handles' into iommu/next
      Merge branch 'iommu/iommufd/paging-domain-alloc' into iommu/next

Zhenhua Huang (1):
      iommu/arm-smmu-qcom: record reason for deferring probe

 .../bindings/iommu/allwinner,sun50i-h6-iommu.yaml  |   7 +-
 .../devicetree/bindings/iommu/arm,smmu.yaml        |   6 +-
 .../devicetree/bindings/iommu/msm,iommu-v0.txt     |  64 --
 .../bindings/iommu/qcom,apq8064-iommu.yaml         |  78 +++
 .../devicetree/bindings/iommu/qcom,iommu.yaml      |   1 +
 .../devicetree/bindings/pci/host-generic-pci.yaml  |   6 +
 Documentation/userspace-api/index.rst              |   1 -
 Documentation/userspace-api/iommu.rst              | 209 ------
 MAINTAINERS                                        |   1 -
 arch/arm64/boot/dts/arm/fvp-base-revc.dts          |   1 +
 drivers/acpi/arm64/iort.c                          |  19 +-
 drivers/acpi/scan.c                                |  36 +-
 drivers/acpi/viot.c                                |  11 +-
 drivers/dma/idxd/init.c                            |   2 +-
 drivers/gpu/drm/msm/msm_iommu.c                    |   7 +-
 drivers/infiniband/hw/usnic/usnic_uiom.c           |   6 +-
 drivers/iommu/Kconfig                              |   1 +
 drivers/iommu/amd/io_pgtable_v2.c                  |   2 +-
 drivers/iommu/arm/arm-smmu-v3/Makefile             |   5 +-
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c    | 431 +++---------
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c   | 117 +++-
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c        | 759 ++++++++++++++++-----
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h        |  63 +-
 drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c       |   2 +-
 drivers/iommu/arm/arm-smmu/arm-smmu-qcom-debug.c   |  83 +--
 drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c         |  42 +-
 drivers/iommu/arm/arm-smmu/arm-smmu-qcom.h         |   2 +
 drivers/iommu/arm/arm-smmu/arm-smmu.c              |  77 ++-
 drivers/iommu/arm/arm-smmu/arm-smmu.h              |  67 +-
 drivers/iommu/arm/arm-smmu/qcom_iommu.c            |   4 +-
 drivers/iommu/dma-iommu.c                          |  16 +-
 drivers/iommu/intel/cache.c                        |   3 +-
 drivers/iommu/intel/dmar.c                         |   2 +-
 drivers/iommu/intel/iommu.c                        | 196 ++++--
 drivers/iommu/intel/iommu.h                        |  19 +-
 drivers/iommu/intel/irq_remapping.c                |   4 +-
 drivers/iommu/intel/pasid.c                        | 116 +++-
 drivers/iommu/intel/pasid.h                        |  10 -
 drivers/iommu/io-pgfault.c                         |  61 +-
 drivers/iommu/io-pgtable-arm.c                     | 119 +++-
 drivers/iommu/iommu-priv.h                         |  18 +
 drivers/iommu/iommu-sva.c                          |  48 +-
 drivers/iommu/iommu.c                              | 225 ++++--
 drivers/iommu/iommufd/hw_pagetable.c               |  10 +-
 drivers/iommu/iommufd/pages.c                      |   7 +-
 drivers/iommu/iova.c                               |   1 +
 drivers/iommu/mtk_iommu_v1.c                       |  12 +-
 drivers/iommu/of_iommu.c                           |  59 +-
 drivers/iommu/sun50i-iommu.c                       |  15 +-
 drivers/iommu/tegra-smmu.c                         |   2 +-
 drivers/net/wireless/ath/ath10k/snoc.c             |   6 +-
 drivers/net/wireless/ath/ath11k/ahb.c              |   6 +-
 drivers/of/device.c                                |  30 +-
 drivers/vfio/vfio_iommu_type1.c                    |   7 +-
 drivers/vhost/vdpa.c                               |  14 +-
 include/acpi/acpi_bus.h                            |   3 +-
 include/linux/io-pgtable.h                         |   3 +
 include/linux/iommu.h                              |  72 +-
 58 files changed, 1860 insertions(+), 1334 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/iommu/msm,iommu-v0.txt
 create mode 100644 Documentation/devicetree/bindings/iommu/qcom,apq8064-iommu.yaml
 delete mode 100644 Documentation/userspace-api/iommu.rst

.
Date: Fri, 19 Jul 2024 14:25:27 +0200
From: Greg KH <gregkh@linuxfoundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jiri Slaby <jslaby@suse.cz>, Stephen Rothwell <sfr@canb.auug.org.au>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org
Subject: [GIT PULL] TTY / Serial driver changes for 6.11-rc1

The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tags/tty-6.11-rc1

for you to fetch changes up to 17199dfccd4b7f7e0c059ef43bef6e0078423476:

  Documentation: kernel-parameters: Add DEVNAME:0.0 format for serial ports (2024-07-04 15:41:44 +0200)

----------------------------------------------------------------
TTY/Serial updates for 6.11-rc1

Here is a small set of tty and serial driver updates for 6.11-rc1.  Not
much happened this cycle, unlike the previous kernel release which had
lots of "excitement" in this part of the kernel.  Included in here are
the following changes:
  - dt binding updates for new platforms
  - 8250 driver updates
  - various small serial driver fixes and updates
  - printk/console naming and matching attempt #2 (was reverted for
    6.10-final, should be good to go this time around, acked by the
    relevant maintainers).

All of these have been in linux-next for a while with no reported
issues.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

----------------------------------------------------------------
Andy Shevchenko (3):
      serial: 8250: Extract RSA bits
      serial: 8250: Extract platform driver
      serial: 8250_platform: Explicitly show we initialise ISA ports only once

Greg Kroah-Hartman (2):
      Merge tag 'v6.10-rc4' into tty-next
      Merge 6.10-rc6 into tty-next

Hal Feng (3):
      dt-bindings: serial: snps-dw-apb-uart: Add one more reset signal for StarFive JH7110 SoC
      serial: 8250_dw: Use reset array API to get resets
      riscv: dts: starfive: jh7110: Add the core reset and jh7110 compatible for uarts

Hans de Goede (1):
      vt: keyboard: Use led_set_brightness() in LED trigger activate() callback

Hui Wang (2):
      dt-bindings: serial: sc16is7xx: add reset-gpios
      serial: sc16is7xx: hardware reset chip if reset-gpios is defined in DT

Jeff Johnson (1):
      tty: add missing MODULE_DESCRIPTION() macros

Kanak Shilledar (1):
      dt-bindings: serial: vt8500-uart: convert to json-schema

Lad Prabhakar (5):
      dt-bindings: serial: renesas,scif: Move ref for serial.yaml at the end
      dt-bindings: serial: renesas,scif: Validate 'interrupts' and 'interrupt-names'
      dt-bindings: serial: renesas,scif: Make 'interrupt-names' property as required
      dt-bindings: serial: Add documentation for Renesas RZ/V2H(P) (R9A09G057) SCIF support
      serial: sh-sci: Add support for RZ/V2H(P) SoC

RafaĹ‚ MiĹ‚ecki (1):
      dt-bindings: serial: mediatek,uart: add MT7988

Rasmus Villemoes (1):
      serial: imx: stop casting struct uart_port to struct imx_port

Shresth Prasad (1):
      tty: sunsu: Simplify device_node cleanup by using __free

Tony Lindgren (3):
      printk: Add match_devname_and_update_preferred_console()
      serial: core: Add serial_base_match_and_update_preferred_console()
      Documentation: kernel-parameters: Add DEVNAME:0.0 format for serial ports

 Documentation/admin-guide/kernel-parameters.txt    |  19 +
 .../devicetree/bindings/serial/mediatek,uart.yaml  |   1 +
 .../devicetree/bindings/serial/nxp,sc16is7xx.yaml  |   5 +
 .../devicetree/bindings/serial/renesas,scif.yaml   | 136 ++++--
 .../bindings/serial/snps-dw-apb-uart.yaml          |  18 +-
 .../bindings/serial/via,vt8500-uart.yaml           |  46 +++
 .../devicetree/bindings/serial/vt8500-uart.txt     |  27 --
 arch/riscv/boot/dts/starfive/jh7110.dtsi           |  30 +-
 drivers/tty/amiserial.c                            |   1 +
 drivers/tty/goldfish.c                             |   1 +
 drivers/tty/n_gsm.c                                |   1 +
 drivers/tty/n_hdlc.c                               |   1 +
 drivers/tty/serial/8250/8250.h                     |  29 +-
 drivers/tty/serial/8250/8250_core.c                | 460 +--------------------
 drivers/tty/serial/8250/8250_dw.c                  |   2 +-
 drivers/tty/serial/8250/8250_parisc.c              |   1 +
 drivers/tty/serial/8250/8250_pcilib.c              |   1 +
 drivers/tty/serial/8250/8250_platform.c            | 337 +++++++++++++++
 drivers/tty/serial/8250/8250_port.c                |   1 +
 drivers/tty/serial/8250/8250_pxa.c                 |   1 +
 drivers/tty/serial/8250/8250_rsa.c                 | 133 ++++++
 drivers/tty/serial/8250/Makefile                   |   6 +-
 drivers/tty/serial/8250/serial_cs.c                |   1 +
 drivers/tty/serial/esp32_acm.c                     |   1 +
 drivers/tty/serial/esp32_uart.c                    |   1 +
 drivers/tty/serial/imx.c                           |  41 +-
 drivers/tty/serial/owl-uart.c                      |   1 +
 drivers/tty/serial/sc16is7xx.c                     |  31 +-
 drivers/tty/serial/serial_base.h                   |  16 +
 drivers/tty/serial/serial_base_bus.c               |  37 ++
 drivers/tty/serial/serial_core.c                   |   4 +
 drivers/tty/serial/serial_mctrl_gpio.c             |   1 +
 drivers/tty/serial/sh-sci.c                        |  55 ++-
 drivers/tty/serial/sunsu.c                         |  37 +-
 drivers/tty/synclink_gt.c                          |   1 +
 drivers/tty/ttynull.c                              |   1 +
 drivers/tty/vt/keyboard.c                          |   4 +-
 include/linux/printk.h                             |   4 +
 include/linux/serial_sci.h                         |   1 +
 kernel/printk/console_cmdline.h                    |   1 +
 kernel/printk/printk.c                             | 103 ++++-
 41 files changed, 1000 insertions(+), 598 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/serial/via,vt8500-uart.yaml
 delete mode 100644 Documentation/devicetree/bindings/serial/vt8500-uart.txt
 create mode 100644 drivers/tty/serial/8250/8250_platform.c
 create mode 100644 drivers/tty/serial/8250/8250_rsa.c

.
Date: Fri, 19 Jul 2024 14:25:52 +0200
From: Greg KH <gregkh@linuxfoundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org
Subject: [GIT PULL] USB/Thunderbolt driver updates for 6.11-rc1

The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git tags/usb-6.11-rc1

for you to fetch changes up to b727493011123db329e2901e3abf81a8d146b6fe:

  kselftest: devices: Add test to detect device error logs (2024-07-12 10:59:06 +0200)

----------------------------------------------------------------
USB/Thunderbolt updates for 6.11-rc1

Here is the big set of USB and Thunderbolt changes for 6.11-rc1.
Nothing earth-shattering in here, just constant forward progress in
adding support for new hardware and better debugging functionalities for
thunderbolt devices and the subsystem.  Included in here are:
  - thunderbolt debugging update and driver additions
  - xhci driver updates
  - typec driver updates
  - kselftest device driver changes (acked by the relevant maintainers,
    depended on other changes in this tree.)
  - cdns3 driver updates
  - gadget driver updates
  - MODULE_DESCRIPTION() additions
  - dwc3 driver updates and fixes

All of these have been in linux-next for a while with no reported
issues.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

----------------------------------------------------------------
Aapo Vienamo (1):
      thunderbolt: debugfs: Use FIELD_GET()

Abhishek Pandit-Subedi (2):
      usb: typec: ucsi: Fix null pointer dereference in trace
      usb: typec: Update sysfs when setting ops

Anand Moon (2):
      dt-bindings: usb: Add the binding example for the Genesys Logic GL3523 hub
      arm64: dts: amlogic: Used onboard usb hub reset on odroid n2

Bastien Curutchet (4):
      phy: ti: phy-da8xx-usb: Add runtime PM support
      Revert "usb: musb: da8xx: Set phy in OTG mode by default"
      usb: musb: da8xx: Remove try_idle implementation from host-only mode
      usb: musb: da8xx: Implement BABBLE recovery

Bjorn Andersson (2):
      dt-bindings: platform: Add Lenovo Yoga C630 EC
      dt-bindings: usb: qcom,dwc3: Add SC8180X compatibles

Conor Dooley (2):
      dt-bindings: musb: mpfs: add ULPI external vbus support
      usb: musb: mpfs: detect UPLI external vbus control requirement from DT

Daehwan Jung (3):
      usb: dwc3: Support quirk for writing high-low order
      xhci: Add a quirk for writing ERST in high-low order
      usb: host: xhci-plat: Add support for XHCI_WRITE_64_HI_LO

Diogo Ivo (3):
      usb: typec: ucsi: Add new notification bits
      usb: typec: ucsi: Add new capability bits
      usb: typec: ucsi: Enable UCSI v2.0 notifications

Dmitry Baryshkov (10):
      platform: arm64: add Lenovo Yoga C630 WOS EC driver
      platform/arm64: build drivers even on non-ARM64 platforms
      usb: typec: ucsi: add Lenovo Yoga C630 glue driver
      usb: typec: ucsi: move ucsi_acknowledge() from ucsi_read_error()
      usb: typec: ucsi: simplify command sending API
      usb: typec: ucsi: split read operation
      usb: typec: ucsi: rework command execution functions
      usb: typec: ucsi: inline ucsi_read_message_in
      usb: typec: ucsi: extract common code for command handling
      usb: typec: ucsi: reorder operations in ucsi_run_command()

Dr. David Alan Gilbert (1):
      usb: host: oxu210hp: remove unused struct 'ehci_dbg_port'

Fabio Estevam (2):
      usb: chipidea: ci_hdrc_imx: Switch to RUNTIME/SYSTEM_SLEEP_PM_OPS()
      usb: chipidea: ci_hdrc_tegra: Switch to RUNTIME_PM_OPS()

Francesco Dolcini (2):
      dt-bindings: usb: gpio-sbu-mux: Make 'enable-gpios' optional
      usb: typec: mux: gpio-sbu: Make enable gpio optional

Frank Li (2):
      dt-bindings: usb: cdns,usb3: use common usb-drd yaml
      dt-bindings: usb: Convert fsl-usb to yaml

Greg Kroah-Hartman (4):
      Merge tag 'v6.10-rc4' into usb-next
      Merge tag 'thunderbolt-for-v6.11-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt into usb-next
      Merge tag 'platform-drivers-x86-ib-lenovo-c630-v6.11-2' of https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86 into usb-next
      Merge 6.10-rc6 into usb-next

Hauke Mehrtens (1):
      usb: dwc2: add support for other Lantiq SoCs

Hector Martin (1):
      xhci: Remove dead code in xhci_move_dequeue_past_td()

Heikki Krogerus (2):
      usb: typec: ucsi: Changing the driver data type to void
      usb: typec: ucsi: psy: Add support for the charge type property

Jameson Thies (3):
      usb: typec: ucsi: Delay alternate mode discovery
      usb: typec: ucsi: Always set number of alternate modes
      usb: typec: ucsi: Only set number of plug altmodes after registration

Javier Carrasco (3):
      usb: typec: tipd: drop second firmware name read
      usb: typec: tipd: add error log to provide firmware name and size
      usb: typec: tipd: use min() to set tps6598x firmware packet size

Jeff Johnson (6):
      usb: gadget: add missing MODULE_DESCRIPTION() macros
      usb: misc: add missing MODULE_DESCRIPTION() macros
      usb: host: add missing MODULE_DESCRIPTION() macros
      usb: phy: add missing MODULE_DESCRIPTION() macros
      usb: common: add missing MODULE_DESCRIPTION() macros
      usb: add missing MODULE_DESCRIPTION() macros

John Keeping (1):
      usb: gadget: f_uac2: fix non-newline-terminated function name

Kees Cook (1):
      usb: gadget: Use u16 types for 16-bit fields

Kerem Karabay (2):
      USB: core: add 'shutdown' callback to usb_driver
      USB: uas: Implement the new shutdown callback

Ma Ke (1):
      usb: gadget: aspeed_udc: validate endpoint index for ast udc

Marco Felsch (1):
      usb: typec: tcpci: add support to set connector orientation

Mark Pearson (1):
      usb: typec: ucsi: don't retrieve PDOs if not supported

Mathias Nyman (4):
      xhci: show usb device name in xhci urb tracing
      xhci: Set correct transferred length for cancelled isoc transfers
      xhci: rework xhci internal endpoint halt state detection.
      xhci: sort out TRB Endpoint ID bitfield macros

Matthias Kaehlcke (1):
      usb: misc: onboard_usb_dev: Add match function

Mika Westerberg (7):
      thunderbolt: Mention Thunderbolt/USB4 debugging tools in Kconfig
      thunderbolt: Move usb4_port_margining_caps() declaration into correct place
      thunderbolt: Make usb4_port_sb_read/write() available outside of usb4.c
      thunderbolt: Add sideband register access to debugfs
      thunderbolt: Split out margining from USB4 port
      thunderbolt: Make margining functions accept target and retimer index
      thunderbolt: Add receiver lane margining support for retimers

Neil Armstrong (5):
      usb: typec-mux: ptn36502: unregister typec switch on probe error and remove
      usb: typec-mux: nb7vpq904m: unregister typec switch on probe error and remove
      usb: typec-mux: ptn36502: broadcast typec state to next mux
      usb: typec-mux: nb7vpq904m: broadcast typec state to next mux
      dt-bindings: usb: dwc2: switch to unevaluatedProperties

Niklas Neronin (14):
      usb: xhci: remove 'num_trbs' from struct 'xhci_td'
      usb: xhci: remove unused 'xhci' argument
      usb: xhci: remove unused argument from xhci_handle_cmd_config_ep()
      usb: xhci: remove unused argument from handle_port_status()
      usb: xhci: move link chain bit quirk checks into one helper function.
      usb: xhci: move all segment re-numbering to xhci_link_rings()
      usb: xhci: move untargeted transfer event handling to a separate function
      usb: xhci: improve error message for targetless transfer event
      usb: xhci: remove obsolete sanity check debug messages
      usb: xhci: ensure skipped isoc TDs are returned when isoc ring is stopped
      usb: xhci: remove false xhci_giveback_urb_in_irq() header comment
      usb: xhci: remove infinite loop prevention
      usb: xhci: move process TD code out of the while loop
      usb: xhci: add 'goto' for halted endpoint check in handle_tx_event()

Norihiko Hama (1):
      usb-storage: Optimize scan delay more precisely

Nícolas F. R. A. Prado (5):
      kselftest: devices: Allow specifying boards directory through parameter
      kselftest: devices: Add of-fullname-regex property
      kselftest: devices: Move discoverable devices test to subdirectory
      kselftest: Move ksft helper module to common directory
      kselftest: devices: Add test to detect device error logs

Parth Pancholi (1):
      dt-bindings: usb: gpio-sbu-mux: Add an entry for TMUXHS4212

Peng Hongchi (1):
      usb: dwc2: gadget: Don't write invalid mapped sg entries into dma_desc with iommu enabled

Pooja Katiyar (2):
      usb: typec: ucsi: UCSI2.0 Get Error Status data structure changes
      usb: typec: ucsi: UCSI2.0 Get Error Status changes

R Sundar (1):
      usb: typec: nb7vpq904m: Remove unneeded indentation

Radhey Shyam Pandey (1):
      usb: dwc3: enable CCI support for AMD-xilinx DWC3 controller

Reka Norman (1):
      xhci: Apply XHCI_RESET_TO_DEFAULT quirk to TGL

Roger Quadros (2):
      usb: cdns3: Add quirk flag to enable suspend residency
      usb: cdns3-ti: Add workaround for Errata i2409

Sebastian Reichel (2):
      usb: typec: tcpm: avoid resets for missing source capability messages
      usb: typec: tcpm: print error on hard reset

Shantanu Goel (1):
      usb: uas: set host status byte on data completion error

Simon Holesch (1):
      usbip: Don't submit special requests twice

Takashi Iwai (1):
      usb: gadget: midi2: Fix incorrect default MIDI2 protocol setup

Thinh Nguyen (1):
      usb: dwc3: core: Check all ports when set phy suspend

Uday M Bhat (1):
      xhci: dbc: Allow users to modify DbC poll interval via sysfs

Uwe Kleine-König (2):
      usb: misc: Drop explicit initialization of struct i2c_device_id::driver_data to 0
      usb: typec: Drop explicit initialization of struct i2c_device_id::driver_data to 0

Wolfram Sang (1):
      usb: typec: tcpm: use 'time_left' variable with wait_for_completion_timeout()

 .../ABI/testing/sysfs-bus-pci-drivers-xhci_hcd     |  10 +
 Documentation/admin-guide/kernel-parameters.txt    |   3 +
 .../bindings/platform/lenovo,yoga-c630-ec.yaml     |  83 +++
 .../devicetree/bindings/usb/cdns,usb3.yaml         |  15 +-
 Documentation/devicetree/bindings/usb/dwc2.yaml    |   2 +-
 .../devicetree/bindings/usb/fsl,usb2.yaml          |  95 +++
 Documentation/devicetree/bindings/usb/fsl-usb.txt  |  81 ---
 .../devicetree/bindings/usb/genesys,gl850g.yaml    |  60 +-
 .../devicetree/bindings/usb/gpio-sbu-mux.yaml      |   8 +-
 .../bindings/usb/microchip,mpfs-musb.yaml          |   7 +
 .../devicetree/bindings/usb/qcom,dwc3.yaml         |  29 +
 .../boot/dts/amlogic/meson-g12b-odroid-n2.dtsi     |  36 +-
 drivers/phy/ti/phy-da8xx-usb.c                     |  49 ++
 drivers/platform/Makefile                          |   2 +-
 drivers/platform/arm64/Kconfig                     |  14 +
 drivers/platform/arm64/Makefile                    |   1 +
 drivers/platform/arm64/lenovo-yoga-c630.c          | 291 +++++++++
 drivers/thunderbolt/Kconfig                        |  17 +-
 drivers/thunderbolt/debugfs.c                      | 648 +++++++++++++++------
 drivers/thunderbolt/retimer.c                      |  53 +-
 drivers/thunderbolt/sb_regs.h                      |  18 +-
 drivers/thunderbolt/tb.h                           |  45 +-
 drivers/thunderbolt/usb4.c                         | 187 +++---
 drivers/usb/cdns3/cdns3-ti.c                       |  15 +-
 drivers/usb/cdns3/core.h                           |   1 +
 drivers/usb/cdns3/drd.c                            |  10 +-
 drivers/usb/cdns3/drd.h                            |   3 +
 drivers/usb/chipidea/ci_hdrc_imx.c                 |  19 +-
 drivers/usb/chipidea/ci_hdrc_msm.c                 |   1 +
 drivers/usb/chipidea/ci_hdrc_tegra.c               |   9 +-
 drivers/usb/class/usbtmc.c                         |   1 +
 drivers/usb/common/common.c                        |   1 +
 drivers/usb/common/usb-otg-fsm.c                   |   1 +
 drivers/usb/core/driver.c                          |  14 +
 drivers/usb/core/usb.c                             |   1 +
 drivers/usb/dwc2/gadget.c                          |   4 +-
 drivers/usb/dwc2/params.c                          |  30 +-
 drivers/usb/dwc3/core.c                            |  66 ++-
 drivers/usb/dwc3/core.h                            |   8 +
 drivers/usb/dwc3/dwc3-xilinx.c                     |  29 +
 drivers/usb/dwc3/host.c                            |   4 +-
 drivers/usb/gadget/composite.c                     |   1 +
 drivers/usb/gadget/function/f_acm.c                |   1 +
 drivers/usb/gadget/function/f_ecm.c                |   1 +
 drivers/usb/gadget/function/f_eem.c                |   1 +
 drivers/usb/gadget/function/f_fs.c                 |   1 +
 drivers/usb/gadget/function/f_hid.c                |   1 +
 drivers/usb/gadget/function/f_loopback.c           |   1 +
 drivers/usb/gadget/function/f_mass_storage.c       |   1 +
 drivers/usb/gadget/function/f_midi.c               |   1 +
 drivers/usb/gadget/function/f_midi2.c              |  20 +-
 drivers/usb/gadget/function/f_ncm.c                |   1 +
 drivers/usb/gadget/function/f_obex.c               |   1 +
 drivers/usb/gadget/function/f_phonet.c             |   1 +
 drivers/usb/gadget/function/f_printer.c            |   1 +
 drivers/usb/gadget/function/f_rndis.c              |   1 +
 drivers/usb/gadget/function/f_serial.c             |   1 +
 drivers/usb/gadget/function/f_sourcesink.c         |   1 +
 drivers/usb/gadget/function/f_subset.c             |   1 +
 drivers/usb/gadget/function/f_tcm.c                |   1 +
 drivers/usb/gadget/function/f_uac1.c               |   1 +
 drivers/usb/gadget/function/f_uac1_legacy.c        |   1 +
 drivers/usb/gadget/function/f_uac2.c               |   6 +-
 drivers/usb/gadget/function/f_uvc.c                |   1 +
 drivers/usb/gadget/function/storage_common.c       |   1 +
 drivers/usb/gadget/function/u_ether.c              |   1 +
 drivers/usb/gadget/function/u_serial.c             |   1 +
 drivers/usb/gadget/legacy/dbgp.c                   |   1 +
 drivers/usb/gadget/legacy/gmidi.c                  |   1 +
 drivers/usb/gadget/legacy/zero.c                   |   1 +
 drivers/usb/gadget/udc/aspeed_udc.c                |   2 +
 drivers/usb/host/ohci-exynos.c                     |   1 +
 drivers/usb/host/oxu210hp-hcd.c                    |  25 -
 drivers/usb/host/xhci-dbgcap.c                     |  38 ++
 drivers/usb/host/xhci-dbgcap.h                     |   2 +-
 drivers/usb/host/xhci-mem.c                        |  40 +-
 drivers/usb/host/xhci-pci-renesas.c                |   1 +
 drivers/usb/host/xhci-pci.c                        |   4 +-
 drivers/usb/host/xhci-plat.c                       |   3 +
 drivers/usb/host/xhci-ring.c                       | 306 ++++------
 drivers/usb/host/xhci-trace.h                      |   5 +-
 drivers/usb/host/xhci.h                            |  45 +-
 drivers/usb/misc/ezusb.c                           |   1 +
 drivers/usb/misc/isight_firmware.c                 |   1 +
 drivers/usb/misc/onboard_usb_dev.c                 |  11 +-
 drivers/usb/misc/usb251xb.c                        |  18 +-
 drivers/usb/misc/usb3503.c                         |   2 +-
 drivers/usb/misc/usb4604.c                         |   2 +-
 drivers/usb/misc/yurex.c                           |   1 +
 drivers/usb/mon/mon_main.c                         |   1 +
 drivers/usb/musb/da8xx.c                           |  20 +-
 drivers/usb/musb/mpfs.c                            |   2 +
 drivers/usb/phy/phy-am335x-control.c               |   1 +
 drivers/usb/phy/phy-am335x.c                       |   1 +
 drivers/usb/storage/uas.c                          |   7 +-
 drivers/usb/storage/usb.c                          | 101 +++-
 drivers/usb/typec/altmodes/displayport.c           |   2 +-
 drivers/usb/typec/anx7411.c                        |   2 +-
 drivers/usb/typec/class.c                          |  18 +-
 drivers/usb/typec/mux/gpio-sbu-mux.c               |   6 +-
 drivers/usb/typec/mux/nb7vpq904m.c                 |  95 +--
 drivers/usb/typec/mux/ptn36502.c                   |  33 +-
 drivers/usb/typec/tcpm/fusb302.c                   |   4 +-
 drivers/usb/typec/tcpm/tcpci.c                     |  46 +-
 drivers/usb/typec/tcpm/tcpci_maxim_core.c          |   2 +-
 drivers/usb/typec/tcpm/tcpm.c                      |  37 +-
 drivers/usb/typec/tipd/core.c                      |  33 +-
 drivers/usb/typec/ucsi/Kconfig                     |   9 +
 drivers/usb/typec/ucsi/Makefile                    |   1 +
 drivers/usb/typec/ucsi/displayport.c               |   2 +-
 drivers/usb/typec/ucsi/psy.c                       |  32 +
 drivers/usb/typec/ucsi/ucsi.c                      | 290 +++++----
 drivers/usb/typec/ucsi/ucsi.h                      |  72 ++-
 drivers/usb/typec/ucsi/ucsi_acpi.c                 | 145 +++--
 drivers/usb/typec/ucsi/ucsi_ccg.c                  | 105 ++--
 drivers/usb/typec/ucsi/ucsi_glink.c                |  74 +--
 drivers/usb/typec/ucsi/ucsi_stm32g0.c              |  83 +--
 drivers/usb/typec/ucsi/ucsi_yoga_c630.c            | 164 ++++++
 drivers/usb/usbip/stub_rx.c                        |  77 ++-
 include/linux/platform_data/lenovo-yoga-c630.h     |  44 ++
 include/linux/usb.h                                |   3 +
 include/linux/usb/gadget.h                         |  10 +-
 include/linux/usb/tcpci.h                          |   8 +
 include/linux/usb/typec.h                          |   3 +
 tools/testing/selftests/Makefile                   |   4 +-
 tools/testing/selftests/devices/Makefile           |   4 -
 .../testing/selftests/devices/error_logs/Makefile  |   3 +
 .../devices/error_logs/test_device_error_logs.py   |  85 +++
 tools/testing/selftests/devices/probe/Makefile     |   4 +
 .../{ => probe}/boards/Dell Inc.,XPS 13 9300.yaml  |   0
 .../{ => probe}/boards/google,spherion.yaml        |   4 +
 .../{ => probe}/test_discoverable_devices.py       |  44 +-
 .../selftests/{devices => kselftest}/ksft.py       |   0
 133 files changed, 3001 insertions(+), 1212 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/platform/lenovo,yoga-c630-ec.yaml
 create mode 100644 Documentation/devicetree/bindings/usb/fsl,usb2.yaml
 delete mode 100644 Documentation/devicetree/bindings/usb/fsl-usb.txt
 create mode 100644 drivers/platform/arm64/lenovo-yoga-c630.c
 create mode 100644 drivers/usb/typec/ucsi/ucsi_yoga_c630.c
 create mode 100644 include/linux/platform_data/lenovo-yoga-c630.h
 delete mode 100644 tools/testing/selftests/devices/Makefile
 create mode 100644 tools/testing/selftests/devices/error_logs/Makefile
 create mode 100755 tools/testing/selftests/devices/error_logs/test_device_error_logs.py
 create mode 100644 tools/testing/selftests/devices/probe/Makefile
 rename tools/testing/selftests/devices/{ => probe}/boards/Dell Inc.,XPS 13 9300.yaml (100%)
 rename tools/testing/selftests/devices/{ => probe}/boards/google,spherion.yaml (86%)
 rename tools/testing/selftests/devices/{ => probe}/test_discoverable_devices.py (86%)
 rename tools/testing/selftests/{devices => kselftest}/ksft.py (100%)

.
Date: Fri, 19 Jul 2024 14:26:07 +0200
From: Greg KH <gregkh@linuxfoundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>
Cc: linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev
Subject: [GIT PULL] Staging driver changes for 6.11-rc1

The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git tags/staging-6.11-rc1

for you to fetch changes up to 104e004739ef03890a1e175b3c2672d50c6d1a6a:

  staging: rtl8723bs: Remove constant result function CheckNegative() (2024-07-10 14:52:34 +0200)

----------------------------------------------------------------
Staging driver updates for 6.11-rc1

This is the "big" staging driver update for 6.11-rc1.  Not really all
that much happened this release cycle, just lots of tiny cleanups,
overall about 3000 lines removed, so the cleanups were worth it.

Included in here are:
  - loads of rtl8723bs driver cleanups
  - lots of rtl8192e driver cleanups
  - vc04_services reworks and cleanups as that codebase gets slowly
    evolved into something that will make it into the "real" part of the
    kernel hopefully soon.
  - other tiny staging driver cleanups

All of these have been in linux-next for a while with no reported
issues.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

----------------------------------------------------------------
Ashok Kumar (1):
      staging: vme_user: Add blank line after struct decl

Chen shuo (1):
      staging: rtl8192e: remove the r8192E_dev.c's unnecessary brace

Dr. David Alan Gilbert (2):
      staging: r8712u: remove unused struct 'zero_bulkout_context'
      staging: greybus: audio: remove unused struct gb_mixer_control

Greg Kroah-Hartman (2):
      Merge tag 'v6.10-rc4' into staging-next
      Merge 6.10-rc6 into staging-next

Jeff Johnson (3):
      staging: greybus: add missing MODULE_DESCRIPTION() macros
      staging: fbtft: add missing MODULE_DESCRIPTION() macro
      staging: rtl8192e: add missing MODULE_DESCRIPTION() macros

Marc Dietrich (1):
      staging: nvec: make i2c controller register writes robust

Michael Straube (2):
      staging: rtl8192e: reduce indentation level
      staging: rtl8192e: remove unnecessary line breaks

Nam Cao (1):
      staging: rtl8712: remove unnecessary alignment of pxmitpriv->pxmitbuf

Philipp Hortmann (29):
      staging: rtl8723bs: Remove unused structs starting with profile_info
      staging: rtl8723bs: Remove switch(type) as type is constant
      staging: rtl8723bs: Remove unused declarations start with sd_hal_bus_init
      staging: rtl8723bs: Remove empty file sdio_osintf.h
      staging: rtl8723bs: Remove unused macros in wifi.h
      staging: rtl8723bs: Remove unused macros in sta_info.h
      staging: rtl8723bs: Remove unused macros in rtw_xmit.h
      staging: rtl8723bs: Remove unused macros in rtw_security.h
      staging: rtl8723bs: Remove unused macros in rtw_recv.h
      staging: rtl8723bs: Remove unused macros in rtw_pwrctrl.h
      staging: rtl8723bs: Remove unused macros in rtw_mp.h
      staging: rtl8723bs: Remove unused macros in rtw_mlme.h
      staging: rtl8723bs: Remove unused macros in rtw_io.h
      staging: rtl8723bs: Remove unused macro in ioctl_cfg80211.c
      staging: rtl8723bs: Remove unused variable pwdev_priv
      staging: rtl8723bs: Remove unused macros in hal_com_h2c.h
      staging: rtl8723bs: Remove unused macros in rtw_ht.h
      staging: rtl8723bs: Remove unused macros in hal_com_reg.h
      staging: rtl8723bs: Remove unused macros in hal_phy_reg_8723b.h
      staging: rtl8723bs: Move last macro from hal_phy_reg_8723b.h
      staging: rtl8723bs: Delete file hal_phy_reg_8723b.h
      staging: rtl8723bs: Remove unused macros in Hal8192CPhyReg.h
      staging: rtl8723bs: Remove unused macros in Hal8723BReg.h
      staging: rtl8723bs: Remove unused macros in HalPwrSeqCmd.h
      staging: rtl8723bs: Remove unused macros in rtw_mlme.h
      staging: rtl8723bs: Remove unused macros in rtw_efuse.h
      staging: rtl8723bs: Remove unused macros in hal_pwr_seq.h
      staging: rtl8723bs: Remove unused macros in rtw_mlme_ext.h
      staging: rtl8723bs: Remove constant result function CheckNegative()

Roshan Khatri (7):
      staging: rtl8712: Fix spelling mistake in rtl871x_event.h
      staging: rtl8712: Fix spelling mistake in rtl8712_xmit.c
      staging: rtl8192e: Fix spelling mistakes in rtllib_softmac.c
      staging: rtl8712: Fix spelling mistake in rtl871x_mlme.c
      staging: rtl8712: Fix spelling mistake in rtl871x_io.h
      staging: rtl8723bs: hal: Fix spelling mistakes in rtl8723b_cmd.c
      staging: rtl8723bs: hal: Fix spelling mistakes in odm.h

Stefan Wahren (10):
      staging: vchiq_arm: Unify return code variable
      staging: vchiq_arm: Drop obsolete comment
      staging: vchiq_core: Drop non-functional struct members
      staging: vchiq_arm: Drop unnecessary declarations
      staging: vchiq_arm: Get the rid off struct vchiq_2835_state
      staging: vchiq_arm: Drop vchiq_arm_init_state
      staging: vchiq_arm: Reduce indentation of service_callback
      staging: vchiq_core: Add hex prefix to debugfs output
      staging: vchiq_arm: Don't cast scatter-gather elements
      staging: vc04_services: Update testing instructions

Teddy Engel (7):
      staging: vt6656: Remove line from TODO
      staging: rtl8192e: Remove unused constants
      staging: rtl8192e: Remove unused struct phy_ofdm_rx_status_rxsc
      staging: rtl8192e: Capitalize constant RegC38_TH
      staging: rtl8192e: Remove unused macro dm_tx_bb_gain_idx_to_amplify
      staging: rtl8192e: Remove unnecessary pre-declaration of struct net_device
      staging: rtl8192e: Fix conflicting types error with net_device.

Tom Mounet (1):
      staging: nvec: Use x instead of x != NULL to improve readability.

Tree Davies (55):
      Staging: rtl8192e: Rename variable IsPassiveChannel
      Staging: rtl8192e: Rename variable CountryIeBuf
      Staging: rtl8192e: Rename variable CountryIeLen
      Staging: rtl8192e: Rename variable bWithAironetIE
      Staging: rtl8192e: Rename variable bContainHTC
      Staging: rtl8192e: Rename variable MBssid
      Staging: rtl8192e: Rename variable MBssidMask
      Staging: rtl8192e: Rename variable elementID
      Staging: rtl8192e: Rename variable rtllib_rx_Monitor
      Staging: rtl8192e: Rename variable rtllib_rx_InfraAdhoc
      Staging: rtl8192e: Rename variable IsLegacyDataFrame
      Staging: rtl8192e: Rename variable RxReorderIndicatePacket
      Staging: rtl8192e: Rename variable RfdArray
      Staging: rtl8192e: Rename variable Decrypted
      Staging: rtl8192e: Rename variable AddReorderEntry
      Staging: rtl8192e: Rename variable pList
      Staging: rtl8192e: Rename variable nPadding_Length
      Staging: rtl8192e: Rename variable LLCOffset
      Staging: rtl8192e: Remove variable ChkLength
      Staging: rtl8192e: Rename variable WinEnd
      Staging: rtl8192e: Rename variable WinSize
      Staging: rtl8192e: Rename variable IsDataFrame
      Staging: rtl8192e: Rename variable bMatchWinStart
      Staging: rtl8192e: Rename variable bMBssidValid
      Staging: rtl8192e: Rename variable bWithCcxVerNum
      Staging: rtl8192e: Rename variable Frame_QoSTID
      Staging: rtl8192e: Rename variable CcxRmState
      Staging: rtl8192e: Rename variable IsQoSDataFrame
      Staging: rtl8192e: Rename variable RfdCnt
      Staging: rtl8192e: Rename variable prxbIndicateArray
      Staging: rtl8192e: Rename variable bPktInBuf
      Staging: rtl8192e: Rename variable bHwSec
      Staging: rtl8192e: Rename variable bIsMulticast
      Staging: rtl8192e: Rename variable HTCurrentOperaRate
      Staging: rtl8192e: Rename variable HTOpMode
      Staging: rtl8192e: Rename variable bRTSEnable
      Staging: rtl8192e: Rename variable bRTSBW
      Staging: rtl8192e: Rename variable bCTSEnable
      Staging: rtl8192e: Rename variable bRTSUseShortGI
      Staging: rtl8192e: Rename variable bforced_tx20Mhz
      Staging: rtl8192e: Rename variable bPacketBW
      Staging: rtl8192e: Rename variable bBroadcast
      Staging: rtl8192e: Rename variable CntAfterLink
      Staging: rtl8192e: Rename variable bUseShortGI
      Staging: rtl8192e: Rename function TsStartAddBaProcess()
      Staging: rtl8192e: Fix alignment to match open parenthesis
      Staging: rtl8192e: Rename function rtllib_query_BandwidthMode
      Staging: rtl8192e: Rename function rtllib_query_ShortPreambleMode
      Staging: rtl8192e: Rename function rtllib_query_HTCapShortGI
      Staging: rtl8192e: Rename variable bUseShortPreamble
      Staging: rtl8192e: Rename variable bRTSSTBC
      Staging: rtl8192e: Remove parameter bIsAmsdu from rtllib_classify()
      Staging: rtl8192e: Remove variable IsAmsdu from rtllib_xmit_inter()
      Staging: rtl8192e: Fix alignment to match open parenthesis in rtllib_tx.c
      Staging: rtl8192e: Fix alignment to match open parenthesis in rtllib_rx.c

Umang Jain (2):
      staging: vchiq_core: Bubble up wait_event_interruptible() return value
      staging: vc04_services: vchiq_core: Stop kthreads on vchiq module unload

Wolfram Sang (1):
      staging: vc04_services: use 'time_left' variable with wait_for_completion_timeout()

Yang Li (1):
      staging: vc04_services: Fix kernel-doc param for vchiq_register_chrdev

 drivers/staging/fbtft/fbtft-core.c                 |   1 +
 drivers/staging/greybus/audio_manager.c            |   1 +
 drivers/staging/greybus/audio_topology.c           |   6 -
 drivers/staging/greybus/bootrom.c                  |   1 +
 drivers/staging/greybus/camera.c                   |   1 +
 drivers/staging/greybus/gbphy.c                    |   1 +
 drivers/staging/greybus/gpio.c                     |   1 +
 drivers/staging/greybus/hid.c                      |   1 +
 drivers/staging/greybus/i2c.c                      |   1 +
 drivers/staging/greybus/light.c                    |   1 +
 drivers/staging/greybus/log.c                      |   1 +
 drivers/staging/greybus/loopback.c                 |   1 +
 drivers/staging/greybus/power_supply.c             |   1 +
 drivers/staging/greybus/pwm.c                      |   1 +
 drivers/staging/greybus/raw.c                      |   1 +
 drivers/staging/greybus/sdio.c                     |   1 +
 drivers/staging/greybus/spi.c                      |   1 +
 drivers/staging/greybus/spilib.c                   |   1 +
 drivers/staging/greybus/uart.c                     |   1 +
 drivers/staging/greybus/usb.c                      |   1 +
 drivers/staging/greybus/vibrator.c                 |   1 +
 drivers/staging/nvec/nvec.c                        |  45 +-
 drivers/staging/rtl8192e/rtl8192e/r8190P_def.h     |   9 -
 drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c     |  21 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_cam.h        |   1 +
 drivers/staging/rtl8192e/rtl8192e/rtl_core.c       |   6 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_dm.c         | 176 ++--
 drivers/staging/rtl8192e/rtl8192e/rtl_dm.h         |   6 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_pci.h        |   1 +
 drivers/staging/rtl8192e/rtl8192e/rtl_wx.c         |   2 +-
 drivers/staging/rtl8192e/rtl819x_HTProc.c          |   4 +-
 drivers/staging/rtl8192e/rtl819x_TSProc.c          |  10 +-
 drivers/staging/rtl8192e/rtllib.h                  |  64 +-
 drivers/staging/rtl8192e/rtllib_crypt_ccmp.c       |   5 +-
 drivers/staging/rtl8192e/rtllib_crypt_tkip.c       |  11 +-
 drivers/staging/rtl8192e/rtllib_crypt_wep.c        |   5 +-
 drivers/staging/rtl8192e/rtllib_module.c           |   1 +
 drivers/staging/rtl8192e/rtllib_rx.c               | 228 +++---
 drivers/staging/rtl8192e/rtllib_softmac.c          |   8 +-
 drivers/staging/rtl8192e/rtllib_tx.c               | 135 ++--
 drivers/staging/rtl8712/rtl8712_xmit.c             |   2 +-
 drivers/staging/rtl8712/rtl871x_event.h            |   2 +-
 drivers/staging/rtl8712/rtl871x_io.h               |   2 +-
 drivers/staging/rtl8712/rtl871x_mlme.c             |   2 +-
 drivers/staging/rtl8712/rtl871x_xmit.c             |  13 +-
 drivers/staging/rtl8712/rtl871x_xmit.h             |   1 -
 drivers/staging/rtl8712/usb_ops_linux.c            |   7 -
 drivers/staging/rtl8723bs/hal/Hal8723BReg.h        | 373 ---------
 drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c   |  17 +-
 drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c  |  12 +-
 drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c   |  12 +-
 drivers/staging/rtl8723bs/hal/odm.h                |   4 +-
 drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c       |   4 +-
 drivers/staging/rtl8723bs/include/Hal8192CPhyReg.h | 882 +--------------------
 drivers/staging/rtl8723bs/include/HalPwrSeqCmd.h   |  11 -
 drivers/staging/rtl8723bs/include/drv_types.h      |   1 -
 drivers/staging/rtl8723bs/include/hal_com_h2c.h    |  76 --
 drivers/staging/rtl8723bs/include/hal_com_reg.h    | 792 ------------------
 .../staging/rtl8723bs/include/hal_phy_reg_8723b.h  |  69 --
 drivers/staging/rtl8723bs/include/hal_pwr_seq.h    |   7 -
 drivers/staging/rtl8723bs/include/rtl8723b_hal.h   |   2 +-
 drivers/staging/rtl8723bs/include/rtw_efuse.h      |  13 -
 drivers/staging/rtl8723bs/include/rtw_ht.h         |  22 -
 drivers/staging/rtl8723bs/include/rtw_io.h         |  57 --
 drivers/staging/rtl8723bs/include/rtw_mlme.h       | 182 -----
 drivers/staging/rtl8723bs/include/rtw_mlme_ext.h   |  37 -
 drivers/staging/rtl8723bs/include/rtw_mp.h         |  29 -
 drivers/staging/rtl8723bs/include/rtw_pwrctrl.h    |  38 -
 drivers/staging/rtl8723bs/include/rtw_recv.h       |  16 -
 drivers/staging/rtl8723bs/include/rtw_security.h   |   5 -
 drivers/staging/rtl8723bs/include/rtw_xmit.h       |  10 -
 drivers/staging/rtl8723bs/include/sdio_hal.h       |   4 -
 drivers/staging/rtl8723bs/include/sdio_osintf.h    |  16 -
 drivers/staging/rtl8723bs/include/sta_info.h       |  44 -
 drivers/staging/rtl8723bs/include/wifi.h           | 299 -------
 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c  |  17 -
 .../vc04_services/bcm2835-camera/bcm2835-camera.c  |   8 +-
 drivers/staging/vc04_services/interface/TESTING    |  45 +-
 drivers/staging/vc04_services/interface/TODO       |   7 -
 .../vc04_services/interface/vchiq_arm/vchiq_arm.c  | 268 +++----
 .../vc04_services/interface/vchiq_arm/vchiq_arm.h  |   3 -
 .../vc04_services/interface/vchiq_arm/vchiq_core.c |  47 +-
 .../vc04_services/interface/vchiq_arm/vchiq_core.h |   6 -
 .../vc04_services/interface/vchiq_arm/vchiq_dev.c  |   2 +-
 .../staging/vc04_services/vchiq-mmal/mmal-vchiq.c  |   8 +-
 drivers/staging/vme_user/vme_user.c                |   1 +
 drivers/staging/vt6656/TODO                        |   1 -
 87 files changed, 617 insertions(+), 3623 deletions(-)
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_phy_reg_8723b.h
 delete mode 100644 drivers/staging/rtl8723bs/include/sdio_osintf.h

.
Date: Fri, 19 Jul 2024 14:26:27 +0200
From: Greg KH <gregkh@linuxfoundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, linux-kernel@vger.kernel.org
Subject: [GIT PULL] Char/Misc driver changes for 6.11-rc1

The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git tags/char-misc-6.11-rc1

for you to fetch changes up to 5418e6dfc905b3ccc1e01bdad97d948697b20100:

  misc: Kconfig: exclude mrvl-cn10k-dpi compilation for 32-bit systems (2024-07-18 09:02:37 +0200)

----------------------------------------------------------------
Char/Misc and other driver changes for 6.11-rc1

Here is the "big" set of char/misc and other driver subsystem changes
for 6.11-rc1.  Nothing major in here, just loads of new drivers and
updates.  Included in here are:
  - IIO api updates and new drivers added
  - wait_interruptable_timeout() api cleanups for some drivers
  - MODULE_DESCRIPTION() additions for loads of drivers
  - parport out-of-bounds fix
  - interconnect driver updates and additions
  - mhi driver updates and additions
  - w1 driver fixes
  - binder speedups and fixes
  - eeprom driver updates
  - coresight driver updates
  - counter driver update
  - new misc driver additions
  - other minor api updates

All of these, EXCEPT for the final Kconfig build fix for 32bit systems,
have been in linux-next for a while with no reported issues.  The
Kconfig fixup went in 29 hours ago, so might have missed the latest
linux-next, but was acked by everyone involved.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

----------------------------------------------------------------
Aidan MacDonald (1):
      iio: adc: axp20x_adc: Add support for AXP192

Alexander Usyskin (1):
      mei: bus-fixup: set timeout for MKHI send operations

Alisa-Dariana Roman (8):
      iio: adc: ad7192: Use standard attribute
      dt-bindings: iio: adc: ad7192: Add aincom supply
      iio: adc: ad7192: Add aincom supply
      dt-bindings: iio: adc: Add single-channel property
      dt-bindings: iio: adc: ad7192: Add AD7194 support
      iio: adc: ad7192: Add AD7194 support
      iio: adc: ad7192: Clean up dev
      MAINTAINERS: Update AD7192 driver maintainer

Amit Vadhavana (1):
      slimbus: Fix struct and documentation alignment in stream.c

Andy Shevchenko (10):
      misc: eeprom_93xx46: Make use of device properties
      eeprom: digsy_mtc: Fix 93xx46 driver probe failure
      eeprom: digsy_mtc: Convert to use GPIO descriptors
      misc: eeprom_93xx46: Hide legacy platform data in the driver
      misc: eeprom_93xx46: Remove ->prepare() and ->finish() customisation
      misc: eeprom_93xx46: Use spi_message_init_with_transfers()
      misc: eeprom_93xx46: Convert to use kstrtox()
      misc: eeprom_93xx46: Replace explicit castings with proper specifiers
      misc: eeprom_93xx46: Use string_choices API instead of ternary operator
      misc: eeprom_93xx46: Convert to DEVICE_ATTR_WO()

Angelo Dureghello (6):
      dt-bindings: iio: dac: fix ad3552r gain parameter names
      dt-bindings: iio: dac: add ad35xxr single output variants
      iio: dac: ad3552r: add model data structure
      iio: dac: ad3552r: add support for ad3541r and ad3551r
      iio: dac: ad3552r: change AD3552R_NUM_CH define name
      iio: dac: ad3552r: uniform structure names

AngeloGioacchino Del Regno (5):
      dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings
      interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect driver
      dt-bindings: iio: adc: Add MediaTek MT6359 PMIC AUXADC
      math.h: Add unsigned 8 bits fractional numbers type
      iio: adc: Add support for MediaTek MT6357/8/9 Auxiliary ADC

Antoni Pokusinski (1):
      iio: humidity: si7020: add heater support

Antoniu Miclaus (3):
      iio: frequency: adrf6780: rm clk provider include
      dt-bindings: iio: adf4350: add clk provider prop
      iio: frequency: adf4350: add clk provider

Armin Wolf (2):
      eeprom: ee1004: Use devres for bus data cleanup
      eeprom: ee1004: Add nvmem support

Arthur Becker (2):
      iio: light: driver for Vishay VEML6040
      dt-bindings: iio: light: add VEML6040 RGBW-LS

BarnabĂˇs CzĂ©mĂˇn (3):
      iio: light: stk3310: relax failure to match id
      iio: light: stk3310: make chip id check expandable
      iio: light: stk3310: support more stk3311 variants

Bruna Bispo (1):
      iio: chemical: ams-iaq-core: clean up codestyle warning

Carlos Llamas (2):
      binder: use bitmap for faster descriptor lookup
      binder: fix hang of unregistered readers

Chenyuan Yang (1):
      iio: Fix the sorting functionality in iio_gts_build_avail_time_table

Christophe JAILLET (4):
      iio: temperature: max30208: Remove an unused field in struct max30208_data
      iio: multiplexer: Remove an unused field in struct mux
      iio: tmag5273: Remove some unused field in struct tmag5273_data
      iio: light: gp2ap020a00f: Remove some unused field in struct gp2ap020a00f_data

Danila Tikhonov (2):
      iio: imu: bmi160: add support for bmi120
      dt-bindings: iio: imu: bmi160: add bmi120

David Lechner (32):
      iio: adc: sort Makefile
      iio: adc: ad7944: remove unused parameter
      dt-bindings: iio: adc: Add binding for AD7380 ADCs
      iio: adc: ad7380: new driver for AD7380 ADCs
      dt-bindings: iio: adc: ad7380: add pseudo-differential parts
      iio: adc: ad7380: add support for pseudo-differential parts
      iio: introduce struct iio_scan_type
      iio: buffer: use struct iio_scan_type to simplify code
      iio: add support for multiple scan types per channel
      iio: adc: ad7380: use spi_optimize_message()
      iio: adc: ad7266: use devm_regulator_get_enable_read_voltage
      iio: adc: ad7292: use devm_regulator_get_enable_read_voltage
      iio: adc: ad7793: use devm_regulator_get_enable_read_voltage
      iio: adc: ad7944: use devm_regulator_get_enable_read_voltage
      Documentation: devres: add missing SPI helpers
      spi: add devm_spi_optimize_message() helper
      spi: add EXPORT_SYMBOL_GPL(devm_spi_optimize_message)
      iio: adc: aspeed_adc: use devm_regulator_get_enable_read_voltage()
      iio: adc: hx711: use devm_regulator_get_enable_read_voltage()
      iio: adc: hx711: remove hx711_remove()
      iio: adc: hx711: use dev_err_probe()
      iio: adc: ltc2309: use devm_regulator_get_enable_read_voltage()
      iio: adc: max1363: use devm_regulator_get_enable_read_voltage()
      iio: adc: ti-adc108s102: use devm_regulator_get_enable_read_voltage()
      iio: adc: ti-ads8688: use devm_regulator_get_enable_read_voltage()
      iio: adc: ti-ads8688: drop ads8688_remove()
      iio: dac: ad3552r: use devm_regulator_get_enable_read_voltage()
      iio: adc: ad7192: use devm_regulator_get_enable_read_voltage
      iio: adc: ad7944: use devm_spi_optimize_message()
      counter: ti-eqep: implement over/underflow events
      counter: ti-eqep: remove unused struct member
      counter: ti-eqep: remove counter_priv() wrapper

Denis Benato (1):
      iio: imu: bmi323: Use iio read_acpi_mount_matrix() helper

Dimitri Fedrau (1):
      iio: temperature: mcp9600: add threshold events support

Dmitry Baryshkov (1):
      MAINTAINERS: CC dri-devel list on Qualcomm FastRPC patches

Dr. David Alan Gilbert (9):
      iio: accel: bmi088: remove unused struct 'bmi088_scale_info'
      iio: adc: pac1934: remove unused struct 'samp_rate_mapping'
      iio: light: rohm-bu27034: remove unused struct 'bu27034_result'
      staging: iio: adt7316: remove unused struct 'adt7316_limit_regs'
      fpga: altera-fpga2sdram: remove unused struct 'prop_map'
      mcb: remove unused struct 'mcb_parse_priv'
      parport: Remove 'drivers' list
      parport: Remove attach function pointer
      parport: Remove parport_driver.devmodel

Dumitru Ceclan (9):
      dt-bindings: iio: adc: Add common-mode-channel property
      dt-bindings: adc: ad7173: add support for ad411x
      iio: adc: ad_sigma_delta: add disable_one callback
      iio: adc: ad7173: refactor channel configuration parsing
      iio: adc: ad7173: refactor ain and vref selection
      iio: adc: ad7173: add support for special inputs
      iio: adc: ad7173: refactor device info structs
      iio: adc: ad7173: document sampling frequency behaviour
      iio: adc: ad7173: Add support for AD411x devices

Dylan Van Assche (2):
      misc: fastrpc: support complete DMA pool access to the DSP
      misc: fastrpc: use coherent pool for untranslated Compute Banks

Ekansh Gupta (1):
      misc: fastrpc: Add missing dev_err newlines

Erick Archer (1):
      iio: event: use sizeof(*pointer) instead of sizeof(type)

Georgi Djakov (4):
      Merge branch 'icc-mtk' into icc-next
      Merge branch 'icc-fixes' into icc-next
      Merge branch 'icc-msm8953' into icc-next
      Merge branch 'icc-rpmh-qos' into icc-next

Gerhard Engleder (2):
      misc: keba: Add basic KEBA CP500 system FPGA support
      misc: keba: Fix missing AUXILIARY_BUS dependency

Greg Kroah-Hartman (12):
      Merge tag 'iio-for-6.11a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-testing
      Merge tag 'v6.10-rc4' into char-misc-next
      Merge tag 'peci-next-6.11-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/iwi/linux into char-misc-next
      Merge 6.10-rc6 into char-misc-next
      Merge tag 'fpga-for-6.11-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/fpga/linux-fpga into char-misc-next
      Merge tag 'w1-drv-6.11' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/krzk/linux-w1 into char-misc-next
      Merge tag 'counter-updates-for-6.11' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wbg/counter into char-misc-next
      Merge tag 'coresight-next-v6.11' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/coresight/linux into char-misc-next
      Merge tag 'iio-for-6.11b' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next
      Merge tag 'mhi-for-v6.11' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mani/mhi into char-misc-next
      Merge tag 'icc-6.11-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-next
      misc: delete Makefile.rej

Guenter Roeck (2):
      eeprom: ee1004: Call i2c_new_scanned_device to instantiate thermal sensor
      eeprom: ee1004: Instantiate jc42 devices for DIMMS implementing Rev.1 SPD

Guillaume Stols (2):
      dt-bindings: iio: adc: adi,ad7606: add missing datasheet link
      dt-bindings: iio: adc: adi,ad7606: comment and sort the compatible names

Gustavo Silva (6):
      dt-bindings: vendor-prefixes: add ScioSense
      dt-bindings: iio: chemical: add ENS160 sensor
      iio: chemical: add driver for ENS160 sensor
      iio: chemical: ens160: add triggered buffer support
      iio: chemical: ens160: add power management support
      MAINTAINERS: Add ScioSense ENS160

Gustavo Ueti Fukunaga (1):
      iio: adc: ti-adc161s626: make use of iio_device_claim_direct_scoped()

Heiko Stuebner (3):
      nvmem: rockchip-otp: set add_legacy_fixed_of_cells config option
      nvmem: rockchip-otp: Set type to OTP
      nvmem: rockchip-efuse: set type to OTP

Iwona Winiarska (1):
      peci: aspeed: Clear clock_divider value before setting it

James Clark (1):
      coresight: Fix ref leak when of_coresight_parse_endpoint() fails

Jean-Baptiste Maneyrol (3):
      iio: imu: inv_icm42600: add register caching in the regmap
      iio: document inv_icm42600 driver private sysfs attributes
      iio: imu: inv_icm42600: add support of accel low-power mode

Jeff Johnson (26):
      uio: add missing MODULE_DESCRIPTION() macros
      parport: add missing MODULE_DESCRIPTION()
      dyndbg: add missing MODULE_DESCRIPTION() macro
      lib/math: add missing MODULE_DESCRIPTION() macros
      ppdev: add missing MODULE_DESCRIPTION() macro
      tlclk: add missing MODULE_DESCRIPTION() macro
      char: add missing MODULE_DESCRIPTION() macros
      misc: open-dice: add missing MODULE_DESCRIPTION() macro
      siox: bus-gpio: add missing MODULE_DESCRIPTION()
      interconnect: imx: add missing MODULE_DESCRIPTION() macros
      interconnect: qcom: add missing MODULE_DESCRIPTION() macros
      iio: add missing MODULE_DESCRIPTION() macros
      counter: ftm-quaddec: add missing MODULE_DESCRIPTION() macro
      dtlk: add missing MODULE_DESCRIPTION() macro
      dsp56k: add missing MODULE_DESCRIPTION() macro
      intel_th: msu-sink: add missing MODULE_DESCRIPTION()
      greybus: add missing MODULE_DESCRIPTION() macros
      dca: add missing MODULE_DESCRIPTION() macro
      platform/goldfish: goldfish_pipe: add missing MODULE_DESCRIPTION() macro
      bsr: add missing MODULE_DESCRIPTION() macro
      nvmem: add missing MODULE_DESCRIPTION() macros
      misc: fastrpc: add missing MODULE_DESCRIPTION() macro
      samples: configfs: add missing MODULE_DESCRIPTION() macro
      spmi: add missing MODULE_DESCRIPTION() macros
      agp: uninorth: add missing MODULE_DESCRIPTION() macro
      virtio: add missing MODULE_DESCRIPTION() macro

Jiapeng Chong (1):
      interconnect: mediatek: remove unneeded semicolon

Jonathan Cameron (4):
      iio: adc: ltc2309: Fix endian type passed to be16_to_cpu()
      Merge tag 'dmaengine_topic_dma_vec' into togreg
      Merge tag 'spi-devm-optimize' into togreg
      iio: adc: ad7173: Fix uninitialized symbol is_current_chan

Jorge Harrisonn (1):
      iio: adc: ad7606: using claim_direct_scoped for code simplification

Josua Mayer (1):
      dt-bindings: iio: adc: ti,ads1015: add compatible for tla2021

JoĂŁo Paulo GonĂ§alves (2):
      dt-bindings: iio: adc: add ti,ads1119
      iio: adc: ti-ads1119: Add driver

Judith Mendez (3):
      dt-bindings: counter: Add new ti,am62-eqep compatible
      counter/ti-eqep: Add new ti-am62-eqep compatible
      counter: ti-eqep: Allow eQEP driver to be built for K3 devices

Julien Stephan (5):
      iio: adc: ad7380: prepare for parts with more channels
      dt-bindings: iio: adc: ad7380: add support for ad738x-4 4 channels variants
      iio: adc: ad7380: add support for ad738x-4 4 channels variants
      iio: adc: ad7380: add oversampling support
      driver: iio: add missing checks on iio_info's callback access

Kaustabh Chakraborty (3):
      iio: accel: st_accel: add support for LIS2DS12
      dt-bindings: iio: st-sensors: add LIS2DS12 accelerometer
      iio: st_sensors: relax WhoAmI check in st_sensors_verify_id()

Konrad Dybcio (1):
      interconnect: qcom: qcm2290: Fix mas_snoc_bimc RPM master ID

Krzysztof Kozlowski (8):
      iio: accel: adxl313: simplify with spi_get_device_match_data()
      iio: accel: adxl355: simplify with spi_get_device_match_data()
      iio: adc: max11205: simplify with spi_get_device_match_data()
      iio: adc: ti-ads131e08: simplify with spi_get_device_match_data()
      iio: adc: ti-tsc2046: simplify with spi_get_device_match_data()
      iio: addac: ad74413r: simplify with spi_get_device_match_data()
      iio: dac: max5522: simplify with spi_get_device_match_data()
      iio: adc: mcp3564: drop redundant open-coded spi_get_device_match_data()

Kuninori Morimoto (1):
      hwtracing: use for_each_endpoint_of_node()

Lei Liu (1):
      binder_alloc: Replace kcalloc with kvcalloc to mitigate OOM issues

Manivannan Sadhasivam (2):
      bus: mhi: ep: Do not allocate memory for MHI objects from DMA zone
      bus: mhi: host: pci_generic: Use unique 'mhi_pci_dev_info' for product families

Marco Pagani (1):
      Revert "fpga: disable KUnit test suites when module support is enabled"

Marek Vasut (4):
      nvmem: Replace spaces with tab in documentation
      nvmem: Document type attribute
      nvmem: Use sysfs_emit() for type attribute
      nvmem: core: Implement force_ro sysfs attribute

MarileneGarcia (1):
      nvmem: meson-efuse: Replacing the use of of_node_put to __free

Matti Vaittinen (1):
      iio: test: gts: test available times and gains sorting

Neil Armstrong (2):
      dt-bindings: iio: adc: amlogic,meson-saradc: add optional power-domains
      dt-bindings: nvmem: amlogic,meson-gx-efuse: add optional power-domains

Nuno Sa (19):
      iio: adc: ad9467: use DMA safe buffer for spi
      iio: adc: ad9467: change struct members padding
      iio: adc: adi-axi-adc: don't allow concurrent enable/disable calls
      iio: adc: adi-axi-adc: make sure DRP is locked on enable
      iio: adc: adi-axi-adc: add platform dependencies
      iio: dac: adi-axi-dac: add platform dependencies
      iio: imu: adis_buffer: split trigger handling
      iio: imu: adis: move to the cleanup magic
      iio: imu: adis: add cleanup based lock helpers
      iio: gyro: adis16260: make use of the new lock helpers
      iio: gyro: adis16260: make use of the new lock helpers
      iio: imu: adis16400: make use of the new lock helpers
      iio: imu: adis16480: make use of the new lock helpers
      iio: imu: adis16475: make use of the new lock helpers
      iio: imu: adis: remove legacy lock helpers
      dev_printk: add new dev_err_probe() helpers
      iio: temperature: ltc2983: convert to dev_err_probe()
      iio: backend: make use of dev_err_cast_probe()
      iio: common: scmi_iio: convert to dev_err_probe()

Odelu Kukatla (4):
      dt-bindings: interconnect: add clock property to enable QOS on SC7280
      interconnect: qcom: icc-rpmh: Add QoS configuration support
      interconnect: qcom: sc7280: enable QoS configuration
      interconnect: qcom: Fix DT backwards compatibility for QoS

Olivier Moysan (1):
      dt-bindings: iio: stm32: dfsdm: fix dtbs warnings on dfsdm audio port

Paul Cercueil (7):
      dmaengine: Add API function dmaengine_prep_peripheral_dma_vec()
      dmaengine: dma-axi-dmac: Implement device_prep_peripheral_dma_vec
      Documentation: dmaengine: Document new dma_vec API
      iio: core: Add new DMABUF interface infrastructure
      iio: buffer-dma: Enable support for DMABUFs
      iio: buffer-dmaengine: Support new DMABUF based userspace API
      Documentation: iio: Document high-speed DMABUF based API

RafaĹ‚ MiĹ‚ecki (2):
      dt-bindings: nvmem: mediatek: efuse: add support for MT7981
      dt-bindings: nvmem: mediatek: efuse: add support for MT7988

Ramona Gradinariu (15):
      dt-bindings: iio: imu: Add ADIS16501 compatibles
      drivers: iio: imu: Add support for ADIS16501
      iio: imu: adis_buffer: Add buffer setup API with buffer attributes
      iio: imu: adis16475: Create push single sample API
      drivers: iio: imu: adis16475: generic computation for sample rate
      iio: imu: adis_trigger: Allow level interrupts for FIFO readings
      iio: imu: adis16475: Re-define ADIS16475_DATA
      dt-bindings: iio: imu: Add ADIS1657X family devices compatibles
      drivers: iio: imu: Add support for adis1657x family
      iio: adis16480: make the burst_max_speed configurable
      iio: imu: adis16480.c: Add delta angle and delta velocity channels
      dt-bindings: iio: imu: Add ADIS16545/47 compatibles
      iio: adis16480: add support for adis16545/7 families
      docs: iio: add documentation for interfacing tools
      docs: iio: add documentation for adis16480 driver

Ricardo B. Marliere (1):
      coresight: constify the struct device_type usage

SanjuĂˇn GarcĂ­a, Jorge (1):
      mcb: mcb-pci: detect IO mapped devices before requesting resources

Sean Anderson (3):
      iio: Add iio_read_channel_label to inkern API
      hwmon: iio: Add labels from IIO channels
      iio: xilinx-ams: Add labels

Sebastian Ene (2):
      dt-bindings: vcpu_stall_detector: Add a PPI interrupt to the virtual device
      misc: Register a PPI for the vcpu stall detection virtual device

Slark Xiao (3):
      bus: mhi: host: Add support for Foxconn SDX72 modems
      bus: mhi: host: Allow controller drivers to specify name for the MHI controller
      net: wwan: mhi: make default data link id configurable

Subhajit Ghosh (1):
      MAINTAINERS: Add AVAGO APDS9306

Thomas WeiĂźschuh (3):
      nvmem: core: add single sysfs group
      nvmem: core: remove global nvmem_cells_group
      nvmem: core: drop unnecessary range checks in sysfs callbacks

Thorsten Blum (3):
      w1: Add missing newline and fix typos in w1_bus_master comment
      w1: Drop allocation error message
      misc: fastrpc: Use memdup_user()

Tony Luck (1):
      peci, hwmon: Switch to new Intel CPU model defines

Trevor Gamblin (43):
      iio: adc: adi-axi-adc: improve probe() error messaging
      iio: accel: fxls8962af-core: Make use of regmap_set_bits(), regmap_clear_bits()
      iio: accel: kxsd9: Make use of regmap_clear_bits()
      iio: accel: msa311: make use of regmap_clear_bits()
      iio: adc: ad4130: make use of regmap_clear_bits()
      iio: adc: axp20x_adc: make use of regmap_set_bits()
      iio: adc: axp288_adc: make use of regmap_set_bits()
      iio: adc: bcm_iproc_adc: make use of regmap_clear_bits()
      iio: adc: cpcap-adc: make use of regmap_clear_bits(), regmap_set_bits()
      iio: adc: fsl-imx25-gcq: make use of regmap_clear_bits(), regmap_set_bits()
      iio: adc: ina2xx-adc: make use of regmap_clear_bits()
      iio: adc: intel_mrfld_adc: make use of regmap_clear_bits()
      iio: adc: meson_saradc: make use of regmap_clear_bits(), regmap_set_bits()
      iio: adc: mp2629_adc: make use of regmap_clear_bits(), regmap_set_bits()
      iio: adc: berlin2-adc: make use of regmap_clear_bits(), regmap_set_bits()
      iio: adc: qcom-spmi-rradc: make use of regmap_clear_bits(), regmap_set_bits()
      iio: adc: rn5t618-adc: make use of regmap_set_bits()
      iio: adc: sc27xx_adc: make use of regmap_clear_bits(), regmap_set_bits()
      iio: adc: stm32-dfsdm-adc: make use of regmap_clear_bits(), regmap_set_bits()
      iio: dac: ltc2688: make use of regmap_set_bits()
      iio: dac: stm32-dac-core: make use of regmap_set_bits()
      iio: gyro: bmg160_core: make use of regmap_clear_bits()
      iio: gyro: mpu3050-core: make use of regmap_clear_bits(), regmap_set_bits()
      iio: health: afe4403: make use of regmap_clear_bits(), regmap_set_bits()
      iio: health: afe4404: make use of regmap_clear_bits(), regmap_set_bits()
      iio: health: max30100: make use of regmap_set_bits()
      iio: health: max30102: make use of regmap_set_bits()
      iio: imu: inv_icm42600: make use of regmap_clear_bits(), regmap_set_bits()
      iio: light: adux1020: make use of regmap_clear_bits(), regmap_set_bits()
      iio: light: iqs621-als: make use of regmap_clear_bits()
      iio: light: isl29018: make use of regmap_clear_bits()
      iio: light: st_uvis25_core: make use of regmap_clear_bits()
      iio: light: veml6030: make use of regmap_clear_bits()
      iio: magnetometer: ak8974: make use of regmap_set_bits()
      iio: magnetometer: mmc35240: make use of regmap_set_bits()
      iio: pressure: bmp280-core: make use of regmap_clear_bits()
      iio: proximity: sx9324: make use of regmap_set_bits()
      iio: proximity: sx9360: make use of regmap_set_bits()
      iio: proximity: sx9500: make use of regmap_clear_bits(), regmap_set_bits()
      iio: proximity: sx_common: make use of regmap_clear_bits(), regmap_set_bits()
      iio: temperature: mlx90632: make use of regmap_clear_bits()
      iio: trigger: stm32-timer-trigger: make use of regmap_clear_bits(), regmap_set_bits()
      iio: dac: adi-axi-dac: improve probe() error messaging

Uwe Kleine-KĂ¶nig (4):
      iio: Drop explicit initialization of struct i2c_device_id::driver_data to 0
      eeprom: Drop explicit initialization of struct i2c_device_id::driver_data to 0
      staging: iio: Drop explicit initialization of struct i2c_device_id::driver_data to 0
      misc: Drop explicit initialization of struct i2c_device_id::driver_data to 0

Val Packett (1):
      iio: accel: mma7660: add mount-matrix support

Vamsi Attunuru (3):
      misc: mrvl-cn10k-dpi: add Octeon CN10K DPI administrative driver
      misc: Kconfig: add a new dependency for MARVELL_CN10K_DPI
      misc: Kconfig: exclude mrvl-cn10k-dpi compilation for 32-bit systems

Vasileios Amoiridis (10):
      iio: pressure: bmp280: Improve indentation and line wrapping
      iio: pressure: bmp280: Use BME prefix for BME280 specifics
      iio: pressure: bmp280: Add identifier names in function definitions
      iio: pressure: bmp280: Add more intuitive name for bmp180_measure()
      iio: pressure: bmp280: Remove dead error checks
      iio: pressure: bmp280: Remove, add and update error messages
      iio: pressure: bmp280: Make error checks consistent
      iio: pressure: bmp280: Use unsigned data types for raw sensor data
      iio: pressure: bmp280: Refactorize reading functions
      iio: pressure: bmp280: Introduce new cleanup routines

Vladimir Lypak (2):
      dt-bindings: interconnect: qcom: Add Qualcomm MSM8953 NoC
      interconnect: qcom: Add MSM8953 driver

Wolfram Sang (4):
      misc: apds990x: use 'time_left' variable with wait_event_interruptible_timeout()
      misc: bh1770glc: use 'time_left' variable with wait_event_interruptible_timeout()
      misc: tifm: use 'time_left' variable with wait_for_completion_timeout()
      misc: ti-st: st_kim: use 'time_left' variable with wait_for_completion_interruptible_timeout()

Yang Li (1):
      coresight: tmc: Remove duplicated include in coresight-tmc-core.c

tuhaowen (1):
      dev/parport: fix the array out-of-bounds risk

 Documentation/ABI/stable/sysfs-bus-nvmem           |   30 +-
 Documentation/ABI/stable/sysfs-driver-misc-cp500   |   25 +
 .../ABI/testing/sysfs-bus-iio-inv_icm42600         |   18 +
 .../devicetree/bindings/counter/ti-eqep.yaml       |   27 +-
 Documentation/devicetree/bindings/iio/adc/adc.yaml |   30 +
 .../devicetree/bindings/iio/adc/adi,ad7173.yaml    |  194 ++-
 .../devicetree/bindings/iio/adc/adi,ad7192.yaml    |   95 ++
 .../devicetree/bindings/iio/adc/adi,ad7380.yaml    |  148 +++
 .../devicetree/bindings/iio/adc/adi,ad7606.yaml    |    5 +-
 .../bindings/iio/adc/amlogic,meson-saradc.yaml     |    3 +
 .../bindings/iio/adc/mediatek,mt6359-auxadc.yaml   |   33 +
 .../bindings/iio/adc/st,stm32-dfsdm-adc.yaml       |    4 +
 .../devicetree/bindings/iio/adc/ti,ads1015.yaml    |    1 +
 .../devicetree/bindings/iio/adc/ti,ads1119.yaml    |  155 +++
 .../bindings/iio/chemical/sciosense,ens160.yaml    |   70 ++
 .../devicetree/bindings/iio/dac/adi,ad3552r.yaml   |   43 +-
 .../bindings/iio/frequency/adi,adf4350.yaml        |    6 +
 .../devicetree/bindings/iio/imu/adi,adis16475.yaml |   31 +
 .../devicetree/bindings/iio/imu/adi,adis16480.yaml |    6 +
 .../devicetree/bindings/iio/imu/bosch,bmi160.yaml  |    6 +-
 .../bindings/iio/light/vishay,veml6075.yaml        |    9 +-
 .../devicetree/bindings/iio/st,st-sensors.yaml     |    1 +
 .../bindings/interconnect/mediatek,mt8183-emi.yaml |   51 +
 .../bindings/interconnect/qcom,msm8953.yaml        |  101 ++
 .../bindings/interconnect/qcom,sc7280-rpmh.yaml    |   53 +
 .../bindings/misc/qemu,vcpu-stall-detector.yaml    |    6 +
 .../bindings/nvmem/amlogic,meson-gxbb-efuse.yaml   |    3 +
 .../devicetree/bindings/nvmem/mediatek,efuse.yaml  |    2 +
 .../devicetree/bindings/vendor-prefixes.yaml       |    2 +
 Documentation/driver-api/dmaengine/client.rst      |    9 +
 Documentation/driver-api/dmaengine/provider.rst    |   10 +
 Documentation/driver-api/driver-model/devres.rst   |    3 +
 Documentation/iio/adis16475.rst                    |   23 +-
 Documentation/iio/adis16480.rst                    |  443 +++++++
 Documentation/iio/iio_dmabuf_api.rst               |   54 +
 Documentation/iio/iio_tools.rst                    |   27 +
 Documentation/iio/index.rst                        |    3 +
 Documentation/misc-devices/index.rst               |    1 +
 Documentation/misc-devices/mrvl_cn10k_dpi.rst      |   52 +
 Documentation/userspace-api/ioctl/ioctl-number.rst |    1 +
 MAINTAINERS                                        |   42 +-
 drivers/android/binder.c                           |  116 +-
 drivers/android/binder_alloc.c                     |   10 +-
 drivers/android/binder_internal.h                  |    5 +-
 drivers/android/dbitmap.h                          |  176 +++
 drivers/ata/pata_parport/pata_parport.c            |    1 -
 drivers/auxdisplay/ks0108.c                        |    1 -
 drivers/auxdisplay/panel.c                         |    1 -
 drivers/bus/mhi/ep/main.c                          |   14 +-
 drivers/bus/mhi/host/pci_generic.c                 |  128 +-
 drivers/char/agp/uninorth-agp.c                    |    1 +
 drivers/char/bsr.c                                 |    1 +
 drivers/char/dsp56k.c                              |    1 +
 drivers/char/dtlk.c                                |    1 +
 drivers/char/lp.c                                  |    2 +-
 drivers/char/nvram.c                               |    1 +
 drivers/char/ppdev.c                               |    2 +-
 drivers/char/tlclk.c                               |    1 +
 drivers/char/ttyprintk.c                           |    1 +
 drivers/counter/Kconfig                            |    2 +-
 drivers/counter/ftm-quaddec.c                      |    1 +
 drivers/counter/ti-eqep.c                          |  131 +-
 drivers/dca/dca-core.c                             |    1 +
 drivers/dma/dma-axi-dmac.c                         |   40 +
 drivers/fpga/altera-fpga2sdram.c                   |    6 -
 drivers/fpga/tests/Kconfig                         |    4 +-
 drivers/greybus/core.c                             |    1 +
 drivers/greybus/es2.c                              |    1 +
 drivers/hwmon/iio_hwmon.c                          |   45 +-
 drivers/hwmon/peci/cputemp.c                       |    8 +-
 drivers/hwtracing/coresight/coresight-platform.c   |    8 +-
 drivers/hwtracing/coresight/coresight-priv.h       |    2 +-
 drivers/hwtracing/coresight/coresight-sysfs.c      |    2 +-
 drivers/hwtracing/coresight/coresight-tmc-core.c   |    1 -
 drivers/hwtracing/intel_th/msu-sink.c              |    1 +
 drivers/i2c/busses/i2c-parport.c                   |    1 -
 drivers/iio/Kconfig                                |    1 +
 drivers/iio/accel/adxl313_spi.c                    |    8 +-
 drivers/iio/accel/adxl355_spi.c                    |   10 +-
 drivers/iio/accel/adxl367_i2c.c                    |    4 +-
 drivers/iio/accel/adxl372_i2c.c                    |    2 +-
 drivers/iio/accel/bma400_i2c.c                     |    2 +-
 drivers/iio/accel/bmi088-accel-core.c              |    5 -
 drivers/iio/accel/da311.c                          |    2 +-
 drivers/iio/accel/dmard06.c                        |    6 +-
 drivers/iio/accel/dmard09.c                        |    4 +-
 drivers/iio/accel/dmard10.c                        |    2 +-
 drivers/iio/accel/fxls8962af-core.c                |   18 +-
 drivers/iio/accel/kxsd9-i2c.c                      |    4 +-
 drivers/iio/accel/kxsd9.c                          |    5 +-
 drivers/iio/accel/mc3230.c                         |    2 +-
 drivers/iio/accel/mma7455_i2c.c                    |    4 +-
 drivers/iio/accel/mma7660.c                        |   52 +-
 drivers/iio/accel/mma9551.c                        |    2 +-
 drivers/iio/accel/mma9553.c                        |    4 +-
 drivers/iio/accel/msa311.c                         |    8 +-
 drivers/iio/accel/mxc4005.c                        |    6 +-
 drivers/iio/accel/mxc6255.c                        |    4 +-
 drivers/iio/accel/st_accel.h                       |    1 +
 drivers/iio/accel/st_accel_core.c                  |   81 ++
 drivers/iio/accel/st_accel_i2c.c                   |    5 +
 drivers/iio/accel/st_accel_spi.c                   |    5 +
 drivers/iio/accel/stk8312.c                        |    4 +-
 drivers/iio/accel/stk8ba50.c                       |    2 +-
 drivers/iio/adc/Kconfig                            |   52 +-
 drivers/iio/adc/Makefile                           |   27 +-
 drivers/iio/adc/ad4130.c                           |    4 +-
 drivers/iio/adc/ad7124.c                           |   14 +-
 drivers/iio/adc/ad7173.c                           |  676 +++++++---
 drivers/iio/adc/ad7192.c                           |  361 ++++--
 drivers/iio/adc/ad7266.c                           |   33 +-
 drivers/iio/adc/ad7291.c                           |    2 +-
 drivers/iio/adc/ad7292.c                           |   36 +-
 drivers/iio/adc/ad7380.c                           |  833 ++++++++++++
 drivers/iio/adc/ad7606.c                           |   19 +-
 drivers/iio/adc/ad7793.c                           |   24 +-
 drivers/iio/adc/ad7944.c                           |   88 +-
 drivers/iio/adc/ad9467.c                           |  103 +-
 drivers/iio/adc/ad_sigma_delta.c                   |    1 +
 drivers/iio/adc/adi-axi-adc.c                      |   27 +-
 drivers/iio/adc/aspeed_adc.c                       |   30 +-
 drivers/iio/adc/axp20x_adc.c                       |  284 ++++-
 drivers/iio/adc/axp288_adc.c                       |    4 +-
 drivers/iio/adc/bcm_iproc_adc.c                    |    8 +-
 drivers/iio/adc/berlin2-adc.c                      |   24 +-
 drivers/iio/adc/cpcap-adc.c                        |   46 +-
 drivers/iio/adc/fsl-imx25-gcq.c                    |   16 +-
 drivers/iio/adc/hx711.c                            |   78 +-
 drivers/iio/adc/ina2xx-adc.c                       |    3 +-
 drivers/iio/adc/ingenic-adc.c                      |    1 +
 drivers/iio/adc/intel_mrfld_adc.c                  |    4 +-
 drivers/iio/adc/ltc2309.c                          |   45 +-
 drivers/iio/adc/ltc2485.c                          |    2 +-
 drivers/iio/adc/max11205.c                         |    5 +-
 drivers/iio/adc/max1363.c                          |   28 +-
 drivers/iio/adc/mcp3564.c                          |    6 -
 drivers/iio/adc/meson_saradc.c                     |  101 +-
 drivers/iio/adc/mp2629_adc.c                       |   19 +-
 drivers/iio/adc/mt6359-auxadc.c                    |  606 +++++++++
 drivers/iio/adc/nau7802.c                          |    2 +-
 drivers/iio/adc/pac1934.c                          |    5 -
 drivers/iio/adc/qcom-spmi-rradc.c                  |   50 +-
 drivers/iio/adc/rn5t618-adc.c                      |    5 +-
 drivers/iio/adc/sc27xx_adc.c                       |   41 +-
 drivers/iio/adc/stm32-dfsdm-adc.c                  |   29 +-
 drivers/iio/adc/ti-adc108s102.c                    |   28 +-
 drivers/iio/adc/ti-adc161s626.c                    |   18 +-
 drivers/iio/adc/ti-ads1119.c                       |  825 ++++++++++++
 drivers/iio/adc/ti-ads131e08.c                     |    4 +-
 drivers/iio/adc/ti-ads7924.c                       |    2 +-
 drivers/iio/adc/ti-ads8688.c                       |   59 +-
 drivers/iio/adc/ti-tsc2046.c                       |    7 +-
 drivers/iio/adc/xilinx-ams.c                       |  108 +-
 drivers/iio/addac/ad74413r.c                       |   13 +-
 drivers/iio/buffer/industrialio-buffer-dma.c       |  178 ++-
 drivers/iio/buffer/industrialio-buffer-dmaengine.c |   64 +-
 drivers/iio/buffer/kfifo_buf.c                     |    1 +
 drivers/iio/chemical/Kconfig                       |   20 +
 drivers/iio/chemical/Makefile                      |    3 +
 drivers/iio/chemical/ams-iaq-core.c                |    4 +-
 drivers/iio/chemical/bme680_i2c.c                  |    4 +-
 drivers/iio/chemical/ccs811.c                      |    2 +-
 drivers/iio/chemical/ens160.h                      |   10 +
 drivers/iio/chemical/ens160_core.c                 |  367 ++++++
 drivers/iio/chemical/ens160_i2c.c                  |   62 +
 drivers/iio/chemical/ens160_spi.c                  |   61 +
 drivers/iio/common/scmi_sensors/scmi_iio.c         |   45 +-
 drivers/iio/common/st_sensors/st_sensors_core.c    |    3 +-
 drivers/iio/dac/Kconfig                            |    1 +
 drivers/iio/dac/ad3552r.c                          |  168 ++-
 drivers/iio/dac/adi-axi-dac.c                      |    9 +-
 drivers/iio/dac/ltc2688.c                          |    5 +-
 drivers/iio/dac/max5522.c                          |   11 +-
 drivers/iio/dac/mcp4728.c                          |    2 +-
 drivers/iio/dac/stm32-dac-core.c                   |    5 +-
 drivers/iio/frequency/adf4350.c                    |  124 +-
 drivers/iio/frequency/adrf6780.c                   |    1 -
 drivers/iio/gyro/adis16136.c                       |   26 +-
 drivers/iio/gyro/adis16260.c                       |   19 +-
 drivers/iio/gyro/bmg160_core.c                     |    4 +-
 drivers/iio/gyro/bmg160_i2c.c                      |    6 +-
 drivers/iio/gyro/fxas21002c_i2c.c                  |    2 +-
 drivers/iio/gyro/itg3200_core.c                    |    2 +-
 drivers/iio/gyro/mpu3050-core.c                    |   35 +-
 drivers/iio/health/afe4403.c                       |    9 +-
 drivers/iio/health/afe4404.c                       |   11 +-
 drivers/iio/health/max30100.c                      |    7 +-
 drivers/iio/health/max30102.c                      |    5 +-
 drivers/iio/humidity/am2315.c                      |    2 +-
 drivers/iio/humidity/hdc100x.c                     |   12 +-
 drivers/iio/humidity/si7005.c                      |    4 +-
 drivers/iio/humidity/si7020.c                      |  141 ++-
 drivers/iio/iio_core.h                             |    4 +
 drivers/iio/imu/Kconfig                            |    4 +-
 drivers/iio/imu/adis.c                             |   11 +-
 drivers/iio/imu/adis16400.c                        |   72 +-
 drivers/iio/imu/adis16475.c                        |  823 ++++++++++--
 drivers/iio/imu/adis16480.c                        |  458 +++++--
 drivers/iio/imu/adis_buffer.c                      |   73 +-
 drivers/iio/imu/adis_trigger.c                     |   37 +-
 drivers/iio/imu/bmi160/bmi160_core.c               |   26 +-
 drivers/iio/imu/bmi160/bmi160_i2c.c                |    5 +-
 drivers/iio/imu/bmi160/bmi160_spi.c                |    3 +
 drivers/iio/imu/bmi323/bmi323_core.c               |    8 +-
 drivers/iio/imu/bno055/bno055_i2c.c                |    2 +-
 drivers/iio/imu/fxos8700_i2c.c                     |    2 +-
 drivers/iio/imu/inv_icm42600/inv_icm42600.h        |    4 +
 drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c  |  124 +-
 drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c |   14 +-
 drivers/iio/imu/inv_icm42600/inv_icm42600_core.c   |   80 +-
 drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c    |    4 +-
 drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c    |    4 +-
 drivers/iio/imu/kmx61.c                            |    2 +-
 drivers/iio/industrialio-backend.c                 |    8 +-
 drivers/iio/industrialio-buffer.c                  |  588 ++++++++-
 drivers/iio/industrialio-core.c                    |   32 +-
 drivers/iio/industrialio-event.c                   |   13 +-
 drivers/iio/industrialio-gts-helper.c              |    7 +-
 drivers/iio/inkern.c                               |   38 +-
 drivers/iio/light/Kconfig                          |   11 +
 drivers/iio/light/Makefile                         |    1 +
 drivers/iio/light/adjd_s311.c                      |    2 +-
 drivers/iio/light/adux1020.c                       |   15 +-
 drivers/iio/light/al3320a.c                        |    2 +-
 drivers/iio/light/apds9300.c                       |    2 +-
 drivers/iio/light/apds9960.c                       |    2 +-
 drivers/iio/light/bh1780.c                         |    4 +-
 drivers/iio/light/cm3232.c                         |    2 +-
 drivers/iio/light/cm3323.c                         |    2 +-
 drivers/iio/light/cm36651.c                        |    2 +-
 drivers/iio/light/gp2ap002.c                       |    4 +-
 drivers/iio/light/gp2ap020a00f.c                   |    3 +-
 drivers/iio/light/iqs621-als.c                     |    4 +-
 drivers/iio/light/isl29018.c                       |    6 +-
 drivers/iio/light/isl29028.c                       |    4 +-
 drivers/iio/light/isl29125.c                       |    2 +-
 drivers/iio/light/jsa1212.c                        |    2 +-
 drivers/iio/light/lv0104cs.c                       |    2 +-
 drivers/iio/light/max44000.c                       |    2 +-
 drivers/iio/light/max44009.c                       |    2 +-
 drivers/iio/light/noa1305.c                        |    2 +-
 drivers/iio/light/opt3001.c                        |    2 +-
 drivers/iio/light/pa12203001.c                     |    2 +-
 drivers/iio/light/rohm-bu27034.c                   |    6 -
 drivers/iio/light/rpr0521.c                        |    2 +-
 drivers/iio/light/si1133.c                         |    2 +-
 drivers/iio/light/st_uvis25_core.c                 |    4 +-
 drivers/iio/light/stk3310.c                        |   37 +-
 drivers/iio/light/tcs3414.c                        |    2 +-
 drivers/iio/light/tcs3472.c                        |    2 +-
 drivers/iio/light/tsl4531.c                        |    2 +-
 drivers/iio/light/us5182d.c                        |    2 +-
 drivers/iio/light/vcnl4035.c                       |    2 +-
 drivers/iio/light/veml6030.c                       |    6 +-
 drivers/iio/light/veml6040.c                       |  281 +++++
 drivers/iio/light/veml6070.c                       |    2 +-
 drivers/iio/light/vl6180.c                         |    2 +-
 drivers/iio/light/zopt2201.c                       |    2 +-
 drivers/iio/magnetometer/af8133j.c                 |    2 +-
 drivers/iio/magnetometer/ak8974.c                  |   18 +-
 drivers/iio/magnetometer/bmc150_magn_i2c.c         |    6 +-
 drivers/iio/magnetometer/mag3110.c                 |    2 +-
 drivers/iio/magnetometer/mmc35240.c                |   10 +-
 drivers/iio/magnetometer/tmag5273.c                |    2 -
 drivers/iio/multiplexer/iio-mux.c                  |    1 -
 drivers/iio/potentiostat/lmp91000.c                |    4 +-
 drivers/iio/pressure/bmp280-core.c                 |  839 +++++++------
 drivers/iio/pressure/bmp280-regmap.c               |    8 +-
 drivers/iio/pressure/bmp280-spi.c                  |    4 +-
 drivers/iio/pressure/bmp280.h                      |   65 +-
 drivers/iio/pressure/dps310.c                      |    2 +-
 drivers/iio/pressure/hp03.c                        |    4 +-
 drivers/iio/pressure/icp10100.c                    |    2 +-
 drivers/iio/pressure/mpl115_i2c.c                  |    2 +-
 drivers/iio/pressure/mpl3115.c                     |    2 +-
 drivers/iio/pressure/t5403.c                       |    2 +-
 drivers/iio/pressure/zpa2326_i2c.c                 |    4 +-
 drivers/iio/proximity/isl29501.c                   |    2 +-
 drivers/iio/proximity/pulsedlight-lidar-lite-v2.c  |    6 +-
 drivers/iio/proximity/rfd77402.c                   |    2 +-
 drivers/iio/proximity/sx9324.c                     |    5 +-
 drivers/iio/proximity/sx9360.c                     |    5 +-
 drivers/iio/proximity/sx9500.c                     |   16 +-
 drivers/iio/proximity/sx_common.c                  |    9 +-
 drivers/iio/proximity/vl53l0x-i2c.c                |    2 +-
 drivers/iio/temperature/ltc2983.c                  |  260 ++--
 drivers/iio/temperature/max30208.c                 |    1 -
 drivers/iio/temperature/mcp9600.c                  |  363 +++++-
 drivers/iio/temperature/mlx90632.c                 |    6 +-
 drivers/iio/temperature/tmp006.c                   |    2 +-
 drivers/iio/temperature/tmp007.c                   |    2 +-
 drivers/iio/temperature/tsys01.c                   |    2 +-
 drivers/iio/temperature/tsys02d.c                  |    2 +-
 drivers/iio/test/iio-test-gts.c                    |    8 +-
 drivers/iio/trigger/stm32-timer-trigger.c          |   34 +-
 drivers/input/joystick/db9.c                       |    1 -
 drivers/input/joystick/gamecon.c                   |    1 -
 drivers/input/joystick/turbografx.c                |    1 -
 drivers/input/joystick/walkera0701.c               |    1 -
 drivers/input/serio/parkbd.c                       |    1 -
 drivers/interconnect/Kconfig                       |    1 +
 drivers/interconnect/Makefile                      |    1 +
 drivers/interconnect/imx/imx.c                     |    1 +
 drivers/interconnect/imx/imx8mm.c                  |    1 +
 drivers/interconnect/imx/imx8mn.c                  |    1 +
 drivers/interconnect/imx/imx8mp.c                  |    1 +
 drivers/interconnect/imx/imx8mq.c                  |    1 +
 drivers/interconnect/mediatek/Kconfig              |   29 +
 drivers/interconnect/mediatek/Makefile             |    5 +
 drivers/interconnect/mediatek/icc-emi.c            |  153 +++
 drivers/interconnect/mediatek/icc-emi.h            |   40 +
 drivers/interconnect/mediatek/mt8183.c             |  143 +++
 drivers/interconnect/mediatek/mt8195.c             |  339 +++++
 drivers/interconnect/qcom/Kconfig                  |    9 +
 drivers/interconnect/qcom/Makefile                 |    2 +
 drivers/interconnect/qcom/icc-common.c             |    1 +
 drivers/interconnect/qcom/icc-rpmh.c               |   94 ++
 drivers/interconnect/qcom/icc-rpmh.h               |   36 +
 drivers/interconnect/qcom/msm8953.c                | 1321 ++++++++++++++++++++
 drivers/interconnect/qcom/qcm2290.c                |    2 +-
 drivers/interconnect/qcom/sc7280.c                 |  276 ++++
 drivers/mcb/mcb-parse.c                            |    5 -
 drivers/mcb/mcb-pci.c                              |   16 +-
 drivers/misc/Kconfig                               |   16 +
 drivers/misc/Makefile                              |    2 +
 drivers/misc/apds9802als.c                         |    2 +-
 drivers/misc/apds990x.c                            |   12 +-
 drivers/misc/bh1770glc.c                           |   14 +-
 drivers/misc/ds1682.c                              |    2 +-
 drivers/misc/eeprom/Kconfig                        |    2 +
 drivers/misc/eeprom/digsy_mtc_eeprom.c             |   46 +-
 drivers/misc/eeprom/ee1004.c                       |  131 +-
 drivers/misc/eeprom/eeprom_93xx46.c                |  178 ++-
 drivers/misc/eeprom/idt_89hpesx.c                  |   96 +-
 drivers/misc/eeprom/max6875.c                      |    2 +-
 drivers/misc/fastrpc.c                             |   46 +-
 drivers/misc/hmc6352.c                             |    2 +-
 drivers/misc/ics932s401.c                          |    2 +-
 drivers/misc/isl29003.c                            |    2 +-
 drivers/misc/isl29020.c                            |    2 +-
 drivers/misc/keba/Kconfig                          |   13 +
 drivers/misc/keba/Makefile                         |    3 +
 drivers/misc/keba/cp500.c                          |  458 +++++++
 drivers/misc/mei/bus-fixup.c                       |    8 +-
 drivers/misc/mrvl_cn10k_dpi.c                      |  676 ++++++++++
 drivers/misc/open-dice.c                           |    1 +
 drivers/misc/ti-st/st_kim.c                        |    8 +-
 drivers/misc/tifm_7xx1.c                           |    6 +-
 drivers/misc/tsl2550.c                             |    2 +-
 drivers/misc/vcpu_stall_detector.c                 |   31 +-
 drivers/net/hamradio/baycom_epp.c                  |    1 -
 drivers/net/hamradio/baycom_par.c                  |    1 -
 drivers/net/plip/plip.c                            |    1 -
 drivers/net/wwan/mhi_wwan_mbim.c                   |   18 +-
 drivers/nvmem/apple-efuses.c                       |    1 +
 drivers/nvmem/brcm_nvram.c                         |    1 +
 drivers/nvmem/core.c                               |   90 +-
 drivers/nvmem/meson-efuse.c                        |    5 +-
 drivers/nvmem/rockchip-efuse.c                     |    1 +
 drivers/nvmem/rockchip-otp.c                       |    2 +
 drivers/nvmem/u-boot-env.c                         |    1 +
 drivers/parport/daisy.c                            |    1 -
 drivers/parport/procfs.c                           |   24 +-
 drivers/parport/share.c                            |   10 +-
 drivers/peci/controller/peci-aspeed.c              |    1 +
 drivers/peci/core.c                                |    5 +-
 drivers/peci/cpu.c                                 |   21 +-
 drivers/peci/device.c                              |    3 +-
 drivers/peci/internal.h                            |    6 +-
 drivers/platform/goldfish/goldfish_pipe.c          |    1 +
 drivers/pps/clients/pps_parport.c                  |    1 -
 drivers/pps/generators/pps_gen_parport.c           |    1 -
 drivers/scsi/imm.c                                 |    1 -
 drivers/scsi/ppa.c                                 |    1 -
 drivers/siox/siox-bus-gpio.c                       |    1 +
 drivers/slimbus/stream.c                           |    8 +-
 drivers/spi/spi-butterfly.c                        |    1 -
 drivers/spi/spi-lm70llp.c                          |    1 -
 drivers/spi/spi.c                                  |   28 +
 drivers/spmi/hisi-spmi-controller.c                |    1 +
 drivers/spmi/spmi-pmic-arb.c                       |    1 +
 drivers/staging/iio/addac/adt7316-i2c.c            |   12 +-
 drivers/staging/iio/addac/adt7316.c                |    9 -
 drivers/staging/iio/impedance-analyzer/ad5933.c    |    4 +-
 drivers/uio/uio.c                                  |    1 +
 drivers/uio/uio_aec.c                              |    1 +
 drivers/uio/uio_cif.c                              |    1 +
 drivers/uio/uio_mf624.c                            |    3 +-
 drivers/uio/uio_netx.c                             |    1 +
 drivers/virtio/virtio_dma_buf.c                    |    1 +
 drivers/w1/w1.c                                    |    2 +-
 drivers/w1/w1_int.c                                |    6 +-
 .../dt-bindings/iio/adc/mediatek,mt6357-auxadc.h   |   21 +
 .../dt-bindings/iio/adc/mediatek,mt6358-auxadc.h   |   22 +
 .../dt-bindings/iio/adc/mediatek,mt6359-auxadc.h   |   22 +
 include/dt-bindings/interconnect/mediatek,mt8183.h |   23 +
 include/dt-bindings/interconnect/mediatek,mt8195.h |   44 +
 include/dt-bindings/interconnect/qcom,msm8953.h    |   93 ++
 include/linux/dev_printk.h                         |    8 +
 include/linux/dmaengine.h                          |   33 +
 include/linux/eeprom_93xx46.h                      |   32 -
 include/linux/iio/adc/ad_sigma_delta.h             |   14 +
 include/linux/iio/buffer-dma.h                     |   31 +
 include/linux/iio/buffer_impl.h                    |   33 +
 include/linux/iio/consumer.h                       |   10 +
 include/linux/iio/iio.h                            |   94 +-
 include/linux/iio/imu/adis.h                       |   87 +-
 include/linux/math.h                               |    2 +
 include/linux/mhi.h                                |    2 +
 include/linux/misc/keba.h                          |   25 +
 include/linux/parport.h                            |    6 -
 include/linux/peci-cpu.h                           |   24 +
 include/linux/peci.h                               |    6 +-
 include/linux/spi/spi.h                            |    2 +
 include/linux/w1.h                                 |    7 +-
 include/uapi/linux/iio/buffer.h                    |   22 +
 include/uapi/misc/mrvl_cn10k_dpi.h                 |   39 +
 lib/math/prime_numbers.c                           |    1 +
 lib/math/rational-test.c                           |    1 +
 lib/test_dynamic_debug.c                           |    1 +
 samples/configfs/configfs_sample.c                 |    1 +
 sound/drivers/mts64.c                              |    1 -
 sound/drivers/portman2x4.c                         |    1 -
 423 files changed, 15716 insertions(+), 3144 deletions(-)
 create mode 100644 Documentation/ABI/stable/sysfs-driver-misc-cp500
 create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-inv_icm42600
 create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
 create mode 100644 Documentation/devicetree/bindings/iio/adc/mediatek,mt6359-auxadc.yaml
 create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
 create mode 100644 Documentation/devicetree/bindings/iio/chemical/sciosense,ens160.yaml
 create mode 100644 Documentation/devicetree/bindings/interconnect/mediatek,mt8183-emi.yaml
 create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,msm8953.yaml
 create mode 100644 Documentation/iio/adis16480.rst
 create mode 100644 Documentation/iio/iio_dmabuf_api.rst
 create mode 100644 Documentation/iio/iio_tools.rst
 create mode 100644 Documentation/misc-devices/mrvl_cn10k_dpi.rst
 create mode 100644 drivers/android/dbitmap.h
 create mode 100644 drivers/iio/adc/ad7380.c
 create mode 100644 drivers/iio/adc/mt6359-auxadc.c
 create mode 100644 drivers/iio/adc/ti-ads1119.c
 create mode 100644 drivers/iio/chemical/ens160.h
 create mode 100644 drivers/iio/chemical/ens160_core.c
 create mode 100644 drivers/iio/chemical/ens160_i2c.c
 create mode 100644 drivers/iio/chemical/ens160_spi.c
 create mode 100644 drivers/iio/light/veml6040.c
 create mode 100644 drivers/interconnect/mediatek/Kconfig
 create mode 100644 drivers/interconnect/mediatek/Makefile
 create mode 100644 drivers/interconnect/mediatek/icc-emi.c
 create mode 100644 drivers/interconnect/mediatek/icc-emi.h
 create mode 100644 drivers/interconnect/mediatek/mt8183.c
 create mode 100644 drivers/interconnect/mediatek/mt8195.c
 create mode 100644 drivers/interconnect/qcom/msm8953.c
 create mode 100644 drivers/misc/keba/Kconfig
 create mode 100644 drivers/misc/keba/Makefile
 create mode 100644 drivers/misc/keba/cp500.c
 create mode 100644 drivers/misc/mrvl_cn10k_dpi.c
 create mode 100644 include/dt-bindings/iio/adc/mediatek,mt6357-auxadc.h
 create mode 100644 include/dt-bindings/iio/adc/mediatek,mt6358-auxadc.h
 create mode 100644 include/dt-bindings/iio/adc/mediatek,mt6359-auxadc.h
 create mode 100644 include/dt-bindings/interconnect/mediatek,mt8183.h
 create mode 100644 include/dt-bindings/interconnect/mediatek,mt8195.h
 create mode 100644 include/dt-bindings/interconnect/qcom,msm8953.h
 delete mode 100644 include/linux/eeprom_93xx46.h
 create mode 100644 include/linux/misc/keba.h
 create mode 100644 include/uapi/misc/mrvl_cn10k_dpi.h

.
Date: Fri, 19 Jul 2024 22:58:06 +1000
From: Michael Ellerman <mpe@ellerman.id.au>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: anjalik@linux.ibm.com, asavkov@redhat.com, bhelgaas@google.com,
 christophe.leroy@csgroup.eu, coelacanthushex@gmail.com, esben@geanix.com,
 gautam@linux.ibm.com, gbatra@linux.ibm.com, haren@linux.ibm.com,
 hbathini@linux.ibm.com, krishnak@linux.ibm.com,
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
 nathanl@linux.ibm.com, naveen@kernel.org, nbowler@draconx.ca,
 nilay@linux.ibm.com, quic_jjohnson@quicinc.com, robh@kernel.org,
 sbhat@linux.ibm.com, sourabhjain@linux.ibm.com,
 u.kleine-koenig@baylibre.com
Subject: [GIT PULL] Please pull powerpc/linux.git powerpc-6.11-1 tag

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hi Linus,

Please pull a few powerpc updates for 6.11.

No conflicts with your tree that I know of. There's one minor conflict with
the mm tree which should be obvious enough, if not the correct resolution is
in linux-next [1].

cheers

[1]: https://lore.kernel.org/all/20240703094857.3f489d4f@canb.auug.org.au/


The following changes since commit c3f38fa61af77b49866b006939479069cd451173:

  Linux 6.10-rc2 (2024-06-02 15:44:56 -0700)

are available in the git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git tags/po=
werpc-6.11-1

for you to fetch changes up to 9ff0251b2eb54d17fbe4f6aff50f6edfd837adb6:

  Merge branch 'topic/ppc-kvm' into next (2024-07-18 14:32:46 +1000)

- ------------------------------------------------------------------
powerpc updates for 6.11

 - Remove support for 40x CPUs & platforms.

 - Add support to the 64-bit BPF JIT for cpu v4 instructions.

 - Fix PCI hotplug driver crash on powernv.

 - Fix doorbell emulation for KVM on PAPR guests (nestedv2).

 - Fix KVM nested guest handling of some less used SPRs.

 - Online NUMA nodes with no CPU/memory if they have a PCI device attached.

 - Reduce memory overhead of enabling kfence on 64-bit Radix MMU kernels.

 - Reimplement the iommu table_group_ops for pseries for VFIO SPAPR TCE.

Thanks to: Anjali K, Artem Savkov, Athira Rajeev, Breno Leitao, Brian King,
Celeste Liu, Christophe Leroy, Esben Haabendal, Gaurav Batra, Gautam Mengha=
ni,
Haren Myneni, Hari Bathini, Jeff Johnson, Krishna Kumar, Krzysztof Kozlowsk=
i,
Nathan Lynch, Nicholas Piggin, Nick Bowler, Nilay Shroff, Rob Herring (Arm),
Shawn Anastasio, Shivaprasad G Bhat, Sourabh Jain, Srikar Dronamraju, Timot=
hy
Pearson, Uwe Kleine-K=C3=B6nig, Vaibhav Jain.

- ------------------------------------------------------------------
Anjali K (1):
      powerpc/perf: Set cpumode flags using sample address

Artem Savkov (5):
      powerpc64/bpf: jit support for 32bit offset jmp instruction
      powerpc64/bpf: jit support for unconditional byte swap
      powerpc64/bpf: jit support for sign extended load
      powerpc64/bpf: jit support for sign extended mov
      powerpc64/bpf: jit support for signed division and modulo

Celeste Liu (1):
      powerpc/configs: drop RT_GROUP_SCHED=3Dy from ppc6xx_defconfig

Christophe Leroy (6):
      powerpc/40x: Remove 40x platforms.
      powerpc/boot: Remove all 40x platforms from boot
      powerpc: Remove core support for 40x
      powerpc/platforms: Move files from 4xx to 44x
      powerpc: Remove 40x leftovers
      Documentation/powerpc: Mention 40x is removed

Esben Haabendal (1):
      powerpc/configs: Update defconfig with now user-visible CONFIG_FSL_IFC

Gaurav Batra (1):
      powerpc/pseries/iommu: Split Dynamic DMA Window to be used in Hybrid =
mode

Gautam Menghani (4):
      powerpc/pseries: Remove unused cede related functions
      KVM: PPC: Book3S HV nestedv2: Add support for reading VPA counters fo=
r pseries guests
      KVM: PPC: Book3S HV nestedv2: Add DPDES support in helper library for=
 Guest state buffer
      KVM: PPC: Book3S HV nestedv2: Fix doorbell emulation

Haren Myneni (1):
      powerpc/pseries/vas: Use usleep_range() to support HCALL delay

Hari Bathini (1):
      powerpc/64s/radix/kfence: map __kfence_pool at page granularity

Jeff Johnson (3):
      KVM: PPC: add missing MODULE_DESCRIPTION() macros
      macintosh/mac_hid: add MODULE_DESCRIPTION()
      powerpc: add missing MODULE_DESCRIPTION() macros

Krishna Kumar (2):
      pci/hotplug/pnv_php: Fix hotplug driver crash on Powernv
      powerpc/pci: Hotplug driver bridge support

Michael Ellerman (8):
      powerpc: Remove 40x from Kconfig and defconfig
      powerpc/4xx: Remove CONFIG_BOOKE_OR_40x
      powerpc: Replace CONFIG_4xx with CONFIG_44x
      selftests/sigaltstack: Fix ppc64 GCC build
      powerpc: Drop clang workaround for builtin constant checks
      powerpc/xmon: Fix disassembly CPU feature checks
      powerpc: Check only single values are passed to CPU/MMU feature checks
      Merge branch 'topic/ppc-kvm' into next

Nathan Lynch (3):
      powerpc/mm/drmem: Silence drmem_init() early return
      powerpc/rtas: Prevent Spectre v1 gadget construction in sys_rtas()
      powerpc/prom: Add CPU info to hardware description string later

Nick Bowler (1):
      macintosh/therm_windtunnel: fix module unload.

Nilay Shroff (1):
      powerpc/numa: Online a node if PHB is attached.

Rob Herring (Arm) (1):
      powerpc/kexec: Use of_property_read_reg()

Shivaprasad G Bhat (15):
      KVM: PPC: Book3S HV: Fix the set_one_reg for MMCR3
      KVM: PPC: Book3S HV: Fix the get_one_reg of SDAR
      KVM: PPC: Book3S HV: Add one-reg interface for DEXCR register
      KVM: PPC: Book3S HV nestedv2: Keep nested guest DEXCR in sync
      KVM: PPC: Book3S HV: Add one-reg interface for HASHKEYR register
      KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHKEYR in sync
      KVM: PPC: Book3S HV: Add one-reg interface for HASHPKEYR register
      KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHPKEYR in sync
      powerpc/iommu: Move pSeries specific functions to pseries/iommu.c
      powerpc/pseries/iommu: Fix the VFIO_IOMMU_SPAPR_TCE_GET_INFO ioctl ou=
tput
      powerpc/pseries/iommu: Use the iommu table[0] for IOV VF's DDW
      vfio/spapr: Always clear TCEs before unsetting the window
      powerpc/iommu: Move dev_has_iommu_table() to iommu.c
      powerpc/iommu: Reimplement the iommu_table_group_ops for pSeries
      powerpc/pseries/iommu: Define spapr_tce_table_group_ops only with CON=
FIG_IOMMU_API

Sourabh Jain (2):
      powerpc/kexec_file: fix extra size calculation for kexec FDT
      powerpc/kexec_file: fix cpus node update to FDT

Uwe Kleine-K=C3=B6nig (1):
      macintosh: Drop explicit initialization of struct i2c_device_id::driv=
er_data to 0


 Documentation/arch/powerpc/cpu_families.rst                 |  18 -
 Documentation/arch/powerpc/elf_hwcaps.rst                   |   1 +
 Documentation/arch/powerpc/kvm-nested.rst                   |   4 +-
 Documentation/virt/kvm/api.rst                              |   3 +
 MAINTAINERS                                                 |   1 -
 arch/powerpc/Kconfig                                        |  17 +-
 arch/powerpc/Kconfig.debug                                  |  13 -
 arch/powerpc/Makefile                                       |   5 -
 arch/powerpc/boot/4xx.c                                     | 266 -------
 arch/powerpc/boot/4xx.h                                     |   4 -
 arch/powerpc/boot/Makefile                                  |  11 -
 arch/powerpc/boot/cuboot-acadia.c                           | 171 -----
 arch/powerpc/boot/cuboot-hotfoot.c                          | 139 ----
 arch/powerpc/boot/cuboot-kilauea.c                          |  46 --
 arch/powerpc/boot/dcr.h                                     |  11 -
 arch/powerpc/boot/dts/acadia.dts                            | 224 ------
 arch/powerpc/boot/dts/haleakala.dts                         | 281 -------
 arch/powerpc/boot/dts/hotfoot.dts                           | 296 --------
 arch/powerpc/boot/dts/kilauea.dts                           | 407 --------=
--
 arch/powerpc/boot/dts/klondike.dts                          | 212 ------
 arch/powerpc/boot/dts/makalu.dts                            | 353 ---------
 arch/powerpc/boot/dts/obs600.dts                            | 314 --------
 arch/powerpc/boot/ppcboot-hotfoot.h                         | 119 ---
 arch/powerpc/boot/ppcboot.h                                 |   2 +-
 arch/powerpc/boot/wrapper                                   |  22 +-
 arch/powerpc/configs/40x.config                             |   2 -
 arch/powerpc/configs/40x/acadia_defconfig                   |  61 --
 arch/powerpc/configs/40x/kilauea_defconfig                  |  69 --
 arch/powerpc/configs/40x/klondike_defconfig                 |  43 --
 arch/powerpc/configs/40x/makalu_defconfig                   |  59 --
 arch/powerpc/configs/40x/obs600_defconfig                   |  69 --
 arch/powerpc/configs/40x/walnut_defconfig                   |  55 --
 arch/powerpc/configs/85xx-hw.config                         |   2 +
 arch/powerpc/configs/ppc40x_defconfig                       |  74 --
 arch/powerpc/configs/ppc6xx_defconfig                       |   1 -
 arch/powerpc/include/asm/cacheflush.h                       |   2 +-
 arch/powerpc/include/asm/cpu_has_feature.h                  |   3 +-
 arch/powerpc/include/asm/cputable.h                         |   7 -
 arch/powerpc/include/asm/guest-state-buffer.h               |   3 +-
 arch/powerpc/include/asm/hw_irq.h                           |   8 +-
 arch/powerpc/include/asm/iommu.h                            |  16 +-
 arch/powerpc/include/asm/irq.h                              |   2 +-
 arch/powerpc/include/asm/kexec.h                            |   6 +-
 arch/powerpc/include/asm/kfence.h                           |  11 +-
 arch/powerpc/include/asm/kup.h                              |   2 +-
 arch/powerpc/include/asm/kvm_book3s.h                       |   1 +
 arch/powerpc/include/asm/kvm_book3s_64.h                    |   5 +
 arch/powerpc/include/asm/kvm_host.h                         |   3 +
 arch/powerpc/include/asm/lppaca.h                           |  11 +-
 arch/powerpc/include/asm/mmu.h                              |  10 +-
 arch/powerpc/include/asm/nohash/32/mmu-40x.h                |  68 --
 arch/powerpc/include/asm/nohash/32/pgtable.h                |   4 +-
 arch/powerpc/include/asm/nohash/32/pte-40x.h                |  73 --
 arch/powerpc/include/asm/nohash/mmu.h                       |   5 +-
 arch/powerpc/include/asm/perf_event_server.h                |   3 +-
 arch/powerpc/include/asm/plpar_wrappers.h                   |  28 -
 arch/powerpc/include/asm/ppc-opcode.h                       |   2 +
 arch/powerpc/include/asm/ppc_asm.h                          |   2 +-
 arch/powerpc/include/asm/processor.h                        |   2 +-
 arch/powerpc/include/asm/ptrace.h                           |   2 +-
 arch/powerpc/include/asm/reg.h                              |  27 +-
 arch/powerpc/include/asm/reg_booke.h                        | 113 +--
 arch/powerpc/include/asm/time.h                             |   7 +-
 arch/powerpc/include/asm/udbg.h                             |   1 -
 arch/powerpc/include/uapi/asm/kvm.h                         |   3 +
 arch/powerpc/kernel/Makefile                                |   1 -
 arch/powerpc/kernel/asm-offsets.c                           |   2 +-
 arch/powerpc/kernel/cpu_specs.h                             |   4 -
 arch/powerpc/kernel/cpu_specs_40x.h                         | 280 -------
 arch/powerpc/kernel/eeh.c                                   |  16 -
 arch/powerpc/kernel/entry_32.S                              |  48 +-
 arch/powerpc/kernel/epapr_hcalls.S                          |   2 +-
 arch/powerpc/kernel/head_32.h                               |  12 +-
 arch/powerpc/kernel/head_40x.S                              | 721 --------=
----------
 arch/powerpc/kernel/head_booke.h                            |   3 +-
 arch/powerpc/kernel/iommu.c                                 | 170 +----
 arch/powerpc/kernel/irq.c                                   |   2 +-
 arch/powerpc/kernel/kgdb.c                                  |   4 +-
 arch/powerpc/kernel/misc_32.S                               |  40 -
 arch/powerpc/kernel/pci-hotplug.c                           |  35 +-
 arch/powerpc/kernel/process.c                               |   4 +-
 arch/powerpc/kernel/prom.c                                  |  12 +-
 arch/powerpc/kernel/rtas.c                                  |   4 +
 arch/powerpc/kernel/rtas_flash.c                            |   1 +
 arch/powerpc/kernel/setup.h                                 |   2 +-
 arch/powerpc/kernel/setup_32.c                              |   2 +-
 arch/powerpc/kernel/time.c                                  |   2 +-
 arch/powerpc/kernel/traps.c                                 |   2 +-
 arch/powerpc/kernel/udbg.c                                  |   3 -
 arch/powerpc/kernel/udbg_16550.c                            |  23 -
 arch/powerpc/kexec/core_64.c                                |  53 +-
 arch/powerpc/kexec/elf_64.c                                 |  12 +-
 arch/powerpc/kexec/file_load_64.c                           |  90 +--
 arch/powerpc/kvm/book3s_hv.c                                | 103 ++-
 arch/powerpc/kvm/book3s_hv.h                                |   3 +
 arch/powerpc/kvm/book3s_hv_nestedv2.c                       |  25 +
 arch/powerpc/kvm/book3s_pr.c                                |   1 +
 arch/powerpc/kvm/test-guest-state-buffer.c                  |   3 +-
 arch/powerpc/kvm/trace_hv.h                                 |  29 +
 arch/powerpc/mm/book3s64/radix_pgtable.c                    |  84 ++-
 arch/powerpc/mm/drmem.c                                     |   4 +-
 arch/powerpc/mm/fault.c                                     |   4 +-
 arch/powerpc/mm/init-common.c                               |   3 +
 arch/powerpc/mm/mmu_context.c                               |   2 +-
 arch/powerpc/mm/mmu_decl.h                                  |   8 +-
 arch/powerpc/mm/nohash/40x.c                                | 161 ----
 arch/powerpc/mm/nohash/Makefile                             |   1 -
 arch/powerpc/mm/nohash/kup.c                                |   2 -
 arch/powerpc/mm/nohash/mmu_context.c                        |   5 +-
 arch/powerpc/mm/nohash/tlb_low.S                            |  27 +-
 arch/powerpc/mm/numa.c                                      |  14 +-
 arch/powerpc/mm/ptdump/Makefile                             |   2 +-
 arch/powerpc/net/bpf_jit_comp64.c                           | 118 ++-
 arch/powerpc/perf/core-book3s.c                             |  45 +-
 arch/powerpc/perf/power10-pmu.c                             |   3 +-
 arch/powerpc/platforms/40x/Kconfig                          |  78 --
 arch/powerpc/platforms/40x/Makefile                         |   2 -
 arch/powerpc/platforms/40x/ppc40x_simple.c                  |  74 --
 arch/powerpc/platforms/44x/Makefile                         |   6 +-
 arch/powerpc/platforms/{4xx =3D> 44x}/cpm.c                   |   0
 arch/powerpc/platforms/{4xx =3D> 44x}/gpio.c                  |   0
 arch/powerpc/platforms/{4xx =3D> 44x}/hsta_msi.c              |   0
 arch/powerpc/platforms/44x/machine_check.c                  |  15 +
 arch/powerpc/platforms/{4xx =3D> 44x}/pci.c                   | 100 ---
 arch/powerpc/platforms/{4xx =3D> 44x}/pci.h                   |   0
 arch/powerpc/platforms/{4xx =3D> 44x}/soc.c                   |   0
 arch/powerpc/platforms/{4xx =3D> 44x}/uic.c                   |   0
 arch/powerpc/platforms/4xx/Makefile                         |   7 -
 arch/powerpc/platforms/4xx/machine_check.c                  |  23 -
 arch/powerpc/platforms/85xx/t1042rdb_diu.c                  |   1 +
 arch/powerpc/platforms/Kconfig                              |   1 -
 arch/powerpc/platforms/Kconfig.cputype                      |  28 +-
 arch/powerpc/platforms/Makefile                             |   2 -
 arch/powerpc/platforms/cell/cbe_powerbutton.c               |   1 +
 arch/powerpc/platforms/cell/cbe_thermal.c                   |   1 +
 arch/powerpc/platforms/cell/cpufreq_spudemand.c             |   1 +
 arch/powerpc/platforms/cell/spufs/inode.c                   |   1 +
 arch/powerpc/platforms/chrp/nvram.c                         |   1 +
 arch/powerpc/platforms/powernv/pci-ioda.c                   |   6 +-
 arch/powerpc/platforms/pseries/iommu.c                      | 781 ++++++++=
++++++++++--
 arch/powerpc/platforms/pseries/papr_scm.c                   |   1 +
 arch/powerpc/platforms/pseries/pci_dlpar.c                  |  14 +
 arch/powerpc/platforms/pseries/vas.c                        |  22 +-
 arch/powerpc/sysdev/Kconfig                                 |   4 +-
 arch/powerpc/sysdev/rtc_cmos_setup.c                        |   1 +
 arch/powerpc/xmon/ppc-dis.c                                 |  33 +-
 drivers/macintosh/ams/ams-i2c.c                             |   2 +-
 drivers/macintosh/mac_hid.c                                 |   1 +
 drivers/macintosh/therm_windtunnel.c                        |   2 +-
 drivers/macintosh/windfarm_ad7417_sensor.c                  |   2 +-
 drivers/macintosh/windfarm_fcu_controls.c                   |   2 +-
 drivers/macintosh/windfarm_lm87_sensor.c                    |   2 +-
 drivers/macintosh/windfarm_max6690_sensor.c                 |   2 +-
 drivers/macintosh/windfarm_smu_sat.c                        |   2 +-
 drivers/pci/hotplug/pnv_php.c                               |   3 +-
 drivers/vfio/vfio_iommu_spapr_tce.c                         |  13 +-
 scripts/head-object-list.txt                                |   1 -
 tools/testing/selftests/sigaltstack/current_stack_pointer.h |   2 +-
 158 files changed, 1464 insertions(+), 5776 deletions(-)
 delete mode 100644 arch/powerpc/boot/cuboot-acadia.c
 delete mode 100644 arch/powerpc/boot/cuboot-hotfoot.c
 delete mode 100644 arch/powerpc/boot/cuboot-kilauea.c
 delete mode 100644 arch/powerpc/boot/dts/acadia.dts
 delete mode 100644 arch/powerpc/boot/dts/haleakala.dts
 delete mode 100644 arch/powerpc/boot/dts/hotfoot.dts
 delete mode 100644 arch/powerpc/boot/dts/kilauea.dts
 delete mode 100644 arch/powerpc/boot/dts/klondike.dts
 delete mode 100644 arch/powerpc/boot/dts/makalu.dts
 delete mode 100644 arch/powerpc/boot/dts/obs600.dts
 delete mode 100644 arch/powerpc/boot/ppcboot-hotfoot.h
 delete mode 100644 arch/powerpc/configs/40x.config
 delete mode 100644 arch/powerpc/configs/40x/acadia_defconfig
 delete mode 100644 arch/powerpc/configs/40x/kilauea_defconfig
 delete mode 100644 arch/powerpc/configs/40x/klondike_defconfig
 delete mode 100644 arch/powerpc/configs/40x/makalu_defconfig
 delete mode 100644 arch/powerpc/configs/40x/obs600_defconfig
 delete mode 100644 arch/powerpc/configs/40x/walnut_defconfig
 delete mode 100644 arch/powerpc/configs/ppc40x_defconfig
 delete mode 100644 arch/powerpc/include/asm/nohash/32/mmu-40x.h
 delete mode 100644 arch/powerpc/include/asm/nohash/32/pte-40x.h
 delete mode 100644 arch/powerpc/kernel/cpu_specs_40x.h
 delete mode 100644 arch/powerpc/kernel/head_40x.S
 delete mode 100644 arch/powerpc/mm/nohash/40x.c
 delete mode 100644 arch/powerpc/platforms/40x/Kconfig
 delete mode 100644 arch/powerpc/platforms/40x/Makefile
 delete mode 100644 arch/powerpc/platforms/40x/ppc40x_simple.c
 rename arch/powerpc/platforms/{4xx =3D> 44x}/cpm.c (100%)
 rename arch/powerpc/platforms/{4xx =3D> 44x}/gpio.c (100%)
 rename arch/powerpc/platforms/{4xx =3D> 44x}/hsta_msi.c (100%)
 rename arch/powerpc/platforms/{4xx =3D> 44x}/pci.c (95%)
 rename arch/powerpc/platforms/{4xx =3D> 44x}/pci.h (100%)
 rename arch/powerpc/platforms/{4xx =3D> 44x}/soc.c (100%)
 rename arch/powerpc/platforms/{4xx =3D> 44x}/uic.c (100%)
 delete mode 100644 arch/powerpc/platforms/4xx/Makefile
 delete mode 100644 arch/powerpc/platforms/4xx/machine_check.c
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEJFGtCPCthwEv2Y/bUevqPMjhpYAFAmaaYQ0ACgkQUevqPMjh
pYDIOBAAk+9+CijSRd5plF6moCRgmMGR6qxz/dEHc9390Qj4vtGrkDeRqhSMuV0/
h00hQ08trMGVbL5ZPZ6UXrQnwAMAK+/K/wsNiGDPjrmrKUrylsb6pieTzJHQG6kC
G8xHf7HTS/CaJQxwb0cXhzXl502l+cBk1r9lYe9xUpogJ7xL8LYl+1ghv3tVCd5I
4cKOrw2fCjugXzFzC1awyxlF7sE3D9b+nnKbUM3iCyTLrW7DuPKnQs3fTRkcszhX
AL2Dl3h+49qARJcJkUUvFdUIFhkD+V1wEf8pPghrFz7ikndEMymHw/TEZN0DjqHM
/omTIUS8hn9GdYJPOXtGaYjNXdkt/dJs68W1Jx/TKHJ1UctYWyzc1EpyiiH+HlVq
561YiMoc5w3/OW+eWj4Gv19i/uEAvegv7at5Dl1NGvQDKYCedOjUme2fc43psH3D
GBt89w52WNHfDDLhMf4gI05TW0dDhN63CTZsdF0VsYclHK38mjH+S1WemFyqv6yb
q+xSL2XSgnQ2D95s+iP258Da8XcajQzpSif/52mYRk1AadG0zSB/PiALZ5qlMg4z
y088Kz1nxXqhwzOD5DHc+jzuiRoqBOp9EhKFk3WhQbhjK5cvEYzz9IHvNlHRaO85
1zIttW7C6W4AgH0EANDRCrRCKSJbtFpgzIGPKdPkTJFbalOTccg=3D
=3DjOsa
-----END PGP SIGNATURE-----

.
Date: Fri, 19 Jul 2024 15:25:18 +0200
From: Johan Hovold <johan+linaro@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>
Cc: Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	linux-arm-msm@vger.kernel.org,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Johan Hovold <johan+linaro@kernel.org>
Subject: [PATCH 0/4] arm64: dts: qcom: sc8280xp: disable PCIe perst pull downs

I noticed that these issues had been reproduced in x1e80100-crd. Ideally
these should go into 6.11 as well.

Johan


Johan Hovold (4):
  arm64: dts: qcom: sc8280xp-crd: disable PCIe perst pull downs
  arm64: dts: qcom: sc8280xp-crd: clean up PCIe2a pinctrl node
  arm64: dts: qcom: sc8280xp-x13s: disable PCIe perst pull downs
  arm64: dts: qcom: sc8280xp-x13s: clean up PCIe2a pinctrl node

 arch/arm64/boot/dts/qcom/sc8280xp-crd.dts        | 16 ++++++++--------
 .../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts   | 16 ++++++++--------
 2 files changed, 16 insertions(+), 16 deletions(-)

-- 
2.44.2


.
Date: Fri, 19 Jul 2024 17:13:18 +0200
From: Wolfram Sang <wsa@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
	Peter Rosin <peda@axentia.se>, Bartosz Golaszewski <brgl@bgdev.pl>,
	Andi Shyti <andi.shyti@kernel.org>
Subject: [PULL REQUEST] i2c-for-6.11-rc1-try2


--4o8M8B6Lp1KpRl4A
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Linus,

Here is my updated pull request with the summaries of the included
merges. There will be a trivial merge conflict because 6.10 gained
bd9f5348089b ("i2c: mark HostNotify target address as used") after rc7.
The .driver_data field simply needs to go. Please pull.

   Wolfram


The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git tags/i2c-for-=
6.11-rc1-try2

for you to fetch changes up to 5d89b5bdbce3937c86f05ffe19455c3068fd94f7:

  i2c: document new callbacks in i2c_algorithm (2024-07-13 11:11:58 +0200)

----------------------------------------------------------------
The I2C core gains documentation updates for the testunit, a cleanup
regarding unneeded 'driver_data' and more sanity checks in the char
device.

For the host drivers, this release includes significant updates, with
the primary change being the renaming from "master/slave" to
"controller/target" to adhere to I2C v7 and SMBus 3.2 standards.

New Support:

 - Added support for Intel Arrow Lake-H.
 - Added I2C support in the Arioha SoC by linking the Mediatek
   I2C controller.

Cleanups:

 - Added the MODULE_DESCRIPTION() macro, resolving a modpost
   warning in the ALi 1563 Southbridge driver.
 - Constified the regmap_config declaration in the i2c-designware
   driver.
 - Improved the coding style in the Renesas R-Car driver by
   removing unnecessary semicolons after brackets.

General improvements:

 - In the OMAP device, replaced NOIRQ_SYSTEM_SLEEP_PM_OPS with
   RUNTIME_PM_OPS to enable waking up the controller during
   suspend() before suspend_noirq() kicks in.
 - Improved logging in the Xilinx driver.
 - Added a warning (WARN()) in the Renesas R-Car driver for
   spurious interrupts.

DTS Changes:

 - Removed address-cell and size-cell from the Atmel at91sam,
   nVidia Tegra 20, and Samsung S3c2410 devices.
 - Fixed Texas Instruments OMAP4 I2C controller to comply with
   the i2c-controller.yaml schema.
 - Improved indentation in DTS examples for several I2C devices.
 - Converted the NXP LPC1788 binding to the dt-schema.
 - Added documentation for the compatible string
   thead,th1520-i2c.
 - Added the "power-domains" property for the Meson I2C driver.

AT24 EEPROM driver changes:

 - add support for two new Microchip models
 - document even more new models in DT bindings (those use fallback
   compatibles so no code changes)

----------------------------------------------------------------
Andrei Simion (1):
      dt-bindings: eeprom: at24: Add Microchip 24AA025E48/24AA025E64

Claudiu Beznea (1):
      eeprom: at24: Add support for Microchip 24AA025E48/24AA025E64 EEPROMs

Frieder Schrempf (2):
      dt-bindings: eeprom: at24: Move compatible for Belling BL24C16A to pr=
oper place
      dt-bindings: eeprom: at24: Add compatible for ONSemi N24S64B

George Stark (1):
      dt-bindings: i2c: amlogic,meson6-i2c: add optional power-domains

Jarkko Nikula (1):
      i2c: i801: Add support for Intel Arrow Lake-H

Javier Carrasco (1):
      i2c: designware: Constify read-only struct regmap_config

Jean Delvare (1):
      i2c: dev: Check for I2C_FUNC_I2C before calling i2c_transfer

Jeff Johnson (1):
      i2c: add missing MODULE_DESCRIPTION() macros

Kanak Shilledar (1):
      dt-bindings: i2c: nxp,lpc1788-i2c: convert to dt schema

Krzysztof Kozlowski (5):
      dt-bindings: i2c: atmel,at91sam: drop unneeded address/size-cells
      dt-bindings: i2c: nvidia,tegra20: drop unneeded address/size-cells
      dt-bindings: i2c: samsung,s3c2410: drop unneeded address/size-cells
      dt-bindings: i2c: ti,omap4: reference i2c-controller.yaml schema
      dt-bindings: i2c: adjust indentation in DTS example to coding style

Lorenzo Bianconi (1):
      i2c: mt7621: Add Airoha EN7581 i2c support

Marc Ferland (1):
      i2c: xiic: improve error message when transfer fails to start

Nicolas Ferre (1):
      dt-bindings: i2c: at91: Add sama7d65 compatible string

Thomas Bonnefille (1):
      dt-bindings: i2c: dw: Document compatible thead,th1520-i2c

Thomas Richard (2):
      i2c: omap: switch to NOIRQ_SYSTEM_SLEEP_PM_OPS() and RUNTIME_PM_OPS()
      i2c: omap: wakeup the controller during suspend() callback

Uwe Kleine-K=C3=B6nig (1):
      i2c: Drop explicit initialization of struct i2c_device_id::driver_dat=
a to 0

Wolfram Sang (67):
      Documentation: i2c: testunit: use proper reST
      Merge tag 'at24-updates-for-v6.11-rc1' of git://git.kernel.org/pub/sc=
m/linux/kernel/git/brgl/linux into i2c/for-mergewindow
      i2c: add debug message for detected HostNotify alerts
      i2c: rcar: WARN about spurious irqs
      i2c: rcar: minor changes to adhere to coding style
      i2c: reword i2c_algorithm according to newest specification
      i2c: ali15x3: reword according to newest specification
      i2c: altera: reword according to newest specification
      i2c: au1550: reword according to newest specification
      i2c: bcm-kona: reword according to newest specification
      i2c: bcm2835: reword according to newest specification
      i2c: brcmstb: reword according to newest specification
      i2c: cht-wc: reword according to newest specification
      i2c: cp2615: reword according to newest specification
      i2c: cros-ec-tunnel: reword according to newest specification
      i2c: davinci: reword according to newest specification
      i2c: digicolor: reword according to newest specification
      i2c: diolan-u2c: reword according to newest specification
      i2c: dln2: reword according to newest specification
      i2c: fsi: reword according to newest specification
      i2c: gpio: reword according to newest specification
      i2c: highlander: reword according to newest specification
      i2c: hisi: reword according to newest specification
      i2c: hix5hd2: reword according to newest specification
      i2c: i801: reword according to newest specification
      i2c: ibm_iic: reword according to newest specification
      i2c: iop3xx: reword according to newest specification
      i2c: isch: reword according to newest specification
      i2c: jz4780: reword according to newest specification
      i2c: kempld: reword according to newest specification
      i2c: ljca: reword according to newest specification
      i2c: lpc2k: reword according to newest specification
      i2c: ls2x: reword according to newest specification
      i2c: mlxcpld: reword according to newest specification
      i2c: mpc: reword according to newest specification
      i2c: mt7621: reword according to newest specification
      i2c: mv64xxx: reword according to newest specification
      i2c: ocores: reword according to newest specification
      i2c: octeon: reword according to newest specification
      i2c: opal: reword according to newest specification
      i2c: owl: reword according to newest specification
      i2c: pasemi: reword according to newest specification
      i2c: piix4: reword according to newest specification
      i2c: powermac: reword according to newest specification
      i2c: pxa-pci: reword according to newest specification
      i2c: riic: reword according to newest specification
      i2c: rk3x: reword according to newest specification
      i2c: robotfuzz-osif: reword according to newest specification
      i2c: rzv2m: reword according to newest specification
      i2c: sis5595: reword according to newest specification
      i2c: sprd: reword according to newest specification
      i2c: stm32f4: reword according to newest specification
      i2c: sun6i-p2wi: reword according to newest specification
      i2c: taos-evm: reword according to newest specification
      i2c: tegra-bpmp: reword according to newest specification
      i2c: thunderx-pcidrv: reword according to newest specification
      i2c: tiny-usb: reword according to newest specification
      i2c: uniphier-f: reword according to newest specification
      i2c: uniphier: reword according to newest specification
      i2c: viperboard: reword according to newest specification
      i2c: viai2c: reword according to newest specification
      i2c: nvidia-gpu: reword according to newest specification
      i2c: virtio: reword according to newest specification
      i2c: cpm: reword according to newest specification
      i2c: st: reword according to newest specification
      Merge tag 'i2c-host-6.11' of git://git.kernel.org/pub/scm/linux/kerne=
l/git/andi.shyti/linux into i2c/for-mergewindow
      i2c: document new callbacks in i2c_algorithm


with much appreciated quality assurance from
----------------------------------------------------------------
Alain Volmat (1):
      (Rev.) i2c: st: reword according to newest specification

Andi Shyti (62):
      (Rev.) i2c: st: reword according to newest specification
      (Rev.) i2c: cpm: reword according to newest specification
      (Rev.) i2c: virtio: reword according to newest specification
      (Rev.) i2c: nvidia-gpu: reword according to newest specification
      (Rev.) i2c: viai2c: reword according to newest specification
      (Rev.) i2c: viperboard: reword according to newest specification
      (Rev.) i2c: uniphier: reword according to newest specification
      (Rev.) i2c: uniphier-f: reword according to newest specification
      (Rev.) i2c: tiny-usb: reword according to newest specification
      (Rev.) i2c: thunderx-pcidrv: reword according to newest specification
      (Rev.) i2c: tegra-bpmp: reword according to newest specification
      (Rev.) i2c: taos-evm: reword according to newest specification
      (Rev.) i2c: sun6i-p2wi: reword according to newest specification
      (Rev.) i2c: stm32f4: reword according to newest specification
      (Rev.) i2c: sprd: reword according to newest specification
      (Rev.) i2c: sis5595: reword according to newest specification
      (Rev.) i2c: rzv2m: reword according to newest specification
      (Rev.) i2c: robotfuzz-osif: reword according to newest specification
      (Rev.) i2c: rk3x: reword according to newest specification
      (Rev.) i2c: riic: reword according to newest specification
      (Rev.) i2c: pxa-pci: reword according to newest specification
      (Rev.) i2c: powermac: reword according to newest specification
      (Rev.) i2c: piix4: reword according to newest specification
      (Rev.) i2c: pasemi: reword according to newest specification
      (Rev.) i2c: owl: reword according to newest specification
      (Rev.) i2c: opal: reword according to newest specification
      (Rev.) i2c: octeon: reword according to newest specification
      (Rev.) i2c: ocores: reword according to newest specification
      (Rev.) i2c: mv64xxx: reword according to newest specification
      (Rev.) i2c: mt7621: reword according to newest specification
      (Rev.) i2c: mpc: reword according to newest specification
      (Rev.) i2c: mlxcpld: reword according to newest specification
      (Rev.) i2c: ls2x: reword according to newest specification
      (Rev.) i2c: lpc2k: reword according to newest specification
      (Rev.) i2c: ljca: reword according to newest specification
      (Rev.) i2c: kempld: reword according to newest specification
      (Rev.) i2c: jz4780: reword according to newest specification
      (Rev.) i2c: isch: reword according to newest specification
      (Rev.) i2c: iop3xx: reword according to newest specification
      (Rev.) i2c: ibm_iic: reword according to newest specification
      (Rev.) i2c: i801: reword according to newest specification
      (Rev.) i2c: hix5hd2: reword according to newest specification
      (Rev.) i2c: hisi: reword according to newest specification
      (Rev.) i2c: highlander: reword according to newest specification
      (Rev.) i2c: gpio: reword according to newest specification
      (Rev.) i2c: fsi: reword according to newest specification
      (Rev.) i2c: dln2: reword according to newest specification
      (Rev.) i2c: diolan-u2c: reword according to newest specification
      (Rev.) i2c: digicolor: reword according to newest specification
      (Rev.) i2c: davinci: reword according to newest specification
      (Rev.) i2c: cros-ec-tunnel: reword according to newest specification
      (Rev.) i2c: cht-wc: reword according to newest specification
      (Rev.) i2c: brcmstb: reword according to newest specification
      (Rev.) i2c: bcm2835: reword according to newest specification
      (Rev.) i2c: bcm-kona: reword according to newest specification
      (Rev.) i2c: au1550: reword according to newest specification
      (Rev.) i2c: altera: reword according to newest specification
      (Rev.) i2c: ali15x3: reword according to newest specification
      (Rev.) i2c: reword i2c_algorithm according to newest specification
      (Rev.) i2c: add debug message for detected HostNotify alerts
      (Rev.) i2c: omap: wakeup the controller during suspend() callback
      (Rev.) i2c: dev: Check for I2C_FUNC_I2C before calling i2c_transfer

AngeloGioacchino Del Regno (2):
      (Rev.) i2c: mt7621: reword according to newest specification
      (Rev.) i2c: mt7621: Add Airoha EN7581 i2c support

Baolin Wang (1):
      (Rev.) i2c: sprd: reword according to newest specification

Chris Packham (1):
      (Rev.) i2c: mpc: reword according to newest specification

Conor Dooley (6):
      (Rev.) dt-bindings: i2c: adjust indentation in DTS example to coding =
style
      (Rev.) dt-bindings: i2c: ti,omap4: reference i2c-controller.yaml sche=
ma
      (Rev.) dt-bindings: i2c: samsung,s3c2410: drop unneeded address/size-=
cells
      (Rev.) dt-bindings: i2c: nvidia,tegra20: drop unneeded address/size-c=
ells
      (Rev.) dt-bindings: i2c: atmel,at91sam: drop unneeded address/size-ce=
lls
      (Rev.) dt-bindings: eeprom: at24: Add Microchip 24AA025E48/24AA025E64

Eddie James (1):
      (Rev.) i2c: fsi: reword according to newest specification

Florian Fainelli (3):
      (Rev.) i2c: brcmstb: reword according to newest specification
      (Rev.) i2c: bcm2835: reword according to newest specification
      (Rev.) i2c: bcm-kona: reword according to newest specification

Hans de Goede (1):
      (Rev.) i2c: cht-wc: reword according to newest specification

Heiko Stuebner (1):
      (Rev.) i2c: rk3x: reword according to newest specification

Jarkko Nikula (1):
      (Rev.) dt-bindings: i2c: dw: Document compatible thead,th1520-i2c

Krzysztof Kozlowski (1):
      (Rev.) dt-bindings: i2c: nxp,lpc1788-i2c: convert to dt schema

Neil Armstrong (1):
      (Rev.) dt-bindings: i2c: amlogic,meson6-i2c: add optional power-domai=
ns

Ray Liu (1):
      (Test) i2c: mt7621: Add Airoha EN7581 i2c support

Rob Herring (Arm) (1):
      (Rev.) dt-bindings: i2c: amlogic,meson6-i2c: add optional power-domai=
ns

Stefan Roese (1):
      (Rev.) i2c: mt7621: reword according to newest specification

Tony Lindgren (1):
      (Rev.) i2c: omap: wakeup the controller during suspend() callback

 Documentation/devicetree/bindings/eeprom/at24.yaml |  18 ++-
 .../bindings/i2c/amlogic,meson6-i2c.yaml           |   3 +
 .../devicetree/bindings/i2c/atmel,at91sam-i2c.yaml |  10 +-
 .../devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml  |  28 ++---
 .../devicetree/bindings/i2c/i2c-demux-pinctrl.yaml | 112 +++++++++---------
 .../devicetree/bindings/i2c/i2c-lpc2k.txt          |  33 ------
 .../bindings/i2c/nvidia,tegra20-i2c.yaml           |   6 -
 .../devicetree/bindings/i2c/nxp,lpc1788-i2c.yaml   |  54 +++++++++
 .../devicetree/bindings/i2c/renesas,iic-emev2.yaml |  14 +--
 .../devicetree/bindings/i2c/renesas,rcar-i2c.yaml  |  20 ++--
 .../devicetree/bindings/i2c/renesas,riic.yaml      |  34 +++---
 .../bindings/i2c/renesas,rmobile-iic.yaml          |  24 ++--
 .../bindings/i2c/samsung,s3c2410-i2c.yaml          |   6 -
 .../bindings/i2c/snps,designware-i2c.yaml          |   4 +
 .../devicetree/bindings/i2c/st,stm32-i2c.yaml      |  66 +++++------
 .../devicetree/bindings/i2c/ti,omap4-i2c.yaml      |  64 +++++------
 Documentation/i2c/busses/i2c-i801.rst              |   1 +
 Documentation/i2c/slave-testunit-backend.rst       | 127 ++++++++++++++---=
----
 MAINTAINERS                                        |   2 +-
 drivers/i2c/busses/Kconfig                         |   3 +-
 drivers/i2c/busses/i2c-ali1563.c                   |   1 +
 drivers/i2c/busses/i2c-ali15x3.c                   |   2 +-
 drivers/i2c/busses/i2c-altera.c                    |   4 +-
 drivers/i2c/busses/i2c-au1550.c                    |  15 ++-
 drivers/i2c/busses/i2c-bcm-kona.c                  |  13 +--
 drivers/i2c/busses/i2c-bcm2835.c                   |  10 +-
 drivers/i2c/busses/i2c-brcmstb.c                   |  11 +-
 drivers/i2c/busses/i2c-ccgx-ucsi.c                 |   1 +
 drivers/i2c/busses/i2c-cht-wc.c                    |   8 +-
 drivers/i2c/busses/i2c-cp2615.c                    |  10 +-
 drivers/i2c/busses/i2c-cpm.c                       |   4 +-
 drivers/i2c/busses/i2c-cros-ec-tunnel.c            |   4 +-
 drivers/i2c/busses/i2c-davinci.c                   |  17 ++-
 drivers/i2c/busses/i2c-designware-platdrv.c        |   2 +-
 drivers/i2c/busses/i2c-digicolor.c                 |   6 +-
 drivers/i2c/busses/i2c-diolan-u2c.c                |   2 +-
 drivers/i2c/busses/i2c-dln2.c                      |   4 +-
 drivers/i2c/busses/i2c-fsi.c                       |  56 ++++-----
 drivers/i2c/busses/i2c-gpio.c                      |   8 +-
 drivers/i2c/busses/i2c-highlander.c                |   2 +-
 drivers/i2c/busses/i2c-hisi.c                      |   8 +-
 drivers/i2c/busses/i2c-hix5hd2.c                   |   6 +-
 drivers/i2c/busses/i2c-i801.c                      |  15 ++-
 drivers/i2c/busses/i2c-ibm_iic.c                   |  27 ++---
 drivers/i2c/busses/i2c-iop3xx.c                    |  15 +--
 drivers/i2c/busses/i2c-isch.c                      |   2 +-
 drivers/i2c/busses/i2c-jz4780.c                    |   4 +-
 drivers/i2c/busses/i2c-kempld.c                    |   4 +-
 drivers/i2c/busses/i2c-ljca.c                      |  20 ++--
 drivers/i2c/busses/i2c-lpc2k.c                     |  10 +-
 drivers/i2c/busses/i2c-ls2x.c                      |  11 +-
 drivers/i2c/busses/i2c-mlxcpld.c                   |  14 +--
 drivers/i2c/busses/i2c-mpc.c                       |   4 +-
 drivers/i2c/busses/i2c-mt7621.c                    |  26 ++---
 drivers/i2c/busses/i2c-mv64xxx.c                   |  12 +-
 drivers/i2c/busses/i2c-nvidia-gpu.c                |   7 +-
 drivers/i2c/busses/i2c-ocores.c                    |   8 +-
 drivers/i2c/busses/i2c-octeon-core.c               |   6 +-
 drivers/i2c/busses/i2c-octeon-core.h               |   4 +-
 drivers/i2c/busses/i2c-octeon-platdrv.c            |   2 +-
 drivers/i2c/busses/i2c-omap.c                      |  36 ++++--
 drivers/i2c/busses/i2c-opal.c                      |  10 +-
 drivers/i2c/busses/i2c-owl.c                       |  12 +-
 drivers/i2c/busses/i2c-pasemi-core.c               |   6 +-
 drivers/i2c/busses/i2c-piix4.c                     |   2 +-
 drivers/i2c/busses/i2c-powermac.c                  |  14 +--
 drivers/i2c/busses/i2c-pxa-pci.c                   |   2 +-
 drivers/i2c/busses/i2c-pxa.c                       |   1 +
 drivers/i2c/busses/i2c-qup.c                       |   1 +
 drivers/i2c/busses/i2c-rcar.c                      |  13 +--
 drivers/i2c/busses/i2c-riic.c                      |   8 +-
 drivers/i2c/busses/i2c-rk3x.c                      |  20 ++--
 drivers/i2c/busses/i2c-robotfuzz-osif.c            |   4 +-
 drivers/i2c/busses/i2c-rzv2m.c                     |  12 +-
 drivers/i2c/busses/i2c-sis5595.c                   |   2 +-
 drivers/i2c/busses/i2c-sprd.c                      |  16 +--
 drivers/i2c/busses/i2c-st.c                        |   8 +-
 drivers/i2c/busses/i2c-stm32f4.c                   |   8 +-
 drivers/i2c/busses/i2c-sun6i-p2wi.c                |  20 ++--
 drivers/i2c/busses/i2c-taos-evm.c                  |   2 +-
 drivers/i2c/busses/i2c-tegra-bpmp.c                |   4 +-
 drivers/i2c/busses/i2c-thunderx-pcidrv.c           |   2 +-
 drivers/i2c/busses/i2c-tiny-usb.c                  |   6 +-
 drivers/i2c/busses/i2c-uniphier-f.c                |  26 ++---
 drivers/i2c/busses/i2c-uniphier.c                  |  15 ++-
 drivers/i2c/busses/i2c-viai2c-common.c             |   2 +-
 drivers/i2c/busses/i2c-viai2c-wmt.c                |   8 +-
 drivers/i2c/busses/i2c-viai2c-zhaoxin.c            |  12 +-
 drivers/i2c/busses/i2c-viperboard.c                |  10 +-
 drivers/i2c/busses/i2c-virtio.c                    |   2 +-
 drivers/i2c/busses/i2c-xiic.c                      |   9 +-
 drivers/i2c/i2c-core-base.c                        |   6 +-
 drivers/i2c/i2c-dev.c                              |  12 ++
 drivers/i2c/i2c-slave-testunit.c                   |   2 +-
 drivers/i2c/i2c-smbus.c                            |   2 +-
 drivers/i2c/muxes/i2c-mux-pca9541.c                |   2 +-
 drivers/misc/eeprom/at24.c                         |   8 ++
 include/linux/i2c.h                                |  44 +++++--
 98 files changed, 744 insertions(+), 639 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-lpc2k.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/nxp,lpc1788-i2c.y=
aml

--4o8M8B6Lp1KpRl4A
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmaago4ACgkQFA3kzBSg
KbYJQRAApr9lzEDL2uVfTb9mXzA0ZxGfgi0PmN3S7kC0IB5DCrN9x5N1akkmKG/j
47d4rl+nzl8aenOGMqYS6iXqJ/og9eD+vTlG8uhcAfH/jEM/dI76R/a2NAUaf3tI
kZRBXepui1hPONQ+hvZdxT0JT137+QuK+7wWwS8beTJMXBzedeEFSewt4fv/Y9IQ
ESaJ/7a+YvKR6YNZJFbGgRDBOcF1t+tpFtnkvOHe22SSYeiei6eJpiJK2l92xslZ
K0LZUbqySngVHD/1k7QIZoe/Csx0uOcLQygKJcs6YYSFucGghqH9XAioTCNi1X2z
YZx9+Z1oknVJCMtEFtOptbr6Cwzdx0wUQah6mmFmHrGXQJcz4X++8PvrW4seVdpU
RioBpTfpIW8hJoj5CQAYGuKNrjdDyCMUxfMuGEtBAc0Shw7ScJU+bowSZ1rbOpgj
0A55/YgFav+T3+DpZSh9HFiXTVB7I2MwmglVVzdb9PMTTF25k/7oYcE+rR70Gey5
4RfD0NzMY551m9SvClm+MqPe69PNm/bKrRHOjMDAGRhO+Xmnbg0eGetHz1A4HGel
352CzRCrwByY9TNm5FoPSxGF00mV2HMPfVLIkgajRGwZpdazh7I9Gk9FhaXNWsmp
qaqKbzaEQuUFU8KJZUg/nCgLuN/fcTE8YY49PAQtFFqvbyf3oPs=
=Mz0n
-----END PGP SIGNATURE-----

--4o8M8B6Lp1KpRl4A--

.
Date: Fri, 19 Jul 2024 11:19:47 -0500
From: Ira Weiny <ira.weiny@intel.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Subject: [GIT PULL] NVDIMM and DAX for 6.11

Hi Linus, please pull from:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git tags/libnvdimm-for-6.11

... to get the 6.11 updates for the libnvdimm tree.  The bulk of the changes
are to clean up W=1 warnings with one small update with the use of sizeof().

These have been linux-next without issue since 6/18.

Thank you,
Ira

---

The following changes since commit c3f38fa61af77b49866b006939479069cd451173:

  Linux 6.10-rc2 (2024-06-02 15:44:56 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git tags/libnvdimm-for-6.11

for you to fetch changes up to b0d478e34dbfccb7ce430e20cbe77d4d10593fa3:

  testing: nvdimm: Add MODULE_DESCRIPTION() macros (2024-06-17 18:43:08 -0500)

----------------------------------------------------------------
6.11 updates for libnvdimm

One small cleanup to use sizeof(*pointer)

A series of patches to add MODULE_DESCRIPTIONS() to eliminate make W=1
warnings.

----------------------------------------------------------------
Erick Archer (1):
      nvdimm/btt: use sizeof(*pointer) instead of sizeof(type)

Ira Weiny (1):
      testing: nvdimm: Add MODULE_DESCRIPTION() macros

Jeff Johnson (4):
      ACPI: NFIT: add missing MODULE_DESCRIPTION() macro
      nvdimm: add missing MODULE_DESCRIPTION() macros
      dax: add missing MODULE_DESCRIPTION() macros
      testing: nvdimm: iomap: add MODULE_DESCRIPTION()

 drivers/acpi/nfit/core.c           | 1 +
 drivers/dax/cxl.c                  | 1 +
 drivers/dax/device.c               | 1 +
 drivers/dax/hmem/hmem.c            | 1 +
 drivers/dax/kmem.c                 | 1 +
 drivers/dax/pmem.c                 | 1 +
 drivers/dax/super.c                | 1 +
 drivers/nvdimm/btt.c               | 5 +++--
 drivers/nvdimm/core.c              | 1 +
 drivers/nvdimm/e820.c              | 1 +
 drivers/nvdimm/nd_virtio.c         | 1 +
 drivers/nvdimm/of_pmem.c           | 1 +
 drivers/nvdimm/pmem.c              | 1 +
 tools/testing/nvdimm/test/iomap.c  | 1 +
 tools/testing/nvdimm/test/ndtest.c | 1 +
 tools/testing/nvdimm/test/nfit.c   | 1 +
 16 files changed, 18 insertions(+), 2 deletions(-)

.
Date: Fri, 19 Jul 2024 10:17:41 -0700
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org
Subject: [git pull] Input updates for v6.11-rc0

Hi Linus,

Please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git tags/input-for-v6.11-rc0

to receive updates for the input subsystem. You will get:

- streamlined logic in input core for handling normal input handlers vs
  input filters

- updates to input drivers to allocate memory with sizeof(*pointer)
  instead of sizeof(type)

- change to ads7846 touchscreen driver to use hsync GPIO instead of
  requiring platform data with special method (which is not compatible
  with boards using device tree)

- update to adc-joystick driver to handle inverted axes

- cleanups in various drivers switching them to use the new "guard"
  and "__free()" facilities

- changes to several drivers (adxl34x, atmel_mxt_ts, ati-remote2,
  omap-keypad, yealink) to stop creating driver-specific device
  attributes manually and use driver core facilities for this

- update to Cypress PS/2 protocol driver to properly handle errors
  from the PS/2 transport as well as other cleanups

- update to edt-ft5x06 driver to support ft5426 variant 

- update to ektf2127 driver to support ektf2232 variant

- update to exc3000 driver to support EXC81W32 variant

- update to imagis driver to support IST3038 variant

- other assorted driver cleanups.  


Changelog:
---------

Andreas Kemnade (5):
      dt-bindings: touchscreen: convert elan,ektf2127 to json-schema
      dt-bindings: touchscreen: elan,ektf2127: Add EKTF2232
      Input: ektf2127 - add ektf2232 support
      dt-bindings: input: touchscreen: edt-ft5x06: Add ft5426
      Input: edt-ft5x06 - add ft5426

Andrei Lalaev (1):
      Input: qt1050 - handle CHIP_ID reading error

Andrew Davis (1):
      dt-bindings: input: ti,nspire-keypad: convert to YAML format

Chris Morgan (1):
      Input: adc-joystick - handle inverted axes

Dmitry Torokhov (36):
      linux/interrupt.h: allow "guard" notation to disable and reenable IRQ
      Input: cap11xx - stop using chip ID when configuring it
      Input: adxl34x - use device core to create driver-specific device attributes
      Input: adxl34x - use input_set_capability()
      Input: adxl34x - switch to using managed resources
      Input: adxl34x - switch to using "guard" notation
      Input: ims-pcu - use driver core to instantiate device attributes
      Input: ims-pcu - switch to using cleanup functions
      Input: adc-joystick - move axes data into the main structure
      Input: wacom_w8001 - use "guard" notation when acquiring mutex
      Input: goodix_berlin - use __free() cleanup in SPI transport
      Input: rohm_bu21023 - factor out settings update code
      Input: rohm_bu21023 - switch to using sysfs_emit()
      Input: rohm_bu21023 - switch to using cleanup functions
      Input: ili210x - use kvmalloc() to allocate buffer for firmware update
      Input: ili210x - switch to using cleanup functions in firmware code
      Input: ili210x - use guard notation when disabling and reenabling IRQ
      Input: elan_i2c - do not leave interrupt disabled on suspend failure
      Input: cypress_ps2 - clean up setting reporting rate
      Input: cypress_ps2 - fix error handling when sending command fails
      Input: cypress_ps2 - report timeouts when reading command status
      Input: cypress_ps2 - propagate errors from lower layers
      Input: cypress_ps2 - use u8 when dealing with byte data
      Input: evdev - remove ->event() method
      Input: make sure input handlers define only one processing method
      Input: make events() method return number of events processed
      Input: simplify event handling logic
      Input: rearrange input_alloc_device() to prepare for preallocating of vals
      Input: preallocate memory to hold event values
      Input: do not check number of events in input_pass_values()
      Input: twl4030-pwrbutton - fix kernel-doc warning
      Input: atmel_mxt_ts - use driver core to instantiate device attributes
      Input: omap-keypad - use driver core to instantiate device attributes
      Input: ati-remote2 - use driver core to instantiate device attributes
      Input: yealink - use driver core to instantiate device attributes
      Input: yealink - simplify locking in sysfs attribute handling

Erick Archer (8):
      Input: keyboard - use sizeof(*pointer) instead of sizeof(type)
      Input: misc - use sizeof(*pointer) instead of sizeof(type)
      Input: mouse - use sizeof(*pointer) instead of sizeof(type)
      Input: tablet - use sizeof(*pointer) instead of sizeof(type)
      Input: serio - use sizeof(*pointer) instead of sizeof(type)
      Input: gameport - use sizeof(*pointer) instead of sizeof(type)
      Input: touchscreen - use sizeof(*pointer) instead of sizeof(type)
      Input: joystick - use sizeof(*pointer) instead of sizeof(type)

Felix Kaechele (5):
      dt-bindings: input: touchscreen: himax,hx83112b: add HX83100A
      Input: himax_hx83112b - use more descriptive register defines
      Input: himax_hx83112b - implement MCU register reading
      Input: himax_hx83112b - add himax_chip struct for multi-chip support
      Input: himax_hx83112b - add support for HX83100A

Jason Gerecke (2):
      Input: wacom_w8001 - simplify device name generation
      Input: wacom_w8001 - correct device name generation

Javier Carrasco (4):
      Input: ims-pcu - annotate struct ims_pcu_flash_fmt with __counted_by
      Input: ims-pcu - drop repeated "input" in error message
      Input: qt1050 - constify struct regmap_config
      Input: fsl-imx25-tcq - constify struct regmap_config

Jeff Johnson (1):
      Input: add missing MODULE_DESCRIPTION() macros

Linus Walleij (2):
      dt-bindings: ads7846: Add hsync-gpios
      Input: ads7846 - handle HSYNC GPIO

Philipp Zabel (2):
      dt-bindings: input: touchscreen: exc3000: add EXC81W32
      Input: exc3000 - add EXC81W32 support

Raymond Hackley (3):
      Input: imagis - clarify the usage of protocol_b
      dt-bindings: input/touchscreen: imagis: Document ist3038
      Input: imagis - add supports for Imagis IST3038

Diffstat:
--------

 .../devicetree/bindings/input/ti,nspire-keypad.txt |  60 ------
 .../bindings/input/ti,nspire-keypad.yaml           |  74 +++++++
 .../bindings/input/touchscreen/ads7846.txt         |   1 +
 .../bindings/input/touchscreen/edt-ft5x06.yaml     |   1 +
 .../bindings/input/touchscreen/eeti,exc3000.yaml   |  12 +-
 .../bindings/input/touchscreen/ektf2127.txt        |  25 ---
 .../bindings/input/touchscreen/elan,ektf2127.yaml  |  58 ++++++
 .../bindings/input/touchscreen/himax,hx83112b.yaml |   1 +
 .../input/touchscreen/imagis,ist3038c.yaml         |   1 +
 drivers/input/evdev.c                              |  16 +-
 drivers/input/gameport/emu10k1-gp.c                |   2 +-
 drivers/input/gameport/fm801-gp.c                  |   2 +-
 drivers/input/gameport/gameport.c                  |   2 +-
 drivers/input/gameport/ns558.c                     |   4 +-
 drivers/input/input.c                              | 230 ++++++++++++++-------
 drivers/input/joystick/a3d.c                       |   2 +-
 drivers/input/joystick/adc-joystick.c              | 130 +++++++-----
 drivers/input/joystick/adi.c                       |   2 +-
 drivers/input/joystick/analog.c                    |   3 +-
 drivers/input/joystick/as5011.c                    |   2 +-
 drivers/input/joystick/cobra.c                     |   2 +-
 drivers/input/joystick/db9.c                       |   2 +-
 drivers/input/joystick/gamecon.c                   |   2 +-
 drivers/input/joystick/gf2k.c                      |   2 +-
 drivers/input/joystick/grip.c                      |   3 +-
 drivers/input/joystick/grip_mp.c                   |   3 +-
 drivers/input/joystick/guillemot.c                 |   2 +-
 drivers/input/joystick/interact.c                  |   2 +-
 drivers/input/joystick/magellan.c                  |   2 +-
 drivers/input/joystick/maplecontrol.c              |   2 +-
 drivers/input/joystick/n64joy.c                    |   2 +-
 drivers/input/joystick/sidewinder.c                |   2 +-
 drivers/input/joystick/spaceball.c                 |   2 +-
 drivers/input/joystick/spaceorb.c                  |   2 +-
 drivers/input/joystick/stinger.c                   |   2 +-
 drivers/input/joystick/tmdc.c                      |   3 +-
 drivers/input/joystick/turbografx.c                |   2 +-
 drivers/input/joystick/twidjoy.c                   |   2 +-
 drivers/input/joystick/warrior.c                   |   2 +-
 drivers/input/joystick/xpad.c                      |   4 +-
 drivers/input/joystick/zhenhua.c                   |   2 +-
 drivers/input/keyboard/atkbd.c                     |   2 +-
 drivers/input/keyboard/cap11xx.c                   | 125 ++++++-----
 drivers/input/keyboard/lkkbd.c                     |   2 +-
 drivers/input/keyboard/locomokbd.c                 |   2 +-
 drivers/input/keyboard/maple_keyb.c                |   2 +-
 drivers/input/keyboard/newtonkbd.c                 |   2 +-
 drivers/input/keyboard/omap-keypad.c               |  21 +-
 drivers/input/keyboard/qt1050.c                    |   9 +-
 drivers/input/keyboard/stowaway.c                  |   2 +-
 drivers/input/keyboard/sunkbd.c                    |   2 +-
 drivers/input/keyboard/xtkbd.c                     |   2 +-
 drivers/input/matrix-keymap.c                      |   1 +
 drivers/input/misc/88pm80x_onkey.c                 |   2 +-
 drivers/input/misc/adxl34x-i2c.c                   |   9 +-
 drivers/input/misc/adxl34x-spi.c                   |   9 +-
 drivers/input/misc/adxl34x.c                       | 159 +++++---------
 drivers/input/misc/adxl34x.h                       |   2 +-
 drivers/input/misc/ati_remote2.c                   |  50 ++---
 drivers/input/misc/cma3000_d0x.c                   |   2 +-
 drivers/input/misc/ims-pcu.c                       | 197 +++++++++---------
 drivers/input/misc/max8997_haptic.c                |   2 +-
 drivers/input/misc/pcap_keys.c                     |   2 +-
 drivers/input/misc/powermate.c                     |   2 +-
 drivers/input/misc/sgi_btns.c                      |   1 +
 drivers/input/misc/soc_button_array.c              |   1 +
 drivers/input/misc/twl4030-pwrbutton.c             |   4 +-
 drivers/input/misc/uinput.c                        |   2 +-
 drivers/input/misc/yealink.c                       |  85 +++-----
 drivers/input/mouse/alps.c                         |   2 +-
 drivers/input/mouse/appletouch.c                   |   2 +-
 drivers/input/mouse/bcm5974.c                      |   2 +-
 drivers/input/mouse/cypress_ps2.c                  | 184 ++++++++---------
 drivers/input/mouse/cypress_ps2.h                  |   6 -
 drivers/input/mouse/elan_i2c_core.c                |   2 +
 drivers/input/mouse/focaltech.c                    |   3 +-
 drivers/input/mouse/hgpk.c                         |   2 +-
 drivers/input/mouse/lifebook.c                     |   2 +-
 drivers/input/mouse/maplemouse.c                   |   2 +-
 drivers/input/mouse/psmouse-base.c                 |   2 +-
 drivers/input/mouse/sentelic.c                     |   2 +-
 drivers/input/mouse/sermouse.c                     |   2 +-
 drivers/input/mouse/synaptics.c                    |   4 +-
 drivers/input/mouse/synaptics_i2c.c                |   2 +-
 drivers/input/mouse/vsxxxaa.c                      |   2 +-
 drivers/input/serio/altera_ps2.c                   |   2 +-
 drivers/input/serio/ambakmi.c                      |   4 +-
 drivers/input/serio/apbps2.c                       |   2 +-
 drivers/input/serio/arc_ps2.c                      |   2 +-
 drivers/input/serio/ct82c710.c                     |   2 +-
 drivers/input/serio/gscps2.c                       |   4 +-
 drivers/input/serio/hyperv-keyboard.c              |   4 +-
 drivers/input/serio/i8042.c                        |   4 +-
 drivers/input/serio/maceps2.c                      |   2 +-
 drivers/input/serio/olpc_apsp.c                    |   4 +-
 drivers/input/serio/parkbd.c                       |   2 +-
 drivers/input/serio/pcips2.c                       |   4 +-
 drivers/input/serio/ps2-gpio.c                     |   4 +-
 drivers/input/serio/ps2mult.c                      |   2 +-
 drivers/input/serio/q40kbd.c                       |   4 +-
 drivers/input/serio/rpckbd.c                       |   2 +-
 drivers/input/serio/sa1111ps2.c                    |   4 +-
 drivers/input/serio/serio.c                        |   2 +-
 drivers/input/serio/serio_raw.c                    |   4 +-
 drivers/input/serio/serport.c                      |   4 +-
 drivers/input/serio/sun4i-ps2.c                    |   4 +-
 drivers/input/serio/userio.c                       |   4 +-
 drivers/input/serio/xilinx_ps2.c                   |   4 +-
 drivers/input/tablet/acecad.c                      |   2 +-
 drivers/input/tablet/aiptek.c                      |   2 +-
 drivers/input/tablet/hanwang.c                     |   2 +-
 drivers/input/tablet/kbtab.c                       |   2 +-
 drivers/input/tablet/wacom_serial4.c               |   2 +-
 drivers/input/tests/input_test.c                   |   1 +
 drivers/input/touchscreen/ads7846.c                |  35 +++-
 drivers/input/touchscreen/atmel_mxt_ts.c           |  16 +-
 drivers/input/touchscreen/cyttsp_i2c_common.c      |   1 +
 drivers/input/touchscreen/da9052_tsi.c             |   2 +-
 drivers/input/touchscreen/dynapro.c                |   2 +-
 drivers/input/touchscreen/edt-ft5x06.c             |   1 +
 drivers/input/touchscreen/egalax_ts_serial.c       |   2 +-
 drivers/input/touchscreen/ektf2127.c               |  36 +++-
 drivers/input/touchscreen/elo.c                    |   2 +-
 drivers/input/touchscreen/exc3000.c                |   7 +
 drivers/input/touchscreen/fsl-imx25-tcq.c          |   2 +-
 drivers/input/touchscreen/fujitsu_ts.c             |   2 +-
 drivers/input/touchscreen/goodix_berlin_spi.c      |  24 ++-
 drivers/input/touchscreen/gunze.c                  |   2 +-
 drivers/input/touchscreen/hampshire.c              |   2 +-
 drivers/input/touchscreen/himax_hx83112b.c         | 135 +++++++++---
 drivers/input/touchscreen/ili210x.c                | 127 ++++++------
 drivers/input/touchscreen/imagis.c                 |  33 ++-
 drivers/input/touchscreen/inexio.c                 |   2 +-
 drivers/input/touchscreen/mtouch.c                 |   2 +-
 drivers/input/touchscreen/penmount.c               |   2 +-
 drivers/input/touchscreen/rohm_bu21023.c           |  95 ++++-----
 drivers/input/touchscreen/sur40.c                  |   2 +-
 drivers/input/touchscreen/touchit213.c             |   2 +-
 drivers/input/touchscreen/touchright.c             |   2 +-
 drivers/input/touchscreen/touchwin.c               |   2 +-
 drivers/input/touchscreen/tsc40.c                  |   2 +-
 drivers/input/touchscreen/usbtouchscreen.c         |  15 +-
 drivers/input/touchscreen/wacom_w8001.c            |  37 ++--
 drivers/input/vivaldi-fmap.c                       |   1 +
 include/linux/input.h                              |   7 +-
 include/linux/interrupt.h                          |   4 +
 146 files changed, 1236 insertions(+), 1052 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/input/ti,nspire-keypad.txt
 create mode 100644 Documentation/devicetree/bindings/input/ti,nspire-keypad.yaml
 delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/ektf2127.txt
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml

Thanks.


-- 
Dmitry

.
Date: Fri, 19 Jul 2024 21:08:25 +0200
From: David Sterba <dsterba@suse.com>
To: torvalds@linux-foundation.org
Cc: David Sterba <dsterba@suse.com>,
	linux-btrfs@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] Btrfs build fix for 6.11

Hi,

please pull a fix for build breakage on 32bit platforms. I misjudged the
severity of the fix, it first looked like a functional fix that could
wait but failing subset of builds should not (-Werror=overflow). I'm not
aware of any reports from linux-next build coverage before merge window.

Thanks.

----------------------------------------------------------------
The following changes since commit 8e7860543a94784d744c7ce34b78a2e11beefa5c:

  btrfs: fix extent map use-after-free when adding pages to compressed bio (2024-07-11 16:32:22 +0200)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.11-tag

for you to fetch changes up to c3ece6b7ffb4a7c00e8d53cbf4026a32b6127914:

  btrfs: change BTRFS_MOUNT_* flags to 64bit type (2024-07-19 17:20:23 +0200)

----------------------------------------------------------------
Qu Wenruo (1):
      btrfs: change BTRFS_MOUNT_* flags to 64bit type

 fs/btrfs/fs.h    | 66 ++++++++++++++++++++++++++++----------------------------
 fs/btrfs/super.c | 11 +++++-----
 fs/btrfs/super.h |  3 ++-
 fs/btrfs/zoned.c |  3 ++-
 fs/btrfs/zoned.h |  5 +++--
 5 files changed, 46 insertions(+), 42 deletions(-)

.
Date: Sat, 20 Jul 2024 10:29:16 +0200
From: Andi Shyti <andi.shyti@kernel.org>
To: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: linux-i2c <linux-i2c@vger.kernel.org>, 
	lkml <linux-kernel@vger.kernel.org>, Andi Shyti <andi.shyti@kernel.org>
Subject: [GIT PULL] i2c-host for v6.11 - part 2

Hi Wolfram,

here comes the second part of the merge window pull request. I
waited for Linus to take the first part so that I could send this
pull request on top of the mainline.

Until now I was on top of your i2c/for-mergewindow branch.

Thanks and have a great weekend,
Andi

The following changes since commit 8e5c0abfa02d85b9cd2419567ad2d73ed8fe4b74:

  Merge tag 'input-for-v6.11-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input (2024-07-19 16:51:39 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git tags/i2c-host-6.11-part-2

for you to fetch changes up to 930e5186862b115953fb560be357f4e0bf496f94:

  i2c: piix4: Register SPDs (2024-07-20 03:07:56 +0200)

----------------------------------------------------------------
Added descriptions in the DTS for the Qualcomm SM8650 and SM8550
Camera Control Interface (CCI).

Added support for the "settle-time-us" property, which allows the
gpio-mux device to switch from one bus to another with a
configurable delay. The time can be set in the DTS.

The latest change also includes file sorting.

Fixed slot numbering in the SMBus framework to prevent failures
when more than 8 slots are occupied. It now enforces a a maximum
of 8 slots to be used. This ensures that the Intel PIIX4 device
can register the SPDs correctly without failure, even if other
slots are populated but not used.

----------------------------------------------------------------
Bastien Curutchet (3):
      dt-bindings: i2c: mux-gpio: Add 'settle-time-us' property
      i2c: mux: gpio: Re-order #include to match alphabetic order
      i2c: mux: gpio: Add support for the 'settle-time-us' property

Thomas Weißschuh (2):
      i2c: smbus: remove i801 assumptions from SPD probing
      i2c: piix4: Register SPDs

Vladimir Zapolskiy (2):
      dt-bindings: i2c: qcom-cci: Document sm8550 compatible
      dt-bindings: i2c: qcom-cci: Document sm8650 compatible

 Documentation/devicetree/bindings/i2c/i2c-mux-gpio.yaml |  3 +++
 Documentation/devicetree/bindings/i2c/qcom,i2c-cci.yaml | 20 ++++++++++++++++++++
 drivers/i2c/busses/Kconfig                              |  1 +
 drivers/i2c/busses/i2c-piix4.c                          |  9 +++++++++
 drivers/i2c/i2c-smbus.c                                 | 15 ++++-----------
 drivers/i2c/muxes/i2c-mux-gpio.c                        | 14 ++++++++++----
 include/linux/platform_data/i2c-mux-gpio.h              |  2 ++
 7 files changed, 49 insertions(+), 15 deletions(-)

.
Date: Sat, 20 Jul 2024 17:47:30 +0900
From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: torvalds@linux-foundation.org
Cc: linux-kernel@vger.kernel.org, linux1394-devel@lists.sourceforge.net
Subject: [GIT PULL] firewire updates for v6.11

Hi Linus,

Please pull FireWire subsystem updates for v6.11.

The following changes since commit 6ba59ff4227927d3a8530fc2973b80e94b54d58f:

  Linux 6.10-rc4 (2024-06-16 13:40:16 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git tags/firewire-updates-6.11

for you to fetch changes up to 06dcc4c9baa9e92896f00d02ffa760c0988b4371:

  firewire: core: move copy_port_status() helper function to TP_fast_assign() block (2024-07-12 14:34:12 +0900)

----------------------------------------------------------------
firewire updates for v6.11

There are many line changes for FireWire subsystem, while there is no
functional change for practical use. The most of changes are for code
refactoring, some KUnit tests to added helper functions, and new
tracepoints events for both the core functions and 1394 OHCI driver.

The tracepoints events now cover the verbose logging enabled by debug
parameter of firewire-ohci kernel module. The parameter would be removed
in any future timing, thus it is now deprecated.

----------------------------------------------------------------
Colin Ian King (1):
      firewire: core: Fix spelling mistakes in tracepoint messages

Takashi Sakamoto (31):
      firewire: core: add enumerator of self ID sequences and its KUnit test
      firewire: core: add helper function to handle port status from self ID sequence and its KUnit test
      firewire: core: minor code refactoring for topology builder
      firewire: ohci: minor code refactoring for self ID logging
      firewire: core: use helper functions for self ID sequence
      firewire: ohci: use helper functions for self ID sequence
      firewire: core: add common inline functions to serialize/deserialize self ID packet
      firewire: core: use helper inline functions to deserialize self ID packet
      firewire: ohci: use helper inline functions to serialize/deserialize self ID packet
      firewire: core: arrangement header inclusion for tracepoints events
      firewire: core: add tracepoints event for self_id_sequence
      firewire: core: add tests for serialization/deserialization of phy config packet
      firewire: core: use inline helper functions to serialize phy config packet
      firewire: core: record card index in tracepoints event for self ID sequence
      firewire: core: undefine macros after use in tracepoints events
      firewire: core: add tracepoints events for allocation/deallocation of isochronous context
      firewire: core: add tracepoints events for setting channels of multichannel context
      firewire: core: add tracepoints events for starting/stopping of isochronous context
      firewire: core: add tracepoints events for flushing of isochronous context
      firewire: core: add tracepoints events for flushing completions of isochronous context
      firewire: core: add tracepoints events for queueing packets of isochronous context
      firewire: core: add tracepoints events for completions of packets in isochronous context
      firewire: ohci: add support for Linux kernel tracepoints
      firewire: ohci: add tracepoints event for hardIRQ event
      firewire: ohci: use common macro to interpret be32 data in le32 buffer
      firewire: ohci: use static function to handle endian issue on PowerPC platform
      firewire: ohci: add static inline functions to deserialize for Self-ID DMA operation
      firewire: ohci: use inline functions to operate data of self-ID DMA
      firewire: ohci: add tracepoints event for data of Self-ID DMA
      Revert "firewire: ohci: use common macro to interpret be32 data in le32 buffer"
      firewire: core: move copy_port_status() helper function to TP_fast_assign() block

 drivers/firewire/.kunitconfig                   |   2 +
 drivers/firewire/Kconfig                        |  31 +++++++++++
 drivers/firewire/Makefile                       |   2 +
 drivers/firewire/core-iso.c                     |  32 +++++++++++
 drivers/firewire/core-topology.c                | 219 +++++++++++++++++++++++++++++----------------------------------------------
 drivers/firewire/core-trace.c                   |  11 ++++
 drivers/firewire/core-transaction.c             |  24 ++++-----
 drivers/firewire/ohci-serdes-test.c             |  56 ++++++++++++++++++++
 drivers/firewire/ohci.c                         | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
 drivers/firewire/ohci.h                         |  43 ++++++++++++++-
 drivers/firewire/packet-header-definitions.h    |   2 +
 drivers/firewire/packet-serdes-test.c           | 334 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/firewire/phy-packet-definitions.h       | 302 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/firewire/self-id-sequence-helper-test.c | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/trace/events/firewire.h                 | 541 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 include/trace/events/firewire_ohci.h            | 101 +++++++++++++++++++++++++++++++++++
 16 files changed, 1867 insertions(+), 222 deletions(-)
 create mode 100644 drivers/firewire/ohci-serdes-test.c
 create mode 100644 drivers/firewire/phy-packet-definitions.h
 create mode 100644 drivers/firewire/self-id-sequence-helper-test.c
 create mode 100644 include/trace/events/firewire_ohci.h


Regards

Takashi Sakamoto

.
Date: Sat, 20 Jul 2024 11:08:34 +0200
From: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= <mic@digikod.net>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= <mic@digikod.net>,
	=?UTF-8?q?G=C3=BCnther=20Noack?= <gnoack@google.com>,
	Ivanov Mikhail <ivanov.mikhail1@huawei-partners.com>,
	Tahera Fahimi <fahimitahera@gmail.com>,
	linux-kernel@vger.kernel.org,
	linux-security-module@vger.kernel.org
Subject: [GIT PULL] Landlock fix for v6.11

Hi Linus,

This PR simplifies code and improves documentation.

Please pull these changes for v6.11-rc1.  This commit merged cleanly with your
master branch.  The kernel code has been tested in the latest linux-next
releases.

Regards,
 MickaĂ«l

--
The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mic/linux.git tags/landlock-6.11-rc1

for you to fetch changes up to f4b89d8ce5a835afa51404977ee7e3889c2b9722:

  landlock: Various documentation improvements (2024-07-18 08:27:47 +0200)

----------------------------------------------------------------
Landlock updates for v6.11-rc1

----------------------------------------------------------------
GĂĽnther Noack (3):
      landlock: Use bit-fields for storing handled layer access masks
      landlock: Clarify documentation for struct landlock_ruleset_attr
      landlock: Various documentation improvements

 Documentation/userspace-api/landlock.rst |  2 +-
 include/uapi/linux/landlock.h            | 66 ++++++++++++++++++--------------
 security/landlock/limits.h               |  2 -
 security/landlock/ruleset.c              |  4 --
 security/landlock/ruleset.h              | 24 +++++-------
 security/landlock/syscalls.c             | 17 ++++----
 6 files changed, 56 insertions(+), 59 deletions(-)

.
Date: Sat, 20 Jul 2024 11:18:03 +0200
From: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
To: torvalds@linux-foundation.org
Cc: linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] MIPS changes for v6.11

The following changes since commit 0d5679a0aae2d8cda72169452c32e5cb88a7ab33:

  mips: fix compat_sys_lseek syscall (2024-06-21 10:16:34 +0200)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/ tags/mips_6.11

for you to fetch changes up to bb2d63500b5c8fd1ea425caffe2d44c931fefc6b:

  MIPS: config: Add ip30_defconfig (2024-07-15 18:17:34 +0200)

----------------------------------------------------------------
- added support for Realtek RTL9302C
- added support for Mobileye EyeQ6H
- added support for Mobileye EyeQ OLB system controller
- improved r4k clocksource
- added mode for emulating ieee754 NAN2008
- rework for BMIPS CBR address handling
- fixes for Loongson 2K1000
- defconfig updates
- cleanups and fixes

----------------------------------------------------------------
Andy Shevchenko (1):
      MIPS: Alchemy: Switch to use kmemdup_array()

Celeste Liu (1):
      mips: defconfig: drop RT_GROUP_SCHED=y from generic/db1xxx/eyeq5

Chris Packham (8):
      mips: dts: realtek: use "serial" instead of "uart" in node name
      mips: dts: realtek: add device_type property to cpu node
      dt-bindings: vendor-prefixes: Add Cameo Communications
      dt-bindings: mips: realtek: Add rtl930x-soc compatible
      dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
      mips: select REALTEK_OTTO_TIMER for Realtek platforms
      mips: generic: add fdt fixup for Realtek reference board
      mips: dts: realtek: Add RTL9302C board

Christian Marangi (3):
      mips: bmips: rework and cache CBR addr handling
      dt-bindings: mips: brcm: Document brcm,bmips-cbr-reg property
      mips: bmips: setup: make CBR address configurable

Daniel González Cabanelas (1):
      mips: bmips: enable RAC on BMIPS4350

Dmitry Torokhov (1):
      MIPS: Alchemy: switch to use software nodes for GPIOs

Dominique Martinet (1):
      MIPS: Octeron: remove source file executable bit

Genjian Zhang (2):
      MIPS: sgi-ip22: Add prototypes for several functions to header
      MIPS: ip22-gio: Make ip22_gio_set_64bit() and ip22_gio_init() static

Gregory CLEMENT (3):
      dt-bindings: mips: Add bindings for a new Mobileye SoC EyeQ6H
      MIPS: mobileye: Add EyeQ6H device tree
      MIPS: mobileye: Add EyeQ6H support

Hauke Mehrtens (1):
      MIPS: lantiq: improve USB initialization

Jeff Johnson (1):
      crypto: mips/poly1305 - add missing MODULE_DESCRIPTION() macro

Jiaxun Yang (29):
      MIPS: asm/pm.h: Use platform agnostic macros
      MIPS: select CPU_PM with SUSPEND
      MIPS: Loongson64: Implement PM suspend for LEFI firmware
      MIPS: kvm: Declare prototype for kvm_init_loongson_ipi
      MIPS: Loongson64: Include bootinfo.h in dma.c
      MIPS: Loongson64: DTS: Fix msi node for ls7a
      MIPS: Loongson64: DTS: Fix PCIe port nodes for ls7a
      MIPS: ip30: ip30-console: Add missing include
      MIPS: Loongson64: Remove memory node for builtin-dtb
      MIPS: dts: loongson: Fix liointc IRQ polarity
      MIPS: dts: loongson: Fix ls2k1000-rtc interrupt
      MIPS: dts: loongson: Fix GMAC phy node
      MIPS: dts: loongson: Add ISA node
      MIPS: Loongson64: Test register availability before use
      platform: mips: cpu_hwmon: Disable driver on unsupported hardware
      MIPS: Loongson64: reset: Prioritise firmware service
      MIPS: Loongson64: sleeper: Pass ra and sp as arguments
      MIPS: Loongson64: env: Hook up Loongsson-2K
      MIPS: csrc-r4k: Refine rating computation
      MIPS: csrc-r4k: Apply verification clocksource flags
      MIPS: csrc-r4k: Select HAVE_UNSTABLE_SCHED_CLOCK if SMP && 64BIT
      MIPS: csrc-r4k: Don't register as sched_clock if unfit
      MIPS: sync-r4k: Rework based on x86 tsc_sync
      MIPS: Implement ieee754 NAN2008 emulation mode
      MIPS: Fix fallback march for SB1
      MIPS: config: Enable MSA and virtualization for MIPS64R6
      MIPS: config: generic: Add board-litex
      MIPS: config: lemote2f: Regenerate defconfig
      MIPS: config: Add ip30_defconfig

Maxime Ripard (1):
      mips: configs: ci20: Enable DRM_DW_HDMI

Paul Burton (2):
      MIPS: CPS: Add a couple of multi-cluster utility functions
      MIPS: GIC: Generate redirect block accessors

Thomas Bogendoerfer (1):
      Merge branch 'mips-fixes' into mips-next

Théo Lebrun (3):
      dt-bindings: soc: mobileye: add EyeQ OLB system controller
      MIPS: mobileye: eyeq5: add OLB system-controller node
      MAINTAINERS: Mobileye: add OLB drivers and dt-bindings

 Documentation/admin-guide/kernel-parameters.txt    |   4 +-
 .../interrupt-controller/realtek,rtl-intc.yaml     |  20 +-
 .../devicetree/bindings/mips/brcm/soc.yaml         |  24 ++
 .../devicetree/bindings/mips/mobileye.yaml         |   5 +
 .../devicetree/bindings/mips/realtek-rtl.yaml      |   4 +
 .../bindings/soc/mobileye/mobileye,eyeq5-olb.yaml  | 374 +++++++++++++++++++++
 .../devicetree/bindings/vendor-prefixes.yaml       |   2 +
 MAINTAINERS                                        |   5 +
 arch/mips/Kbuild.platforms                         |   2 +-
 arch/mips/Kconfig                                  |  11 +-
 arch/mips/Makefile                                 |   2 +-
 arch/mips/alchemy/common/platform.c                |   8 +-
 arch/mips/alchemy/devboards/db1000.c               |  80 ++---
 arch/mips/bcm47xx/prom.c                           |   3 +
 arch/mips/bcm47xx/setup.c                          |   8 +
 arch/mips/bcm63xx/prom.c                           |   3 +
 arch/mips/bcm63xx/setup.c                          |   8 +
 arch/mips/bmips/dma.c                              |   2 +-
 arch/mips/bmips/setup.c                            |  35 +-
 arch/mips/boot/dts/Makefile                        |   2 +-
 arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi | 102 +++---
 .../boot/dts/loongson/loongson64g_4core_ls7a.dts   |   1 +
 arch/mips/boot/dts/mobileye/Makefile               |   1 +
 .../{eyeq5-fixed-clocks.dtsi => eyeq5-clocks.dtsi} |  54 +--
 arch/mips/boot/dts/mobileye/eyeq5-pins.dtsi        | 125 +++++++
 arch/mips/boot/dts/mobileye/eyeq5.dtsi             |  22 +-
 arch/mips/boot/dts/mobileye/eyeq6h-epm6.dts        |  22 ++
 .../boot/dts/mobileye/eyeq6h-fixed-clocks.dtsi     |  52 +++
 arch/mips/boot/dts/mobileye/eyeq6h-pins.dtsi       |  88 +++++
 arch/mips/boot/dts/mobileye/eyeq6h.dtsi            |  98 ++++++
 arch/mips/boot/dts/realtek/Makefile                |   1 +
 .../dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts |  73 ++++
 arch/mips/boot/dts/realtek/rtl838x.dtsi            |   1 +
 arch/mips/boot/dts/realtek/rtl83xx.dtsi            |   4 +-
 arch/mips/boot/dts/realtek/rtl930x.dtsi            |  79 +++++
 arch/mips/configs/ci20_defconfig                   |   1 +
 arch/mips/configs/db1xxx_defconfig                 |   1 -
 arch/mips/configs/eyeq5_defconfig                  |   2 +-
 arch/mips/configs/eyeq6_defconfig                  | 111 ++++++
 arch/mips/configs/generic/64r6.config              |   2 +
 arch/mips/configs/generic/board-litex.config       |   8 +
 arch/mips/configs/generic_defconfig                |   1 -
 arch/mips/configs/ip30_defconfig                   | 183 ++++++++++
 arch/mips/configs/lemote2f_defconfig               |  54 ++-
 arch/mips/crypto/poly1305-glue.c                   |   1 +
 arch/mips/generic/Makefile                         |   1 +
 arch/mips/generic/board-realtek.c                  |  79 +++++
 arch/mips/include/asm/bmips.h                      |   1 +
 arch/mips/include/asm/fpu.h                        |  15 +
 arch/mips/include/asm/mach-loongson64/boot_param.h |   2 +
 arch/mips/include/asm/mips-cps.h                   |  39 +++
 arch/mips/include/asm/mips-gic.h                   |  50 ++-
 arch/mips/include/asm/pm.h                         |  22 +-
 arch/mips/include/asm/r4k-timer.h                  |   5 -
 arch/mips/include/asm/sgi/ip22.h                   |   3 +
 arch/mips/kernel/csrc-r4k.c                        |  24 +-
 arch/mips/kernel/elf.c                             |   4 +
 arch/mips/kernel/fpu-probe.c                       |   9 +-
 arch/mips/kernel/mips-cm.c                         |  37 ++
 arch/mips/kernel/smp-bmips.c                       |  22 +-
 arch/mips/kernel/smp.c                             |   2 -
 arch/mips/kernel/sync-r4k.c                        | 281 +++++++++++-----
 arch/mips/kvm/interrupt.h                          |   4 +
 arch/mips/kvm/loongson_ipi.c                       |   2 +
 arch/mips/kvm/mips.c                               |   2 -
 arch/mips/lantiq/xway/sysctrl.c                    |  20 ++
 arch/mips/loongson64/Makefile                      |   2 +-
 arch/mips/loongson64/dma.c                         |   1 +
 arch/mips/loongson64/env.c                         |   8 +
 arch/mips/loongson64/pm.c                          |  88 +----
 arch/mips/loongson64/reset.c                       |  38 +--
 arch/mips/loongson64/sleeper.S                     |  21 ++
 arch/mips/loongson64/smp.c                         |  23 +-
 arch/mips/mobileye/Kconfig                         |  26 ++
 arch/mips/mobileye/Platform                        |   1 +
 arch/mips/pci/pcie-octeon.c                        |   0
 arch/mips/sgi-ip22/ip22-gio.c                      |   4 +-
 arch/mips/sgi-ip22/ip22-int.c                      |   2 -
 arch/mips/sgi-ip22/ip22-setup.c                    |   2 -
 arch/mips/sgi-ip30/ip30-console.c                  |   1 +
 drivers/platform/mips/cpu_hwmon.c                  |   3 +
 81 files changed, 2141 insertions(+), 392 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/soc/mobileye/mobileye,eyeq5-olb.yaml
 rename arch/mips/boot/dts/mobileye/{eyeq5-fixed-clocks.dtsi => eyeq5-clocks.dtsi} (88%)
 create mode 100644 arch/mips/boot/dts/mobileye/eyeq5-pins.dtsi
 create mode 100644 arch/mips/boot/dts/mobileye/eyeq6h-epm6.dts
 create mode 100644 arch/mips/boot/dts/mobileye/eyeq6h-fixed-clocks.dtsi
 create mode 100644 arch/mips/boot/dts/mobileye/eyeq6h-pins.dtsi
 create mode 100644 arch/mips/boot/dts/mobileye/eyeq6h.dtsi
 create mode 100644 arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts
 create mode 100644 arch/mips/boot/dts/realtek/rtl930x.dtsi
 create mode 100644 arch/mips/configs/eyeq6_defconfig
 create mode 100644 arch/mips/configs/generic/board-litex.config
 create mode 100644 arch/mips/configs/ip30_defconfig
 create mode 100644 arch/mips/generic/board-realtek.c
 create mode 100644 arch/mips/loongson64/sleeper.S
 create mode 100644 arch/mips/mobileye/Kconfig
 mode change 100755 => 100644 arch/mips/pci/pcie-octeon.c

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

.
Date: Sat, 20 Jul 2024 14:38:26 +0200
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-mtd@lists.infradead.org, Richard Weinberger <richard@nod.at>,
 Tudor Ambarus <Tudor.Ambarus@linaro.org>, Vignesh Raghavendra
 <vigneshr@ti.com>, Frieder Schrempf <frieder.schrempf@kontron.de>, Michael
 Walle <michael@walle.cc>, Pratyush Yadav <pratyush@kernel.org>,
 linux-kernel@vger.kernel.org
Subject: [GIT PULL] mtd: Changes for 6.11

Hello Linus,

This is the MTD PR for 6.11.

Thanks,
Miqu=C3=A8l

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git tags/mtd/for-=
6.11

for you to fetch changes up to 78a0b13f5744bd270d0c2391973605d9960a402a:

  Merge tag 'nand/for-6.11' into mtd/next (2024-07-20 14:24:38 +0200)

----------------------------------------------------------------
MTD changes:

- Nothing stands out for this merge window, mostly minor fixes, such as
  module descriptions, the use of debug macros and Makefile improvements.

Raw NAND changes;

- The Freescale MXC driver has been converted to the newer ->exec_op()
  interface. The meson driver now supports handling the boot ROM area
  with very specific ECC needs. Support for the iMX8QXP has been added
  to the GPMI driver. The lpx32xx driver now can get the DMA channels
  using DT entries. The Qcom binding has been improved to be more future
  proof by Rob. And then there is the usual load of misc and minor
  changes.

SPI-NAND changes:

- The Macronix vendor driver has been improved to support an extended ID
  to avoid conflicting with older devices after an ID reuse issue.

SPI NOR changes:

- Drop support for Xilinx S3AN flashes. These flashes are for the very
  old Xilinx Spartan 3 FPGAs and they need some awkward code in the core
  to support. Drop support for these flashes, along with the special
  handling we needed for them in the core like non-power-of-2 page size
  handling and the .setup() callback.

- Fix regression for old w25q128 flashes without SFDP tables. Commit
  83e824a4a595 ("mtd: spi-nor: Correct flags for Winbond w25q128")
  dropped support for such devices under the assumption that they aren't
  being used anymore. Users have now surfaced [0] so fix the regression
  by supporting both kind of devices.

- Core cleanups including removal of SPI_NOR_NO_FR flag and
  simplification of spi_nor_get_flash_info().

[0] https://lore.kernel.org/r/CALxbwRo_-9CaJmt7r7ELgu+vOcgk=3DxZcGHobnKf=3D=
oT2=3Du4d4aA@mail.gmail.com/

----------------------------------------------------------------
Andy Shevchenko (2):
      mtd: cfi: Get rid of redundant 'else'
      mtd: physmap: Use *-y instead of *-objs in Makefile

Arnd Bergmann (1):
      mtd: make mtd_test.c a separate module

Arseniy Krasnov (3):
      dt-bindings: mtd: amlogic,meson-nand: support fields for boot ROM code
      mtd: rawnand: meson: refactor use of 'meson_nfc_cmd_access()'
      mtd: rawnand: meson: read/write access for boot ROM pages

Cheng Ming Lin (2):
      mtd: spinand: macronix: Add support for reading Device ID 2
      mtd: spinand: macronix: Add support for serial NAND flash

Cs=C3=B3k=C3=A1s, Bence (1):
      mtd: cmdlinepart: Replace `dbg()` macro with `pr_debug()`

Dr. David Alan Gilbert (1):
      mtd: rawnand: cadence: remove unused struct 'ecc_info'

Frank Li (2):
      dt-bindings: mtd: gpmi-nand: Add 'fsl,imx8qxp-gpmi-nand' compatible s=
tring
      mtd: rawnand: gpmi: add 'support_edo_timing' in gpmi_devdata

Han Xu (1):
      mtd: rawnand: gpmi: add iMX8QXP support.

Jeff Johnson (1):
      mtd: add missing MODULE_DESCRIPTION() macros

Michael Walle (6):
      mtd: spi-nor: Remove support for Xilinx S3AN flashes
      mtd: spi-nor: get rid of non-power-of-2 page size handling
      mtd: spi-nor: remove .setup() callback
      mtd: spi-nor: get rid of SPI_NOR_NO_FR
      mtd: spi-nor: simplify spi_nor_get_flash_info()
      mtd: spi-nor: winbond: fix w25q128 regression

Miquel Raynal (2):
      Merge tag 'spi-nor/for-6.11' into mtd/next
      Merge tag 'nand/for-6.11' into mtd/next

Piotr Wojtaszczyk (2):
      mtd: rawnand: lpx32xx: Request DMA channels using DT entries
      mtd: rawnand: lpx32xx: Fix dma_request_chan() error checks

Rob Herring (Arm) (1):
      dt-bindings: mtd: qcom,nandc: Define properties at top-level

Sascha Hauer (3):
      mtd: rawnand: mxc: separate page read from ecc calc
      mtd: rawnand: mxc: implement exec_op
      mtd: rawnand: mxc: support software ECC

Wolfram Sang (2):
      mtd: rawnand: mxc: use 'time_left' variable with wait_for_completion_=
timeout()
      mtd: rawnand: intel: use 'time_left' variable with wait_for_completio=
n_timeout()

 Documentation/devicetree/bindings/mtd/amlogic,meson-nand.yaml |  18 +++
 Documentation/devicetree/bindings/mtd/gpmi-nand.yaml          |  22 +++
 Documentation/devicetree/bindings/mtd/qcom,nandc.yaml         |  38 ++---
 drivers/mtd/chips/cfi_cmdset_0020.c                           |   1 +
 drivers/mtd/chips/cfi_util.c                                  |   1 +
 drivers/mtd/maps/Makefile                                     |  11 +-
 drivers/mtd/maps/map_funcs.c                                  |   1 +
 drivers/mtd/nand/raw/cadence-nand-controller.c                |   5 -
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c                    |  20 ++-
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.h                    |   6 +-
 drivers/mtd/nand/raw/intel-nand-controller.c                  |   6 +-
 drivers/mtd/nand/raw/lpc32xx_mlc.c                            |  26 ++--
 drivers/mtd/nand/raw/lpc32xx_slc.c                            |  26 ++--
 drivers/mtd/nand/raw/meson_nand.c                             |  86 ++++++=
+----
 drivers/mtd/nand/raw/mxc_nand.c                               | 708 ++++++=
+++++++++++++++++++++++++++++++++++++--------------------------------------=
-------
 drivers/mtd/nand/spi/macronix.c                               |  64 ++++++=
--
 drivers/mtd/parsers/brcm_u-boot.c                             |   1 +
 drivers/mtd/parsers/cmdlinepart.c                             |  18 +--
 drivers/mtd/parsers/tplink_safeloader.c                       |   1 +
 drivers/mtd/spi-nor/Makefile                                  |   1 -
 drivers/mtd/spi-nor/core.c                                    | 206 ++++++=
++++----------------
 drivers/mtd/spi-nor/core.h                                    |  12 --
 drivers/mtd/spi-nor/everspin.c                                |  19 ++-
 drivers/mtd/spi-nor/winbond.c                                 |   2 +
 drivers/mtd/spi-nor/xilinx.c                                  | 169 ------=
---------------
 drivers/mtd/tests/Makefile                                    |  34 ++---
 drivers/mtd/tests/mtd_test.c                                  |   9 ++
 include/linux/mtd/cfi.h                                       |  32 ++--
 28 files changed, 724 insertions(+), 819 deletions(-)
 delete mode 100644 drivers/mtd/spi-nor/xilinx.c

.
Date: Sat, 20 Jul 2024 06:35:08 -0700 (PDT)
From: Palmer Dabbelt <palmer@rivosinc.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Subject: [GIT PULL] RISC-V Patches for the 6.11 Merge Window, Part 1

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git tags/riscv-for-linus-6.11-mw1

for you to fetch changes up to 93b63f68d00a0483b450b446e2ea5386a1b94213:

  riscv: lib: relax assembly constraints in hweight (2024-07-15 08:46:46 -0700)

----------------------------------------------------------------
RISC-V Patches for the 6.11 Merge Window, Part 1

* Support for various new ISA extensions:
    * The Zve32[xf] and Zve64[xfd] sub-extensios of the vector
      extension.
    * Zimop and Zcmop for may-be-operations.
    * The Zca, Zcf, Zcd and Zcb sub-extensions of the C extension.
    * Zawrs,
* riscv,cpu-intc is now dtschema.
* A handful of performance improvements and cleanups to text patching.
* Support for memory hot{,un}plug
* The highest user-allocatable virtual address is now visible in
  hwprobe.

----------------------------------------------------------------
Sorry this is a bit late, but I got caught up in a handful of build issues from
other trees that cropped up during the merge window.  Looks like that's mostly
settling down, as usual I've got the fixed stacked up locally until things get
sorted out.  Aside from that everything looks clean on my end.

I have one merge conflict: some of the in-flight text patching
optimizations/cleanups ended up conflicting with the instruction tearing bugs
we found during the last release cycle.  As a result the fences are now inside
the patching functions, which while slow should at least be correct.

Here's my resolution of the actual diff, we could delete the functions but with
more incoming I figured it was best to avoid sticking extra diff in the merge:

diff --cc arch/riscv/kernel/patch.c
index ab03732d06c4,5b3f6406e8c4..000000000000
--- a/arch/riscv/kernel/patch.c
+++ b/arch/riscv/kernel/patch.c
@@@ -200,12 -186,13 +202,7 @@@ NOKPROBE_SYMBOL(patch_insn_set)

  int patch_text_set_nosync(void *addr, u8 c, size_t len)
  {
- 	u32 *tp = addr;
--	int ret;
--
- 	ret = patch_insn_set(tp, c, len);
 -	ret = patch_insn_set(addr, c, len);
 -	if (!ret)
 -		flush_icache_range((uintptr_t)addr, (uintptr_t)addr + len);
--
--	return ret;
++	return patch_insn_set(addr, c, len);
  }
  NOKPROBE_SYMBOL(patch_text_set_nosync);

@@@ -232,12 -222,13 +232,7 @@@ NOKPROBE_SYMBOL(patch_insn_write)

  int patch_text_nosync(void *addr, const void *insns, size_t len)
  {
- 	u32 *tp = addr;
--	int ret;
--
- 	ret = patch_insn_write(tp, insns, len);
 -	ret = patch_insn_write(addr, insns, len);
 -	if (!ret)
 -		flush_icache_range((uintptr_t)addr, (uintptr_t)addr + len);
--
--	return ret;
++	return patch_insn_write(addr, insns, len);
  }
  NOKPROBE_SYMBOL(patch_text_nosync);

----------------------------------------------------------------
Alexandre Ghiti (2):
      riscv: Implement pte_accessible()
      riscv: Improve sbi_ecall() code generation by reordering arguments

Andrew Jones (5):
      riscv: Provide a definition for 'pause'
      dt-bindings: riscv: Add Zawrs ISA extension description
      riscv: hwprobe: export Zawrs ISA extension
      KVM: riscv: Support guest wrs.nto
      KVM: riscv: selftests: Add Zawrs extension to get-reg-list test

Andy Chiu (8):
      riscv: vector: add a comment when calling riscv_setup_vsize()
      riscv: smp: fail booting up smp if inconsistent vlen is detected
      riscv: cpufeature: call match_isa_ext() for single-letter extensions
      dt-bindings: riscv: add Zve32[xf] Zve64[xfd] ISA extension description
      riscv: cpufeature: add zve32[xf] and zve64[xfd] isa detection
      riscv: hwprobe: add zve Vector subextensions into hwprobe interface
      riscv: vector: adjust minimum Vector requirement to ZVE32X
      selftest: run vector prctl test for ZVE32X

BjĂ¶rn TĂ¶pel (11):
      riscv: mm: Properly forward vmemmap_populate() altmap parameter
      riscv: mm: Pre-allocate vmemmap/direct map/kasan PGD entries
      riscv: mm: Change attribute from __init to __meminit for page functions
      riscv: mm: Refactor create_linear_mapping_range() for memory hot add
      riscv: mm: Add pfn_to_kaddr() implementation
      riscv: mm: Add memory hotplugging support
      riscv: mm: Take memory hotplug read-lock during kernel page table dump
      riscv: Enable memory hotplugging for RISC-V
      virtio-mem: Enable virtio-mem for RISC-V
      riscv: mm: Add support for ZONE_DEVICE
      riscv: Enable DAX VMEMMAP optimization

Christoph MĂĽllner (1):
      riscv: Add Zawrs support for spinlocks

ClĂ©ment LĂ©ger (17):
      dt-bindings: riscv: add Zimop ISA extension description
      riscv: add ISA extension parsing for Zimop
      riscv: hwprobe: export Zimop ISA extension
      RISC-V: KVM: Allow Zimop extension for Guest/VM
      KVM: riscv: selftests: Add Zimop extension to get-reg-list test
      dt-bindings: riscv: add Zca, Zcf, Zcd and Zcb ISA extension description
      riscv: add ISA extensions validation callback
      riscv: add ISA parsing for Zca, Zcf, Zcd and Zcb
      riscv: hwprobe: export Zca, Zcf, Zcd and Zcb ISA extensions
      RISC-V: KVM: Allow Zca, Zcf, Zcd and Zcb extensions for Guest/VM
      KVM: riscv: selftests: Add some Zc* extensions to get-reg-list test
      dt-bindings: riscv: add Zcmop ISA extension description
      riscv: add ISA extension parsing for Zcmop
      riscv: hwprobe: export Zcmop ISA extension
      RISC-V: KVM: Allow Zcmop extension for Guest/VM
      KVM: riscv: selftests: Add Zcmop extension to get-reg-list test
      riscv: hwprobe: export highest virtual userspace address

Haibo Xu (1):
      riscv: dmi: Add SMBIOS/DMI support

Kanak Shilledar (2):
      dt-bindings: interrupt-controller: riscv,cpu-intc: convert to dtschema
      dt-bindings: riscv: cpus: add ref to interrupt-controller

Palmer Dabbelt (6):
      Merge patch series "Support Zve32[xf] and Zve64[xfd] Vector subextensions"
      Merge patch series "dt-bindings: interrupt-controller: riscv,cpu-intc"
      Merge patch series "riscv: Various text patching improvements"
      Merge patch series "Add support for a few Zc* extensions, Zcmop and Zimop"
      Merge patch series "riscv: Memory Hot(Un)Plug support"
      Merge patch series "riscv: Apply Zawrs when available"

Qingfang Deng (1):
      riscv: lib: relax assembly constraints in hweight

Samuel Holland (8):
      riscv: jump_label: Batch icache maintenance
      riscv: jump_label: Simplify assembly syntax
      riscv: kprobes: Use patch_text_nosync() for insn slots
      riscv: Simplify text patching loops
      riscv: Pass patch_text() the length in bytes
      riscv: Use offset_in_page() in text patching functions
      riscv: Remove extra variable in patch_text_nosync()
      riscv: Add tracepoints for SBI calls and returns

Xiao Wang (1):
      riscv: Optimize crc32 with Zbc extension

yang.zhang (1):
      riscv: set trap vector earlier

 Documentation/arch/riscv/hwprobe.rst               |  50 +++
 .../interrupt-controller/riscv,cpu-intc.txt        |  52 ---
 .../interrupt-controller/riscv,cpu-intc.yaml       |  73 +++++
 Documentation/devicetree/bindings/riscv/cpus.yaml  |  21 +-
 .../devicetree/bindings/riscv/extensions.yaml      | 132 ++++++++
 arch/riscv/Kconfig                                 |  59 +++-
 arch/riscv/Makefile                                |   3 -
 arch/riscv/include/asm/arch_hweight.h              |   8 +-
 arch/riscv/include/asm/barrier.h                   |  45 ++-
 arch/riscv/include/asm/cmpxchg.h                   |  58 ++++
 arch/riscv/include/asm/cpufeature.h                |   1 +
 arch/riscv/include/asm/dmi.h                       |  24 ++
 arch/riscv/include/asm/hwcap.h                     |  12 +
 arch/riscv/include/asm/hwprobe.h                   |   2 +-
 arch/riscv/include/asm/insn-def.h                  |   4 +
 arch/riscv/include/asm/jump_label.h                |   4 +-
 arch/riscv/include/asm/kasan.h                     |   4 +-
 arch/riscv/include/asm/kvm_host.h                  |   1 +
 arch/riscv/include/asm/mmu.h                       |   4 +-
 arch/riscv/include/asm/page.h                      |   5 +
 arch/riscv/include/asm/patch.h                     |   2 +-
 arch/riscv/include/asm/pgtable-64.h                |  20 ++
 arch/riscv/include/asm/pgtable-bits.h              |   1 +
 arch/riscv/include/asm/pgtable.h                   |  32 +-
 arch/riscv/include/asm/processor.h                 |   6 +
 arch/riscv/include/asm/sbi.h                       |  10 +-
 arch/riscv/include/asm/trace.h                     |  54 ++++
 arch/riscv/include/asm/vdso/processor.h            |   8 +-
 arch/riscv/include/asm/vector.h                    |  10 +-
 arch/riscv/include/uapi/asm/hwprobe.h              |  13 +
 arch/riscv/include/uapi/asm/kvm.h                  |   7 +
 arch/riscv/kernel/cpufeature.c                     | 328 +++++++++++++------
 arch/riscv/kernel/head.S                           |  22 +-
 arch/riscv/kernel/jump_label.c                     |  16 +-
 arch/riscv/kernel/patch.c                          |  69 ++--
 arch/riscv/kernel/probes/kprobes.c                 |  19 +-
 arch/riscv/kernel/sbi.c                            |  17 +-
 arch/riscv/kernel/smpboot.c                        |  14 +-
 arch/riscv/kernel/sys_hwprobe.c                    |  22 +-
 arch/riscv/kernel/vector.c                         |   5 +-
 arch/riscv/kvm/vcpu.c                              |   1 +
 arch/riscv/kvm/vcpu_insn.c                         |  15 +
 arch/riscv/kvm/vcpu_onereg.c                       |  14 +
 arch/riscv/lib/Makefile                            |   1 +
 arch/riscv/lib/crc32.c                             | 294 +++++++++++++++++
 arch/riscv/lib/uaccess.S                           |   2 +-
 arch/riscv/mm/init.c                               | 347 ++++++++++++++++++---
 arch/riscv/mm/ptdump.c                             |   3 +
 arch/riscv/net/bpf_jit_comp64.c                    |   7 +-
 drivers/firmware/efi/riscv-runtime.c               |  13 +
 drivers/virtio/Kconfig                             |   2 +-
 include/linux/crc32.h                              |   3 +
 tools/testing/selftests/kvm/riscv/get-reg-list.c   |  28 ++
 .../testing/selftests/riscv/vector/vstate_prctl.c  |   6 +-
 54 files changed, 1644 insertions(+), 329 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.yaml
 create mode 100644 arch/riscv/include/asm/dmi.h
 create mode 100644 arch/riscv/include/asm/trace.h
 create mode 100644 arch/riscv/lib/crc32.c

.
Date: Sun, 21 Jul 2024 00:17:40 +0200
From: Linus Walleij <linus.walleij@linaro.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>, linux-kernel <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] pin control changes for v6.11

Hi Linus,

this is the bulk of pin control changes for the v6.11 kernel cycle.
Some new drivers is the main part, the rest is cleanups and
nonurgent fixes. New drivers listed in the signed tag.
Nothing much special about this, no core changes this time.

Please pull it in!

Yours,
Linus Walleij

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0=
:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
tags/pinctrl-v6.11-1

for you to fetch changes up to 11eaac6e8e72001c28d2043eb160736187b7977d:

  Merge tag 'renesas-pinctrl-for-v6.11-tag3' of
git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers
into devel (2024-07-05 12:08:48 +0200)

----------------------------------------------------------------
Pin control bulk changes for the v6.11 kernel series:

Core changes: None.

New drivers:

- Renesas RZ/V2H(P) SoC

- NXP Freescale i.MX91 SoC

- Nuvoton MA35D1 SoC

- Qualcomm PMC8380, SM4250, SM4250 LPI

Enhancements:

- A slew of scoped-based simplifications of of_node_put().

----------------------------------------------------------------
Alexey Klimov (1):
      pinctrl: qcom: lpass-lpi: increase MAX_NR_GPIO to 32

Andrew Jeffery (3):
      dt-bindings: pinctrl: aspeed: Use block syntax for function and group=
s
      dt-bindings: pinctrl: aspeed,ast2500-pinctrl: Describe SGPM
      dt-bindings: pinctrl: aspeed,ast2600-pinctrl: Describe I3C, USB

Andy Shevchenko (11):
      pinctrl: berlin: Make use of struct pinfunction
      pinctrl: equilibrium: Make use of struct pinfunction
      pinctrl: ingenic: Provide a helper macro INGENIC_PIN_FUNCTION()
      pinctrl: mediatek: moore: Provide a helper macro PINCTRL_PIN_FUNCTION=
()
      pinctrl: pinmux: Add a convenient define PINCTRL_FUNCTION_DESC()
      pinctrl: pinmux: Embed struct pinfunction into struct function_desc
      pinctrl: imx: Convert to use func member
      pinctrl: ingenic: Convert to use func member
      pinctrl: keembay: Convert to use func member
      pinctrl: mediatek: moore: Convert to use func member
      pinctrl: pinmux: Remove unused members from struct function_desc

Chen Ni (1):
      pinctrl: mlxbf3: Fix return value check for devm_platform_ioremap_res=
ource

Claudiu Beznea (1):
      pinctrl: renesas: rzg2l: Use spin_{lock,unlock}_irq{save,restore}

Dan Carpenter (1):
      pinctrl: nuvoton: ma35d1: Fix an IS_ERR() vs NULL check

Dmitry Yashin (1):
      pinctrl: rockchip: update rk3308 iomux routes

Geert Uytterhoeven (13):
      pinctrl: renesas: rzn1: Use for_each_child_of_node_scoped()
      pinctrl: renesas: r8a779g0: Fix CANFD5 suffix
      pinctrl: renesas: r8a779g0: Fix FXR_TXEN[AB] suffixes
      pinctrl: renesas: r8a779g0: Fix (H)SCIF1 suffixes
      pinctrl: renesas: r8a779g0: Fix (H)SCIF3 suffixes
      pinctrl: renesas: r8a779g0: Fix IRQ suffixes
      pinctrl: renesas: r8a779g0: FIX PWM suffixes
      pinctrl: renesas: r8a779g0: Fix TCLK suffixes
      pinctrl: renesas: r8a779g0: Fix TPU suffixes
      pinctrl: renesas: r8a779h0: Add AVB MII pins and groups
      pinctrl: renesas: r8a779g0: Remove unneeded separators
      pinctrl: renesas: r8a779g0: Add INTC-EX pins, groups, and function
      pinctrl: renesas: r8a779h0: Remove unneeded separators

Inochi Amaoto (1):
      dt-bindings: pinctrl: pinctrl-single: fix schmitt related properties

Jacky Huang (3):
      dt-bindings: reset: Add syscon to nuvoton ma35d1 system-management no=
de
      dt-bindings: pinctrl: Document nuvoton ma35d1 pin control
      pinctrl: nuvoton: Add ma35d1 pinctrl and GPIO driver

Jeff Johnson (1):
      pinctrl: add missing MODULE_DESCRIPTION() macros

Konrad Dybcio (2):
      dt-bindings: pinctrl: qcom,pmic-gpio: Document PMC8380
      pinctrl: qcom: spmi: Add PMC8380

Lad Prabhakar (19):
      dt-bindings: pinctrl: renesas,rzg2l-pinctrl: Remove the check
from the object
      pinctrl: renesas: rzg2l: Allow more bits for pin configuration
      pinctrl: renesas: rzg2l: Drop struct rzg2l_variable_pin_cfg
      pinctrl: renesas: rzg2l: Enable variable configuration for all
      pinctrl: renesas: rzg2l: Validate power registers for SD and ETH
      pinctrl: renesas: rzg2l: Add function pointer for PFC register lockin=
g
      pinctrl: renesas: rzg2l: Add function pointer for PMC register write
      pinctrl: renesas: rzg2l: Add function pointers for OEN register acces=
s
      pinctrl: renesas: rzg2l: Add support to configure slew-rate
      pinctrl: renesas: rzg2l: Add support for pull-up/down
      pinctrl: renesas: rzg2l: Pass pincontrol device to
pinconf_generic_parse_dt_config()
      pinctrl: renesas: rzg2l: Add support for custom parameters
      pinctrl: renesas: rzg2l: Acquire lock in rzg2l_pinctrl_pm_setup_pfc()
      dt-bindings: pinctrl: renesas: Document RZ/V2H(P) SoC
      pinctrl: renesas: rzg2l: Add support for RZ/V2H SoC
      pinctrl: renesas: rzg2l: Update PIN_CFG_MASK() macro to be 32-bit wid=
e
      pinctrl: renesas: rzg2l: Adjust bit masks for PIN_CFG_VARIABLE
to use BIT(62)
      pinctrl: renesas: rzg2l: Move RZG2L_SINGLE_PIN definition to top
of the file
      pinctrl: renesas: rzg2l: Reorganize variable configuration macro

Linus Walleij (4):
      Merge tag 'renesas-pinctrl-for-v6.11-tag1' of
git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers
into devel
      pinctrl: freescale: Select missing features
      Merge tag 'renesas-pinctrl-for-v6.11-tag2-v2' of
git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers
into devel
      Merge tag 'renesas-pinctrl-for-v6.11-tag3' of
git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers
into devel

L=C3=A9o DUBOIN (2):
      pinctrl: core: take into account the pins array in pinctrl_pins_show(=
)
      pinctrl: core: reset gpio_device in loop in pinctrl_pins_show()

Micha=C5=82 Miros=C5=82aw (1):
      pinctrl: renesas: sh73a0: Use rdev_get_drvdata()

Nathan Chancellor (1):
      pinctrl: keembay: Fix func conversion in keembay_build_functions()

Nirmala Devi Mal Nadar (1):
      pinctrl: pinctrl-tps6594: make tps65224_muxval_remap and
tps6594_muxval_remap as static to fix sparse warning

Nishanth Menon (1):
      dt-bindings: pinctrl: pinctrl-single: Fix
pinctrl-single,gpio-range description

Patrick Rudolph (5):
      pinctrl: cy8c95x0: Use single I2C lock
      pinctrl: cy8c95x0: Use regmap ranges
      pinctrl: cy8c95x0: Use REGCACHE_MAPLE
      pinctrl: cy8c95x0: Use cleanup.h
      pinctrl: cy8c95x0: Update cache modification

Paul Barker (3):
      pinctrl: renesas: rzg2l: Clarify OEN read/write support
      pinctrl: renesas: rzg2l: Clean up and refactor OEN read/write functio=
ns
      pinctrl: renesas: rzg2l: Support output enable on RZ/G2L

Peng Fan (24):
      pinctrl: renesas: Use scope based of_node_put() cleanups
      dt-bindings: pinctrl: imx: Support i.MX91 IOMUXC
      pinctrl: imx: Add pinctrl driver support for i.MX91
      pinctrl: stm32: Use scope based of_node_put() cleanups
      pinctrl: st: Use scope based of_node_put() cleanups
      dt-bindings: firmware: arm,scmi: Add properties for i.MX95
Pinctrl OEM extensions
      pinctrl: scmi: add blocklist
      pinctrl: imx: support SCMI pinctrl protocol for i.MX95
      pinctrl: tegra: Use scope based of_node_put() cleanups
      pinctrl: starfive: Use scope based of_node_put() cleanups
      pinctrl: sprd: Use scope based of_node_put() cleanups
      pinctrl: spear: Use scope based of_node_put() cleanups
      pinctrl: rockchip: Use scope based of_node_put() cleanups
      pinctrl: at91: Use scope based of_node_put() cleanups
      pinctrl: s32cc: Use scope based of_node_put() cleanups
      pinctrl: nomadik: Use scope based of_node_put() cleanups
      pinctrl: mediatek: Use scope based of_node_put() cleanups
      pinctrl: bcm: bcm63xx: Use scope based of_node_put() cleanups
      pinctrl: pinconf-generic: Use scope based of_node_put() cleanups
      pinctrl: freescale: mxs: Fix refcount of child
      pinctrl: k210: Use scope based of_node_put() cleanups
      pinctrl: ti: iodelay: Use scope based of_node_put() cleanups
      pinctrl: equilibrium: Use scope based of_node_put() cleanups
      pinctrl: freescale: Use scope based of_node_put() cleanups

Potin Lai (2):
      dt-bindings: pinctrl: aspeed,ast2600-pinctrl: add NCSI groups
      pinctrl: aspeed-g6: Add NCSI pin group config

Richard Acayan (1):
      pinctrl: qcom: sdm670: add pdc wakeirq map

Sean Anderson (2):
      dt-bindings: pinctrl: xilinx: Add support for function with pins
      pinctrl: zynqmp: Support muxing individual pins

Srinivas Kandagatla (2):
      dt-bindings: pinctrl: qcom: Add SM4250 pinctrl
      pinctrl: qcom: Introduce SM4250 LPI pinctrl driver

Stefan Wahren (1):
      pinctrl: bcm2835: Use string_choices API instead of ternary operator

Swati Agarwal (1):
      pinctrl: pinctrl-zynqmp: Use pin numbers stored in pin descriptor

Tomer Maimon (1):
      dt-bindings: pinctrl: npcm8xx: add missing pin group and mux function

Weihao Li (1):
      pinctrl: ralink: mt76x8: fix pinmux function

Yang Yingliang (3):
      pinctrl: core: fix possible memory leak when pinctrl_enable() fails
      pinctrl: single: fix possible memory leak when pinctrl_enable() fails
      pinctrl: ti: ti-iodelay: fix possible memory leak when
pinctrl_enable() fails

 .../devicetree/bindings/firmware/arm,scmi.yaml     |    4 +-
 .../bindings/firmware/nxp,imx95-scmi-pinctrl.yaml  |   53 +
 .../bindings/pinctrl/aspeed,ast2400-pinctrl.yaml   |  169 +-
 .../bindings/pinctrl/aspeed,ast2500-pinctrl.yaml   |  188 +-
 .../bindings/pinctrl/aspeed,ast2600-pinctrl.yaml   |  514 +++++-
 ...sl,imx93-pinctrl.yaml =3D> fsl,imx9-pinctrl.yaml} |    8 +-
 .../bindings/pinctrl/nuvoton,ma35d1-pinctrl.yaml   |  178 ++
 .../bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml  |   22 +-
 .../bindings/pinctrl/pinctrl-single.yaml           |   17 +-
 .../bindings/pinctrl/qcom,pmic-gpio.yaml           |    2 +
 .../pinctrl/qcom,sm4250-lpass-lpi-pinctrl.yaml     |  118 ++
 .../bindings/pinctrl/renesas,rzg2l-pinctrl.yaml    |   52 +-
 .../bindings/pinctrl/xlnx,zynqmp-pinctrl.yaml      |  349 ++--
 .../bindings/reset/nuvoton,ma35d1-reset.yaml       |    3 +-
 drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c         |   10 +-
 drivers/pinctrl/bcm/pinctrl-bcm2835.c              |    5 +-
 drivers/pinctrl/bcm/pinctrl-bcm4908.c              |    1 +
 drivers/pinctrl/bcm/pinctrl-bcm63xx.c              |    4 +-
 drivers/pinctrl/berlin/berlin.c                    |   21 +-
 drivers/pinctrl/berlin/berlin.h                    |    6 -
 drivers/pinctrl/core.c                             |   30 +-
 drivers/pinctrl/core.h                             |    2 +-
 drivers/pinctrl/freescale/Kconfig                  |   18 +
 drivers/pinctrl/freescale/Makefile                 |    2 +
 drivers/pinctrl/freescale/pinctrl-imx-scmi.c       |  357 ++++
 drivers/pinctrl/freescale/pinctrl-imx.c            |   39 +-
 drivers/pinctrl/freescale/pinctrl-imx1-core.c      |   16 +-
 drivers/pinctrl/freescale/pinctrl-imx91.c          |  271 +++
 drivers/pinctrl/freescale/pinctrl-mxs.c            |   18 +-
 drivers/pinctrl/mediatek/pinctrl-moore.c           |   10 +-
 drivers/pinctrl/mediatek/pinctrl-moore.h           |    6 +
 drivers/pinctrl/mediatek/pinctrl-mt7622.c          |   32 +-
 drivers/pinctrl/mediatek/pinctrl-mt7623.c          |   42 +-
 drivers/pinctrl/mediatek/pinctrl-mt7629.c          |   20 +-
 drivers/pinctrl/mediatek/pinctrl-mt76x8.c          |   88 +-
 drivers/pinctrl/mediatek/pinctrl-mt7981.c          |   34 +-
 drivers/pinctrl/mediatek/pinctrl-mt7986.c          |   24 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c      |    4 +-
 drivers/pinctrl/mediatek/pinctrl-paris.c           |    4 +-
 drivers/pinctrl/meson/pinctrl-meson-a1.c           |    1 +
 drivers/pinctrl/meson/pinctrl-meson-axg-pmx.c      |    1 +
 drivers/pinctrl/meson/pinctrl-meson-axg.c          |    1 +
 drivers/pinctrl/meson/pinctrl-meson-g12a.c         |    1 +
 drivers/pinctrl/meson/pinctrl-meson-gxbb.c         |    1 +
 drivers/pinctrl/meson/pinctrl-meson-gxl.c          |    1 +
 drivers/pinctrl/meson/pinctrl-meson-s4.c           |    1 +
 drivers/pinctrl/meson/pinctrl-meson.c              |    1 +
 drivers/pinctrl/meson/pinctrl-meson8-pmx.c         |    1 +
 drivers/pinctrl/nomadik/pinctrl-abx500.c           |    4 +-
 drivers/pinctrl/nomadik/pinctrl-nomadik.c          |    4 +-
 drivers/pinctrl/nuvoton/Kconfig                    |   19 +
 drivers/pinctrl/nuvoton/Makefile                   |    2 +
 drivers/pinctrl/nuvoton/pinctrl-ma35.c             | 1187 +++++++++++++
 drivers/pinctrl/nuvoton/pinctrl-ma35.h             |   52 +
 drivers/pinctrl/nuvoton/pinctrl-ma35d1.c           | 1799 ++++++++++++++++=
++++
 drivers/pinctrl/nxp/pinctrl-s32cc.c                |   31 +-
 drivers/pinctrl/pinconf-generic.c                  |    7 +-
 drivers/pinctrl/pinctrl-at91-pio4.c                |    7 +-
 drivers/pinctrl/pinctrl-at91.c                     |   14 +-
 drivers/pinctrl/pinctrl-cy8c95x0.c                 |  212 +--
 drivers/pinctrl/pinctrl-equilibrium.c              |   45 +-
 drivers/pinctrl/pinctrl-equilibrium.h              |   12 -
 drivers/pinctrl/pinctrl-ingenic.c                  |  707 ++++----
 drivers/pinctrl/pinctrl-k210.c                     |    7 +-
 drivers/pinctrl/pinctrl-keembay.c                  |   24 +-
 drivers/pinctrl/pinctrl-mcp23s08.c                 |    1 +
 drivers/pinctrl/pinctrl-mcp23s08_i2c.c             |    1 +
 drivers/pinctrl/pinctrl-mcp23s08_spi.c             |    1 +
 drivers/pinctrl/pinctrl-mlxbf3.c                   |   12 +-
 drivers/pinctrl/pinctrl-rockchip.c                 |   28 +-
 drivers/pinctrl/pinctrl-scmi.c                     |    9 +
 drivers/pinctrl/pinctrl-single.c                   |    7 +-
 drivers/pinctrl/pinctrl-st.c                       |   37 +-
 drivers/pinctrl/pinctrl-tb10x.c                    |    1 +
 drivers/pinctrl/pinctrl-tps6594.c                  |    4 +-
 drivers/pinctrl/pinctrl-zynqmp.c                   |   85 +-
 drivers/pinctrl/pinmux.c                           |   19 +-
 drivers/pinctrl/pinmux.h                           |   19 +-
 drivers/pinctrl/qcom/Kconfig                       |    9 +
 drivers/pinctrl/qcom/Makefile                      |    1 +
 drivers/pinctrl/qcom/pinctrl-lpass-lpi.c           |    2 +-
 drivers/pinctrl/qcom/pinctrl-sdm670.c              |   19 +
 drivers/pinctrl/qcom/pinctrl-sm4250-lpass-lpi.c    |  236 +++
 drivers/pinctrl/qcom/pinctrl-spmi-gpio.c           |    1 +
 drivers/pinctrl/renesas/pfc-r8a779g0.c             |  830 +++++----
 drivers/pinctrl/renesas/pfc-r8a779h0.c             |   82 +-
 drivers/pinctrl/renesas/pfc-sh73a0.c               |    4 +-
 drivers/pinctrl/renesas/pinctrl-rza1.c             |   14 +-
 drivers/pinctrl/renesas/pinctrl-rzg2l.c            |  913 +++++++---
 drivers/pinctrl/renesas/pinctrl-rzn1.c             |   26 +-
 drivers/pinctrl/renesas/pinctrl-rzv2m.c            |    7 +-
 drivers/pinctrl/renesas/pinctrl.c                  |    7 +-
 drivers/pinctrl/spear/pinctrl-spear.c              |   13 +-
 drivers/pinctrl/sprd/pinctrl-sprd.c                |   14 +-
 drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c |   27 +-
 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c |   18 +-
 drivers/pinctrl/stm32/pinctrl-stm32.c              |    4 +-
 drivers/pinctrl/tegra/pinctrl-tegra-xusb.c         |    7 +-
 drivers/pinctrl/tegra/pinctrl-tegra.c              |    4 +-
 drivers/pinctrl/ti/pinctrl-ti-iodelay.c            |   42 +-
 100 files changed, 7428 insertions(+), 1959 deletions(-)
 create mode 100644
Documentation/devicetree/bindings/firmware/nxp,imx95-scmi-pinctrl.yaml
 rename Documentation/devicetree/bindings/pinctrl/{fsl,imx93-pinctrl.yaml
=3D> fsl,imx9-pinctrl.yaml} (93%)
 create mode 100644
Documentation/devicetree/bindings/pinctrl/nuvoton,ma35d1-pinctrl.yaml
 create mode 100644
Documentation/devicetree/bindings/pinctrl/qcom,sm4250-lpass-lpi-pinctrl.yam=
l
 create mode 100644 drivers/pinctrl/freescale/pinctrl-imx-scmi.c
 create mode 100644 drivers/pinctrl/freescale/pinctrl-imx91.c
 create mode 100644 drivers/pinctrl/nuvoton/pinctrl-ma35.c
 create mode 100644 drivers/pinctrl/nuvoton/pinctrl-ma35.h
 create mode 100644 drivers/pinctrl/nuvoton/pinctrl-ma35d1.c
 create mode 100644 drivers/pinctrl/qcom/pinctrl-sm4250-lpass-lpi.c

.
Date: Sun, 21 Jul 2024 14:48:37 -0500
From: Steve French <smfrench@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>, David Howells <dhowells@redhat.com>, 
	CIFS <linux-cifs@vger.kernel.org>
Subject: [GIT PULL] smb3 client fixes

Please pull the following changes since commit
0c3836482481200ead7b416ca80c68a29cfdaabd:

  Linux 6.10 (2024-07-14 15:43:32 -0700)

are available in the Git repository at:

  git://git.samba.org/sfrench/cifs-2.6.git tags/6.11-rc-part1-smb3-client-fixes

for you to fetch changes up to a07d38afd15281c42613943a9a715c3ba07c21e6:

  cifs: Fix missing fscache invalidation (2024-07-20 13:55:29 -0500)

----------------------------------------------------------------
six smb3 client fixes, most for stable including important netfs related fixes
- various netfs related fixes for cifs addressing some regressions in
6.10 (e.g. generic/708 and some multichannel crediting related issues)
- fix for a noisy log message on copy_file_range
- add trace point for read/write credits
----------------------------------------------------------------
David Howells (5):
      cifs: Fix server re-repick on subrequest retry
      cifs: Fix missing error code set
      cifs: Fix setting of zero_point after DIO write
      cifs: Add a tracepoint to track credits involved in R/W requests
      cifs: Fix missing fscache invalidation

Steve French (1):
      cifs: fix noisy message on copy_file_range

 fs/smb/client/cifsfs.c    |  2 +-
 fs/smb/client/cifsglob.h  | 17 +++++++++-------
 fs/smb/client/file.c      | 53
++++++++++++++++++++++++++++++++++++++++++++-----
 fs/smb/client/smb1ops.c   |  2 +-
 fs/smb/client/smb2ops.c   | 42 ++++++++++++++++++++++++++++++++++-----
 fs/smb/client/smb2pdu.c   | 43 +++++++++++++++++++++++++++++++++-------
 fs/smb/client/trace.h     | 55
++++++++++++++++++++++++++++++++++++++++++++++++++-
 fs/smb/client/transport.c |  8 ++++----
 8 files changed, 191 insertions(+), 31 deletions(-)

-- 
Thanks,

Steve

.
Date: Sun, 21 Jul 2024 14:54:15 -0700
From: Andrew Morton <akpm@linux-foundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-mm@kvack.org, mm-commits@vger.kernel.org,
 linux-kernel@vger.kernel.org
Subject: [GIT PULL] MM updates for 6.11-rc1


Linus, please pull this cycle's MM updates, thanks.


Conflicts which I saw during a test merge, along with their linux-next
resolutions are:

arch/powerpc/mm/nohash/Makefile, vs powerpc tree:
https://lkml.kernel.org/r/20240703094857.3f489d4f@canb.auug.org.au

fs/nfs/write.c, fs/nfs/nfstrace.h, vs fs-next tree:
https://lkml.kernel.org/r/20240715105836.6d6e6e50@canb.auug.org.au

include/linux/hid_bpf.h, vs hid tree:
https://lkml.kernel.org/r/20240709112544.190ffda4@canb.auug.org.au


Upcoming conflicts include:

include/linux/interrupt.h, vs input tree:
https://lkml.kernel.org/r/20240612103235.5ef64950@canb.auug.org.au

include/linux/cacheinfo.h, vs tip tree:
https://lkml.kernel.org/r/20240612112746.3130d68b@canb.auug.org.au

drivers/fsi/fsi-occ.c, vs driver-core tree:
https://lkml.kernel.org/r/20240612123640.68ae0310@canb.auug.org.au

This one is a bit vague, but might help:
arch/s390/include/asm/kmsan.h, arch/s390/include/asm/lowcore.h, vs s390
tree:
https://lkml.kernel.org/r/20240627150405.27663-1-iii@linux.ibm.com

mm/rmap.c, vs random tree:
https://lkml.kernel.org/r/20240702164041.60a19dfb@canb.auug.org.au
https://lkml.kernel.org/r/20240709174053.051a46a4@canb.auug.org.au

tools/testing/selftests/mm/Makefile, vs random tree:
https://lkml.kernel.org/r/20240709174340.5c03c2b9@canb.auug.org.au

fs/bcachefs/clock.c, vs bcachefs tree:
https://lkml.kernel.org/r/20240712105711.6dc900a2@canb.auug.org.au


The following changes since commit 1e3d28fe03cdac1f58402e4da1e1e59fb70d145f:

  MAINTAINERS: mailmap: update Lorenzo Stoakes's email address (2024-07-06 =
11:39:51 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2024=
-07-21-14-50

for you to fetch changes up to 30d77b7eef019fa4422980806e8b7cdc8674493e:

  mm/mglru: fix ineffective protection calculation (2024-07-17 21:08:55 -07=
00)

----------------------------------------------------------------
- 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN
  walkers") is known to cause a performance regression
  (https://lore.kernel.org/all/3acefad9-96e5-4681-8014-827d6be71c7a@linux.i=
bm.com/T/#mfa809800a7862fb5bdf834c6f71a3a5113eb83ff).
  Yu has a fix which I'll send along later via the hotfixes branch.

- In the series "mm: Avoid possible overflows in dirty throttling" Jan
  Kara addresses a couple of issues in the writeback throttling code.
  These fixes are also targetted at -stable kernels.

- Ryusuke Konishi's series "nilfs2: fix potential issues related to
  reserved inodes" does that.  This should actually be in the
  mm-nonmm-stable tree, along with the many other nilfs2 patches.  My bad.

- More folio conversions from Kefeng Wang in the series "mm: convert to
  folio_alloc_mpol()"

- Kemeng Shi has sent some cleanups to the writeback code in the series
  "Add helper functions to remove repeated code and improve readability of
  cgroup writeback"

- Kairui Song has made the swap code a little smaller and a little
  faster in the series "mm/swap: clean up and optimize swap cache index".

- In the series "mm/memory: cleanly support zeropage in
  vm_insert_page*(), vm_map_pages*() and vmf_insert_mixed()" David
  Hildenbrand has reworked the rather sketchy handling of the use of the
  zeropage in MAP_SHARED mappings.  I don't see any runtime effects here -
  more a cleanup/understandability/maintainablity thing.

- Dev Jain has improved selftests/mm/va_high_addr_switch.c's handling of
  higher addresses, for aarch64.  The (poorly named) series is
  "Restructure va_high_addr_switch".

- The core TLB handling code gets some cleanups and possible slight
  optimizations in Bang Li's series "Add update_mmu_tlb_range() to
  simplify code".

- Jane Chu has improved the handling of our
  fake-an-unrecoverable-memory-error testing feature MADV_HWPOISON in the
  series "Enhance soft hwpoison handling and injection".

- Jeff Johnson has sent a billion patches everywhere to add
  MODULE_DESCRIPTION() to everything.  Some landed in this pull.

- In the series "mm: cleanup MIGRATE_SYNC_NO_COPY mode", Kefeng Wang has
  simplified migration's use of hardware-offload memory copying.

- Yosry Ahmed performs more folio API conversions in his series "mm:
  zswap: trivial folio conversions".

- In the series "large folios swap-in: handle refault cases first",
  Chuanhua Han inches us forward in the handling of large pages in the
  swap code.  This is a cleanup and optimization, working toward the end
  objective of full support of large folio swapin/out.

- In the series "mm,swap: cleanup VMA based swap readahead window
  calculation", Huang Ying has contributed some cleanups and a possible
  fixlet to his VMA based swap readahead code.

- In the series "add mTHP support for anonymous shmem" Baolin Wang has
  taught anonymous shmem mappings to use multisize THP.  By default this
  is a no-op - users must opt in vis sysfs controls.  Dramatic
  improvements in pagefault latency are realized.

- David Hildenbrand has some cleanups to our remaining use of
  page_mapcount() in the series "fs/proc: move page_mapcount() to
  fs/proc/internal.h".

- David also has some highmem accounting cleanups in the series
  "mm/highmem: don't track highmem pages manually".

- Build-time fixes and cleanups from John Hubbard in the series
  "cleanups, fixes, and progress towards avoiding "make headers"".

- Cleanups and consolidation of the core pagemap handling from Barry
  Song in the series "mm: introduce pmd|pte_needs_soft_dirty_wp helpers
  and utilize them".

- Lance Yang's series "Reclaim lazyfree THP without splitting" has
  reduced the latency of the reclaim of pmd-mapped THPs under fairly
  common circumstances.  A 10x speedup is seen in a microbenchmark.

  It does this by punting to aother CPU but I guess that's a win unless
  all CPUs are pegged.

- hugetlb_cgroup cleanups from Xiu Jianfeng in the series
  "mm/hugetlb_cgroup: rework on cftypes".

- Miaohe Lin's series "Some cleanups for memory-failure" does just that
  thing.

- Is anyone reading this stuff?  If so, email me!

- Someone other than SeongJae has developed a DAMON feature in Honggyu
  Kim's series "DAMON based tiered memory management for CXL memory".
  This adds DAMON features which may be used to help determine the
  efficiency of our placement of CXL/PCIe attached DRAM.

- DAMON user API centralization and simplificatio work in SeongJae
  Park's series "mm/damon: introduce DAMON parameters online commit
  function".

- In the series "mm: page_type, zsmalloc and page_mapcount_reset()"
  David Hildenbrand does some maintenance work on zsmalloc - partially
  modernizing its use of pageframe fields.

- Kefeng Wang provides more folio conversions in the series "mm: remove
  page_maybe_dma_pinned() and page_mkclean()".

- More cleanup from David Hildenbrand, this time in the series
  "mm/memory_hotplug: use PageOffline() instead of PageReserved() for
  !ZONE_DEVICE".  It "enlightens memory hotplug more about PageOffline()
  pages" and permits the removal of some virtio-mem hacks.

- Barry Song's series "mm: clarify folio_add_new_anon_rmap() and
  __folio_add_anon_rmap()" is a cleanup to the anon folio handling in
  preparation for mTHP (multisize THP) swapin.

- Kefeng Wang's series "mm: improve clear and copy user folio"
  implements more folio conversions, this time in the area of large folio
  userspace copying.

- The series "Docs/mm/damon/maintaier-profile: document a mailing tool
  and community meetup series" tells people how to get better involved
  with other DAMON developers.  From SeongJae Park.

- A large series ("kmsan: Enable on s390") from Ilya Leoshkevich does
  that.

- David Hildenbrand sends along more cleanups, this time against the
  migration code.  The series is "mm/migrate: move NUMA hinting fault
  folio isolation + checks under PTL".

- Jan Kara has found quite a lot of strangenesses and minor errors in
  the readahead code.  He addresses this in the series "mm: Fix various
  readahead quirks".

- SeongJae Park's series "selftests/damon: test DAMOS tried regions and
  {min,max}_nr_regions" adds features and addresses errors in DAMON's self
  testing code.

- Gavin Shan has found a userspace-triggerable WARN in the pagecache
  code.  The series "mm/filemap: Limit page cache size to that supported
  by xarray" addresses this.  The series is marked cc:stable.

- Chengming Zhou's series "mm/ksm: cmp_and_merge_page() optimizations
  and cleanup" cleans up and slightly optimizes KSM.

- Roman Gushchin has separated the memcg-v1 and memcg-v2 code - lots of
  code motion.  The series (which also makes the memcg-v1 code
  Kconfigurable) are

  "mm: memcg: separate legacy cgroup v1 code and put under config
  option" and
  "mm: memcg: put cgroup v1-specific memcg data under CONFIG_MEMCG_V1"

- Dan Schatzberg's series "Add swappiness argument to memory.reclaim"
  adds an additional feature to this cgroup-v2 control file.

- The series "Userspace controls soft-offline pages" from Jiaqi Yan
  permits userspace to stop the kernel's automatic treatment of excessive
  correctable memory errors.  In order to permit userspace to monitor and
  handle this situation.

- Kefeng Wang's series "mm: migrate: support poison recover from migrate
  folio" teaches the kernel to appropriately handle migration from
  poisoned source folios rather than simply panicing.

- SeongJae Park's series "Docs/damon: minor fixups and improvements"
  does those things.

- In the series "mm/zsmalloc: change back to per-size_class lock"
  Chengming Zhou improves zsmalloc's scalability and memory utilization.

- Vivek Kasireddy's series "mm/gup: Introduce memfd_pin_folios() for
  pinning memfd folios" makes the GUP code use FOLL_PIN rather than bare
  refcount increments.  So these paes can first be moved aside if they
  reside in the movable zone or a CMA block.

- Andrii Nakryiko has added a binary ioctl()-based API to /proc/pid/maps
  for much faster reading of vma information.  The series is "query VMAs
  from /proc/<pid>/maps".

- In the series "mm: introduce per-order mTHP split counters" Lance Yang
  improves the kernel's presentation of developer information related to
  multisize THP splitting.

- Michael Ellerman has developed the series "Reimplement huge pages
  without hugepd on powerpc (8xx, e500, book3s/64)".  This permits
  userspace to use all available huge page sizes.

- In the series "revert unconditional slab and page allocator fault
  injection calls" Vlastimil Babka removes a performance-affecting and not
  very useful feature from slab fault injection.

----------------------------------------------------------------
Anastasia Belova (1):
      mm/memory_hotplug: prevent accessing by index=3D-1

Andrew Morton (3):
      mm/huge_memory.c: fix used-uninitialized
      Merge branch 'mm-hotfixes-stable' into mm-stable to pick up "mm: fix =
crashes from deferred split racing folio migration", needed by "mm: migrate=
: split folio_migrate_mapping()".
      mm/hugetlb.c: undo errant change

Andrii Nakryiko (6):
      fs/procfs: extract logic for getting VMA name constituents
      fs/procfs: implement efficient VMA querying API for /proc/<pid>/maps
      fs/procfs: add build ID fetching to PROCMAP_QUERY API
      docs/procfs: call out ioctl()-based PROCMAP_QUERY command existence
      tools: sync uapi/linux/fs.h header into tools subdir
      selftests/proc: add PROCMAP_QUERY ioctl tests

Aristeu Rozanski (1):
      hugetlb: force allocating surplus hugepages on mempolicy allowed nodes

Arnd Bergmann (1):
      udmabuf: add CONFIG_MMU dependency

Audra Mitchell (2):
      mm: update uffd-stress to handle EINVAL for unset config features
      mm: turn off test_uffdio_wp if CONFIG_PTE_MARKER_UFFD_WP is not confi=
gured.

Bang Li (5):
      mm: add update_mmu_tlb_range()
      mm: implement update_mmu_tlb() using update_mmu_tlb_range()
      mm: use update_mmu_tlb_range() to simplify code
      mm/shmem: fix input and output inconsistencies
      mm: thp: support "THPeligible" semantics for mTHP with anonymous shmem

Baolin Wang (7):
      mm: memory: extend finish_fault() to support large folio
      mm: shmem: add THP validation for PMD-mapped THP related statistics
      mm: shmem: add multi-size THP sysfs interface for anonymous shmem
      mm: shmem: add mTHP support for anonymous shmem
      mm: shmem: add mTHP size alignment in shmem_get_unmapped_area
      mm: shmem: add mTHP counters for anonymous shmem
      mm: memcontrol: add VM_BUG_ON_FOLIO() to catch lru folio in mem_cgrou=
p_migrate()

Barry Song (12):
      mm: remove the implementation of swap_free() and always use swap_free=
_nr()
      mm: introduce pte_move_swp_offset() helper which can move offset bidi=
rectionally
      mm: introduce arch_do_swap_page_nr() which allows restore metadata fo=
r nr pages
      mm: swap: reuse exclusive folio directly instead of wp page faults
      mm: introduce pmd|pte_needs_soft_dirty_wp helpers for softdirty write=
-protect
      mm: set pte writable while pte_soft_dirty() is true in do_swap_page()
      mm: extend rmap flags arguments for folio_add_new_anon_rmap
      mm: use folio_add_new_anon_rmap() if folio_test_anon(folio)=3D=3Dfalse
      mm: remove folio_test_anon(folio)=3D=3Dfalse path in __folio_add_anon=
_rmap()
      tools/mm: introduce a tool to assess swap entry allocation for thp_sw=
apout
      mm/vmscan: drop checking if _deferred_list is empty before using TTU_=
SYNC
      mm: zswap: fix zswap_never_enabled() for CONFIG_ZSWAP=3D=3DN

Brian Johannesmeyer (1):
      kmsan: introduce test_unpoison_memory()

Chengming Zhou (7):
      mm/ksm: refactor out try_to_merge_with_zero_page()
      mm/ksm: don't waste time searching stable tree for fast changing page
      mm/ksm: optimize the chain()/chain_prune() interfaces
      mm/zsmalloc: change back to per-size_class lock
      mm/zswap: use only one pool in zswap
      mm/zsmalloc: clarify class per-fullness zspage counts
      mm/zsmalloc: move record_obj() into obj_malloc()

Christoph Hellwig (1):
      mm: unexport vmf_insert_mixed_mkwrite

Christophe Leroy (17):
      mm: define __pte_leaf_size() to also take a PMD entry
      mm: provide mm_struct and address to huge_ptep_get()
      powerpc/mm: remove _PAGE_PSIZE
      powerpc/mm: fix __find_linux_pte() on 32 bits with PMD leaf entries
      powerpc/mm: allow hugepages without hugepd
      powerpc/8xx: fix size given to set_huge_pte_at()
      powerpc/8xx: rework support for 8M pages using contiguous PTE entries
      powerpc/8xx: simplify struct mmu_psize_def
      powerpc/e500: remove enc and ind fields from struct mmu_psize_def
      powerpc/e500: switch to 64 bits PGD on 85xx (32 bits)
      powerpc/e500: encode hugepage size in PTE bits
      powerpc/e500: don't pre-check write access on data TLB error
      powerpc/e500: free r10 for FIND_PTE
      powerpc/e500: use contiguous PMD instead of hugepd
      powerpc/64s: use contiguous PMD/PUD instead of HUGEPD
      powerpc/mm: remove hugepd leftovers
      mm: remove CONFIG_ARCH_HAS_HUGEPD

Chuanhua Han (3):
      mm: swap: introduce swap_free_nr() for batched swap_free()
      mm: swap: make should_try_to_free_swap() support large-folio
      mm: swap: entirely map large folios found in swapcache

Dan Carpenter (1):
      mm/zswap: fix a white space issue

Dan Schatzberg (2):
      mm: add defines for min/max swappiness
      mm: add swappiness=3D arg to memory.reclaim

David Hildenbrand (23):
      mm/memory: move page_count() check into validate_page_before_insert()
      mm/memory: cleanly support zeropage in vm_insert_page*(), vm_map_page=
s*() and vmf_insert_mixed()
      mm/rmap: sanity check that zeropages are not passed to RMAP
      fs/proc/task_mmu: indicate PM_FILE for PMD-mapped file THP
      fs/proc/task_mmu: don't indicate PM_MMAP_EXCLUSIVE without PM_PRESENT
      fs/proc/task_mmu: properly detect PM_MMAP_EXCLUSIVE per page of PMD-m=
apped THPs
      fs/proc/task_mmu: account non-present entries as "maybe shared, but n=
o idea how often"
      fs/proc: move page_mapcount() to fs/proc/internal.h
      Documentation/admin-guide/mm/pagemap.rst: drop "Using pagemap to do s=
omething useful"
      mm/highmem: reimplement totalhigh_pages() by walking zones
      mm/highmem: make nr_free_highpages() return "unsigned long"
      mm: update _mapcount and page_type documentation
      mm: allow reuse of the lower 16 bit of the page type with an actual t=
ype
      mm/zsmalloc: use a proper page type
      mm/page_alloc: clear PageBuddy using __ClearPageBuddy() for bad pages
      mm/filemap: reinitialize folio->_mapcount directly
      mm/mm_init: initialize page->_mapcount directly in __init_single_page=
()
      mm: pass meminit_context to __free_pages_core()
      mm/memory_hotplug: initialize memmap of !ZONE_DEVICE with PageOffline=
() instead of PageReserved()
      mm/memory_hotplug: skip adjust_managed_page_count() for PageOffline()=
 pages when offlining
      mm: read page_type using READ_ONCE
      mm/migrate: make migrate_misplaced_folio() return 0 on success
      mm/migrate: move NUMA hinting fault folio isolation + checks under PTL

Dev Jain (3):
      selftests/mm: va_high_addr_switch: reduce test noise
      selftests/mm: va_high_addr_switch: dynamically initialize testcases t=
o enable LPA2 testing
      mm: sparse: consistently use _nr

Donet Tom (2):
      selftest: mm: Test if hugepage does not get leaked during __bio_relea=
se_pages()
      hugetlbfs: ensure generic_hugetlb_get_unmapped_area() returns higher =
address than mmap_min_addr

Edward Liaw (3):
      selftests/mm: include linux/mman.h
      selftests/mm: guard defines from shm
      selftests: centralize -D_GNU_SOURCE=3D to CFLAGS in lib.mk

Eric Chanudet (1):
      mm/mm_init: use node's number of cpus in deferred_page_init_max_threa=
ds

Ho-Ren (Jack) Chuang (1):
      memory tier: consolidate the initialization of memory tiers

Hongfu Li (1):
      khugepaged: simplify the allocation of slab caches

Honggyu Kim (5):
      mm: make alloc_demote_folio externally invokable for migration
      mm: rename alloc_demote_folio to alloc_migrate_folio
      mm/migrate: add MR_DAMON to migrate_reason
      mm/damon/paddr: introduce DAMOS_MIGRATE_COLD action for demotion
      Docs/damon: document damos_migrate_{hot,cold}

Huang Ying (3):
      mm,swap: fix a theoretical underflow in readahead window calculation
      mm,swap: remove struct vma_swap_readahead
      mm,swap: simplify VMA based swap readahead window calculation

Hugh Dickins (1):
      mm: simplify folio_migrate_mapping()

Hyeongtak Ji (2):
      mm/damon/sysfs-schemes: add target_nid on sysfs-schemes
      mm/damon/paddr: introduce DAMOS_MIGRATE_HOT action for promotion

Illia Ostapyshyn (1):
      mm/vmscan: update stale references to shrink_page_list

Ilya Leoshkevich (40):
      ftrace: unpoison ftrace_regs in ftrace_ops_list_func()
      kmsan: make the tests compatible with kmsan.panic=3D1
      kmsan: disable KMSAN when DEFERRED_STRUCT_PAGE_INIT is enabled
      kmsan: increase the maximum store size to 4096
      kmsan: fix is_bad_asm_addr() on arches with overlapping address spaces
      kmsan: fix kmsan_copy_to_user() on arches with overlapping address sp=
aces
      kmsan: remove a useless assignment from kmsan_vmap_pages_range_noflus=
h()
      kmsan: remove an x86-specific #include from kmsan.h
      kmsan: expose kmsan_get_metadata()
      kmsan: export panic_on_kmsan
      kmsan: allow disabling KMSAN checks for the current task
      kmsan: introduce memset_no_sanitize_memory()
      kmsan: support SLAB_POISON
      kmsan: use ALIGN_DOWN() in kmsan_get_metadata()
      kmsan: do not round up pg_data_t size
      kmsan: expose KMSAN_WARN_ON()
      mm: slub: let KMSAN access metadata
      mm: slub: disable KMSAN when checking the padding bytes
      mm: kfence: disable KMSAN when checking the canary
      lib/zlib: unpoison DFLTCC output buffers
      kmsan: accept ranges starting with 0 on s390
      s390/boot: turn off KMSAN
      s390: use a larger stack for KMSAN
      s390/boot: add the KMSAN runtime stub
      s390/checksum: add a KMSAN check
      s390/cpacf: unpoison the results of cpacf_trng()
      s390/cpumf: unpoison STCCTM output buffer
      s390/diag: unpoison diag224() output buffer
      s390/ftrace: unpoison ftrace_regs in kprobe_ftrace_handler()
      s390/irqflags: do not instrument arch_local_irq_*() with KMSAN
      s390/mm: define KMSAN metadata for vmalloc and modules
      s390/string: add KMSAN support
      s390/traps: unpoison the kernel_stack_overflow()'s pt_regs
      s390/uaccess: add KMSAN support to put_user() and get_user()
      s390/uaccess: add the missing linux/instrumented.h #include
      s390/unwind: disable KMSAN checks
      s390/kmsan: implement the architecture-specific functions
      kmsan: enable on s390
      kmsan: add missing __user tags
      kmsan: do not pass NULL pointers as 0

JaeJoon Jung (1):
      maple_tree: modified return type of mas_wr_store_entry()

Jan Kara (12):
      Revert "mm/writeback: fix possible divide-by-zero in wb_dirty_limits(=
), again"
      mm: avoid overflows in dirty throttling logic
      readahead: make sure sync readahead reads needed page
      filemap: fix page_cache_next_miss() when no hole found
      readahead: properly shorten readahead when falling back to do_page_ca=
che_ra()
      readahead: drop pointless index from force_page_cache_ra()
      readahead: drop index argument of page_cache_async_readahead()
      readahead: drop dead code in page_cache_ra_order()
      readahead: drop dead code in ondemand_readahead()
      readahead: disentangle async and sync readahead
      readahead: fold try_context_readahead() into its single caller
      readahead: simplify gotos in page_cache_sync_ra()

Jane Chu (5):
      mm/memory-failure: try to send SIGBUS even if unmap failed
      mm/madvise: add MF_ACTION_REQUIRED to madvise(MADV_HWPOISON)
      mm/memory-failure: improve memory failure action_result messages
      mm/memory-failure: move hwpoison_filter() higher up
      mm/memory-failure: send SIGBUS in the event of thp split fail

Javier Martinez Canillas (1):
      mm/Kconfig: mention arm64 in DEFAULT_MMAP_MIN_ADDR symbol help text

Jeff Johnson (9):
      mm/hwpoison: add MODULE_DESCRIPTION()
      mm/dmapool: add MODULE_DESCRIPTION()
      mm/kfence: add MODULE_DESCRIPTION()
      mm/zsmalloc: add MODULE_DESCRIPTION()
      kmemleak-test: add missing MODULE_DESCRIPTION() macro
      test_xarray: add missing MODULE_DESCRIPTION() macro
      ubsan: add missing MODULE_DESCRIPTION() macro
      test_maple_tree: add the missing MODULE_DESCRIPTION() macro
      lib: test_hmm: add missing MODULE_DESCRIPTION() macro

Jiapeng Chong (1):
      mm: userfaultfd: use swap() in double_pt_lock()

Jiaqi Yan (5):
      mm/memory-failure: refactor log format in unpoison_memory
      mm/memory-failure: refactor log format in soft offline code
      mm/memory-failure: userspace controls soft-offlining pages
      selftest/mm: test enable_soft_offline behaviors
      docs: mm: add enable_soft_offline sysctl

Jinliang Zheng (1):
      mm: optimize the redundant loop of mm_update_owner_next()

Johannes Weiner (2):
      mm: vmscan: restore incremental cgroup iteration
      mm: remove CONFIG_MEMCG_KMEM

John Hubbard (6):
      selftests/mm: mseal, self_elf: fix missing __NR_mseal
      selftests/mm: mseal, self_elf: factor out test macros and other dupli=
cated items
      selftests/mm: mseal, self_elf: rename TEST_END_CHECK to REPORT_TEST_P=
ASS
      selftests/mm: fix vm_util.c build failures: add snapshot of fs.h
      selftests/mm: kvm, mdwe fixes to avoid requiring "make headers"
      selftests/mm: remove local __NR_* definitions

Jonathan Cameron (1):
      mm/memory_hotplug: drop memblock_phys_free() call in try_remove_memor=
y()

Kairui Song (10):
      nilfs2: drop usage of page_index
      ceph: drop usage of page_index
      NFS: remove nfs_page_lengthg and usage of page_index
      afs: drop usage of folio_file_pos
      netfs: drop usage of folio_file_pos
      nfs: drop usage of folio_file_pos
      mm/swap: get the swap device offset directly
      mm: remove page_file_offset and folio_file_pos
      mm: drop page_index and simplify folio_index
      mm/swap: reduce swap cache search space

Kees Cook (1):
      mm/kmemleak: replace strncpy() with strscpy()

Kefeng Wang (28):
      mm: add folio_alloc_mpol()
      mm: mempolicy: use folio_alloc_mpol_noprof() in vma_alloc_folio_nopro=
f()
      mm: mempolicy: use folio_alloc_mpol() in alloc_migration_target_by_mp=
ol()
      mm: shmem: use folio_alloc_mpol() in shmem_alloc_folio()
      mm: memcontrol: remove page_memcg()
      rmap: remove DEFINE_PAGE_VMA_WALK()
      mm: migrate: simplify __buffer_migrate_folio()
      mm: migrate_device: use a newfolio in __migrate_device_pages()
      mm: migrate_device: unify migrate folio for MIGRATE_SYNC_NO_COPY
      mm: migrate: remove migrate_folio_extra()
      mm: remove MIGRATE_SYNC_NO_COPY mode
      mm: ksm: drop KSM_KMEM_CACHE()
      fs/proc/task_mmu: use folio API in pte_is_pinned()
      mm: remove page_maybe_dma_pinned()
      fb_defio: use a folio in fb_deferred_io_work()
      mm: remove page_mkclean()
      mm: memory: convert clear_huge_page() to folio_zero_user()
      mm: memory: use folio in struct copy_subpage_arg
      mm: memory: improve copy_user_large_folio()
      mm: memory: rename pages_per_huge_page to nr_pages
      mm: refactor folio_undo_large_rmappable()
      mm: move memory_failure_queue() into copy_mc_[user]_highpage()
      mm: add folio_mc_copy()
      mm: migrate: split folio_migrate_mapping()
      mm: migrate: support poisoned recover from migrate folio
      fs: hugetlbfs: support poisoned recover from hugetlbfs_migrate_folio()
      mm: migrate: remove folio_migrate_copy()
      mm: swap_state: use folio_alloc_mpol() in __read_swap_cache_async()

Kemeng Shi (8):
      writeback: factor out wb_bg_dirty_limits to remove repeated code
      writeback: add general function domain_dirty_avail to calculate dirty=
 and avail of domain
      writeback: factor out domain_over_bg_thresh to remove repeated code
      writeback: factor out code of freerun to remove repeated code
      writeback: factor out wb_dirty_freerun to remove more repeated freeru=
n code
      writeback: factor out balance_domain_limits to remove repeated code
      writeback: factor out wb_dirty_exceeded to remove repeated code
      writeback: factor out balance_wb_limits to remove repeated code

Lance Yang (6):
      mm/rmap: remove duplicated exit code in pagewalk loop
      mm/rmap: integrate PMD-mapped folio splitting into pagewalk loop
      mm/vmscan: avoid split lazyfree THP during shrink_folio_list()
      mm/mlock: implement folio_mlock_step() using folio_pte_batch()
      mm: add per-order mTHP split counters
      mm: add docs for per-order mTHP split counters

Leesoo Ahn (1):
      mm/sparse: use MEMBLOCK_ALLOC_ACCESSIBLE enum instead of 0

Maarten Lankhorst (1):
      mm/page_counter: move calculating protection values to page_counter

Mateusz Guzik (1):
      mm: batch unlink_file_vma calls in free_pgd_range

Matthew Wilcox (Oracle) (2):
      mm: remove page_mapping()
      mm/memory-failure: stop setting the folio error flag

Miaohe Lin (16):
      mm/memory-failure: simplify put_ref_page()
      mm/memory-failure: remove MF_MSG_SLAB
      mm/memory-failure: add macro GET_PAGE_MAX_RETRY_NUM
      mm/memory-failure: save some page_folio() calls
      mm/memory-failure: remove unneeded empty string
      mm/memory-failure: remove confusing initialization to count
      mm/memory-failure: don't export hwpoison_filter() when !CONFIG_HWPOIS=
ON_INJECT
      mm/memory-failure: use helper macro task_pid_nr()
      mm/memory-failure: remove obsolete comment in unpoison_memory()
      mm/memory-failure: move some function declarations into internal.h
      mm/memory-failure: fix comment of get_hwpoison_page()
      mm/memory-failure: remove obsolete comment in kill_proc()
      mm/memory-failure: correct comment in me_swapcache_dirty
      mm/memory-failure: remove obsolete MF_MSG_DIFFERENT_COMPOUND
      mm/hugetlb: fix possible recursive locking detected warning
      mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetl=
b folio

Michael Ellerman (6):
      powerpc/64e: remove unused IBM HTW code
      powerpc/64e: split out nohash Book3E 64-bit code
      powerpc/64e: drop E500 ifdefs in 64-bit code
      powerpc/64e: drop MMU_FTR_TYPE_FSL_E checks in 64-bit code
      powerpc/64e: consolidate TLB miss handler patching
      powerpc/64e: drop unused TLB miss handlers

Muhammad Usama Anjum (1):
      selftests: mm: check return values

Oleg Nesterov (3):
      memcg: mm_update_next_owner: kill the "retry" logic
      memcg: mm_update_next_owner: move for_each_thread() into try_to_set_o=
wner()
      get_task_mm: check PF_KTHREAD lockless

Oscar Salvador (3):
      mm/hugetlb: drop node_alloc_noretry from alloc_fresh_hugetlb_folio
      arch/x86: do not explicitly clear Reserved flag in free_pagetable
      mm/hugetlb: guard dequeue_hugetlb_folio_nodemask against NUMA_NO_NODE=
 uses

Pankaj Raghav (1):
      selftests/mm: use asm volatile to not optimize mmap read variable

Pei Li (1):
      mm: ignore data-race in __swap_writepage

Peter Xu (2):
      mm: drop leftover comment references to pxx_huge()
      mm/migrate: putback split folios when numa hint migration fails

Ran Xiaokai (2):
      mm/huge_memory: mark racy access onhuge_anon_orders_always
      kpageflags: detect isolated KPF_THP folios

Roman Gushchin (26):
      mm: memcg: introduce memcontrol-v1.c
      mm: memcg: move soft limit reclaim code to memcontrol-v1.c
      mm: memcg: rename soft limit reclaim-related functions
      mm: memcg: move charge migration code to memcontrol-v1.c
      mm: memcg: rename charge move-related functions
      mm: memcg: move legacy memcg event code into memcontrol-v1.c
      mm: memcg: rename memcg_check_events()
      mm: memcg: move cgroup v1 oom handling code into memcontrol-v1.c
      mm: memcg: rename memcg_oom_recover()
      mm: memcg: move cgroup v1 interface files to memcontrol-v1.c
      mm: memcg: make memcg1_update_tree() static
      mm: memcg: group cgroup v1 memcg related declarations
      mm: memcg: put cgroup v1-specific code under a config option
      MAINTAINERS: add mm/memcontrol-v1.c/h to the list of maintained files
      mm: memcg: move memcg_account_kmem() to memcontrol-v1.c
      mm: memcg: factor out legacy socket memory accounting code
      mm: memcg: guard cgroup v1-specific code in mem_cgroup_print_oom_memi=
nfo()
      mm: memcg: gather memcg1-specific fields initialization in memcg1_mem=
cg_init()
      mm: memcg: guard memcg1-specific fields accesses in mm/memcontrol.c
      mm: memcg: put memcg1-specific struct mem_cgroup's members under CONF=
IG_MEMCG_V1
      mm: memcg: guard memcg1-specific members of struct mem_cgroup_per_node
      mm: memcg: put struct task_struct::memcg_in_oom under CONFIG_MEMCG_V1
      mm: memcg: put struct task_struct::in_user_fault under CONFIG_MEMCG_V1
      mm: memcg: drop obsolete cache line padding in struct mem_cgroup
      mm: memcg: add cache line padding to mem_cgroup_per_node
      mm: memcg1: convert charge move flags to unsigned long long

Ryan Roberts (2):
      mm: fix khugepaged activation policy
      mm: shmem: rename mTHP shmem counters

Ryusuke Konishi (3):
      nilfs2: fix inode number range checks
      nilfs2: add missing check for inode numbers on directory entries
      nilfs2: fix incorrect inode allocation from reserved inodes

SeongJae Park (32):
      mm/damon/core: implement DAMOS quota goals online commit function
      mm/damon/core: implement DAMON context commit function
      mm/damon/sysfs: use damon_commit_ctx()
      mm/damon/sysfs-schemes: use damos_commit_quota_goals()
      mm/damon/sysfs: remove unnecessary online tuning handling code
      mm/damon/sysfs: rename damon_sysfs_set_targets() to ...add_targets()
      mm/damon/sysfs-schemes: remove unnecessary online tuning handling code
      mm/damon/sysfs-schemes: rename *_set_{schemes,scheme_filters,quota_sc=
ore,schemes}()
      mm/damon/reclaim: use damon_commit_ctx()
      mm/damon/reclaim: remove unnecessary code for online tuning
      mm/damon/lru_sort: use damon_commit_ctx()
      mm/damon/lru_sort: remove unnecessary online tuning handling code
      Docs/mm/damon/maintainer-profile: introduce HacKerMaiL
      Docs/mm/damon/maintainer-profile: document DAMON community meetups
      selftests/damon/access_memory: use user-defined region size
      selftests/damon/_damon_sysfs: support schemes_update_tried_regions
      selftests/damon: implement a program for even-numbered memory regions=
 access
      selftests/damon: implement DAMOS tried regions test
      selftests/damon/_damon_sysfs: implement kdamonds stop function
      selftests/damon: implement test for min/max_nr_regions
      _damon_sysfs: implement commit() for online parameters update
      selftests/damon/damon_nr_regions: test online-tuned max_nr_regions
      mm/damon/paddr: initialize nr_succeeded in __damon_pa_migrate_folio_l=
ist()
      Docs/mm/damon/design: fix two typos
      Docs/mm/damon/design: clarify regions merging operation
      Docs/admin-guide/mm/damon/start: add access pattern snapshot example
      Docs/mm/damon/design: add links from overall architecture to sections=
 of details
      Docs/mm/damon/design: move 'Configurable Operations Set' section into=
 'Operations Set Layer' section
      Docs/mm/damon/design: remove 'Programmable Modules' section in favor =
of 'Modules' section
      Docs/mm/damon/design: add links to sections of DAMON sysfs interface =
usage doc
      Docs/mm/damon/index: add links to design
      Docs/mm/damon/index: add links to admin-guide doc

Sergey Senozhatsky (1):
      zsmalloc: rename class stat mutators

Shakeel Butt (2):
      mm: vmscan: reset sc->priority on retry
      memcg: rearrange fields of mem_cgroup_per_node

Shubhang Kaushik OS (1):
      vmalloc: modify the alloc_vmap_area() error message for better diagno=
stics

Sidhartha Kumar (2):
      mm/hugetlb: remove {Set,Clear}Hpage macros
      mm/hugetlb: mm/memory_hotplug: use a folio in scan_movable_pages()

Sourav Panda (1):
      mm: report per-page metadata information

Suren Baghdasaryan (4):
      mm: add comments for allocation helpers explaining why they are macros
      lib: add missing newline character in the warning message
      lib: reuse page_ext_data() to obtain codetag_ref
      alloc_tag: fix page_ext_get/page_ext_put sequence during page splitti=
ng

Tetsuo Handa (1):
      mm: mmap_lock: replace get_memcg_path_buf() with on-stack buffer

Thomas Wei=DFschuh (1):
      mm/hugetlb: constify ctl_table arguments of utility functions

Tvrtko Ursulin (1):
      mm/numa_balancing: teach mpol_to_str about the balancing mode

Uros Bizjak (2):
      percpu: add __this_cpu_try_cmpxchg()
      mm/vmalloc: use __this_cpu_try_cmpxchg() in preload_this_cpu_lock()

Usama Arif (1):
      mm: do not start/end writeback for pages stored in zswap

Vivek Kasireddy (8):
      mm/gup: introduce unpin_folio/unpin_folios helpers
      mm/gup: introduce check_and_migrate_movable_folios()
      mm/gup: introduce memfd_pin_folios() for pinning memfd folios
      udmabuf: use vmf_insert_pfn and VM_PFNMAP for handling mmap
      udmabuf: add back support for mapping hugetlb pages
      udmabuf: convert udmabuf driver to use folios
      udmabuf: pin the pages using memfd_pin_folios() API
      selftests/udmabuf: add tests to verify data after page migration

Vlastimil Babka (2):
      mm, slab: put should_failslab() back behind CONFIG_SHOULD_FAILSLAB
      mm, page_alloc: put should_fail_alloc_page() back behing CONFIG_FAIL_=
PAGE_ALLOC

Wei Yang (10):
      mm/mm_init.c: print mem_init info after defer_init is done
      mm/mm_init.c: simplify logic of deferred_[init|free]_pages
      mm/sparse: nr_pages won't be 0
      mm/mm_init.c: move build check on MAX_ZONELISTS out of ifdef
      mm/page_alloc: fix a typo in comment about GFP flag
      mm/page_alloc: reword the comment of buddy_merge_likely()
      kernel/fork.c: get totalram_pages from memblock to calculate max_thre=
ads
      kernel/fork.c: put set_max_threads()/task_struct_whitelist() in __ini=
t section
      mm/page_alloc: remove prefetchw() on freeing page to buddy system
      mm/page_alloc: put __free_pages_core() in __meminit section

Xiu Jianfeng (5):
      mm/hugetlb_cgroup: identify the legacy using cgroup_subsys_on_dfl()
      mm/hugetlb_cgroup: prepare cftypes based on template
      mm/hugetlb_cgroup: switch to the new cftypes
      mm: memcg: remove redundant seq_buf_has_overflowed()
      mm: memcg: adjust the warning when seq_buf overflows

Yifei Li (1):
      mm/memory-failure: use helper llist_for_each_entry()

Yosry Ahmed (8):
      mm: zswap: use sg_set_folio() in zswap_{compress/decompress}()
      mm :zswap: use kmap_local_folio() in zswap_load()
      mm: zswap: make same_filled functions folio-friendly
      mm: rmap: abstract updating per-node and per-memcg stats
      mm: swap: remove 'synchronous' argument to swap_read_folio()
      mm: zswap: rename is_zswap_enabled() to zswap_is_enabled()
      mm: zswap: add zswap_never_enabled()
      mm: zswap: handle incorrect attempts to load large folios

Yu Zhao (4):
      mm/truncate: batch-clear shadow entries
      mm/mglru: fix div-by-zero in vmpressure_calc_level()
      mm/mglru: fix overshooting shrinker memory
      mm/mglru: fix ineffective protection calculation

yangge (1):
      mm/gup: clear the LRU flag of a page before adding to LRU batch

 Documentation/ABI/testing/sysfs-kernel-mm-damon    |    6 +
 Documentation/admin-guide/cgroup-v2.rst            |   18 +-
 Documentation/admin-guide/kernel-parameters.txt    |    9 +-
 Documentation/admin-guide/mm/damon/start.rst       |   46 +-
 Documentation/admin-guide/mm/damon/usage.rst       |   10 +-
 Documentation/admin-guide/mm/pagemap.rst           |   25 +-
 Documentation/admin-guide/mm/transhuge.rst         |   85 +-
 Documentation/admin-guide/sysctl/vm.rst            |   38 +
 Documentation/core-api/pin_user_pages.rst          |   18 +-
 Documentation/dev-tools/kmsan.rst                  |   11 +-
 Documentation/filesystems/proc.rst                 |    9 +
 Documentation/mm/arch_pgtable_helpers.rst          |    4 -
 Documentation/mm/damon/design.rst                  |  149 +-
 Documentation/mm/damon/index.rst                   |   22 +-
 Documentation/mm/damon/maintainer-profile.rst      |   36 +
 Documentation/mm/unevictable-lru.rst               |   10 +-
 MAINTAINERS                                        |    2 +
 arch/arm/include/asm/cacheflush.h                  |    2 +-
 arch/arm/include/asm/hugetlb-3level.h              |    4 +-
 arch/arm64/include/asm/cacheflush.h                |    2 +-
 arch/arm64/include/asm/hugetlb.h                   |    2 +-
 arch/arm64/mm/hugetlbpage.c                        |    2 +-
 arch/loongarch/include/asm/pgtable.h               |    4 +-
 arch/mips/include/asm/pgtable.h                    |    4 +-
 arch/mips/mm/cache.c                               |    2 +-
 arch/powerpc/Kconfig                               |    1 -
 arch/powerpc/include/asm/book3s/32/pgalloc.h       |    2 -
 arch/powerpc/include/asm/book3s/64/hash-4k.h       |   15 -
 arch/powerpc/include/asm/book3s/64/hash.h          |   40 +-
 arch/powerpc/include/asm/book3s/64/hugetlb.h       |   38 -
 arch/powerpc/include/asm/book3s/64/pgtable-4k.h    |   47 -
 arch/powerpc/include/asm/book3s/64/pgtable-64k.h   |   20 -
 arch/powerpc/include/asm/book3s/64/pgtable.h       |   22 +-
 arch/powerpc/include/asm/hugetlb.h                 |   15 +-
 arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h   |   38 +-
 arch/powerpc/include/asm/nohash/32/mmu-8xx.h       |    9 +-
 arch/powerpc/include/asm/nohash/32/pte-44x.h       |    3 -
 arch/powerpc/include/asm/nohash/32/pte-85xx.h      |    3 -
 arch/powerpc/include/asm/nohash/32/pte-8xx.h       |   58 +-
 arch/powerpc/include/asm/nohash/hugetlb-e500.h     |   39 +-
 arch/powerpc/include/asm/nohash/mmu-e500.h         |    6 +-
 arch/powerpc/include/asm/nohash/pgalloc.h          |    2 -
 arch/powerpc/include/asm/nohash/pgtable.h          |   46 +-
 arch/powerpc/include/asm/nohash/pte-e500.h         |   63 +-
 arch/powerpc/include/asm/page.h                    |   32 -
 arch/powerpc/include/asm/pgtable-be-types.h        |   10 -
 arch/powerpc/include/asm/pgtable-types.h           |   13 +-
 arch/powerpc/include/asm/pgtable.h                 |    3 +
 arch/powerpc/kernel/exceptions-64e.S               |    4 +-
 arch/powerpc/kernel/head_85xx.S                    |   70 +-
 arch/powerpc/kernel/head_8xx.S                     |   10 +-
 arch/powerpc/kernel/setup_64.c                     |    6 +-
 arch/powerpc/mm/book3s64/hash_utils.c              |   11 +-
 arch/powerpc/mm/book3s64/hugetlbpage.c             |   10 +
 arch/powerpc/mm/book3s64/pgtable.c                 |   12 -
 arch/powerpc/mm/hugetlbpage.c                      |  455 +-
 arch/powerpc/mm/init-common.c                      |    8 +-
 arch/powerpc/mm/kasan/8xx.c                        |   21 +-
 arch/powerpc/mm/nohash/8xx.c                       |   43 +-
 arch/powerpc/mm/nohash/Makefile                    |    2 +-
 arch/powerpc/mm/nohash/book3e_pgtable.c            |    4 +-
 arch/powerpc/mm/nohash/tlb.c                       |  407 +-
 arch/powerpc/mm/nohash/tlb_64e.c                   |  314 ++
 arch/powerpc/mm/nohash/tlb_low_64e.S               |  428 +-
 arch/powerpc/mm/pgtable.c                          |   94 +-
 arch/powerpc/mm/pgtable_32.c                       |    2 +-
 arch/riscv/include/asm/hugetlb.h                   |    2 +-
 arch/riscv/include/asm/pgtable.h                   |    4 +-
 arch/riscv/mm/hugetlbpage.c                        |    2 +-
 arch/s390/Kconfig                                  |    1 +
 arch/s390/Makefile                                 |    2 +-
 arch/s390/boot/Makefile                            |    3 +
 arch/s390/boot/kmsan.c                             |    6 +
 arch/s390/boot/startup.c                           |    7 +
 arch/s390/boot/string.c                            |   16 +
 arch/s390/include/asm/checksum.h                   |    2 +
 arch/s390/include/asm/cpacf.h                      |    3 +
 arch/s390/include/asm/cpu_mf.h                     |    6 +
 arch/s390/include/asm/hugetlb.h                    |    4 +-
 arch/s390/include/asm/irqflags.h                   |   17 +-
 arch/s390/include/asm/kmsan.h                      |   59 +
 arch/s390/include/asm/pgtable.h                    |   12 +
 arch/s390/include/asm/string.h                     |   20 +-
 arch/s390/include/asm/thread_info.h                |    2 +-
 arch/s390/include/asm/uaccess.h                    |  112 +-
 arch/s390/kernel/diag.c                            |   10 +-
 arch/s390/kernel/ftrace.c                          |    2 +
 arch/s390/kernel/traps.c                           |    6 +
 arch/s390/kernel/unwind_bc.c                       |    4 +
 arch/s390/mm/hugetlbpage.c                         |    4 +-
 arch/sparc/mm/init_64.c                            |    2 +-
 arch/x86/mm/init_64.c                              |   14 -
 arch/x86/mm/pat/set_memory.c                       |    4 +-
 arch/xtensa/include/asm/pgtable.h                  |    6 +-
 arch/xtensa/mm/tlb.c                               |    6 +-
 drivers/acpi/numa/hmat.c                           |    5 +-
 drivers/block/zram/Kconfig                         |    1 +
 drivers/dma-buf/Kconfig                            |    1 +
 drivers/dma-buf/udmabuf.c                          |  232 +-
 drivers/hv/hv_balloon.c                            |    5 +-
 drivers/s390/char/sclp.c                           |    2 +-
 drivers/video/fbdev/core/fb_defio.c                |   13 +-
 drivers/virtio/virtio_mem.c                        |   29 +-
 drivers/xen/balloon.c                              |    9 +-
 fs/afs/dir.c                                       |    6 +-
 fs/afs/dir_edit.c                                  |    4 +-
 fs/aio.c                                           |   15 +-
 fs/btrfs/relocation.c                              |    3 +-
 fs/btrfs/send.c                                    |    2 +-
 fs/ceph/dir.c                                      |    2 +-
 fs/ceph/inode.c                                    |    2 +-
 fs/hugetlbfs/inode.c                               |   20 +-
 fs/netfs/buffered_read.c                           |    4 +-
 fs/netfs/buffered_write.c                          |    2 +-
 fs/nfs/file.c                                      |    2 +-
 fs/nfs/internal.h                                  |   19 -
 fs/nfs/iostat.h                                    |    4 +
 fs/nfs/nfstrace.h                                  |    4 +-
 fs/nfs/write.c                                     |    6 +-
 fs/nilfs2/bmap.c                                   |   10 +-
 fs/proc/internal.h                                 |   33 +
 fs/proc/page.c                                     |   42 +-
 fs/proc/task_mmu.c                                 |  503 ++-
 fs/userfaultfd.c                                   |    2 +-
 include/acpi/platform/aclinuxex.h                  |    9 +-
 include/asm-generic/hugetlb.h                      |    2 +-
 include/linux/alloc_tag.h                          |    2 +-
 include/linux/bpf.h                                |    8 +-
 include/linux/buffer_head.h                        |    2 +-
 include/linux/cgroup-defs.h                        |    2 -
 include/linux/damon.h                              |   17 +-
 include/linux/dma-fence-chain.h                    |    4 +
 include/linux/fault-inject.h                       |   11 +-
 include/linux/gfp.h                                |    8 +
 include/linux/hid_bpf.h                            |    5 +
 include/linux/highmem-internal.h                   |   17 +-
 include/linux/highmem.h                            |    8 +-
 include/linux/huge_mm.h                            |   53 +-
 include/linux/hugetlb.h                            |   30 +-
 include/linux/jbd2.h                               |   10 +
 include/linux/kmsan.h                              |   76 +
 include/linux/kmsan_types.h                        |    2 +-
 include/linux/list_lru.h                           |    2 +-
 include/linux/memblock.h                           |    2 -
 include/linux/memcontrol.h                         |  363 +-
 include/linux/memfd.h                              |    5 +
 include/linux/memory-tiers.h                       |    2 +
 include/linux/memory_hotplug.h                     |    4 +-
 include/linux/migrate.h                            |   10 +-
 include/linux/migrate_mode.h                       |    6 +-
 include/linux/mm.h                                 |   81 +-
 include/linux/mm_types.h                           |   33 +-
 include/linux/mmzone.h                             |    2 +
 include/linux/page-flags.h                         |   82 +-
 include/linux/page_counter.h                       |    4 +
 include/linux/pagemap.h                            |   33 +-
 include/linux/percpu-defs.h                        |    6 +
 include/linux/pgalloc_tag.h                        |    7 +-
 include/linux/pgtable.h                            |   40 +-
 include/linux/rmap.h                               |   45 +-
 include/linux/sched.h                              |    9 +-
 include/linux/shmem_fs.h                           |    9 +
 include/linux/skbuff.h                             |    8 +
 include/linux/skmsg.h                              |    5 +
 include/linux/slab.h                               |   12 +-
 include/linux/swap.h                               |   14 +-
 include/linux/swapops.h                            |    4 +-
 include/linux/vmstat.h                             |    4 +
 include/linux/zswap.h                              |   10 +-
 include/ras/ras_event.h                            |    4 +-
 include/trace/events/kmem.h                        |    4 +-
 include/trace/events/migrate.h                     |    3 +-
 include/uapi/linux/fs.h                            |  158 +-
 init/Kconfig                                       |   18 +-
 kernel/bpf/memalloc.c                              |    9 +-
 kernel/bpf/syscall.c                               |    6 +-
 kernel/bpf/verifier.c                              |    4 +
 kernel/events/core.c                               |    2 +-
 kernel/events/uprobes.c                            |    2 +-
 kernel/exit.c                                      |   81 +-
 kernel/fork.c                                      |   18 +-
 kernel/power/swap.c                                |    5 +-
 kernel/trace/ftrace.c                              |    1 +
 lib/maple_tree.c                                   |   15 +-
 lib/test_hmm.c                                     |    1 +
 lib/test_maple_tree.c                              |    1 +
 lib/test_ubsan.c                                   |    1 +
 lib/test_xarray.c                                  |    1 +
 lib/zlib_dfltcc/dfltcc.h                           |    1 +
 lib/zlib_dfltcc/dfltcc_util.h                      |   28 +
 mm/Kconfig                                         |   23 +-
 mm/Makefile                                        |    2 +
 mm/balloon_compaction.c                            |    8 -
 mm/damon/core.c                                    |  338 +-
 mm/damon/dbgfs.c                                   |    2 +-
 mm/damon/lru_sort.c                                |   56 +-
 mm/damon/paddr.c                                   |  157 +
 mm/damon/reclaim.c                                 |   65 +-
 mm/damon/sysfs-common.h                            |    2 +-
 mm/damon/sysfs-schemes.c                           |  127 +-
 mm/damon/sysfs-test.h                              |   10 +-
 mm/damon/sysfs.c                                   |   81 +-
 mm/damon/vaddr.c                                   |    6 +-
 mm/dmapool_test.c                                  |    1 +
 mm/fail_page_alloc.c                               |    4 +-
 mm/failslab.c                                      |   14 +-
 mm/filemap.c                                       |    8 +-
 mm/folio-compat.c                                  |    6 -
 mm/gup.c                                           |  510 +--
 mm/highmem.c                                       |   21 +-
 mm/hmm.c                                           |    2 +-
 mm/huge_memory.c                                   |  193 +-
 mm/hugetlb.c                                       |  137 +-
 mm/hugetlb_cgroup.c                                |  305 +-
 mm/hugetlb_vmemmap.c                               |   17 +-
 mm/hwpoison-inject.c                               |    1 +
 mm/internal.h                                      |   75 +-
 mm/kfence/core.c                                   |   17 +-
 mm/kfence/kfence.h                                 |    2 +-
 mm/kfence/kfence_test.c                            |    1 +
 mm/khugepaged.c                                    |   40 +-
 mm/kmemleak.c                                      |    6 +-
 mm/kmsan/core.c                                    |    5 +-
 mm/kmsan/hooks.c                                   |   38 +-
 mm/kmsan/init.c                                    |    9 +-
 mm/kmsan/instrumentation.c                         |   15 +-
 mm/kmsan/kmsan.h                                   |   39 +-
 mm/kmsan/kmsan_test.c                              |   32 +
 mm/kmsan/report.c                                  |   10 +-
 mm/kmsan/shadow.c                                  |    9 +-
 mm/ksm.c                                           |  261 +-
 mm/list_lru.c                                      |   14 +-
 mm/madvise.c                                       |    2 +-
 mm/memcontrol-v1.c                                 | 2969 +++++++++++++
 mm/memcontrol-v1.h                                 |  147 +
 mm/memcontrol.c                                    | 4417 +++-------------=
----
 mm/memfd.c                                         |   45 +
 mm/memory-failure.c                                |  259 +-
 mm/memory-tiers.c                                  |   54 +-
 mm/memory.c                                        |  376 +-
 mm/memory_hotplug.c                                |   52 +-
 mm/mempolicy.c                                     |   38 +-
 mm/migrate.c                                       |  213 +-
 mm/migrate_device.c                                |   24 +-
 mm/mincore.c                                       |    4 +-
 mm/mlock.c                                         |   19 +-
 mm/mm_init.c                                       |   96 +-
 mm/mmap.c                                          |   41 +
 mm/mmap_lock.c                                     |  175 +-
 mm/mprotect.c                                      |    4 +-
 mm/mremap.c                                        |    2 +-
 mm/page-writeback.c                                |  319 +-
 mm/page_alloc.c                                    |   78 +-
 mm/page_counter.c                                  |  173 +
 mm/page_ext.c                                      |   32 +-
 mm/page_io.c                                       |   22 +-
 mm/pagewalk.c                                      |   57 +-
 mm/percpu-internal.h                               |    6 +-
 mm/percpu.c                                        |    6 +-
 mm/readahead.c                                     |  276 +-
 mm/rmap.c                                          |  169 +-
 mm/shmem.c                                         |  359 +-
 mm/slab.h                                          |    2 +-
 mm/slab_common.c                                   |   10 +-
 mm/slub.c                                          |   51 +-
 mm/sparse-vmemmap.c                                |    8 +
 mm/sparse.c                                        |   28 +-
 mm/swap.c                                          |   51 +-
 mm/swap.h                                          |   30 +-
 mm/swap_state.c                                    |  120 +-
 mm/swapfile.c                                      |   75 +-
 mm/truncate.c                                      |   70 +-
 mm/userfaultfd.c                                   |   14 +-
 mm/util.c                                          |   17 +
 mm/vmalloc.c                                       |    9 +-
 mm/vmscan.c                                        |  188 +-
 mm/vmstat.c                                        |   26 +-
 mm/zsmalloc.c                                      |  175 +-
 mm/zswap.c                                         |  126 +-
 samples/kmemleak/kmemleak-test.c                   |    1 +
 tools/include/uapi/linux/fs.h                      |  552 +++
 tools/include/uapi/linux/prctl.h                   |  331 ++
 tools/mm/Makefile                                  |    2 +-
 tools/mm/thp_swap_allocator_test.c                 |  234 ++
 tools/objtool/check.c                              |    2 +
 tools/testing/selftests/cgroup/config              |    1 -
 tools/testing/selftests/damon/Makefile             |    3 +-
 tools/testing/selftests/damon/_damon_sysfs.py      |   65 +-
 tools/testing/selftests/damon/access_memory.c      |    2 +-
 tools/testing/selftests/damon/access_memory_even.c |   42 +
 tools/testing/selftests/damon/damon_nr_regions.py  |  145 +
 .../testing/selftests/damon/damos_tried_regions.py |   65 +
 tools/testing/selftests/drivers/dma-buf/udmabuf.c  |  214 +-
 tools/testing/selftests/exec/Makefile              |    1 -
 tools/testing/selftests/futex/functional/Makefile  |    2 +-
 tools/testing/selftests/intel_pstate/Makefile      |    2 +-
 tools/testing/selftests/iommu/Makefile             |    2 -
 tools/testing/selftests/kvm/Makefile               |    2 +-
 tools/testing/selftests/lib.mk                     |    3 +
 tools/testing/selftests/mm/.gitignore              |    1 +
 tools/testing/selftests/mm/Makefile                |    3 +
 tools/testing/selftests/mm/hugepage-mremap.c       |    2 +-
 tools/testing/selftests/mm/hugetlb-soft-offline.c  |  228 +
 tools/testing/selftests/mm/hugetlb_dio.c           |  117 +
 tools/testing/selftests/mm/ksm_functional_tests.c  |    8 +-
 tools/testing/selftests/mm/memfd_secret.c          |   14 +-
 tools/testing/selftests/mm/mkdirty.c               |    8 +-
 tools/testing/selftests/mm/mlock2.h                |    1 +
 tools/testing/selftests/mm/mseal_helpers.h         |   41 +
 tools/testing/selftests/mm/mseal_test.c            |  143 +-
 tools/testing/selftests/mm/pagemap_ioctl.c         |    6 +-
 tools/testing/selftests/mm/protection_keys.c       |    2 +-
 tools/testing/selftests/mm/run_vmtests.sh          |    7 +
 tools/testing/selftests/mm/seal_elf.c              |   37 +-
 tools/testing/selftests/mm/split_huge_page_test.c  |    3 +-
 tools/testing/selftests/mm/thuge-gen.c             |   15 +-
 tools/testing/selftests/mm/uffd-common.c           |    4 -
 tools/testing/selftests/mm/uffd-stress.c           |   31 +-
 tools/testing/selftests/mm/uffd-unit-tests.c       |   14 +-
 tools/testing/selftests/mm/va_high_addr_switch.c   |  454 +-
 tools/testing/selftests/mm/va_high_addr_switch.sh  |    4 -
 tools/testing/selftests/net/Makefile               |    2 +-
 tools/testing/selftests/net/tcp_ao/Makefile        |    2 +-
 tools/testing/selftests/proc/Makefile              |    2 +-
 tools/testing/selftests/proc/proc-pid-vm.c         |   86 +
 tools/testing/selftests/resctrl/Makefile           |    2 +-
 tools/testing/selftests/ring-buffer/Makefile       |    1 -
 tools/testing/selftests/riscv/mm/Makefile          |    2 +-
 tools/testing/selftests/sgx/Makefile               |    2 +-
 tools/testing/selftests/tmpfs/Makefile             |    1 -
 330 files changed, 12969 insertions(+), 9745 deletions(-)
 delete mode 100644 arch/powerpc/include/asm/book3s/64/pgtable-4k.h
 create mode 100644 arch/powerpc/mm/nohash/tlb_64e.c
 create mode 100644 arch/s390/boot/kmsan.c
 create mode 100644 arch/s390/include/asm/kmsan.h
 create mode 100644 mm/memcontrol-v1.c
 create mode 100644 mm/memcontrol-v1.h
 create mode 100644 tools/include/uapi/linux/fs.h
 create mode 100644 tools/include/uapi/linux/prctl.h
 create mode 100644 tools/mm/thp_swap_allocator_test.c
 create mode 100644 tools/testing/selftests/damon/access_memory_even.c
 create mode 100644 tools/testing/selftests/damon/damon_nr_regions.py
 create mode 100644 tools/testing/selftests/damon/damos_tried_regions.py
 create mode 100644 tools/testing/selftests/mm/hugetlb-soft-offline.c
 create mode 100644 tools/testing/selftests/mm/hugetlb_dio.c
 create mode 100644 tools/testing/selftests/mm/mseal_helpers.h


.
Date: Sun, 21 Jul 2024 23:57:40 +0200
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] RTC for 6.11

Hello Linus,

Here is the RTC subsystem pull request for 6.11. There are mstly small
fixes this cycle. The alarm offset that is getting fixed doesn't affect
many RTCs as most of them have a complete set of datetime registers.

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git tags/rtc-6.11

for you to fetch changes up to efa9c5be2caecae7dfa4f29c6ab3d4a2f341eb15:

  rtc: stm32: add new st,stm32mp25-rtc compatible and check RIF configuration (2024-07-10 17:15:33 +0200)

----------------------------------------------------------------
RTC for 6.11

Subsystem:
 - add missing MODULE_DESCRIPTION() macro
 - fix offset addition for alarms

Drivers:
 - isl1208: alarm clearing fixes
 - mcp794xx: oscillator failure detection
 - stm32: stm32mp25 support
 - tps6594: power management support

----------------------------------------------------------------
Biju Das (2):
      rtc: isl1208: Add a delay for clearing alarm
      rtc: isl1208: Update correct procedure for clearing alarm

Csókás, Bence (3):
      rtc: ds1307: Detect oscillator fail on mcp794xx
      rtc: ds1307: Clamp year to valid BCD (0-99) in `set_time()`
      rtc: interface: Add RTC offset to alarm after fix-up

Frank Li (1):
      dt-bindings: rtc: Convert rtc-fsl-ftm-alarm.txt to yaml format

Jeff Johnson (1):
      rtc: add missing MODULE_DESCRIPTION() macro

Joy Chakraborty (3):
      rtc: isl1208: Fix return value of nvmem callbacks
      rtc: cmos: Fix return value of nvmem callbacks
      rtc: abx80x: Fix return value of nvmem callback on read

Richard Genoud (3):
      rtc: tps6594: Fix memleak in probe
      rtc: tps6594: introduce private structure as drvdata
      rtc: tps6594: Add power management support

Uwe Kleine-König (1):
      rtc: Drop explicit initialization of struct i2c_device_id::driver_data to 0

Valentin Caron (2):
      dt-bindings: rtc: stm32: introduce new st,stm32mp25-rtc compatible
      rtc: stm32: add new st,stm32mp25-rtc compatible and check RIF configuration

 .../devicetree/bindings/rtc/fsl,ls-ftm-alarm.yaml  | 73 ++++++++++++++++++++
 .../devicetree/bindings/rtc/rtc-fsl-ftm-alarm.txt  | 36 ----------
 .../devicetree/bindings/rtc/st,stm32-rtc.yaml      |  5 +-
 drivers/rtc/interface.c                            |  9 +--
 drivers/rtc/lib_test.c                             |  1 +
 drivers/rtc/rtc-ab-b5ze-s3.c                       |  2 +-
 drivers/rtc/rtc-ab-eoz9.c                          |  2 +-
 drivers/rtc/rtc-abx80x.c                           | 12 ++--
 drivers/rtc/rtc-bq32k.c                            |  2 +-
 drivers/rtc/rtc-cmos.c                             | 10 ++-
 drivers/rtc/rtc-ds1307.c                           |  7 +-
 drivers/rtc/rtc-ds1374.c                           |  2 +-
 drivers/rtc/rtc-ds1672.c                           |  2 +-
 drivers/rtc/rtc-ds3232.c                           |  2 +-
 drivers/rtc/rtc-em3027.c                           |  2 +-
 drivers/rtc/rtc-fm3130.c                           |  2 +-
 drivers/rtc/rtc-goldfish.c                         |  1 +
 drivers/rtc/rtc-hym8563.c                          |  4 +-
 drivers/rtc/rtc-isl12022.c                         |  2 +-
 drivers/rtc/rtc-isl1208.c                          | 36 ++++++----
 drivers/rtc/rtc-max31335.c                         |  2 +-
 drivers/rtc/rtc-max6900.c                          |  2 +-
 drivers/rtc/rtc-mpc5121.c                          |  1 +
 drivers/rtc/rtc-nct3018y.c                         |  2 +-
 drivers/rtc/rtc-omap.c                             |  1 +
 drivers/rtc/rtc-pcf8523.c                          |  2 +-
 drivers/rtc/rtc-pcf8563.c                          |  6 +-
 drivers/rtc/rtc-pcf8583.c                          |  2 +-
 drivers/rtc/rtc-rc5t583.c                          |  1 +
 drivers/rtc/rtc-rv3029c2.c                         |  4 +-
 drivers/rtc/rtc-rx6110.c                           |  2 +-
 drivers/rtc/rtc-rx8010.c                           |  2 +-
 drivers/rtc/rtc-rx8581.c                           |  2 +-
 drivers/rtc/rtc-s35390a.c                          |  2 +-
 drivers/rtc/rtc-sd3078.c                           |  2 +-
 drivers/rtc/rtc-stm32.c                            | 78 ++++++++++++++++++++++
 drivers/rtc/rtc-tps65910.c                         |  1 +
 drivers/rtc/rtc-tps6594.c                          | 75 +++++++++++++++++----
 drivers/rtc/rtc-twl.c                              |  1 +
 drivers/rtc/rtc-x1205.c                            |  2 +-
 40 files changed, 299 insertions(+), 103 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/rtc/fsl,ls-ftm-alarm.yaml
 delete mode 100644 Documentation/devicetree/bindings/rtc/rtc-fsl-ftm-alarm.txt

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

.
Date: Sun, 21 Jul 2024 15:10:13 -0700
From: Andrew Morton <akpm@linux-foundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
 mm-commits@vger.kernel.org
Subject: [GIT PULL] non-MM updates for 6.11-rc1


Linus, please pull this batch of other-than-MM updates for this
development cycle, thanks.


I'm seeing three conflicts during a test merge.  I'd incorrectly
attributed these to the mm-stble branch but these are actually issues
in this mm-nonmm-stable pull.  Those, along with their linux-next
resolutions are:

include/linux/interrupt.h, vs input tree:
https://lkml.kernel.org/r/20240612103235.5ef64950@canb.auug.org.au

include/linux/cacheinfo.h, vs tip tree:
https://lkml.kernel.org/r/20240612112746.3130d68b@canb.auug.org.au

fs/bcachefs/clock.c, vs bcachefs tree:
https://lkml.kernel.org/r/20240712105711.6dc900a2@canb.auug.org.au





The following changes since commit f2661062f16b2de5d7b6a5c42a9a5c96326b8454:

  Linux 6.10-rc5 (2024-06-23 17:08:54 -0400)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-nonmm-stable-2024-07-21-15-07

for you to fetch changes up to 67856f44da381973caf4eb692ad2cca1de7b2d37:

  ia64: scrub ia64 from poison.h (2024-07-17 21:11:34 -0700)

----------------------------------------------------------------
- In the series "treewide: Refactor heap related implementation",
  Kuan-Wei Chiu has significantly reworked the min_heap library code and
  has taught bcachefs to use the new more generic implementation.

- Yury Norov's series "Cleanup cpumask.h inclusion in core headers"
  reworks the cpumask and nodemask headers to make things generally more
  rational.

- Kuan-Wei Chiu has sent along some maintenance work against our sorting
  library code in the series "lib/sort: Optimizations and cleanups".

- More library maintainance work from Christophe Jaillet in the series
  "Remove usage of the deprecated ida_simple_xx() API".

- Ryusuke Konishi continues with the nilfs2 fixes and clanups in the
  series "nilfs2: eliminate the call to inode_attach_wb()".

- Kuan-Ying Lee has some fixes to the gdb scripts in the series "Fix GDB
  command error".

- Plus the usual shower of singleton patches all over the place.  Please
  see the relevant changelogs for details.

----------------------------------------------------------------
Alexey Dobriyan (4):
      proc: test "Kthread:" field
      build-id: require program headers to be right after ELF header
      compiler.h: simplify data_race() macro
      ia64: scrub ia64 from poison.h

Amer Al Shanawany (1):
      selftests: proc: remove unreached code and fix build warning

Brian Masney (1):
      lib/Kconfig.debug: document panic= command line option and procfs entry for PANIC_TIMEOUT

Chen Ni (1):
      test_bpf: convert comma to semicolon

Christophe JAILLET (6):
      fsi: occ: remove usage of the deprecated ida_simple_xx() API
      most: remove usage of the deprecated ida_simple_xx() API
      proc: remove usage of the deprecated ida_simple_xx() API
      ocfs2: constify struct ocfs2_lock_res_ops
      ocfs2: constify struct ocfs2_stack_operations
      nilfs2: Constify struct kobj_type

Dan Carpenter (1):
      checkpatch: check for missing Fixes tags

Ferry Meng (2):
      ocfs2: add bounds checking to ocfs2_xattr_find_entry()
      ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()

Hsin Chang Yu (1):
      lib/rbtree.c: fix the example typo

I Hsin Cheng (2):
      lib/plist.c: enforce memory ordering in plist_check_list
      lib/plist.c: avoid worst case scenario in plist_add

Jani Nikula (4):
      kernel/panic: return early from print_tainted() when not tainted
      kernel/panic: convert print_tainted() to use struct seq_buf internally
      kernel/panic: initialize taint_flags[] using a macro
      kernel/panic: add verbose logging of kernel taints in backtraces

Jeff Johnson (17):
      backtracetest: add MODULE_DESCRIPTION()
      lib/ts: add missing MODULE_DESCRIPTION() macros
      kunit/fortify: add missing MODULE_DESCRIPTION() macros
      KUnit: add missing MODULE_DESCRIPTION() macros for lib/*_test.ko
      lib/asn1_encoder: add missing MODULE_DESCRIPTION() macro
      kunit: add missing MODULE_DESCRIPTION() macros to lib/*.c
      uuid: add missing MODULE_DESCRIPTION() macro
      siphash: add missing MODULE_DESCRIPTION() macro
      lib/test_kmod: add missing MODULE_DESCRIPTION() macro
      lib/test_linear_ranges: add missing MODULE_DESCRIPTION() macro
      KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko
      kfifo: add missing MODULE_DESCRIPTION() macros
      resource: add missing MODULE_DESCRIPTION()
      selftests/fpu: add missing MODULE_DESCRIPTION() macro
      fs: ufs: add MODULE_DESCRIPTION()
      lib/zlib: add missing MODULE_DESCRIPTION() macro
      math: rational: add missing MODULE_DESCRIPTION() macro

Jesse Brandeburg (1):
      kernel-wide: fix spelling mistakes like "assocative" -> "associative"

John Hubbard (1):
      selftests/mqueue: fix 5 warnings about signed/unsigned mismatches

Kees Cook (1):
      tsacct: replace strncpy() with strscpy()

Kuan-Wei Chiu (21):
      perf/core: fix several typos
      bcache: fix typo
      bcachefs: fix typo
      lib min_heap: add type safe interface
      lib min_heap: add min_heap_init()
      lib min_heap: add min_heap_peek()
      lib min_heap: add min_heap_full()
      lib min_heap: add args for min_heap_callbacks
      lib min_heap: add min_heap_sift_up()
      lib min_heap: add min_heap_del()
      lib min_heap: update min_heap_push() and min_heap_pop() to return bool values
      lib min_heap: rename min_heapify() to min_heap_sift_down()
      lib min_heap: update min_heap_push() to use min_heap_sift_up()
      lib/test_min_heap: add test for heap_del()
      bcache: remove heap-related macros and switch to generic min_heap
      bcachefs: remove heap-related macros and switch to generic min_heap
      lib/sort: remove unused pr_fmt macro
      lib/sort: fix outdated comment regarding glibc qsort()
      lib/sort: optimize heapsort for handling final 2 or 3 elements
      lib/test_sort: add a testcase to ensure code coverage
      tools/lib/list_sort: remove redundant code for cond_resched handling

Kuan-Ying Lee (6):
      scripts/gdb: redefine MAX_ORDER sanely
      scripts/gdb: rework module VA range
      scripts/gdb: change the layout of vmemmap
      scripts/gdb: set vabits_actual based on TCR_EL1
      scripts/gdb: change VA_BITS_MIN when we use 16K page
      scripts/gdb: rename pool_index to pool_index_plus_1

Masahiro Yamada (2):
      init: remove unused __MEMINIT* macros
      init/modpost: conditionally check section mismatch to __meminit*

Mateusz Guzik (1):
      percpu_counter: add a cmpxchg-based _add_batch variant

Oleg Nesterov (1):
      coredump: simplify zap_process()

Ryusuke Konishi (3):
      nilfs2: prepare backing device folios for writing after adding checksums
      nilfs2: do not call inode_attach_wb() directly
      nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro

Sidhartha Kumar (2):
      tools/testing/radix-tree: add missing MODULE_DESCRIPTION definition
      tools/testing/radix-tree/idr-test: add missing MODULE_DESCRIPTION define

Suren Baghdasaryan (1):
      lib/dump_stack: report process UID in dump_stack_print_info()

Thomas Gleixner (1):
      watchdog/perf: properly initialize the turbo mode timestamp and rearm counter

Thorsten Blum (1):
      lib/bch.c: use swap() to improve code

Uros Bizjak (1):
      fork: use this_cpu_try_cmpxchg() in try_release_thread_stack_to_cache()

Wei-Hsin Yeh (1):
      include/linux/jhash.h: fix typos

Wen Yang (1):
      selftests: introduce additional eventfd test coverage

Wenchao Hao (1):
      crash: remove header files which are included more than once

Wolfram Sang (1):
      checkpatch: really skip LONG_LINE_* when LONG_LINE is ignored

Xiong Nandi (2):
      scripts/decode_stacktrace.sh: wrap nm with UTIL_PREFIX and UTIL_SUFFIX
      scripts/decode_stacktrace.sh: better support to ARM32 module stack trace

Yang Li (1):
      fs: add kernel-doc comments to ocfs2_prepare_orphan_dir()

Yongliang Gao (1):
      hung_task: ignore hung_task_warnings when hung_task_panic is enabled

Yury Norov (6):
      MAINTAINERS: add linux/nodemask_types.h to BITMAP API
      sched: avoid using ilog2() in sched.h
      cpumask: split out include/linux/cpumask_types.h
      sched: drop sched.h dependency on cpumask
      cpumask: cleanup core headers inclusion
      cpumask: make core headers including cpumask_types.h where possible

lei lu (1):
      ocfs2: add bounds checking to ocfs2_check_dir_entry()

 MAINTAINERS                                        |   2 +
 arch/powerpc/kernel/vmlinux.lds.S                  |   2 -
 drivers/fsi/fsi-occ.c                              |  17 +-
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c     |   2 +-
 drivers/md/bcache/alloc.c                          |  64 +++++--
 drivers/md/bcache/bcache.h                         |   2 +-
 drivers/md/bcache/bset.c                           | 124 +++++++++-----
 drivers/md/bcache/bset.h                           |  40 ++---
 drivers/md/bcache/btree.c                          |  69 ++++----
 drivers/md/bcache/extents.c                        |  53 +++---
 drivers/md/bcache/movinggc.c                       |  41 +++--
 drivers/md/bcache/super.c                          |   3 +-
 drivers/md/bcache/sysfs.c                          |   4 +-
 drivers/md/bcache/util.c                           |   2 +-
 drivers/md/bcache/util.h                           |  67 +-------
 drivers/md/bcache/writeback.c                      |  13 +-
 drivers/md/dm-vdo/repair.c                         |  19 ++-
 drivers/md/dm-vdo/slab-depot.c                     |  14 +-
 drivers/most/core.c                                |  10 +-
 drivers/most/most_cdev.c                           |   6 +-
 drivers/net/wireless/ti/wl1251/acx.h               |   2 +-
 drivers/scsi/qedf/qedf_main.c                      |   2 +-
 drivers/staging/rtl8723bs/core/rtw_mlme_ext.c      |   2 +-
 drivers/staging/rtl8723bs/core/rtw_pwrctrl.c       |   2 +-
 fs/bcachefs/clock.c                                |  47 ++++--
 fs/bcachefs/clock_types.h                          |   2 +-
 fs/bcachefs/ec.c                                   |  76 ++++++---
 fs/bcachefs/ec_types.h                             |   2 +-
 fs/bcachefs/util.c                                 |   2 +-
 fs/bcachefs/util.h                                 | 118 +------------
 fs/coredump.c                                      |  14 +-
 fs/nilfs2/segment.c                                |  91 ++++++----
 fs/nilfs2/sysfs.c                                  |   6 +-
 fs/ocfs2/dir.c                                     |  46 +++--
 fs/ocfs2/dlmglue.c                                 |  28 +--
 fs/ocfs2/namei.c                                   |   2 +
 fs/ocfs2/ocfs2.h                                   |   2 +-
 fs/ocfs2/stack_o2cb.c                              |   2 +-
 fs/ocfs2/stack_user.c                              |   2 +-
 fs/ocfs2/stackglue.h                               |   2 +-
 fs/ocfs2/xattr.c                                   |  27 ++-
 fs/proc/generic.c                                  |   6 +-
 fs/ufs/super.c                                     |   1 +
 include/asm-generic/vmlinux.lds.h                  |  18 +-
 include/linux/cacheinfo.h                          |   2 +-
 include/linux/cgroup.h                             |   1 -
 include/linux/clockchips.h                         |   2 +-
 include/linux/compiler.h                           |   6 +-
 include/linux/cpu.h                                |   1 -
 include/linux/cpu_cooling.h                        |   1 -
 include/linux/cpu_rmap.h                           |   2 +-
 include/linux/cpumask.h                            |  56 +-----
 include/linux/cpumask_types.h                      |  66 ++++++++
 include/linux/init.h                               |  18 +-
 include/linux/interrupt.h                          |   2 +-
 include/linux/irqchip/irq-partition-percpu.h       |   2 +-
 include/linux/jhash.h                              |   6 +-
 include/linux/kernel_stat.h                        |   1 -
 include/linux/min_heap.h                           | 188 ++++++++++++++++-----
 include/linux/msi.h                                |   2 +-
 include/linux/node.h                               |   1 -
 include/linux/nvme-fc-driver.h                     |   2 +-
 include/linux/panic.h                              |   8 +-
 include/linux/percpu.h                             |   1 -
 include/linux/pm_domain.h                          |   2 +-
 include/linux/poison.h                             |   6 -
 include/linux/profile.h                            |   1 -
 include/linux/rcupdate.h                           |   1 -
 include/linux/sched.h                              |   7 +-
 include/linux/seq_file.h                           |   1 -
 include/linux/soc/apple/rtkit.h                    |   4 +-
 include/linux/stop_machine.h                       |   2 +-
 include/linux/torture.h                            |   2 +-
 include/linux/tracepoint.h                         |   1 -
 include/linux/workqueue.h                          |   2 +-
 kernel/backtracetest.c                             |   1 +
 kernel/crash_reserve.c                             |   1 -
 kernel/events/core.c                               |  29 ++--
 kernel/fork.c                                      |   7 +-
 kernel/hung_task.c                                 |   2 +-
 kernel/panic.c                                     | 116 +++++++++----
 kernel/resource_kunit.c                            |   1 +
 kernel/tsacct.c                                    |   2 +-
 kernel/watchdog_perf.c                             |  11 +-
 lib/Kconfig.debug                                  |   4 +-
 lib/asn1_encoder.c                                 |   1 +
 lib/atomic64_test.c                                |   1 +
 lib/bch.c                                          |  20 +--
 lib/bitfield_kunit.c                               |   1 +
 lib/buildid.c                                      |  14 ++
 lib/checksum_kunit.c                               |   1 +
 lib/cmdline_kunit.c                                |   1 +
 lib/dhry_run.c                                     |   1 +
 lib/dump_stack.c                                   |   9 +-
 lib/fortify_kunit.c                                |   1 +
 lib/hashtable_test.c                               |   1 +
 lib/is_signed_type_kunit.c                         |   1 +
 lib/math/rational.c                                |   1 +
 lib/memcpy_kunit.c                                 |   1 +
 lib/overflow_kunit.c                               |   1 +
 lib/percpu_counter.c                               |  44 ++++-
 lib/plist.c                                        |  42 ++++-
 lib/rbtree.c                                       |   8 +-
 lib/siphash_kunit.c                                |   1 +
 lib/sort.c                                         |  14 +-
 lib/stackinit_kunit.c                              |   1 +
 lib/test-kstrtox.c                                 |   1 +
 lib/test_bits.c                                    |   1 +
 lib/test_blackhole_dev.c                           |   1 +
 lib/test_bpf.c                                     |   4 +-
 lib/test_firmware.c                                |   1 +
 lib/test_fpu_glue.c                                |   1 +
 lib/test_free_pages.c                              |   1 +
 lib/test_hash.c                                    |   1 +
 lib/test_hexdump.c                                 |   1 +
 lib/test_ida.c                                     |   1 +
 lib/test_kmod.c                                    |   1 +
 lib/test_kprobes.c                                 |   3 +-
 lib/test_linear_ranges.c                           |   1 +
 lib/test_list_sort.c                               |   1 +
 lib/test_memcat_p.c                                |   1 +
 lib/test_meminit.c                                 |   1 +
 lib/test_min_heap.c                                |  76 ++++++---
 lib/test_module.c                                  |   1 +
 lib/test_ref_tracker.c                             |   3 +-
 lib/test_sort.c                                    |  15 +-
 lib/test_static_key_base.c                         |   1 +
 lib/test_static_keys.c                             |   1 +
 lib/test_sysctl.c                                  |   1 +
 lib/test_uuid.c                                    |   1 +
 lib/ts_bm.c                                        |   1 +
 lib/ts_fsm.c                                       |   1 +
 lib/ts_kmp.c                                       |   1 +
 lib/zlib_deflate/deflate_syms.c                    |   1 +
 net/netfilter/nf_conntrack_core.c                  |   2 +-
 net/tipc/socket.c                                  |   2 +-
 samples/kfifo/bytestream-example.c                 |   1 +
 samples/kfifo/dma-example.c                        |   1 +
 samples/kfifo/inttype-example.c                    |   1 +
 samples/kfifo/record-example.c                     |   1 +
 scripts/checkpatch.pl                              |  26 ++-
 scripts/decode_stacktrace.sh                       |   6 +-
 scripts/gdb/linux/mm.py                            |  23 ++-
 scripts/gdb/linux/stackdepot.py                    |   8 +-
 scripts/mod/modpost.c                              |  19 +--
 scripts/spelling.txt                               |   3 +
 tools/lib/list_sort.c                              |  10 --
 tools/testing/radix-tree/idr-test.c                |   1 +
 tools/testing/radix-tree/maple.c                   |   1 +
 tools/testing/radix-tree/xarray.c                  |   1 +
 .../selftests/filesystems/eventfd/eventfd_test.c   | 136 ++++++++++++++-
 tools/testing/selftests/mqueue/mq_perf_tests.c     |   6 +-
 tools/testing/selftests/proc/.gitignore            |   2 +
 tools/testing/selftests/proc/Makefile              |   2 +
 tools/testing/selftests/proc/proc-2-is-kthread.c   |  53 ++++++
 tools/testing/selftests/proc/proc-empty-vm.c       |   3 -
 .../selftests/proc/proc-self-isnt-kthread.c        |  37 ++++
 157 files changed, 1416 insertions(+), 845 deletions(-)
 create mode 100644 include/linux/cpumask_types.h
 create mode 100644 tools/testing/selftests/proc/proc-2-is-kthread.c
 create mode 100644 tools/testing/selftests/proc/proc-self-isnt-kthread.c


.
Date: Sun, 21 Jul 2024 18:55:51 -0500
From: Steve French <smfrench@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: CIFS <linux-cifs@vger.kernel.org>, Namjae Jeon <linkinjeon@kernel.org>, 
	LKML <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] ksmbd server fixes

Please pull the following changes since commit
0c3836482481200ead7b416ca80c68a29cfdaabd:

  Linux 6.10 (2024-07-14 15:43:32 -0700)

are available in the Git repository at:

  git://git.samba.org/ksmbd.git tags/6.11-rc-smb3-server-fixes

for you to fetch changes up to d484d621d40f4a8b8959008802d79bef3609641b:

  ksmbd: add durable scavenger timer (2024-07-14 21:45:40 -0500)

----------------------------------------------------------------
four ksmbd server fixes
- two durable handle improvements
- two small cleanup patches
----------------------------------------------------------------
ChenXiaoSong (1):
      ksmbd: remove duplicate SMB2 Oplock levels definitions

Christophe JAILLET (1):
      ksmbd: Constify struct ksmbd_transport_ops

Namjae Jeon (2):
      ksmbd: avoid reclaiming expired durable opens by the client
      ksmbd: add durable scavenger timer

 fs/smb/server/connection.h        |   4 +-
 fs/smb/server/mgmt/user_session.c |   2 +
 fs/smb/server/oplock.h            |   7 ---
 fs/smb/server/server.c            |   1 +
 fs/smb/server/server.h            |   1 +
 fs/smb/server/smb2pdu.c           |   2 +-
 fs/smb/server/smb2pdu.h           |   2 +
 fs/smb/server/transport_rdma.c    |   4 +-
 fs/smb/server/transport_tcp.c     |   4 +-
 fs/smb/server/vfs_cache.c         | 173
++++++++++++++++++++++++++++++++++++++++++++++--
 fs/smb/server/vfs_cache.h         |   3 +
 11 files changed, 183 insertions(+), 20 deletions(-)

-- 
Thanks,

Steve

.
Date: Mon, 22 Jul 2024 12:40:14 +0300
From: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
To: <torvalds@linux-foundation.org>
Subject: [GIT PULL] ntfs3: bugfixes for 6.11

Please pull this branch containing ntfs3 code for 6.11.

All changed code was in linux-next branch for several weeks.
 
Regards,
Konstantin

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  https://github.com/Paragon-Software-Group/linux-ntfs3.git tags/ntfs3_for_6.11

for you to fetch changes up to 911daf695a740d9a58daef65dabfb5f69f18190f:

  fs/ntfs3: Fix formatting, change comments, renaming (2024-07-11 12:19:46 +0300)

----------------------------------------------------------------
ntfs3 changes for 6.11-rc1

Added:
    simple fileattr has been implement.
Fixed:
    transform resident to nonresident for compressed files;
    the format of the "nocase" mount option;
    getting file type;
    many other internal bugs.
Refactored:
    unused function and macros have been removed;
    partial transition from page to folio (suggested by Matthew Wilcox);
    legacy ntfs support.

----------------------------------------------------------------
Andy Shevchenko (1):
      fs/ntfs3: Drop stray '\' (backslash) in formatting string

Huacai Chen (1):
      fs/ntfs3: Update log->page_{mask,bits} if log->page_size changed

Konstantin Komarov (29):
      fs/ntfs3: Remove unused function
      fs/ntfs3: Merge synonym COMPRESSION_UNIT and NTFS_LZNT_CUNIT
      fs/ntfs3: Simplify initialization of $AttrDef and $UpCase
      fs/ntfs3: Use macros NTFS_LABEL_MAX_LENGTH instead of hardcoded value
      fs/ntfs3: Remove unused macros MAXIMUM_REPARSE_DATA_BUFFER_SIZE
      fs/ntfs3: Fix transform resident to nonresident for compressed files
      fs/ntfs3: Deny getting attr data block in compressed frame
      fs/ntfs3: Missed NI_FLAG_UPDATE_PARENT setting
      fs/ntfs3: Fix getting file type
      fs/ntfs3: Remove sync_blockdev_nowait()
      fs/ntfs3: Add missing .dirty_folio in address_space_operations
      fs/ntfs3: Fix attr_insert_range at end of file
      fs/ntfs3: Replace inode_trylock with inode_lock
      fs/ntfs3: One more reason to mark inode bad
      fs/ntfs3: Correct undo if ntfs_create_inode failed
      fs/ntfs3: Add a check for attr_names and oatbl
      fs/ntfs3: Rename variables
      fs/ntfs3: Add some comments
      fs/ntfs3: Fix field-spanning write in INDEX_HDR
      fs/ntfs3: Fix the format of the "nocase" mount option
      fs/ntfs3: Missed error return
      fs/ntfs3: Keep runs for $MFT::$ATTR_DATA and $MFT::$ATTR_BITMAP
      fs/ntfs3: Do copy_to_user out of run_lock
      fs/ntfs3: Check more cases when directory is corrupted
      fs/ntfs3: Minor ntfs_list_ea refactoring
      fs/ntfs3: Use function file_inode to get inode from file
      fs/ntfs3: Redesign legacy ntfs support
      fs/ntfs3: Implement simple fileattr
      fs/ntfs3: Fix formatting, change comments, renaming

Matthew Wilcox (Oracle) (10):
      ntfs3: Convert ntfs_read_folio to use a folio
      ntfs3: Convert ntfs_write_begin to use a folio
      ntfs3: Convert attr_data_read_resident() to take a folio
      ntfs3: Convert ntfs_write_end() to work on a folio
      ntfs3: Convert attr_data_write_resident to use a folio
      ntfs3: Convert attr_make_nonresident to use a folio
      ntfs3: Remove calls to set/clear the error flag
      ntfs3: Convert ntfs_get_frame_pages() to use a folio
      ntfs3: Convert ni_readpage_cmpr() to take a folio
      ntfs3: Convert attr_wof_frame_info() to use a folio

lei lu (1):
      fs/ntfs3: Validate ff offset

 fs/ntfs3/attrib.c  | 132 ++++++++++++++++++++++++++++-------------------------
 fs/ntfs3/bitmap.c  |   2 +-
 fs/ntfs3/dir.c     |  57 ++++++++++++++---------
 fs/ntfs3/file.c    | 124 +++++++++++++++++++++++++++++++++++++------------
 fs/ntfs3/frecord.c | 110 +++++++++++++++++++++++++++++++++++---------
 fs/ntfs3/fslog.c   |  77 +++++++++++++++++++++----------
 fs/ntfs3/fsntfs.c  |  11 +++--
 fs/ntfs3/index.c   |   4 +-
 fs/ntfs3/inode.c   | 119 ++++++++++++++++++++++++-----------------------
 fs/ntfs3/namei.c   |   6 +--
 fs/ntfs3/ntfs.h    |  15 ++----
 fs/ntfs3/ntfs_fs.h |  36 ++++++---------
 fs/ntfs3/super.c   |  71 +++++++++++-----------------
 fs/ntfs3/xattr.c   |  25 +++++-----
 14 files changed, 480 insertions(+), 309 deletions(-)

.
Date: Mon, 22 Jul 2024 15:32:06 +0200
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux PM <linux-pm@vger.kernel.org>, 
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: [GIT PULL] Thermal control fix for v6.11-rc1

Hi Linus,

Please pull from the tag

 git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
 thermal-6.11-rc1-2

with top-most commit e528be3c87be953b73e7826a2d7e4b837cbad39d

 thermal: core: Allow thermal zones to tell the core to ignore them

on top of commit 51835949dda3783d4639cfa74ce13a3c9829de00

 Merge tag 'net-next-6.11' of
git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next

to receive a thermal control fix for 6.11-rc1.

This fixes a flood of kernel messages coming from the thermal core on
systems where iwlwifi is loaded, but the network interfaces controlled
by it are down.

Thanks!


---------------

Rafael J. Wysocki (1):
      thermal: core: Allow thermal zones to tell the core to ignore them

---------------

 drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 10 ++++--
 drivers/thermal/thermal_core.c              | 51 ++++++++++++++---------------
 drivers/thermal/thermal_core.h              |  3 ++
 drivers/thermal/thermal_helpers.c           |  2 ++
 4 files changed, 37 insertions(+), 29 deletions(-)

.
Date: Mon, 22 Jul 2024 22:48:22 +0800
From: Huacai Chen <chenhuacai@loongson.cn>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Huacai Chen <chenhuacai@kernel.org>
Cc: loongarch@lists.linux.dev,
	linux-arch@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Guo Ren <guoren@kernel.org>,
	Xuerui Wang <kernel@xen0n.name>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Huacai Chen <chenhuacai@loongson.cn>
Subject: [GIT PULL] LoongArch changes for v6.11

The following changes since commit 0c3836482481200ead7b416ca80c68a29cfdaabd:

  Linux 6.10 (2024-07-14 15:43:32 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git tags/loongarch-6.11

for you to fetch changes up to 998b17d4440b8559a8bf4926e86f493101995519:

  LoongArch: Make the users of larch_insn_gen_break() constant (2024-07-20 22:41:07 +0800)

----------------------------------------------------------------
LoongArch changes for v6.11

1, Define __ARCH_WANT_NEW_STAT in unistd.h;
2, Always enumerate MADT and setup logical-physical CPU mapping;
3, Add irq_work support via self IPIs;
4, Add RANDOMIZE_KSTACK_OFFSET support;
5, Add ARCH_HAS_PTE_DEVMAP support;
6, Add ARCH_HAS_DEBUG_VM_PGTABLE support;
7, Add writecombine support for DMW-based ioremap();
8, Add architectural preparation for CPUFreq;
9, Add ACPI standard hardware register based S3 support;
10, Add support for relocating the kernel with RELR relocation;
11, Some bug fixes and other small changes.

----------------------------------------------------------------
Huacai Chen (10):
      Merge tag 'asm-generic-6.11' into loongarch-next
      LoongArch: Define __ARCH_WANT_NEW_STAT in unistd.h
      LoongArch: Always enumerate MADT and setup logical-physical CPU mapping
      LoongArch: Add irq_work support via self IPIs
      LoongArch: Add ARCH_HAS_PTE_DEVMAP support
      LoongArch: Add ARCH_HAS_DEBUG_VM_PGTABLE support
      LoongArch: Add writecombine support for DMW-based ioremap()
      LoongArch: Add architectural preparation for CPUFreq
      LoongArch: Automatically disable KASLR for hibernation
      LoongArch: Use correct API to map cmdline in relocate_kernel()

Jiaxun Yang (1):
      LoongArch: Add ACPI standard hardware register based S3 support

Jinjie Ruan (1):
      LoongArch: Add RANDOMIZE_KSTACK_OFFSET support

Oleg Nesterov (1):
      LoongArch: Make the users of larch_insn_gen_break() constant

Tiezhu Yang (1):
      LoongArch: Check TIF_LOAD_WATCH to enable user space watchpoint

WANG Rui (1):
      LoongArch: Use rustc option -Zdirect-access-external-data

Xi Ruoyao (2):
      LoongArch: Remove a redundant checking in relocator
      LoongArch: Add support for relocating the kernel with RELR relocation

 .../debug/debug-vm-pgtable/arch-support.txt        |  2 +-
 arch/loongarch/Kconfig                             |  5 +++
 arch/loongarch/Makefile                            |  3 +-
 arch/loongarch/include/asm/addrspace.h             |  4 ++
 arch/loongarch/include/asm/asmmacro.h              |  1 +
 arch/loongarch/include/asm/hardirq.h               |  3 +-
 arch/loongarch/include/asm/inst.h                  |  3 ++
 arch/loongarch/include/asm/io.h                    | 10 ++++-
 arch/loongarch/include/asm/irq_work.h              | 10 +++++
 arch/loongarch/include/asm/loongarch.h             | 13 +++++-
 arch/loongarch/include/asm/pgtable-bits.h          |  6 ++-
 arch/loongarch/include/asm/pgtable.h               | 19 ++++++++
 arch/loongarch/include/asm/setup.h                 |  5 +++
 arch/loongarch/include/asm/smp.h                   |  2 +
 arch/loongarch/include/asm/stackframe.h            | 11 +++++
 arch/loongarch/include/asm/unistd.h                |  1 +
 arch/loongarch/include/asm/uprobes.h               |  4 +-
 arch/loongarch/kernel/Makefile.syscalls            |  3 +-
 arch/loongarch/kernel/acpi.c                       | 22 ++++++---
 arch/loongarch/kernel/head.S                       | 11 +----
 arch/loongarch/kernel/hw_breakpoint.c              |  2 +-
 arch/loongarch/kernel/kprobes.c                    |  4 +-
 arch/loongarch/kernel/paravirt.c                   |  6 +++
 arch/loongarch/kernel/ptrace.c                     |  3 ++
 arch/loongarch/kernel/relocate.c                   | 52 ++++++++++++++++++++--
 arch/loongarch/kernel/setup.c                      |  4 +-
 arch/loongarch/kernel/smp.c                        | 21 +++++++--
 arch/loongarch/kernel/syscall.c                    | 22 ++++++++-
 arch/loongarch/kernel/vmlinux.lds.S                |  8 ++++
 arch/loongarch/power/platform.c                    | 37 ++++++++++++---
 arch/loongarch/power/suspend_asm.S                 |  8 +---
 drivers/firmware/efi/libstub/loongarch.c           |  2 +
 32 files changed, 256 insertions(+), 51 deletions(-)
 create mode 100644 arch/loongarch/include/asm/irq_work.h

.
Date: Mon, 22 Jul 2024 13:12:31 -0400
From: Kent Overstreet <kent.overstreet@linux.dev>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-bcachefs@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] bcachefs fixes for 6.11-rc1

The following changes since commit a97b43fac5b9b3ffca71b8a917a249789902fce9:

  lockdep: Add comments for lockdep_set_no{validate,track}_class() (2024-07-18 18:33:30 -0400)

are available in the Git repository at:

  https://evilpiepirate.org/git/bcachefs.git tags/bcachefs-2024-07-22

for you to fetch changes up to 737759fc098f7bb7fb4cef64fec731803e955e01:

  bcachefs: Fix printbuf usage while atomic (2024-07-22 11:27:15 -0400)

----------------------------------------------------------------
bcachefs fixes for 6.11-rc1

- another fix for fsck getting stuck, from marcin
- small syzbot fix
- another undefined shift fix

----------------------------------------------------------------
Kent Overstreet (3):
      bcachefs: kill btree_trans_too_many_iters() in bch2_bucket_alloc_freelist()
      bcachefs: More informative error message in reattach_inode()
      bcachefs: Fix printbuf usage while atomic

Tavian Barnes (1):
      bcachefs: mean_and_variance: Avoid too-large shift amounts

 fs/bcachefs/alloc_foreground.c  | 6 ------
 fs/bcachefs/fsck.c              | 7 +++++--
 fs/bcachefs/journal_reclaim.c   | 1 +
 fs/bcachefs/mean_and_variance.h | 6 +++---
 4 files changed, 9 insertions(+), 11 deletions(-)

.
Date: Mon, 22 Jul 2024 21:27:20 +0200 (CEST)
From: Thomas Gleixner <tglx@linutronix.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, x86@kernel.org
Subject: [GIT pull] irq/msi for v6.11-rc1

Linus,

please pull the latest irq/msi branch from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq-msi-2024-07-=
22

up to:  c9b4f313f6b8: irqchip/gic-v3-its: Correctly fish out the DID for plat=
form MSI

Switch ARM/ARM64 over to the modern per device MSI domains:

  This simplifies the handling of platform MSI and wire to MSI controllers
  and removes about 500 lines of legacy code.

  Aside of that it paves the way for ARM/ARM64 to utilize the dynamic
  allocation of PCI/MSI interrupts and to support the upcoming non
  standard IMS (Interrupt Message Store) mechanism on PCIe devices

This has been split out from the original pull request and the two fixlets
from Marc which cure the issues observed by Johan have been added on top.

Thanks,

	tglx

------------------>
Anna-Maria Behnsen (2):
      irqchip/imx-mu-msi: Fix codingstyle in imx_mu_msi_domains_init()
      irqdomain: Fix formatting irq_find_matching_fwspec() kerneldoc comment

Marc Zyngier (2):
      irqchip/gic-v3-its: Correctly honor the RID remapping
      irqchip/gic-v3-its: Correctly fish out the DID for platform MSI

Shivamurthy Shastri (1):
      PCI/MSI: Provide MSI_FLAG_PCI_MSI_MASK_PARENT

Thomas Gleixner (20):
      irqchip: Provide irq-msi-lib
      irqchip/gic-v3-its: Provide MSI parent infrastructure
      irqchip/irq-msi-lib: Prepare for PCI MSI/MSIX
      irqchip/gic-v3-its: Provide MSI parent for PCI/MSI[-X]
      irqchip/irq-msi-lib: Prepare for DEVICE MSI to replace platform MSI
      irqchip/mbigen: Prepare for real per device MSI
      irqchip/irq-msi-lib: Prepare for DOMAIN_BUS_WIRED_TO_MSI
      irqchip/gic-v3-its: Switch platform MSI to MSI parent
      irqchip/mbigen: Remove platform_msi_create_device_domain() fallback
      genirq/msi: Remove platform_msi_create_device_domain()
      irqchip/gic_v3_mbi: Switch over to parent domain
      irqchip/gic-v2m: Switch to device MSI
      irqchip/imx-mu-msi: Switch to MSI parent
      irqchip/irq-mvebu-icu: Prepare for real per device MSI
      irqchip/mvebu-gicp: Switch to MSI parent
      irqchip/mvebu-odmi: Switch to parent MSI
      irqchip/irq-mvebu-sei: Switch to MSI parent
      irqchip/irq-mvebu-icu: Remove platform MSI leftovers
      genirq/msi: Remove platform MSI leftovers
      genirq/msi: Move msi_device_data to core


 drivers/base/platform-msi.c                   | 350 +-----------------------=
--
 drivers/irqchip/Kconfig                       |   8 +
 drivers/irqchip/Makefile                      |   4 +-
 drivers/irqchip/irq-gic-common.h              |   3 +
 drivers/irqchip/irq-gic-v2m.c                 |  81 ++----
 drivers/irqchip/irq-gic-v3-its-msi-parent.c   | 210 ++++++++++++++++
 drivers/irqchip/irq-gic-v3-its-pci-msi.c      | 202 ---------------
 drivers/irqchip/irq-gic-v3-its-platform-msi.c | 163 ------------
 drivers/irqchip/irq-gic-v3-its.c              |   5 +
 drivers/irqchip/irq-gic-v3-mbi.c              | 130 ++++------
 drivers/irqchip/irq-imx-mu-msi.c              |  54 ++--
 drivers/irqchip/irq-mbigen.c                  |  96 +++----
 drivers/irqchip/irq-msi-lib.c                 | 140 +++++++++++
 drivers/irqchip/irq-msi-lib.h                 |  27 ++
 drivers/irqchip/irq-mvebu-gicp.c              |  44 ++--
 drivers/irqchip/irq-mvebu-icu.c               | 275 +++++++++-----------
 drivers/irqchip/irq-mvebu-odmi.c              |  37 ++-
 drivers/irqchip/irq-mvebu-sei.c               |  52 ++--
 drivers/pci/msi/irqdomain.c                   |  20 ++
 include/linux/msi.h                           |  52 +---
 kernel/irq/irqdomain.c                        |   3 +-
 kernel/irq/msi.c                              |  95 ++-----
 22 files changed, 747 insertions(+), 1304 deletions(-)
 create mode 100644 drivers/irqchip/irq-gic-v3-its-msi-parent.c
 delete mode 100644 drivers/irqchip/irq-gic-v3-its-pci-msi.c
 delete mode 100644 drivers/irqchip/irq-gic-v3-its-platform-msi.c
 create mode 100644 drivers/irqchip/irq-msi-lib.c
 create mode 100644 drivers/irqchip/irq-msi-lib.h

diff --git a/drivers/base/platform-msi.c b/drivers/base/platform-msi.c
index 11f5fdf65b9e..0e60dd650b5e 100644
--- a/drivers/base/platform-msi.c
+++ b/drivers/base/platform-msi.c
@@ -4,346 +4,12 @@
  *
  * Copyright (C) 2015 ARM Limited, All Rights Reserved.
  * Author: Marc Zyngier <marc.zyngier@arm.com>
+ * Copyright (C) 2022 Linutronix GmbH
  */
=20
 #include <linux/device.h>
-#include <linux/idr.h>
-#include <linux/irq.h>
 #include <linux/irqdomain.h>
 #include <linux/msi.h>
-#include <linux/slab.h>
-
-/* Begin of removal area. Once everything is converted over. Cleanup the inc=
ludes too! */
-
-#define DEV_ID_SHIFT	21
-#define MAX_DEV_MSIS	(1 << (32 - DEV_ID_SHIFT))
-
-/*
- * Internal data structure containing a (made up, but unique) devid
- * and the callback to write the MSI message.
- */
-struct platform_msi_priv_data {
-	struct device			*dev;
-	void				*host_data;
-	msi_alloc_info_t		arg;
-	irq_write_msi_msg_t		write_msg;
-	int				devid;
-};
-
-/* The devid allocator */
-static DEFINE_IDA(platform_msi_devid_ida);
-
-#ifdef GENERIC_MSI_DOMAIN_OPS
-/*
- * Convert an msi_desc to a globaly unique identifier (per-device
- * devid + msi_desc position in the msi_list).
- */
-static irq_hw_number_t platform_msi_calc_hwirq(struct msi_desc *desc)
-{
-	u32 devid =3D desc->dev->msi.data->platform_data->devid;
-
-	return (devid << (32 - DEV_ID_SHIFT)) | desc->msi_index;
-}
-
-static void platform_msi_set_desc(msi_alloc_info_t *arg, struct msi_desc *de=
sc)
-{
-	arg->desc =3D desc;
-	arg->hwirq =3D platform_msi_calc_hwirq(desc);
-}
-
-static int platform_msi_init(struct irq_domain *domain,
-			     struct msi_domain_info *info,
-			     unsigned int virq, irq_hw_number_t hwirq,
-			     msi_alloc_info_t *arg)
-{
-	return irq_domain_set_hwirq_and_chip(domain, virq, hwirq,
-					     info->chip, info->chip_data);
-}
-
-static void platform_msi_set_proxy_dev(msi_alloc_info_t *arg)
-{
-	arg->flags |=3D MSI_ALLOC_FLAGS_PROXY_DEVICE;
-}
-#else
-#define platform_msi_set_desc		NULL
-#define platform_msi_init		NULL
-#define platform_msi_set_proxy_dev(x)	do {} while(0)
-#endif
-
-static void platform_msi_update_dom_ops(struct msi_domain_info *info)
-{
-	struct msi_domain_ops *ops =3D info->ops;
-
-	BUG_ON(!ops);
-
-	if (ops->msi_init =3D=3D NULL)
-		ops->msi_init =3D platform_msi_init;
-	if (ops->set_desc =3D=3D NULL)
-		ops->set_desc =3D platform_msi_set_desc;
-}
-
-static void platform_msi_write_msg(struct irq_data *data, struct msi_msg *ms=
g)
-{
-	struct msi_desc *desc =3D irq_data_get_msi_desc(data);
-
-	desc->dev->msi.data->platform_data->write_msg(desc, msg);
-}
-
-static void platform_msi_update_chip_ops(struct msi_domain_info *info)
-{
-	struct irq_chip *chip =3D info->chip;
-
-	BUG_ON(!chip);
-	if (!chip->irq_mask)
-		chip->irq_mask =3D irq_chip_mask_parent;
-	if (!chip->irq_unmask)
-		chip->irq_unmask =3D irq_chip_unmask_parent;
-	if (!chip->irq_eoi)
-		chip->irq_eoi =3D irq_chip_eoi_parent;
-	if (!chip->irq_set_affinity)
-		chip->irq_set_affinity =3D msi_domain_set_affinity;
-	if (!chip->irq_write_msi_msg)
-		chip->irq_write_msi_msg =3D platform_msi_write_msg;
-	if (WARN_ON((info->flags & MSI_FLAG_LEVEL_CAPABLE) &&
-		    !(chip->flags & IRQCHIP_SUPPORTS_LEVEL_MSI)))
-		info->flags &=3D ~MSI_FLAG_LEVEL_CAPABLE;
-}
-
-/**
- * platform_msi_create_irq_domain - Create a platform MSI interrupt domain
- * @fwnode:		Optional fwnode of the interrupt controller
- * @info:	MSI domain info
- * @parent:	Parent irq domain
- *
- * Updates the domain and chip ops and creates a platform MSI
- * interrupt domain.
- *
- * Returns:
- * A domain pointer or NULL in case of failure.
- */
-struct irq_domain *platform_msi_create_irq_domain(struct fwnode_handle *fwno=
de,
-						  struct msi_domain_info *info,
-						  struct irq_domain *parent)
-{
-	struct irq_domain *domain;
-
-	if (info->flags & MSI_FLAG_USE_DEF_DOM_OPS)
-		platform_msi_update_dom_ops(info);
-	if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS)
-		platform_msi_update_chip_ops(info);
-	info->flags |=3D MSI_FLAG_DEV_SYSFS | MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS |
-		       MSI_FLAG_FREE_MSI_DESCS;
-
-	domain =3D msi_create_irq_domain(fwnode, info, parent);
-	if (domain)
-		irq_domain_update_bus_token(domain, DOMAIN_BUS_PLATFORM_MSI);
-
-	return domain;
-}
-EXPORT_SYMBOL_GPL(platform_msi_create_irq_domain);
-
-static int platform_msi_alloc_priv_data(struct device *dev, unsigned int nve=
c,
-					irq_write_msi_msg_t write_msi_msg)
-{
-	struct platform_msi_priv_data *datap;
-	int err;
-
-	/*
-	 * Limit the number of interrupts to 2048 per device. Should we
-	 * need to bump this up, DEV_ID_SHIFT should be adjusted
-	 * accordingly (which would impact the max number of MSI
-	 * capable devices).
-	 */
-	if (!dev->msi.domain || !write_msi_msg || !nvec || nvec > MAX_DEV_MSIS)
-		return -EINVAL;
-
-	if (dev->msi.domain->bus_token !=3D DOMAIN_BUS_PLATFORM_MSI) {
-		dev_err(dev, "Incompatible msi_domain, giving up\n");
-		return -EINVAL;
-	}
-
-	err =3D msi_setup_device_data(dev);
-	if (err)
-		return err;
-
-	/* Already initialized? */
-	if (dev->msi.data->platform_data)
-		return -EBUSY;
-
-	datap =3D kzalloc(sizeof(*datap), GFP_KERNEL);
-	if (!datap)
-		return -ENOMEM;
-
-	datap->devid =3D ida_alloc_max(&platform_msi_devid_ida,
-				     (1 << DEV_ID_SHIFT) - 1, GFP_KERNEL);
-	if (datap->devid < 0) {
-		err =3D datap->devid;
-		kfree(datap);
-		return err;
-	}
-
-	datap->write_msg =3D write_msi_msg;
-	datap->dev =3D dev;
-	dev->msi.data->platform_data =3D datap;
-	return 0;
-}
-
-static void platform_msi_free_priv_data(struct device *dev)
-{
-	struct platform_msi_priv_data *data =3D dev->msi.data->platform_data;
-
-	dev->msi.data->platform_data =3D NULL;
-	ida_free(&platform_msi_devid_ida, data->devid);
-	kfree(data);
-}
-
-/**
- * platform_msi_domain_alloc_irqs - Allocate MSI interrupts for @dev
- * @dev:		The device for which to allocate interrupts
- * @nvec:		The number of interrupts to allocate
- * @write_msi_msg:	Callback to write an interrupt message for @dev
- *
- * Returns:
- * Zero for success, or an error code in case of failure
- */
-static int platform_msi_domain_alloc_irqs(struct device *dev, unsigned int n=
vec,
-					  irq_write_msi_msg_t write_msi_msg)
-{
-	int err;
-
-	err =3D platform_msi_alloc_priv_data(dev, nvec, write_msi_msg);
-	if (err)
-		return err;
-
-	err =3D msi_domain_alloc_irqs_range(dev, MSI_DEFAULT_DOMAIN, 0, nvec - 1);
-	if (err)
-		platform_msi_free_priv_data(dev);
-
-	return err;
-}
-
-/**
- * platform_msi_get_host_data - Query the private data associated with
- *                              a platform-msi domain
- * @domain:	The platform-msi domain
- *
- * Return: The private data provided when calling
- * platform_msi_create_device_domain().
- */
-void *platform_msi_get_host_data(struct irq_domain *domain)
-{
-	struct platform_msi_priv_data *data =3D domain->host_data;
-
-	return data->host_data;
-}
-
-static struct lock_class_key platform_device_msi_lock_class;
-
-/**
- * __platform_msi_create_device_domain - Create a platform-msi device domain
- *
- * @dev:		The device generating the MSIs
- * @nvec:		The number of MSIs that need to be allocated
- * @is_tree:		flag to indicate tree hierarchy
- * @write_msi_msg:	Callback to write an interrupt message for @dev
- * @ops:		The hierarchy domain operations to use
- * @host_data:		Private data associated to this domain
- *
- * Return: An irqdomain for @nvec interrupts on success, NULL in case of err=
or.
- *
- * This is for interrupt domains which stack on a platform-msi domain
- * created by platform_msi_create_irq_domain(). @dev->msi.domain points to
- * that platform-msi domain which is the parent for the new domain.
- */
-struct irq_domain *
-__platform_msi_create_device_domain(struct device *dev,
-				    unsigned int nvec,
-				    bool is_tree,
-				    irq_write_msi_msg_t write_msi_msg,
-				    const struct irq_domain_ops *ops,
-				    void *host_data)
-{
-	struct platform_msi_priv_data *data;
-	struct irq_domain *domain;
-	int err;
-
-	err =3D platform_msi_alloc_priv_data(dev, nvec, write_msi_msg);
-	if (err)
-		return NULL;
-
-	/*
-	 * Use a separate lock class for the MSI descriptor mutex on
-	 * platform MSI device domains because the descriptor mutex nests
-	 * into the domain mutex. See alloc/free below.
-	 */
-	lockdep_set_class(&dev->msi.data->mutex, &platform_device_msi_lock_class);
-
-	data =3D dev->msi.data->platform_data;
-	data->host_data =3D host_data;
-	domain =3D irq_domain_create_hierarchy(dev->msi.domain, 0,
-					     is_tree ? 0 : nvec,
-					     dev->fwnode, ops, data);
-	if (!domain)
-		goto free_priv;
-
-	platform_msi_set_proxy_dev(&data->arg);
-	err =3D msi_domain_prepare_irqs(domain->parent, dev, nvec, &data->arg);
-	if (err)
-		goto free_domain;
-
-	return domain;
-
-free_domain:
-	irq_domain_remove(domain);
-free_priv:
-	platform_msi_free_priv_data(dev);
-	return NULL;
-}
-
-/**
- * platform_msi_device_domain_free - Free interrupts associated with a platf=
orm-msi
- *				     device domain
- *
- * @domain:	The platform-msi device domain
- * @virq:	The base irq from which to perform the free operation
- * @nr_irqs:	How many interrupts to free from @virq
- */
-void platform_msi_device_domain_free(struct irq_domain *domain, unsigned int=
 virq,
-				     unsigned int nr_irqs)
-{
-	struct platform_msi_priv_data *data =3D domain->host_data;
-
-	msi_lock_descs(data->dev);
-	msi_domain_depopulate_descs(data->dev, virq, nr_irqs);
-	irq_domain_free_irqs_common(domain, virq, nr_irqs);
-	msi_free_msi_descs_range(data->dev, virq, virq + nr_irqs - 1);
-	msi_unlock_descs(data->dev);
-}
-
-/**
- * platform_msi_device_domain_alloc - Allocate interrupts associated with
- *				      a platform-msi device domain
- *
- * @domain:	The platform-msi device domain
- * @virq:	The base irq from which to perform the allocate operation
- * @nr_irqs:	How many interrupts to allocate from @virq
- *
- * Return 0 on success, or an error code on failure. Must be called
- * with irq_domain_mutex held (which can only be done as part of a
- * top-level interrupt allocation).
- */
-int platform_msi_device_domain_alloc(struct irq_domain *domain, unsigned int=
 virq,
-				     unsigned int nr_irqs)
-{
-	struct platform_msi_priv_data *data =3D domain->host_data;
-	struct device *dev =3D data->dev;
-
-	return msi_domain_populate_irqs(domain->parent, dev, virq, nr_irqs, &data->=
arg);
-}
-
-/* End of removal area */
-
-/* Real per device domain interfaces */
=20
 /*
  * This indirection can go when platform_device_msi_init_and_alloc_irqs()
@@ -357,7 +23,7 @@ static void platform_msi_write_msi_msg(struct irq_data *d,=
 struct msi_msg *msg)
 	cb(irq_data_get_msi_desc(d), msg);
 }
=20
-static void platform_msi_set_desc_byindex(msi_alloc_info_t *arg, struct msi_=
desc *desc)
+static void platform_msi_set_desc(msi_alloc_info_t *arg, struct msi_desc *de=
sc)
 {
 	arg->desc =3D desc;
 	arg->hwirq =3D desc->msi_index;
@@ -373,7 +39,7 @@ static const struct msi_domain_template platform_msi_templ=
ate =3D {
 	},
=20
 	.ops =3D {
-		.set_desc		=3D platform_msi_set_desc_byindex,
+		.set_desc		=3D platform_msi_set_desc,
 	},
=20
 	.info =3D {
@@ -408,10 +74,6 @@ int platform_device_msi_init_and_alloc_irqs(struct device=
 *dev, unsigned int nve
 	if (!domain || !write_msi_msg)
 		return -EINVAL;
=20
-	/* Migration support. Will go away once everything is converted */
-	if (!irq_domain_is_msi_parent(domain))
-		return platform_msi_domain_alloc_irqs(dev, nvec, write_msi_msg);
-
 	/*
 	 * @write_msi_msg is stored in the resulting msi_domain_info::data.
 	 * The underlying domain creation mechanism will assign that
@@ -432,12 +94,6 @@ EXPORT_SYMBOL_GPL(platform_device_msi_init_and_alloc_irqs=
);
  */
 void platform_device_msi_free_irqs_all(struct device *dev)
 {
-	struct irq_domain *domain =3D dev->msi.domain;
-
 	msi_domain_free_irqs_all(dev, MSI_DEFAULT_DOMAIN);
-
-	/* Migration support. Will go away once everything is converted */
-	if (!irq_domain_is_msi_parent(domain))
-		platform_msi_free_priv_data(dev);
 }
 EXPORT_SYMBOL_GPL(platform_device_msi_free_irqs_all);
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 14464716bacb..4def6dc76fa6 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -26,6 +26,7 @@ config ARM_GIC_V2M
 	bool
 	depends on PCI
 	select ARM_GIC
+	select IRQ_MSI_LIB
 	select PCI_MSI
=20
 config GIC_NON_BANKED
@@ -41,6 +42,7 @@ config ARM_GIC_V3
 config ARM_GIC_V3_ITS
 	bool
 	select GENERIC_MSI_IRQ
+	select IRQ_MSI_LIB
 	default ARM_GIC_V3
=20
 config ARM_GIC_V3_ITS_PCI
@@ -74,6 +76,9 @@ config ARM_VIC_NR
 	  The maximum number of VICs available in the system, for
 	  power management.
=20
+config IRQ_MSI_LIB
+	bool
+
 config ARMADA_370_XP_IRQ
 	bool
 	select GENERIC_IRQ_CHIP
@@ -366,6 +371,7 @@ config MSCC_OCELOT_IRQ
 	select GENERIC_IRQ_CHIP
=20
 config MVEBU_GICP
+	select IRQ_MSI_LIB
 	bool
=20
 config MVEBU_ICU
@@ -373,6 +379,7 @@ config MVEBU_ICU
=20
 config MVEBU_ODMI
 	bool
+	select IRQ_MSI_LIB
 	select GENERIC_MSI_IRQ
=20
 config MVEBU_PIC
@@ -487,6 +494,7 @@ config IMX_MU_MSI
 	select IRQ_DOMAIN
 	select IRQ_DOMAIN_HIERARCHY
 	select GENERIC_MSI_IRQ
+	select IRQ_MSI_LIB
 	help
 	  Provide a driver for the i.MX Messaging Unit block used as a
 	  CPU-to-CPU MSI controller. This requires a specially crafted DT
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index d9dc3d99aaa8..afc44f4709a6 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -29,10 +29,10 @@ obj-$(CONFIG_ARCH_SPEAR3XX)		+=3D spear-shirq.o
 obj-$(CONFIG_ARM_GIC)			+=3D irq-gic.o irq-gic-common.o
 obj-$(CONFIG_ARM_GIC_PM)		+=3D irq-gic-pm.o
 obj-$(CONFIG_ARCH_REALVIEW)		+=3D irq-gic-realview.o
+obj-$(CONFIG_IRQ_MSI_LIB)		+=3D irq-msi-lib.o
 obj-$(CONFIG_ARM_GIC_V2M)		+=3D irq-gic-v2m.o
 obj-$(CONFIG_ARM_GIC_V3)		+=3D irq-gic-v3.o irq-gic-v3-mbi.o irq-gic-common.o
-obj-$(CONFIG_ARM_GIC_V3_ITS)		+=3D irq-gic-v3-its.o irq-gic-v3-its-platform-=
msi.o irq-gic-v4.o
-obj-$(CONFIG_ARM_GIC_V3_ITS_PCI)	+=3D irq-gic-v3-its-pci-msi.o
+obj-$(CONFIG_ARM_GIC_V3_ITS)		+=3D irq-gic-v3-its.o irq-gic-v4.o irq-gic-v3-=
its-msi-parent.o
 obj-$(CONFIG_ARM_GIC_V3_ITS_FSL_MC)	+=3D irq-gic-v3-its-fsl-mc-msi.o
 obj-$(CONFIG_PARTITION_PERCPU)		+=3D irq-partition-percpu.o
 obj-$(CONFIG_HISILICON_IRQ_MBIGEN)	+=3D irq-mbigen.o
diff --git a/drivers/irqchip/irq-gic-common.h b/drivers/irqchip/irq-gic-commo=
n.h
index f407cce9ecaa..eb4a220dd6ad 100644
--- a/drivers/irqchip/irq-gic-common.h
+++ b/drivers/irqchip/irq-gic-common.h
@@ -8,6 +8,7 @@
=20
 #include <linux/of.h>
 #include <linux/irqdomain.h>
+#include <linux/msi.h>
 #include <linux/irqchip/arm-gic-common.h>
=20
 struct gic_quirk {
@@ -29,6 +30,8 @@ void gic_enable_quirks(u32 iidr, const struct gic_quirk *qu=
irks,
 void gic_enable_of_quirks(const struct device_node *np,
 			  const struct gic_quirk *quirks, void *data);
=20
+extern const struct msi_parent_ops gic_v3_its_msi_parent_ops;
+
 #define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING    (1 << 0)
 #define RDIST_FLAGS_RD_TABLES_PREALLOCATED     (1 << 1)
 #define RDIST_FLAGS_FORCE_NON_SHAREABLE        (1 << 2)
diff --git a/drivers/irqchip/irq-gic-v2m.c b/drivers/irqchip/irq-gic-v2m.c
index f2ff4387870d..51af63c046ed 100644
--- a/drivers/irqchip/irq-gic-v2m.c
+++ b/drivers/irqchip/irq-gic-v2m.c
@@ -26,6 +26,8 @@
 #include <linux/irqchip/arm-gic.h>
 #include <linux/irqchip/arm-gic-common.h>
=20
+#include "irq-msi-lib.h"
+
 /*
 * MSI_TYPER:
 *     [31:26] Reserved
@@ -72,31 +74,6 @@ struct v2m_data {
 	u32 flags;		/* v2m flags for specific implementation */
 };
=20
-static void gicv2m_mask_msi_irq(struct irq_data *d)
-{
-	pci_msi_mask_irq(d);
-	irq_chip_mask_parent(d);
-}
-
-static void gicv2m_unmask_msi_irq(struct irq_data *d)
-{
-	pci_msi_unmask_irq(d);
-	irq_chip_unmask_parent(d);
-}
-
-static struct irq_chip gicv2m_msi_irq_chip =3D {
-	.name			=3D "MSI",
-	.irq_mask		=3D gicv2m_mask_msi_irq,
-	.irq_unmask		=3D gicv2m_unmask_msi_irq,
-	.irq_eoi		=3D irq_chip_eoi_parent,
-};
-
-static struct msi_domain_info gicv2m_msi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
-		   MSI_FLAG_PCI_MSIX | MSI_FLAG_MULTI_PCI_MSI),
-	.chip	=3D &gicv2m_msi_irq_chip,
-};
-
 static phys_addr_t gicv2m_get_msi_addr(struct v2m_data *v2m, int hwirq)
 {
 	if (v2m->flags & GICV2M_GRAVITON_ADDRESS_ONLY)
@@ -230,6 +207,7 @@ static void gicv2m_irq_domain_free(struct irq_domain *dom=
ain,
 }
=20
 static const struct irq_domain_ops gicv2m_domain_ops =3D {
+	.select			=3D msi_lib_irq_domain_select,
 	.alloc			=3D gicv2m_irq_domain_alloc,
 	.free			=3D gicv2m_irq_domain_free,
 };
@@ -250,19 +228,6 @@ static bool is_msi_spi_valid(u32 base, u32 num)
 	return true;
 }
=20
-static struct irq_chip gicv2m_pmsi_irq_chip =3D {
-	.name			=3D "pMSI",
-};
-
-static struct msi_domain_ops gicv2m_pmsi_ops =3D {
-};
-
-static struct msi_domain_info gicv2m_pmsi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS),
-	.ops	=3D &gicv2m_pmsi_ops,
-	.chip	=3D &gicv2m_pmsi_irq_chip,
-};
-
 static void __init gicv2m_teardown(void)
 {
 	struct v2m_data *v2m, *tmp;
@@ -278,9 +243,27 @@ static void __init gicv2m_teardown(void)
 	}
 }
=20
+
+#define GICV2M_MSI_FLAGS_REQUIRED  (MSI_FLAG_USE_DEF_DOM_OPS |		\
+				    MSI_FLAG_USE_DEF_CHIP_OPS |		\
+				    MSI_FLAG_PCI_MSI_MASK_PARENT)
+
+#define GICV2M_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK |	\
+				    MSI_FLAG_PCI_MSIX      |	\
+				    MSI_FLAG_MULTI_PCI_MSI)
+
+static struct msi_parent_ops gicv2m_msi_parent_ops =3D {
+	.supported_flags	=3D GICV2M_MSI_FLAGS_SUPPORTED,
+	.required_flags		=3D GICV2M_MSI_FLAGS_REQUIRED,
+	.bus_select_token	=3D DOMAIN_BUS_NEXUS,
+	.bus_select_mask	=3D MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
+	.prefix			=3D "GICv2m-",
+	.init_dev_msi_info	=3D msi_lib_init_dev_msi_info,
+};
+
 static __init int gicv2m_allocate_domains(struct irq_domain *parent)
 {
-	struct irq_domain *inner_domain, *pci_domain, *plat_domain;
+	struct irq_domain *inner_domain;
 	struct v2m_data *v2m;
=20
 	v2m =3D list_first_entry_or_null(&v2m_nodes, struct v2m_data, entry);
@@ -295,22 +278,8 @@ static __init int gicv2m_allocate_domains(struct irq_dom=
ain *parent)
 	}
=20
 	irq_domain_update_bus_token(inner_domain, DOMAIN_BUS_NEXUS);
-	pci_domain =3D pci_msi_create_irq_domain(v2m->fwnode,
-					       &gicv2m_msi_domain_info,
-					       inner_domain);
-	plat_domain =3D platform_msi_create_irq_domain(v2m->fwnode,
-						     &gicv2m_pmsi_domain_info,
-						     inner_domain);
-	if (!pci_domain || !plat_domain) {
-		pr_err("Failed to create MSI domains\n");
-		if (plat_domain)
-			irq_domain_remove(plat_domain);
-		if (pci_domain)
-			irq_domain_remove(pci_domain);
-		irq_domain_remove(inner_domain);
-		return -ENOMEM;
-	}
-
+	inner_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT;
+	inner_domain->msi_parent_ops =3D &gicv2m_msi_parent_ops;
 	return 0;
 }
=20
@@ -511,7 +480,7 @@ acpi_parse_madt_msi(union acpi_subtable_headers *header,
 		pr_info("applying Amazon Graviton quirk\n");
 		res.end =3D res.start + SZ_8K - 1;
 		flags |=3D GICV2M_GRAVITON_ADDRESS_ONLY;
-		gicv2m_msi_domain_info.flags &=3D ~MSI_FLAG_MULTI_PCI_MSI;
+		gicv2m_msi_parent_ops.supported_flags &=3D ~MSI_FLAG_MULTI_PCI_MSI;
 	}
=20
 	if (m->flags & ACPI_MADT_OVERRIDE_SPI_VALUES) {
diff --git a/drivers/irqchip/irq-gic-v3-its-msi-parent.c b/drivers/irqchip/ir=
q-gic-v3-its-msi-parent.c
new file mode 100644
index 000000000000..e150365fbe89
--- /dev/null
+++ b/drivers/irqchip/irq-gic-v3-its-msi-parent.c
@@ -0,0 +1,210 @@
+// SPDX-License-Identifier: GPL-2.0-only
+// Copyright (C) 2013-2015 ARM Limited, All Rights Reserved.
+// Author: Marc Zyngier <marc.zyngier@arm.com>
+// Copyright (C) 2022 Linutronix GmbH
+// Copyright (C) 2022 Intel
+
+#include <linux/acpi_iort.h>
+#include <linux/pci.h>
+
+#include "irq-gic-common.h"
+#include "irq-msi-lib.h"
+
+#define ITS_MSI_FLAGS_REQUIRED  (MSI_FLAG_USE_DEF_DOM_OPS |	\
+				 MSI_FLAG_USE_DEF_CHIP_OPS |	\
+				 MSI_FLAG_PCI_MSI_MASK_PARENT)
+
+#define ITS_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK |	\
+				 MSI_FLAG_PCI_MSIX      |	\
+				 MSI_FLAG_MULTI_PCI_MSI)
+
+#ifdef CONFIG_PCI_MSI
+static int its_pci_msi_vec_count(struct pci_dev *pdev, void *data)
+{
+	int msi, msix, *count =3D data;
+
+	msi =3D max(pci_msi_vec_count(pdev), 0);
+	msix =3D max(pci_msix_vec_count(pdev), 0);
+	*count +=3D max(msi, msix);
+
+	return 0;
+}
+
+static int its_get_pci_alias(struct pci_dev *pdev, u16 alias, void *data)
+{
+	struct pci_dev **alias_dev =3D data;
+
+	*alias_dev =3D pdev;
+
+	return 0;
+}
+
+static int its_pci_msi_prepare(struct irq_domain *domain, struct device *dev,
+			       int nvec, msi_alloc_info_t *info)
+{
+	struct pci_dev *pdev, *alias_dev;
+	struct msi_domain_info *msi_info;
+	int alias_count =3D 0, minnvec =3D 1;
+
+	if (!dev_is_pci(dev))
+		return -EINVAL;
+
+	pdev =3D to_pci_dev(dev);
+	/*
+	 * If pdev is downstream of any aliasing bridges, take an upper
+	 * bound of how many other vectors could map to the same DevID.
+	 * Also tell the ITS that the signalling will come from a proxy
+	 * device, and that special allocation rules apply.
+	 */
+	pci_for_each_dma_alias(pdev, its_get_pci_alias, &alias_dev);
+	if (alias_dev !=3D pdev) {
+		if (alias_dev->subordinate)
+			pci_walk_bus(alias_dev->subordinate,
+				     its_pci_msi_vec_count, &alias_count);
+		info->flags |=3D MSI_ALLOC_FLAGS_PROXY_DEVICE;
+	}
+
+	/* ITS specific DeviceID, as the core ITS ignores dev. */
+	info->scratchpad[0].ul =3D pci_msi_domain_get_msi_rid(domain->parent, pdev);
+
+	/*
+	 * @domain->msi_domain_info->hwsize contains the size of the
+	 * MSI[-X] domain, but vector allocation happens one by one. This
+	 * needs some thought when MSI comes into play as the size of MSI
+	 * might be unknown at domain creation time and therefore set to
+	 * MSI_MAX_INDEX.
+	 */
+	msi_info =3D msi_get_domain_info(domain);
+	if (msi_info->hwsize > nvec)
+		nvec =3D msi_info->hwsize;
+
+	/*
+	 * Always allocate a power of 2, and special case device 0 for
+	 * broken systems where the DevID is not wired (and all devices
+	 * appear as DevID 0). For that reason, we generously allocate a
+	 * minimum of 32 MSIs for DevID 0. If you want more because all
+	 * your devices are aliasing to DevID 0, consider fixing your HW.
+	 */
+	nvec =3D max(nvec, alias_count);
+	if (!info->scratchpad[0].ul)
+		minnvec =3D 32;
+	nvec =3D max_t(int, minnvec, roundup_pow_of_two(nvec));
+
+	msi_info =3D msi_get_domain_info(domain->parent);
+	return msi_info->ops->msi_prepare(domain->parent, dev, nvec, info);
+}
+#else /* CONFIG_PCI_MSI */
+#define its_pci_msi_prepare	NULL
+#endif /* !CONFIG_PCI_MSI */
+
+static int of_pmsi_get_dev_id(struct irq_domain *domain, struct device *dev,
+				  u32 *dev_id)
+{
+	int ret, index =3D 0;
+
+	/* Suck the DeviceID out of the msi-parent property */
+	do {
+		struct of_phandle_args args;
+
+		ret =3D of_parse_phandle_with_args(dev->of_node,
+						 "msi-parent", "#msi-cells",
+						 index, &args);
+		if (args.np =3D=3D irq_domain_get_of_node(domain)) {
+			if (WARN_ON(args.args_count !=3D 1))
+				return -EINVAL;
+			*dev_id =3D args.args[0];
+			break;
+		}
+		index++;
+	} while (!ret);
+
+	return ret;
+}
+
+int __weak iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id)
+{
+	return -1;
+}
+
+static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
+			    int nvec, msi_alloc_info_t *info)
+{
+	struct msi_domain_info *msi_info;
+	u32 dev_id;
+	int ret;
+
+	if (dev->of_node)
+		ret =3D of_pmsi_get_dev_id(domain->parent, dev, &dev_id);
+	else
+		ret =3D iort_pmsi_get_dev_id(dev, &dev_id);
+	if (ret)
+		return ret;
+
+	/* ITS specific DeviceID, as the core ITS ignores dev. */
+	info->scratchpad[0].ul =3D dev_id;
+
+	/*
+	 * @domain->msi_domain_info->hwsize contains the size of the device
+	 * domain, but vector allocation happens one by one.
+	 */
+	msi_info =3D msi_get_domain_info(domain);
+	if (msi_info->hwsize > nvec)
+		nvec =3D msi_info->hwsize;
+
+	/* Allocate at least 32 MSIs, and always as a power of 2 */
+	nvec =3D max_t(int, 32, roundup_pow_of_two(nvec));
+
+	msi_info =3D msi_get_domain_info(domain->parent);
+	return msi_info->ops->msi_prepare(domain->parent,
+					  dev, nvec, info);
+}
+
+static bool its_init_dev_msi_info(struct device *dev, struct irq_domain *dom=
ain,
+				  struct irq_domain *real_parent, struct msi_domain_info *info)
+{
+	if (!msi_lib_init_dev_msi_info(dev, domain, real_parent, info))
+		return false;
+
+	switch(info->bus_token) {
+	case DOMAIN_BUS_PCI_DEVICE_MSI:
+	case DOMAIN_BUS_PCI_DEVICE_MSIX:
+		/*
+		 * FIXME: This probably should be done after a (not yet
+		 * existing) post domain creation callback once to make
+		 * support for dynamic post-enable MSI-X allocations
+		 * work without having to reevaluate the domain size
+		 * over and over. It is known already at allocation
+		 * time via info->hwsize.
+		 *
+		 * That should work perfectly fine for MSI/MSI-X but needs
+		 * some thoughts for purely software managed MSI domains
+		 * where the index space is only limited artificially via
+		 * %MSI_MAX_INDEX.
+		 */
+		info->ops->msi_prepare =3D its_pci_msi_prepare;
+		break;
+	case DOMAIN_BUS_DEVICE_MSI:
+	case DOMAIN_BUS_WIRED_TO_MSI:
+		/*
+		 * FIXME: See the above PCI prepare comment. The domain
+		 * size is also known at domain creation time.
+		 */
+		info->ops->msi_prepare =3D its_pmsi_prepare;
+		break;
+	default:
+		/* Confused. How did the lib return true? */
+		WARN_ON_ONCE(1);
+		return false;
+	}
+
+	return true;
+}
+
+const struct msi_parent_ops gic_v3_its_msi_parent_ops =3D {
+	.supported_flags	=3D ITS_MSI_FLAGS_SUPPORTED,
+	.required_flags		=3D ITS_MSI_FLAGS_REQUIRED,
+	.bus_select_token	=3D DOMAIN_BUS_NEXUS,
+	.bus_select_mask	=3D MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
+	.prefix			=3D "ITS-",
+	.init_dev_msi_info	=3D its_init_dev_msi_info,
+};
diff --git a/drivers/irqchip/irq-gic-v3-its-pci-msi.c b/drivers/irqchip/irq-g=
ic-v3-its-pci-msi.c
deleted file mode 100644
index 93f77a8196da..000000000000
--- a/drivers/irqchip/irq-gic-v3-its-pci-msi.c
+++ /dev/null
@@ -1,202 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2013-2015 ARM Limited, All Rights Reserved.
- * Author: Marc Zyngier <marc.zyngier@arm.com>
- */
-
-#include <linux/acpi_iort.h>
-#include <linux/pci.h>
-#include <linux/msi.h>
-#include <linux/of.h>
-#include <linux/of_irq.h>
-#include <linux/of_pci.h>
-
-static void its_mask_msi_irq(struct irq_data *d)
-{
-	pci_msi_mask_irq(d);
-	irq_chip_mask_parent(d);
-}
-
-static void its_unmask_msi_irq(struct irq_data *d)
-{
-	pci_msi_unmask_irq(d);
-	irq_chip_unmask_parent(d);
-}
-
-static struct irq_chip its_msi_irq_chip =3D {
-	.name			=3D "ITS-MSI",
-	.irq_unmask		=3D its_unmask_msi_irq,
-	.irq_mask		=3D its_mask_msi_irq,
-	.irq_eoi		=3D irq_chip_eoi_parent,
-};
-
-static int its_pci_msi_vec_count(struct pci_dev *pdev, void *data)
-{
-	int msi, msix, *count =3D data;
-
-	msi =3D max(pci_msi_vec_count(pdev), 0);
-	msix =3D max(pci_msix_vec_count(pdev), 0);
-	*count +=3D max(msi, msix);
-
-	return 0;
-}
-
-static int its_get_pci_alias(struct pci_dev *pdev, u16 alias, void *data)
-{
-	struct pci_dev **alias_dev =3D data;
-
-	*alias_dev =3D pdev;
-
-	return 0;
-}
-
-static int its_pci_msi_prepare(struct irq_domain *domain, struct device *dev,
-			       int nvec, msi_alloc_info_t *info)
-{
-	struct pci_dev *pdev, *alias_dev;
-	struct msi_domain_info *msi_info;
-	int alias_count =3D 0, minnvec =3D 1;
-
-	if (!dev_is_pci(dev))
-		return -EINVAL;
-
-	msi_info =3D msi_get_domain_info(domain->parent);
-
-	pdev =3D to_pci_dev(dev);
-	/*
-	 * If pdev is downstream of any aliasing bridges, take an upper
-	 * bound of how many other vectors could map to the same DevID.
-	 * Also tell the ITS that the signalling will come from a proxy
-	 * device, and that special allocation rules apply.
-	 */
-	pci_for_each_dma_alias(pdev, its_get_pci_alias, &alias_dev);
-	if (alias_dev !=3D pdev) {
-		if (alias_dev->subordinate)
-			pci_walk_bus(alias_dev->subordinate,
-				     its_pci_msi_vec_count, &alias_count);
-		info->flags |=3D MSI_ALLOC_FLAGS_PROXY_DEVICE;
-	}
-
-	/* ITS specific DeviceID, as the core ITS ignores dev. */
-	info->scratchpad[0].ul =3D pci_msi_domain_get_msi_rid(domain, pdev);
-
-	/*
-	 * Always allocate a power of 2, and special case device 0 for
-	 * broken systems where the DevID is not wired (and all devices
-	 * appear as DevID 0). For that reason, we generously allocate a
-	 * minimum of 32 MSIs for DevID 0. If you want more because all
-	 * your devices are aliasing to DevID 0, consider fixing your HW.
-	 */
-	nvec =3D max(nvec, alias_count);
-	if (!info->scratchpad[0].ul)
-		minnvec =3D 32;
-	nvec =3D max_t(int, minnvec, roundup_pow_of_two(nvec));
-	return msi_info->ops->msi_prepare(domain->parent, dev, nvec, info);
-}
-
-static struct msi_domain_ops its_pci_msi_ops =3D {
-	.msi_prepare	=3D its_pci_msi_prepare,
-};
-
-static struct msi_domain_info its_pci_msi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
-		   MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX),
-	.ops	=3D &its_pci_msi_ops,
-	.chip	=3D &its_msi_irq_chip,
-};
-
-static struct of_device_id its_device_id[] =3D {
-	{	.compatible	=3D "arm,gic-v3-its",	},
-	{},
-};
-
-static int __init its_pci_msi_init_one(struct fwnode_handle *handle,
-				       const char *name)
-{
-	struct irq_domain *parent;
-
-	parent =3D irq_find_matching_fwnode(handle, DOMAIN_BUS_NEXUS);
-	if (!parent || !msi_get_domain_info(parent)) {
-		pr_err("%s: Unable to locate ITS domain\n", name);
-		return -ENXIO;
-	}
-
-	if (!pci_msi_create_irq_domain(handle, &its_pci_msi_domain_info,
-				       parent)) {
-		pr_err("%s: Unable to create PCI domain\n", name);
-		return -ENOMEM;
-	}
-
-	return 0;
-}
-
-static int __init its_pci_of_msi_init(void)
-{
-	struct device_node *np;
-
-	for (np =3D of_find_matching_node(NULL, its_device_id); np;
-	     np =3D of_find_matching_node(np, its_device_id)) {
-		if (!of_device_is_available(np))
-			continue;
-		if (!of_property_read_bool(np, "msi-controller"))
-			continue;
-
-		if (its_pci_msi_init_one(of_node_to_fwnode(np), np->full_name))
-			continue;
-
-		pr_info("PCI/MSI: %pOF domain created\n", np);
-	}
-
-	return 0;
-}
-
-#ifdef CONFIG_ACPI
-
-static int __init
-its_pci_msi_parse_madt(union acpi_subtable_headers *header,
-		       const unsigned long end)
-{
-	struct acpi_madt_generic_translator *its_entry;
-	struct fwnode_handle *dom_handle;
-	const char *node_name;
-	int err =3D -ENXIO;
-
-	its_entry =3D (struct acpi_madt_generic_translator *)header;
-	node_name =3D kasprintf(GFP_KERNEL, "ITS@0x%lx",
-			      (long)its_entry->base_address);
-	dom_handle =3D iort_find_domain_token(its_entry->translation_id);
-	if (!dom_handle) {
-		pr_err("%s: Unable to locate ITS domain handle\n", node_name);
-		goto out;
-	}
-
-	err =3D its_pci_msi_init_one(dom_handle, node_name);
-	if (!err)
-		pr_info("PCI/MSI: %s domain created\n", node_name);
-
-out:
-	kfree(node_name);
-	return err;
-}
-
-static int __init its_pci_acpi_msi_init(void)
-{
-	acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR,
-			      its_pci_msi_parse_madt, 0);
-	return 0;
-}
-#else
-static int __init its_pci_acpi_msi_init(void)
-{
-	return 0;
-}
-#endif
-
-static int __init its_pci_msi_init(void)
-{
-	its_pci_of_msi_init();
-	its_pci_acpi_msi_init();
-
-	return 0;
-}
-early_initcall(its_pci_msi_init);
diff --git a/drivers/irqchip/irq-gic-v3-its-platform-msi.c b/drivers/irqchip/=
irq-gic-v3-its-platform-msi.c
deleted file mode 100644
index daa6d5053bc3..000000000000
--- a/drivers/irqchip/irq-gic-v3-its-platform-msi.c
+++ /dev/null
@@ -1,163 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2013-2015 ARM Limited, All Rights Reserved.
- * Author: Marc Zyngier <marc.zyngier@arm.com>
- */
-
-#include <linux/acpi_iort.h>
-#include <linux/device.h>
-#include <linux/msi.h>
-#include <linux/of.h>
-#include <linux/of_irq.h>
-
-static struct irq_chip its_pmsi_irq_chip =3D {
-	.name			=3D "ITS-pMSI",
-};
-
-static int of_pmsi_get_dev_id(struct irq_domain *domain, struct device *dev,
-				  u32 *dev_id)
-{
-	int ret, index =3D 0;
-
-	/* Suck the DeviceID out of the msi-parent property */
-	do {
-		struct of_phandle_args args;
-
-		ret =3D of_parse_phandle_with_args(dev->of_node,
-						 "msi-parent", "#msi-cells",
-						 index, &args);
-		if (args.np =3D=3D irq_domain_get_of_node(domain)) {
-			if (WARN_ON(args.args_count !=3D 1))
-				return -EINVAL;
-			*dev_id =3D args.args[0];
-			break;
-		}
-		index++;
-	} while (!ret);
-
-	return ret;
-}
-
-int __weak iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id)
-{
-	return -1;
-}
-
-static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
-			    int nvec, msi_alloc_info_t *info)
-{
-	struct msi_domain_info *msi_info;
-	u32 dev_id;
-	int ret;
-
-	msi_info =3D msi_get_domain_info(domain->parent);
-
-	if (dev->of_node)
-		ret =3D of_pmsi_get_dev_id(domain, dev, &dev_id);
-	else
-		ret =3D iort_pmsi_get_dev_id(dev, &dev_id);
-	if (ret)
-		return ret;
-
-	/* ITS specific DeviceID, as the core ITS ignores dev. */
-	info->scratchpad[0].ul =3D dev_id;
-
-	/* Allocate at least 32 MSIs, and always as a power of 2 */
-	nvec =3D max_t(int, 32, roundup_pow_of_two(nvec));
-	return msi_info->ops->msi_prepare(domain->parent,
-					  dev, nvec, info);
-}
-
-static struct msi_domain_ops its_pmsi_ops =3D {
-	.msi_prepare	=3D its_pmsi_prepare,
-};
-
-static struct msi_domain_info its_pmsi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS),
-	.ops	=3D &its_pmsi_ops,
-	.chip	=3D &its_pmsi_irq_chip,
-};
-
-static const struct of_device_id its_device_id[] =3D {
-	{	.compatible	=3D "arm,gic-v3-its",	},
-	{},
-};
-
-static int __init its_pmsi_init_one(struct fwnode_handle *fwnode,
-				const char *name)
-{
-	struct irq_domain *parent;
-
-	parent =3D irq_find_matching_fwnode(fwnode, DOMAIN_BUS_NEXUS);
-	if (!parent || !msi_get_domain_info(parent)) {
-		pr_err("%s: unable to locate ITS domain\n", name);
-		return -ENXIO;
-	}
-
-	if (!platform_msi_create_irq_domain(fwnode, &its_pmsi_domain_info,
-					    parent)) {
-		pr_err("%s: unable to create platform domain\n", name);
-		return -ENXIO;
-	}
-
-	pr_info("Platform MSI: %s domain created\n", name);
-	return 0;
-}
-
-#ifdef CONFIG_ACPI
-static int __init
-its_pmsi_parse_madt(union acpi_subtable_headers *header,
-			const unsigned long end)
-{
-	struct acpi_madt_generic_translator *its_entry;
-	struct fwnode_handle *domain_handle;
-	const char *node_name;
-	int err =3D -ENXIO;
-
-	its_entry =3D (struct acpi_madt_generic_translator *)header;
-	node_name =3D kasprintf(GFP_KERNEL, "ITS@0x%lx",
-			      (long)its_entry->base_address);
-	domain_handle =3D iort_find_domain_token(its_entry->translation_id);
-	if (!domain_handle) {
-		pr_err("%s: Unable to locate ITS domain handle\n", node_name);
-		goto out;
-	}
-
-	err =3D its_pmsi_init_one(domain_handle, node_name);
-
-out:
-	kfree(node_name);
-	return err;
-}
-
-static void __init its_pmsi_acpi_init(void)
-{
-	acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR,
-			      its_pmsi_parse_madt, 0);
-}
-#else
-static inline void its_pmsi_acpi_init(void) { }
-#endif
-
-static void __init its_pmsi_of_init(void)
-{
-	struct device_node *np;
-
-	for (np =3D of_find_matching_node(NULL, its_device_id); np;
-	     np =3D of_find_matching_node(np, its_device_id)) {
-		if (!of_device_is_available(np))
-			continue;
-		if (!of_property_read_bool(np, "msi-controller"))
-			continue;
-
-		its_pmsi_init_one(of_node_to_fwnode(np), np->full_name);
-	}
-}
-
-static int __init its_pmsi_init(void)
-{
-	its_pmsi_of_init();
-	its_pmsi_acpi_init();
-	return 0;
-}
-early_initcall(its_pmsi_init);
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-it=
s.c
index 3c755d5dad6e..d770d6aedb29 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -38,6 +38,7 @@
 #include <asm/exception.h>
=20
 #include "irq-gic-common.h"
+#include "irq-msi-lib.h"
=20
 #define ITS_FLAGS_CMDQ_NEEDS_FLUSHING		(1ULL << 0)
 #define ITS_FLAGS_WORKAROUND_CAVIUM_22375	(1ULL << 1)
@@ -3688,6 +3689,7 @@ static void its_irq_domain_free(struct irq_domain *doma=
in, unsigned int virq,
 }
=20
 static const struct irq_domain_ops its_domain_ops =3D {
+	.select			=3D msi_lib_irq_domain_select,
 	.alloc			=3D its_irq_domain_alloc,
 	.free			=3D its_irq_domain_free,
 	.activate		=3D its_irq_domain_activate,
@@ -4993,6 +4995,9 @@ static int its_init_domain(struct its_node *its)
=20
 	irq_domain_update_bus_token(inner_domain, DOMAIN_BUS_NEXUS);
=20
+	inner_domain->msi_parent_ops =3D &gic_v3_its_msi_parent_ops;
+	inner_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT;
+
 	return 0;
 }
=20
diff --git a/drivers/irqchip/irq-gic-v3-mbi.c b/drivers/irqchip/irq-gic-v3-mb=
i.c
index dbb8b1efda44..3fe870f8ee17 100644
--- a/drivers/irqchip/irq-gic-v3-mbi.c
+++ b/drivers/irqchip/irq-gic-v3-mbi.c
@@ -18,6 +18,8 @@
=20
 #include <linux/irqchip/arm-gic-v3.h>
=20
+#include "irq-msi-lib.h"
+
 struct mbi_range {
 	u32			spi_start;
 	u32			nr_spis;
@@ -138,6 +140,7 @@ static void mbi_irq_domain_free(struct irq_domain *domain,
 }
=20
 static const struct irq_domain_ops mbi_domain_ops =3D {
+	.select			=3D msi_lib_irq_domain_select,
 	.alloc			=3D mbi_irq_domain_alloc,
 	.free			=3D mbi_irq_domain_free,
 };
@@ -151,54 +154,6 @@ static void mbi_compose_msi_msg(struct irq_data *data, s=
truct msi_msg *msg)
 	iommu_dma_compose_msi_msg(irq_data_get_msi_desc(data), msg);
 }
=20
-#ifdef CONFIG_PCI_MSI
-/* PCI-specific irqchip */
-static void mbi_mask_msi_irq(struct irq_data *d)
-{
-	pci_msi_mask_irq(d);
-	irq_chip_mask_parent(d);
-}
-
-static void mbi_unmask_msi_irq(struct irq_data *d)
-{
-	pci_msi_unmask_irq(d);
-	irq_chip_unmask_parent(d);
-}
-
-static struct irq_chip mbi_msi_irq_chip =3D {
-	.name			=3D "MSI",
-	.irq_mask		=3D mbi_mask_msi_irq,
-	.irq_unmask		=3D mbi_unmask_msi_irq,
-	.irq_eoi		=3D irq_chip_eoi_parent,
-	.irq_compose_msi_msg	=3D mbi_compose_msi_msg,
-};
-
-static struct msi_domain_info mbi_msi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
-		   MSI_FLAG_PCI_MSIX | MSI_FLAG_MULTI_PCI_MSI),
-	.chip	=3D &mbi_msi_irq_chip,
-};
-
-static int mbi_allocate_pci_domain(struct irq_domain *nexus_domain,
-				   struct irq_domain **pci_domain)
-{
-	*pci_domain =3D pci_msi_create_irq_domain(nexus_domain->parent->fwnode,
-						&mbi_msi_domain_info,
-						nexus_domain);
-	if (!*pci_domain)
-		return -ENOMEM;
-
-	return 0;
-}
-#else
-static int mbi_allocate_pci_domain(struct irq_domain *nexus_domain,
-				   struct irq_domain **pci_domain)
-{
-	*pci_domain =3D NULL;
-	return 0;
-}
-#endif
-
 static void mbi_compose_mbi_msg(struct irq_data *data, struct msi_msg *msg)
 {
 	mbi_compose_msi_msg(data, msg);
@@ -210,28 +165,51 @@ static void mbi_compose_mbi_msg(struct irq_data *data, =
struct msi_msg *msg)
 	iommu_dma_compose_msi_msg(irq_data_get_msi_desc(data), &msg[1]);
 }
=20
-/* Platform-MSI specific irqchip */
-static struct irq_chip mbi_pmsi_irq_chip =3D {
-	.name			=3D "pMSI",
-	.irq_set_type		=3D irq_chip_set_type_parent,
-	.irq_compose_msi_msg	=3D mbi_compose_mbi_msg,
-	.flags			=3D IRQCHIP_SUPPORTS_LEVEL_MSI,
-};
-
-static struct msi_domain_ops mbi_pmsi_ops =3D {
-};
+static bool mbi_init_dev_msi_info(struct device *dev, struct irq_domain *dom=
ain,
+				  struct irq_domain *real_parent, struct msi_domain_info *info)
+{
+	if (!msi_lib_init_dev_msi_info(dev, domain, real_parent, info))
+		return false;
+
+	switch (info->bus_token) {
+	case DOMAIN_BUS_PCI_DEVICE_MSI:
+	case DOMAIN_BUS_PCI_DEVICE_MSIX:
+		info->chip->irq_compose_msi_msg =3D mbi_compose_msi_msg;
+		return true;
+
+	case DOMAIN_BUS_DEVICE_MSI:
+		info->chip->irq_compose_msi_msg =3D mbi_compose_mbi_msg;
+		info->chip->irq_set_type =3D irq_chip_set_type_parent;
+		info->chip->flags |=3D IRQCHIP_SUPPORTS_LEVEL_MSI;
+		info->flags |=3D MSI_FLAG_LEVEL_CAPABLE;
+		return true;
+
+	default:
+		WARN_ON_ONCE(1);
+		return false;
+	}
+}
=20
-static struct msi_domain_info mbi_pmsi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
-		   MSI_FLAG_LEVEL_CAPABLE),
-	.ops	=3D &mbi_pmsi_ops,
-	.chip	=3D &mbi_pmsi_irq_chip,
+#define MBI_MSI_FLAGS_REQUIRED  (MSI_FLAG_USE_DEF_DOM_OPS |	\
+				 MSI_FLAG_USE_DEF_CHIP_OPS |	\
+				 MSI_FLAG_PCI_MSI_MASK_PARENT)
+
+#define MBI_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK |	\
+				 MSI_FLAG_PCI_MSIX      |	\
+				 MSI_FLAG_MULTI_PCI_MSI)
+
+static const struct msi_parent_ops gic_v3_mbi_msi_parent_ops =3D {
+	.supported_flags	=3D MBI_MSI_FLAGS_SUPPORTED,
+	.required_flags		=3D MBI_MSI_FLAGS_REQUIRED,
+	.bus_select_token	=3D DOMAIN_BUS_NEXUS,
+	.bus_select_mask	=3D MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
+	.prefix			=3D "MBI-",
+	.init_dev_msi_info	=3D mbi_init_dev_msi_info,
 };
=20
-static int mbi_allocate_domains(struct irq_domain *parent)
+static int mbi_allocate_domain(struct irq_domain *parent)
 {
-	struct irq_domain *nexus_domain, *pci_domain, *plat_domain;
-	int err;
+	struct irq_domain *nexus_domain;
=20
 	nexus_domain =3D irq_domain_create_hierarchy(parent, 0, 0, parent->fwnode,
 						   &mbi_domain_ops, NULL);
@@ -239,22 +217,8 @@ static int mbi_allocate_domains(struct irq_domain *paren=
t)
 		return -ENOMEM;
=20
 	irq_domain_update_bus_token(nexus_domain, DOMAIN_BUS_NEXUS);
-
-	err =3D mbi_allocate_pci_domain(nexus_domain, &pci_domain);
-
-	plat_domain =3D platform_msi_create_irq_domain(parent->fwnode,
-						     &mbi_pmsi_domain_info,
-						     nexus_domain);
-
-	if (err || !plat_domain) {
-		if (plat_domain)
-			irq_domain_remove(plat_domain);
-		if (pci_domain)
-			irq_domain_remove(pci_domain);
-		irq_domain_remove(nexus_domain);
-		return -ENOMEM;
-	}
-
+	nexus_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT;
+	nexus_domain->msi_parent_ops =3D &gic_v3_mbi_msi_parent_ops;
 	return 0;
 }
=20
@@ -317,7 +281,7 @@ int __init mbi_init(struct fwnode_handle *fwnode, struct =
irq_domain *parent)
=20
 	pr_info("Using MBI frame %pa\n", &mbi_phys_base);
=20
-	ret =3D mbi_allocate_domains(parent);
+	ret =3D mbi_allocate_domain(parent);
 	if (ret)
 		goto err_free_mbi;
=20
diff --git a/drivers/irqchip/irq-imx-mu-msi.c b/drivers/irqchip/irq-imx-mu-ms=
i.c
index 90d41c1407ac..4342a21de1eb 100644
--- a/drivers/irqchip/irq-imx-mu-msi.c
+++ b/drivers/irqchip/irq-imx-mu-msi.c
@@ -24,6 +24,8 @@
 #include <linux/pm_domain.h>
 #include <linux/spinlock.h>
=20
+#include "irq-msi-lib.h"
+
 #define IMX_MU_CHANS            4
=20
 enum imx_mu_xcr {
@@ -114,20 +116,6 @@ static void imx_mu_msi_parent_ack_irq(struct irq_data *d=
ata)
 	imx_mu_read(msi_data, msi_data->cfg->xRR + data->hwirq * 4);
 }
=20
-static struct irq_chip imx_mu_msi_irq_chip =3D {
-	.name =3D "MU-MSI",
-	.irq_ack =3D irq_chip_ack_parent,
-};
-
-static struct msi_domain_ops imx_mu_msi_irq_ops =3D {
-};
-
-static struct msi_domain_info imx_mu_msi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS),
-	.ops	=3D &imx_mu_msi_irq_ops,
-	.chip	=3D &imx_mu_msi_irq_chip,
-};
-
 static void imx_mu_msi_parent_compose_msg(struct irq_data *data,
 					  struct msi_msg *msg)
 {
@@ -195,6 +183,7 @@ static void imx_mu_msi_domain_irq_free(struct irq_domain =
*domain,
 }
=20
 static const struct irq_domain_ops imx_mu_msi_domain_ops =3D {
+	.select	=3D msi_lib_irq_domain_select,
 	.alloc	=3D imx_mu_msi_domain_irq_alloc,
 	.free	=3D imx_mu_msi_domain_irq_free,
 };
@@ -216,35 +205,38 @@ static void imx_mu_msi_irq_handler(struct irq_desc *des=
c)
 	chained_irq_exit(chip, desc);
 }
=20
+#define IMX_MU_MSI_FLAGS_REQUIRED	(MSI_FLAG_USE_DEF_DOM_OPS |	\
+					 MSI_FLAG_USE_DEF_CHIP_OPS |	\
+					 MSI_FLAG_PARENT_PM_DEV)
+
+#define IMX_MU_MSI_FLAGS_SUPPORTED	(MSI_GENERIC_FLAGS_MASK)
+
+static const struct msi_parent_ops imx_mu_msi_parent_ops =3D {
+	.supported_flags	=3D IMX_MU_MSI_FLAGS_SUPPORTED,
+	.required_flags		=3D IMX_MU_MSI_FLAGS_REQUIRED,
+	.bus_select_token       =3D DOMAIN_BUS_NEXUS,
+	.bus_select_mask	=3D MATCH_PLATFORM_MSI,
+	.prefix			=3D "MU-MSI-",
+	.init_dev_msi_info	=3D msi_lib_init_dev_msi_info,
+};
+
 static int imx_mu_msi_domains_init(struct imx_mu_msi *msi_data, struct devic=
e *dev)
 {
 	struct fwnode_handle *fwnodes =3D dev_fwnode(dev);
 	struct irq_domain *parent;
=20
 	/* Initialize MSI domain parent */
-	parent =3D irq_domain_create_linear(fwnodes,
-					    IMX_MU_CHANS,
-					    &imx_mu_msi_domain_ops,
-					    msi_data);
+	parent =3D irq_domain_create_linear(fwnodes, IMX_MU_CHANS,
+					  &imx_mu_msi_domain_ops, msi_data);
 	if (!parent) {
 		dev_err(dev, "failed to create IRQ domain\n");
 		return -ENOMEM;
 	}
=20
 	irq_domain_update_bus_token(parent, DOMAIN_BUS_NEXUS);
-
-	msi_data->msi_domain =3D platform_msi_create_irq_domain(fwnodes,
-					&imx_mu_msi_domain_info,
-					parent);
-
-	if (!msi_data->msi_domain) {
-		dev_err(dev, "failed to create MSI domain\n");
-		irq_domain_remove(parent);
-		return -ENOMEM;
-	}
-
-	irq_domain_set_pm_device(msi_data->msi_domain, dev);
-
+	parent->dev =3D parent->pm_dev =3D dev;
+	parent->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT;
+	parent->msi_parent_ops =3D &imx_mu_msi_parent_ops;
 	return 0;
 }
=20
diff --git a/drivers/irqchip/irq-mbigen.c b/drivers/irqchip/irq-mbigen.c
index 58881d313979..093fd42893a7 100644
--- a/drivers/irqchip/irq-mbigen.c
+++ b/drivers/irqchip/irq-mbigen.c
@@ -135,24 +135,14 @@ static int mbigen_set_type(struct irq_data *data, unsig=
ned int type)
 	return 0;
 }
=20
-static struct irq_chip mbigen_irq_chip =3D {
-	.name =3D			"mbigen-v2",
-	.irq_mask =3D		irq_chip_mask_parent,
-	.irq_unmask =3D		irq_chip_unmask_parent,
-	.irq_eoi =3D		mbigen_eoi_irq,
-	.irq_set_type =3D		mbigen_set_type,
-	.irq_set_affinity =3D	irq_chip_set_affinity_parent,
-};
-
-static void mbigen_write_msg(struct msi_desc *desc, struct msi_msg *msg)
+static void mbigen_write_msi_msg(struct irq_data *d, struct msi_msg *msg)
 {
-	struct irq_data *d =3D irq_get_irq_data(desc->irq);
 	void __iomem *base =3D d->chip_data;
 	u32 val;
=20
 	if (!msg->address_lo && !msg->address_hi)
 		return;
-=20
+
 	base +=3D get_mbigen_vec_reg(d->hwirq);
 	val =3D readl_relaxed(base);
=20
@@ -165,10 +155,8 @@ static void mbigen_write_msg(struct msi_desc *desc, stru=
ct msi_msg *msg)
 	writel_relaxed(val, base);
 }
=20
-static int mbigen_domain_translate(struct irq_domain *d,
-				    struct irq_fwspec *fwspec,
-				    unsigned long *hwirq,
-				    unsigned int *type)
+static int mbigen_domain_translate(struct irq_domain *d, struct irq_fwspec *=
fwspec,
+				   unsigned long *hwirq, unsigned int *type)
 {
 	if (is_of_node(fwspec->fwnode) || is_acpi_device_node(fwspec->fwnode)) {
 		if (fwspec->param_count !=3D 2)
@@ -192,51 +180,48 @@ static int mbigen_domain_translate(struct irq_domain *d,
 	return -EINVAL;
 }
=20
-static int mbigen_irq_domain_alloc(struct irq_domain *domain,
-					unsigned int virq,
-					unsigned int nr_irqs,
-					void *args)
+static void mbigen_domain_set_desc(msi_alloc_info_t *arg, struct msi_desc *d=
esc)
 {
-	struct irq_fwspec *fwspec =3D args;
-	irq_hw_number_t hwirq;
-	unsigned int type;
-	struct mbigen_device *mgn_chip;
-	int i, err;
-
-	err =3D mbigen_domain_translate(domain, fwspec, &hwirq, &type);
-	if (err)
-		return err;
-
-	err =3D platform_msi_device_domain_alloc(domain, virq, nr_irqs);
-	if (err)
-		return err;
+	arg->desc =3D desc;
+	arg->hwirq =3D (u32)desc->data.icookie.value;
+}
=20
-	mgn_chip =3D platform_msi_get_host_data(domain);
+static const struct msi_domain_template mbigen_msi_template =3D {
+	.chip =3D {
+		.name			=3D "mbigen-v2",
+		.irq_mask		=3D irq_chip_mask_parent,
+		.irq_unmask		=3D irq_chip_unmask_parent,
+		.irq_eoi		=3D mbigen_eoi_irq,
+		.irq_set_type		=3D mbigen_set_type,
+		.irq_write_msi_msg	=3D mbigen_write_msi_msg,
+	},
=20
-	for (i =3D 0; i < nr_irqs; i++)
-		irq_domain_set_hwirq_and_chip(domain, virq + i, hwirq + i,
-				      &mbigen_irq_chip, mgn_chip->base);
+	.ops =3D {
+		.set_desc		=3D mbigen_domain_set_desc,
+		.msi_translate		=3D mbigen_domain_translate,
+	},
=20
-	return 0;
-}
+	.info =3D {
+		.bus_token		=3D DOMAIN_BUS_WIRED_TO_MSI,
+		.flags			=3D MSI_FLAG_USE_DEV_FWNODE,
+	},
+};
=20
-static void mbigen_irq_domain_free(struct irq_domain *domain, unsigned int v=
irq,
-				   unsigned int nr_irqs)
+static bool mbigen_create_device_domain(struct device *dev, unsigned int siz=
e,
+					struct mbigen_device *mgn_chip)
 {
-	platform_msi_device_domain_free(domain, virq, nr_irqs);
-}
+	if (WARN_ON_ONCE(!dev->msi.domain))
+		return false;
=20
-static const struct irq_domain_ops mbigen_domain_ops =3D {
-	.translate	=3D mbigen_domain_translate,
-	.alloc		=3D mbigen_irq_domain_alloc,
-	.free		=3D mbigen_irq_domain_free,
-};
+	return msi_create_device_irq_domain(dev, MSI_DEFAULT_DOMAIN,
+					    &mbigen_msi_template, size,
+					    NULL, mgn_chip->base);
+}
=20
 static int mbigen_of_create_domain(struct platform_device *pdev,
 				   struct mbigen_device *mgn_chip)
 {
 	struct platform_device *child;
-	struct irq_domain *domain;
 	struct device_node *np;
 	u32 num_pins;
 	int ret =3D 0;
@@ -258,11 +243,7 @@ static int mbigen_of_create_domain(struct platform_devic=
e *pdev,
 			break;
 		}
=20
-		domain =3D platform_msi_create_device_domain(&child->dev, num_pins,
-							   mbigen_write_msg,
-							   &mbigen_domain_ops,
-							   mgn_chip);
-		if (!domain) {
+		if (!mbigen_create_device_domain(&child->dev, num_pins, mgn_chip)) {
 			ret =3D -ENOMEM;
 			break;
 		}
@@ -284,7 +265,6 @@ MODULE_DEVICE_TABLE(acpi, mbigen_acpi_match);
 static int mbigen_acpi_create_domain(struct platform_device *pdev,
 				     struct mbigen_device *mgn_chip)
 {
-	struct irq_domain *domain;
 	u32 num_pins =3D 0;
 	int ret;
=20
@@ -315,11 +295,7 @@ static int mbigen_acpi_create_domain(struct platform_dev=
ice *pdev,
 	if (ret || num_pins =3D=3D 0)
 		return -EINVAL;
=20
-	domain =3D platform_msi_create_device_domain(&pdev->dev, num_pins,
-						   mbigen_write_msg,
-						   &mbigen_domain_ops,
-						   mgn_chip);
-	if (!domain)
+	if (!mbigen_create_device_domain(&pdev->dev, num_pins, mgn_chip))
 		return -ENOMEM;
=20
 	return 0;
diff --git a/drivers/irqchip/irq-msi-lib.c b/drivers/irqchip/irq-msi-lib.c
new file mode 100644
index 000000000000..b5b90003311a
--- /dev/null
+++ b/drivers/irqchip/irq-msi-lib.c
@@ -0,0 +1,140 @@
+// SPDX-License-Identifier: GPL-2.0-only
+// Copyright (C) 2022 Linutronix GmbH
+// Copyright (C) 2022 Intel
+
+#include <linux/export.h>
+
+#include "irq-msi-lib.h"
+
+/**
+ * msi_lib_init_dev_msi_info - Domain info setup for MSI domains
+ * @dev:		The device for which the domain is created for
+ * @domain:		The domain providing this callback
+ * @real_parent:	The real parent domain of the domain to be initialized
+ *			which might be a domain built on top of @domain or
+ *			@domain itself
+ * @info:		The domain info for the domain to be initialize
+ *
+ * This function is to be used for all types of MSI domains above the root
+ * parent domain and any intermediates. The topmost parent domain specific
+ * functionality is determined via @real_parent.
+ *
+ * All intermediate domains between the root and the device domain must
+ * have either msi_parent_ops.init_dev_msi_info =3D msi_parent_init_dev_msi_=
info
+ * or invoke it down the line.
+ */
+bool msi_lib_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
+			       struct irq_domain *real_parent,
+			       struct msi_domain_info *info)
+{
+	const struct msi_parent_ops *pops =3D real_parent->msi_parent_ops;
+	u32 required_flags;
+
+	/* Parent ops available? */
+	if (WARN_ON_ONCE(!pops))
+		return false;
+
+	/*
+	 * MSI parent domain specific settings. For now there is only the
+	 * root parent domain, e.g. NEXUS, acting as a MSI parent, but it is
+	 * possible to stack MSI parents. See x86 vector -> irq remapping
+	 */
+	if (domain->bus_token =3D=3D pops->bus_select_token) {
+		if (WARN_ON_ONCE(domain !=3D real_parent))
+			return false;
+	} else {
+		WARN_ON_ONCE(1);
+		return false;
+	}
+
+	required_flags =3D pops->required_flags;
+
+	/* Is the target domain bus token supported? */
+	switch(info->bus_token) {
+	case DOMAIN_BUS_PCI_DEVICE_MSI:
+	case DOMAIN_BUS_PCI_DEVICE_MSIX:
+		if (WARN_ON_ONCE(!IS_ENABLED(CONFIG_PCI_MSI)))
+			return false;
+
+		break;
+	case DOMAIN_BUS_DEVICE_MSI:
+		/*
+		 * Per device MSI should never have any MSI feature bits
+		 * set. It's sole purpose is to create a dumb interrupt
+		 * chip which has a device specific irq_write_msi_msg()
+		 * callback.
+		 */
+		if (WARN_ON_ONCE(info->flags))
+			return false;
+
+		/* Core managed MSI descriptors */
+		info->flags =3D MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS | MSI_FLAG_FREE_MSI_DESCS;
+		fallthrough;
+	case DOMAIN_BUS_WIRED_TO_MSI:
+		/* Remove PCI specific flags */
+		required_flags &=3D ~MSI_FLAG_PCI_MSI_MASK_PARENT;
+		break;
+	default:
+		/*
+		 * This should never be reached. See
+		 * msi_lib_irq_domain_select()
+		 */
+		WARN_ON_ONCE(1);
+		return false;
+	}
+
+	/*
+	 * Mask out the domain specific MSI feature flags which are not
+	 * supported by the real parent.
+	 */
+	info->flags			&=3D pops->supported_flags;
+	/* Enforce the required flags */
+	info->flags			|=3D required_flags;
+
+	/* Chip updates for all child bus types */
+	if (!info->chip->irq_eoi)
+		info->chip->irq_eoi	=3D irq_chip_eoi_parent;
+	if (!info->chip->irq_ack)
+		info->chip->irq_ack	=3D irq_chip_ack_parent;
+
+	/*
+	 * The device MSI domain can never have a set affinity callback. It
+	 * always has to rely on the parent domain to handle affinity
+	 * settings. The device MSI domain just has to write the resulting
+	 * MSI message into the hardware which is the whole purpose of the
+	 * device MSI domain aside of mask/unmask which is provided e.g. by
+	 * PCI/MSI device domains.
+	 */
+	info->chip->irq_set_affinity	=3D msi_domain_set_affinity;
+	return true;
+}
+EXPORT_SYMBOL_GPL(msi_lib_init_dev_msi_info);
+
+/**
+ * msi_lib_irq_domain_select - Shared select function for NEXUS domains
+ * @d:		Pointer to the irq domain on which select is invoked
+ * @fwspec:	Firmware spec describing what is searched
+ * @bus_token:	The bus token for which a matching irq domain is looked up
+ *
+ * Returns:	%0 if @d is not what is being looked for
+ *
+ *		%1 if @d is either the domain which is directly searched for or
+ *		   if @d is providing the parent MSI domain for the functionality
+ *			 requested with @bus_token.
+ */
+int msi_lib_irq_domain_select(struct irq_domain *d, struct irq_fwspec *fwspe=
c,
+			      enum irq_domain_bus_token bus_token)
+{
+	const struct msi_parent_ops *ops =3D d->msi_parent_ops;
+	u32 busmask =3D BIT(bus_token);
+
+	if (fwspec->fwnode !=3D d->fwnode || fwspec->param_count !=3D 0)
+		return 0;
+
+	/* Handle pure domain searches */
+	if (bus_token =3D=3D ops->bus_select_token)
+		return 1;
+
+	return ops && !!(ops->bus_select_mask & busmask);
+}
+EXPORT_SYMBOL_GPL(msi_lib_irq_domain_select);
diff --git a/drivers/irqchip/irq-msi-lib.h b/drivers/irqchip/irq-msi-lib.h
new file mode 100644
index 000000000000..681ceabb7bc7
--- /dev/null
+++ b/drivers/irqchip/irq-msi-lib.h
@@ -0,0 +1,27 @@
+// SPDX-License-Identifier: GPL-2.0-only
+// Copyright (C) 2022 Linutronix GmbH
+// Copyright (C) 2022 Intel
+
+#ifndef _DRIVERS_IRQCHIP_IRQ_MSI_LIB_H
+#define _DRIVERS_IRQCHIP_IRQ_MSI_LIB_H
+
+#include <linux/bits.h>
+#include <linux/irqdomain.h>
+#include <linux/msi.h>
+
+#ifdef CONFIG_PCI_MSI
+#define MATCH_PCI_MSI		BIT(DOMAIN_BUS_PCI_MSI)
+#else
+#define MATCH_PCI_MSI		(0)
+#endif
+
+#define MATCH_PLATFORM_MSI	BIT(DOMAIN_BUS_PLATFORM_MSI)
+
+int msi_lib_irq_domain_select(struct irq_domain *d, struct irq_fwspec *fwspe=
c,
+			      enum irq_domain_bus_token bus_token);
+
+bool msi_lib_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
+			       struct irq_domain *real_parent,
+			       struct msi_domain_info *info);
+
+#endif /* _DRIVERS_IRQCHIP_IRQ_MSI_LIB_H */
diff --git a/drivers/irqchip/irq-mvebu-gicp.c b/drivers/irqchip/irq-mvebu-gic=
p.c
index c43a345061d5..2b6183919ea4 100644
--- a/drivers/irqchip/irq-mvebu-gicp.c
+++ b/drivers/irqchip/irq-mvebu-gicp.c
@@ -17,6 +17,8 @@
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
=20
+#include "irq-msi-lib.h"
+
 #include <dt-bindings/interrupt-controller/arm-gic.h>
=20
 #define GICP_SETSPI_NSR_OFFSET	0x0
@@ -145,32 +147,32 @@ static void gicp_irq_domain_free(struct irq_domain *dom=
ain,
 }
=20
 static const struct irq_domain_ops gicp_domain_ops =3D {
+	.select	=3D msi_lib_irq_domain_select,
 	.alloc	=3D gicp_irq_domain_alloc,
 	.free	=3D gicp_irq_domain_free,
 };
=20
-static struct irq_chip gicp_msi_irq_chip =3D {
-	.name		=3D "GICP",
-	.irq_set_type	=3D irq_chip_set_type_parent,
-	.flags		=3D IRQCHIP_SUPPORTS_LEVEL_MSI,
-};
+#define GICP_MSI_FLAGS_REQUIRED  (MSI_FLAG_USE_DEF_DOM_OPS |	\
+				  MSI_FLAG_USE_DEF_CHIP_OPS)
=20
-static struct msi_domain_ops gicp_msi_ops =3D {
-};
+#define GICP_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK |	\
+				  MSI_FLAG_LEVEL_CAPABLE)
=20
-static struct msi_domain_info gicp_msi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
-		   MSI_FLAG_LEVEL_CAPABLE),
-	.ops	=3D &gicp_msi_ops,
-	.chip	=3D &gicp_msi_irq_chip,
+static const struct msi_parent_ops gicp_msi_parent_ops =3D {
+	.supported_flags	=3D GICP_MSI_FLAGS_SUPPORTED,
+	.required_flags		=3D GICP_MSI_FLAGS_REQUIRED,
+	.bus_select_token       =3D DOMAIN_BUS_GENERIC_MSI,
+	.bus_select_mask	=3D MATCH_PLATFORM_MSI,
+	.prefix			=3D "GICP-",
+	.init_dev_msi_info	=3D msi_lib_init_dev_msi_info,
 };
=20
 static int mvebu_gicp_probe(struct platform_device *pdev)
 {
-	struct mvebu_gicp *gicp;
-	struct irq_domain *inner_domain, *plat_domain, *parent_domain;
+	struct irq_domain *inner_domain, *parent_domain;
 	struct device_node *node =3D pdev->dev.of_node;
 	struct device_node *irq_parent_dn;
+	struct mvebu_gicp *gicp;
 	int ret, i;
=20
 	gicp =3D devm_kzalloc(&pdev->dev, sizeof(*gicp), GFP_KERNEL);
@@ -234,17 +236,9 @@ static int mvebu_gicp_probe(struct platform_device *pdev)
 	if (!inner_domain)
 		return -ENOMEM;
=20
-
-	plat_domain =3D platform_msi_create_irq_domain(of_node_to_fwnode(node),
-						     &gicp_msi_domain_info,
-						     inner_domain);
-	if (!plat_domain) {
-		irq_domain_remove(inner_domain);
-		return -ENOMEM;
-	}
-
-	platform_set_drvdata(pdev, gicp);
-
+	irq_domain_update_bus_token(inner_domain, DOMAIN_BUS_GENERIC_MSI);
+	inner_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT;
+	inner_domain->msi_parent_ops =3D &gicp_msi_parent_ops;
 	return 0;
 }
=20
diff --git a/drivers/irqchip/irq-mvebu-icu.c b/drivers/irqchip/irq-mvebu-icu.c
index 3c77acc7ec6a..b337f6c05f18 100644
--- a/drivers/irqchip/irq-mvebu-icu.c
+++ b/drivers/irqchip/irq-mvebu-icu.c
@@ -20,6 +20,8 @@
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
=20
+#include "irq-msi-lib.h"
+
 #include <dt-bindings/interrupt-controller/mvebu-icu.h>
=20
 /* ICU registers */
@@ -60,99 +62,13 @@ struct mvebu_icu_msi_data {
 	const struct mvebu_icu_subset_data *subset_data;
 };
=20
-struct mvebu_icu_irq_data {
-	struct mvebu_icu *icu;
-	unsigned int icu_group;
-	unsigned int type;
-};
-
 static DEFINE_STATIC_KEY_FALSE(legacy_bindings);
=20
-static void mvebu_icu_init(struct mvebu_icu *icu,
-			   struct mvebu_icu_msi_data *msi_data,
-			   struct msi_msg *msg)
-{
-	const struct mvebu_icu_subset_data *subset =3D msi_data->subset_data;
-
-	if (atomic_cmpxchg(&msi_data->initialized, false, true))
-		return;
-
-	/* Set 'SET' ICU SPI message address in AP */
-	writel_relaxed(msg[0].address_hi, icu->base + subset->offset_set_ah);
-	writel_relaxed(msg[0].address_lo, icu->base + subset->offset_set_al);
-
-	if (subset->icu_group !=3D ICU_GRP_NSR)
-		return;
-
-	/* Set 'CLEAR' ICU SPI message address in AP (level-MSI only) */
-	writel_relaxed(msg[1].address_hi, icu->base + subset->offset_clr_ah);
-	writel_relaxed(msg[1].address_lo, icu->base + subset->offset_clr_al);
-}
-
-static void mvebu_icu_write_msg(struct msi_desc *desc, struct msi_msg *msg)
-{
-	struct irq_data *d =3D irq_get_irq_data(desc->irq);
-	struct mvebu_icu_msi_data *msi_data =3D platform_msi_get_host_data(d->domai=
n);
-	struct mvebu_icu_irq_data *icu_irqd =3D d->chip_data;
-	struct mvebu_icu *icu =3D icu_irqd->icu;
-	unsigned int icu_int;
-
-	if (msg->address_lo || msg->address_hi) {
-		/* One off initialization per domain */
-		mvebu_icu_init(icu, msi_data, msg);
-		/* Configure the ICU with irq number & type */
-		icu_int =3D msg->data | ICU_INT_ENABLE;
-		if (icu_irqd->type & IRQ_TYPE_EDGE_RISING)
-			icu_int |=3D ICU_IS_EDGE;
-		icu_int |=3D icu_irqd->icu_group << ICU_GROUP_SHIFT;
-	} else {
-		/* De-configure the ICU */
-		icu_int =3D 0;
-	}
-
-	writel_relaxed(icu_int, icu->base + ICU_INT_CFG(d->hwirq));
-
-	/*
-	 * The SATA unit has 2 ports, and a dedicated ICU entry per
-	 * port. The ahci sata driver supports only one irq interrupt
-	 * per SATA unit. To solve this conflict, we configure the 2
-	 * SATA wired interrupts in the south bridge into 1 GIC
-	 * interrupt in the north bridge. Even if only a single port
-	 * is enabled, if sata node is enabled, both interrupts are
-	 * configured (regardless of which port is actually in use).
-	 */
-	if (d->hwirq =3D=3D ICU_SATA0_ICU_ID || d->hwirq =3D=3D ICU_SATA1_ICU_ID) {
-		writel_relaxed(icu_int,
-			       icu->base + ICU_INT_CFG(ICU_SATA0_ICU_ID));
-		writel_relaxed(icu_int,
-			       icu->base + ICU_INT_CFG(ICU_SATA1_ICU_ID));
-	}
-}
-
-static struct irq_chip mvebu_icu_nsr_chip =3D {
-	.name			=3D "ICU-NSR",
-	.irq_mask		=3D irq_chip_mask_parent,
-	.irq_unmask		=3D irq_chip_unmask_parent,
-	.irq_eoi		=3D irq_chip_eoi_parent,
-	.irq_set_type		=3D irq_chip_set_type_parent,
-	.irq_set_affinity	=3D irq_chip_set_affinity_parent,
-};
-
-static struct irq_chip mvebu_icu_sei_chip =3D {
-	.name			=3D "ICU-SEI",
-	.irq_ack		=3D irq_chip_ack_parent,
-	.irq_mask		=3D irq_chip_mask_parent,
-	.irq_unmask		=3D irq_chip_unmask_parent,
-	.irq_set_type		=3D irq_chip_set_type_parent,
-	.irq_set_affinity	=3D irq_chip_set_affinity_parent,
-};
-
-static int
-mvebu_icu_irq_domain_translate(struct irq_domain *d, struct irq_fwspec *fwsp=
ec,
+static int mvebu_icu_translate(struct irq_domain *d, struct irq_fwspec *fwsp=
ec,
 			       unsigned long *hwirq, unsigned int *type)
 {
 	unsigned int param_count =3D static_branch_unlikely(&legacy_bindings) ? 3 :=
 2;
-	struct mvebu_icu_msi_data *msi_data =3D platform_msi_get_host_data(d);
+	struct mvebu_icu_msi_data *msi_data =3D d->host_data;
 	struct mvebu_icu *icu =3D msi_data->icu;
=20
 	/* Check the count of the parameters in dt */
@@ -192,81 +108,126 @@ mvebu_icu_irq_domain_translate(struct irq_domain *d, s=
truct irq_fwspec *fwspec,
 	return 0;
 }
=20
-static int
-mvebu_icu_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
-			   unsigned int nr_irqs, void *args)
+static void mvebu_icu_init(struct mvebu_icu *icu,
+			   struct mvebu_icu_msi_data *msi_data,
+			   struct msi_msg *msg)
 {
-	int err;
-	unsigned long hwirq;
-	struct irq_fwspec *fwspec =3D args;
-	struct mvebu_icu_msi_data *msi_data =3D platform_msi_get_host_data(domain);
-	struct mvebu_icu *icu =3D msi_data->icu;
-	struct mvebu_icu_irq_data *icu_irqd;
-	struct irq_chip *chip =3D &mvebu_icu_nsr_chip;
+	const struct mvebu_icu_subset_data *subset =3D msi_data->subset_data;
=20
-	icu_irqd =3D kmalloc(sizeof(*icu_irqd), GFP_KERNEL);
-	if (!icu_irqd)
-		return -ENOMEM;
+	if (atomic_cmpxchg(&msi_data->initialized, false, true))
+		return;
=20
-	err =3D mvebu_icu_irq_domain_translate(domain, fwspec, &hwirq,
-					     &icu_irqd->type);
-	if (err) {
-		dev_err(icu->dev, "failed to translate ICU parameters\n");
-		goto free_irqd;
-	}
+	/* Set 'SET' ICU SPI message address in AP */
+	writel_relaxed(msg[0].address_hi, icu->base + subset->offset_set_ah);
+	writel_relaxed(msg[0].address_lo, icu->base + subset->offset_set_al);
=20
-	if (static_branch_unlikely(&legacy_bindings))
-		icu_irqd->icu_group =3D fwspec->param[0];
-	else
-		icu_irqd->icu_group =3D msi_data->subset_data->icu_group;
-	icu_irqd->icu =3D icu;
+	if (subset->icu_group !=3D ICU_GRP_NSR)
+		return;
=20
-	err =3D platform_msi_device_domain_alloc(domain, virq, nr_irqs);
-	if (err) {
-		dev_err(icu->dev, "failed to allocate ICU interrupt in parent domain\n");
-		goto free_irqd;
-	}
+	/* Set 'CLEAR' ICU SPI message address in AP (level-MSI only) */
+	writel_relaxed(msg[1].address_hi, icu->base + subset->offset_clr_ah);
+	writel_relaxed(msg[1].address_lo, icu->base + subset->offset_clr_al);
+}
=20
-	/* Make sure there is no interrupt left pending by the firmware */
-	err =3D irq_set_irqchip_state(virq, IRQCHIP_STATE_PENDING, false);
-	if (err)
-		goto free_msi;
+static int mvebu_icu_msi_init(struct irq_domain *domain, struct msi_domain_i=
nfo *info,
+			      unsigned int virq, irq_hw_number_t hwirq, msi_alloc_info_t *arg)
+{
+	irq_domain_set_hwirq_and_chip(domain, virq, hwirq, info->chip, info->chip_d=
ata);
+	return irq_set_irqchip_state(virq, IRQCHIP_STATE_PENDING, false);
+}
=20
-	if (icu_irqd->icu_group =3D=3D ICU_GRP_SEI)
-		chip =3D &mvebu_icu_sei_chip;
+static void mvebu_icu_set_desc(msi_alloc_info_t *arg, struct msi_desc *desc)
+{
+	arg->desc =3D desc;
+	arg->hwirq =3D (u32)desc->data.icookie.value;
+}
=20
-	err =3D irq_domain_set_hwirq_and_chip(domain, virq, hwirq,
-					    chip, icu_irqd);
-	if (err) {
-		dev_err(icu->dev, "failed to set the data to IRQ domain\n");
-		goto free_msi;
+static void mvebu_icu_write_msi_msg(struct irq_data *d, struct msi_msg *msg)
+{
+	struct mvebu_icu_msi_data *msi_data =3D d->chip_data;
+	unsigned int icu_group =3D msi_data->subset_data->icu_group;
+	struct msi_desc *desc =3D irq_data_get_msi_desc(d);
+	struct mvebu_icu *icu =3D msi_data->icu;
+	unsigned int type;
+	u32 icu_int;
+
+	if (msg->address_lo || msg->address_hi) {
+		/* One off initialization per domain */
+		mvebu_icu_init(icu, msi_data, msg);
+		/* Configure the ICU with irq number & type */
+		icu_int =3D msg->data | ICU_INT_ENABLE;
+		type =3D (unsigned int)(desc->data.icookie.value >> 32);
+		if (type & IRQ_TYPE_EDGE_RISING)
+			icu_int |=3D ICU_IS_EDGE;
+		icu_int |=3D icu_group << ICU_GROUP_SHIFT;
+	} else {
+		/* De-configure the ICU */
+		icu_int =3D 0;
 	}
=20
-	return 0;
+	writel_relaxed(icu_int, icu->base + ICU_INT_CFG(d->hwirq));
=20
-free_msi:
-	platform_msi_device_domain_free(domain, virq, nr_irqs);
-free_irqd:
-	kfree(icu_irqd);
-	return err;
+	/*
+	 * The SATA unit has 2 ports, and a dedicated ICU entry per
+	 * port. The ahci sata driver supports only one irq interrupt
+	 * per SATA unit. To solve this conflict, we configure the 2
+	 * SATA wired interrupts in the south bridge into 1 GIC
+	 * interrupt in the north bridge. Even if only a single port
+	 * is enabled, if sata node is enabled, both interrupts are
+	 * configured (regardless of which port is actually in use).
+	 */
+	if (d->hwirq =3D=3D ICU_SATA0_ICU_ID || d->hwirq =3D=3D ICU_SATA1_ICU_ID) {
+		writel_relaxed(icu_int, icu->base + ICU_INT_CFG(ICU_SATA0_ICU_ID));
+		writel_relaxed(icu_int, icu->base + ICU_INT_CFG(ICU_SATA1_ICU_ID));
+	}
 }
=20
-static void
-mvebu_icu_irq_domain_free(struct irq_domain *domain, unsigned int virq,
-			  unsigned int nr_irqs)
-{
-	struct irq_data *d =3D irq_get_irq_data(virq);
-	struct mvebu_icu_irq_data *icu_irqd =3D d->chip_data;
+static const struct msi_domain_template mvebu_icu_nsr_msi_template =3D {
+	.chip =3D {
+		.name			=3D "ICU-NSR",
+		.irq_mask		=3D irq_chip_mask_parent,
+		.irq_unmask		=3D irq_chip_unmask_parent,
+		.irq_eoi		=3D irq_chip_eoi_parent,
+		.irq_set_type		=3D irq_chip_set_type_parent,
+		.irq_write_msi_msg	=3D mvebu_icu_write_msi_msg,
+		.flags			=3D IRQCHIP_SUPPORTS_LEVEL_MSI,
+	},
=20
-	kfree(icu_irqd);
+	.ops =3D {
+		.msi_translate		=3D mvebu_icu_translate,
+		.msi_init		=3D mvebu_icu_msi_init,
+		.set_desc		=3D mvebu_icu_set_desc,
+	},
=20
-	platform_msi_device_domain_free(domain, virq, nr_irqs);
-}
+	.info =3D {
+		.bus_token		=3D DOMAIN_BUS_WIRED_TO_MSI,
+		.flags			=3D MSI_FLAG_LEVEL_CAPABLE |
+					  MSI_FLAG_USE_DEV_FWNODE,
+	},
+};
+
+static const struct msi_domain_template mvebu_icu_sei_msi_template =3D {
+	.chip =3D {
+		.name			=3D "ICU-SEI",
+		.irq_mask		=3D irq_chip_mask_parent,
+		.irq_unmask		=3D irq_chip_unmask_parent,
+		.irq_ack		=3D irq_chip_ack_parent,
+		.irq_set_type		=3D irq_chip_set_type_parent,
+		.irq_write_msi_msg	=3D mvebu_icu_write_msi_msg,
+		.flags			=3D IRQCHIP_SUPPORTS_LEVEL_MSI,
+	},
=20
-static const struct irq_domain_ops mvebu_icu_domain_ops =3D {
-	.translate =3D mvebu_icu_irq_domain_translate,
-	.alloc     =3D mvebu_icu_irq_domain_alloc,
-	.free      =3D mvebu_icu_irq_domain_free,
+	.ops =3D {
+		.msi_translate		=3D mvebu_icu_translate,
+		.msi_init		=3D mvebu_icu_msi_init,
+		.set_desc		=3D mvebu_icu_set_desc,
+	},
+
+	.info =3D {
+		.bus_token		=3D DOMAIN_BUS_WIRED_TO_MSI,
+		.flags			=3D MSI_FLAG_LEVEL_CAPABLE |
+					  MSI_FLAG_USE_DEV_FWNODE,
+	},
 };
=20
 static const struct mvebu_icu_subset_data mvebu_icu_nsr_subset_data =3D {
@@ -297,10 +258,10 @@ static const struct of_device_id mvebu_icu_subset_of_ma=
tch[] =3D {
=20
 static int mvebu_icu_subset_probe(struct platform_device *pdev)
 {
+	const struct msi_domain_template *tmpl;
 	struct mvebu_icu_msi_data *msi_data;
-	struct device_node *msi_parent_dn;
 	struct device *dev =3D &pdev->dev;
-	struct irq_domain *irq_domain;
+	bool sei;
=20
 	msi_data =3D devm_kzalloc(dev, sizeof(*msi_data), GFP_KERNEL);
 	if (!msi_data)
@@ -314,20 +275,18 @@ static int mvebu_icu_subset_probe(struct platform_devic=
e *pdev)
 		msi_data->subset_data =3D of_device_get_match_data(dev);
 	}
=20
-	dev->msi.domain =3D of_msi_get_domain(dev, dev->of_node,
-					    DOMAIN_BUS_PLATFORM_MSI);
+	dev->msi.domain =3D of_msi_get_domain(dev, dev->of_node, DOMAIN_BUS_PLATFOR=
M_MSI);
 	if (!dev->msi.domain)
 		return -EPROBE_DEFER;
=20
-	msi_parent_dn =3D irq_domain_get_of_node(dev->msi.domain);
-	if (!msi_parent_dn)
+	if (!irq_domain_get_of_node(dev->msi.domain))
 		return -ENODEV;
=20
-	irq_domain =3D platform_msi_create_device_tree_domain(dev, ICU_MAX_IRQS,
-							    mvebu_icu_write_msg,
-							    &mvebu_icu_domain_ops,
-							    msi_data);
-	if (!irq_domain) {
+	sei =3D msi_data->subset_data->icu_group =3D=3D ICU_GRP_SEI;
+	tmpl =3D sei ? &mvebu_icu_sei_msi_template : &mvebu_icu_nsr_msi_template;
+
+	if (!msi_create_device_irq_domain(dev, MSI_DEFAULT_DOMAIN, tmpl,
+					  ICU_MAX_IRQS, NULL, msi_data)) {
 		dev_err(dev, "Failed to create ICU MSI domain\n");
 		return -ENOMEM;
 	}
diff --git a/drivers/irqchip/irq-mvebu-odmi.c b/drivers/irqchip/irq-mvebu-odm=
i.c
index 108091533e10..ff19bfd258dc 100644
--- a/drivers/irqchip/irq-mvebu-odmi.c
+++ b/drivers/irqchip/irq-mvebu-odmi.c
@@ -17,6 +17,9 @@
 #include <linux/msi.h>
 #include <linux/of_address.h>
 #include <linux/slab.h>
+
+#include "irq-msi-lib.h"
+
 #include <dt-bindings/interrupt-controller/arm-gic.h>
=20
 #define GICP_ODMIN_SET			0x40
@@ -141,27 +144,29 @@ static void odmi_irq_domain_free(struct irq_domain *dom=
ain,
 }
=20
 static const struct irq_domain_ops odmi_domain_ops =3D {
+	.select	=3D msi_lib_irq_domain_select,
 	.alloc	=3D odmi_irq_domain_alloc,
 	.free	=3D odmi_irq_domain_free,
 };
=20
-static struct irq_chip odmi_msi_irq_chip =3D {
-	.name	=3D "ODMI",
-};
+#define ODMI_MSI_FLAGS_REQUIRED  (MSI_FLAG_USE_DEF_DOM_OPS |	\
+				  MSI_FLAG_USE_DEF_CHIP_OPS)
=20
-static struct msi_domain_ops odmi_msi_ops =3D {
-};
+#define ODMI_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK)
=20
-static struct msi_domain_info odmi_msi_domain_info =3D {
-	.flags	=3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS),
-	.ops	=3D &odmi_msi_ops,
-	.chip	=3D &odmi_msi_irq_chip,
+static const struct msi_parent_ops odmi_msi_parent_ops =3D {
+	.supported_flags	=3D ODMI_MSI_FLAGS_SUPPORTED,
+	.required_flags		=3D ODMI_MSI_FLAGS_REQUIRED,
+	.bus_select_token	=3D DOMAIN_BUS_GENERIC_MSI,
+	.bus_select_mask	=3D MATCH_PLATFORM_MSI,
+	.prefix			=3D "ODMI-",
+	.init_dev_msi_info	=3D msi_lib_init_dev_msi_info,
 };
=20
 static int __init mvebu_odmi_init(struct device_node *node,
 				  struct device_node *parent)
 {
-	struct irq_domain *parent_domain, *inner_domain, *plat_domain;
+	struct irq_domain *parent_domain, *inner_domain;
 	int ret, i;
=20
 	if (of_property_read_u32(node, "marvell,odmi-frames", &odmis_count))
@@ -208,18 +213,12 @@ static int __init mvebu_odmi_init(struct device_node *n=
ode,
 		goto err_unmap;
 	}
=20
-	plat_domain =3D platform_msi_create_irq_domain(of_node_to_fwnode(node),
-						     &odmi_msi_domain_info,
-						     inner_domain);
-	if (!plat_domain) {
-		ret =3D -ENOMEM;
-		goto err_remove_inner;
-	}
+	irq_domain_update_bus_token(inner_domain, DOMAIN_BUS_GENERIC_MSI);
+	inner_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT;
+	inner_domain->msi_parent_ops =3D &odmi_msi_parent_ops;
=20
 	return 0;
=20
-err_remove_inner:
-	irq_domain_remove(inner_domain);
 err_unmap:
 	for (i =3D 0; i < odmis_count; i++) {
 		struct odmi_data *odmi =3D &odmis[i];
diff --git a/drivers/irqchip/irq-mvebu-sei.c b/drivers/irqchip/irq-mvebu-sei.c
index a48dbe91b036..f8c70f2d100a 100644
--- a/drivers/irqchip/irq-mvebu-sei.c
+++ b/drivers/irqchip/irq-mvebu-sei.c
@@ -14,6 +14,8 @@
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
=20
+#include "irq-msi-lib.h"
+
 /* Cause register */
 #define GICP_SECR(idx)		(0x0  + ((idx) * 0x4))
 /* Mask register */
@@ -190,6 +192,7 @@ static void mvebu_sei_domain_free(struct irq_domain *doma=
in, unsigned int virq,
 }
=20
 static const struct irq_domain_ops mvebu_sei_domain_ops =3D {
+	.select	=3D msi_lib_irq_domain_select,
 	.alloc	=3D mvebu_sei_domain_alloc,
 	.free	=3D mvebu_sei_domain_free,
 };
@@ -307,21 +310,6 @@ static const struct irq_domain_ops mvebu_sei_cp_domain_o=
ps =3D {
 	.free	=3D mvebu_sei_cp_domain_free,
 };
=20
-static struct irq_chip mvebu_sei_msi_irq_chip =3D {
-	.name		=3D "SEI pMSI",
-	.irq_ack	=3D irq_chip_ack_parent,
-	.irq_set_type	=3D irq_chip_set_type_parent,
-};
-
-static struct msi_domain_ops mvebu_sei_msi_ops =3D {
-};
-
-static struct msi_domain_info mvebu_sei_msi_domain_info =3D {
-	.flags	=3D MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS,
-	.ops	=3D &mvebu_sei_msi_ops,
-	.chip	=3D &mvebu_sei_msi_irq_chip,
-};
-
 static void mvebu_sei_handle_cascade_irq(struct irq_desc *desc)
 {
 	struct mvebu_sei *sei =3D irq_desc_get_handler_data(desc);
@@ -360,10 +348,23 @@ static void mvebu_sei_reset(struct mvebu_sei *sei)
 	}
 }
=20
+#define SEI_MSI_FLAGS_REQUIRED	(MSI_FLAG_USE_DEF_DOM_OPS |	\
+				 MSI_FLAG_USE_DEF_CHIP_OPS)
+
+#define SEI_MSI_FLAGS_SUPPORTED	(MSI_GENERIC_FLAGS_MASK)
+
+static const struct msi_parent_ops sei_msi_parent_ops =3D {
+	.supported_flags	=3D SEI_MSI_FLAGS_SUPPORTED,
+	.required_flags		=3D SEI_MSI_FLAGS_REQUIRED,
+	.bus_select_mask	=3D MATCH_PLATFORM_MSI,
+	.bus_select_token	=3D DOMAIN_BUS_GENERIC_MSI,
+	.prefix			=3D "SEI-",
+	.init_dev_msi_info	=3D msi_lib_init_dev_msi_info,
+};
+
 static int mvebu_sei_probe(struct platform_device *pdev)
 {
 	struct device_node *node =3D pdev->dev.of_node;
-	struct irq_domain *plat_domain;
 	struct mvebu_sei *sei;
 	u32 parent_irq;
 	int ret;
@@ -440,33 +441,20 @@ static int mvebu_sei_probe(struct platform_device *pdev)
 	}
=20
 	irq_domain_update_bus_token(sei->cp_domain, DOMAIN_BUS_GENERIC_MSI);
-
-	plat_domain =3D platform_msi_create_irq_domain(of_node_to_fwnode(node),
-						     &mvebu_sei_msi_domain_info,
-						     sei->cp_domain);
-	if (!plat_domain) {
-		pr_err("Failed to create CPs MSI domain\n");
-		ret =3D -ENOMEM;
-		goto remove_cp_domain;
-	}
+	sei->cp_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT;
+	sei->cp_domain->msi_parent_ops =3D &sei_msi_parent_ops;
=20
 	mvebu_sei_reset(sei);
=20
-	irq_set_chained_handler_and_data(parent_irq,
-					 mvebu_sei_handle_cascade_irq,
-					 sei);
-
+	irq_set_chained_handler_and_data(parent_irq, mvebu_sei_handle_cascade_irq, =
sei);
 	return 0;
=20
-remove_cp_domain:
-	irq_domain_remove(sei->cp_domain);
 remove_ap_domain:
 	irq_domain_remove(sei->ap_domain);
 remove_sei_domain:
 	irq_domain_remove(sei->sei_domain);
 dispose_irq:
 	irq_dispose_mapping(parent_irq);
-
 	return ret;
 }
=20
diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
index 03d2dd25790d..569125726b3e 100644
--- a/drivers/pci/msi/irqdomain.c
+++ b/drivers/pci/msi/irqdomain.c
@@ -148,17 +148,35 @@ static void pci_device_domain_set_desc(msi_alloc_info_t=
 *arg, struct msi_desc *d
 	arg->hwirq =3D desc->msi_index;
 }
=20
+static __always_inline void cond_mask_parent(struct irq_data *data)
+{
+	struct msi_domain_info *info =3D data->domain->host_data;
+
+	if (unlikely(info->flags & MSI_FLAG_PCI_MSI_MASK_PARENT))
+		irq_chip_mask_parent(data);
+}
+
+static __always_inline void cond_unmask_parent(struct irq_data *data)
+{
+	struct msi_domain_info *info =3D data->domain->host_data;
+
+	if (unlikely(info->flags & MSI_FLAG_PCI_MSI_MASK_PARENT))
+		irq_chip_unmask_parent(data);
+}
+
 static void pci_irq_mask_msi(struct irq_data *data)
 {
 	struct msi_desc *desc =3D irq_data_get_msi_desc(data);
=20
 	pci_msi_mask(desc, BIT(data->irq - desc->irq));
+	cond_mask_parent(data);
 }
=20
 static void pci_irq_unmask_msi(struct irq_data *data)
 {
 	struct msi_desc *desc =3D irq_data_get_msi_desc(data);
=20
+	cond_unmask_parent(data);
 	pci_msi_unmask(desc, BIT(data->irq - desc->irq));
 }
=20
@@ -195,10 +213,12 @@ static const struct msi_domain_template pci_msi_templat=
e =3D {
 static void pci_irq_mask_msix(struct irq_data *data)
 {
 	pci_msix_mask(irq_data_get_msi_desc(data));
+	cond_mask_parent(data);
 }
=20
 static void pci_irq_unmask_msix(struct irq_data *data)
 {
+	cond_unmask_parent(data);
 	pci_msix_unmask(irq_data_get_msi_desc(data));
 }
=20
diff --git a/include/linux/msi.h b/include/linux/msi.h
index dc27cf3903d5..369367ecae5e 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -21,11 +21,7 @@
 #include <linux/irqdomain_defs.h>
 #include <linux/cpumask.h>
 #include <linux/msi_api.h>
-#include <linux/xarray.h>
-#include <linux/mutex.h>
-#include <linux/list.h>
 #include <linux/irq.h>
-#include <linux/bits.h>
=20
 #include <asm/msi.h>
=20
@@ -81,7 +77,6 @@ extern int pci_msi_ignore_mask;
 /* Helper functions */
 struct msi_desc;
 struct pci_dev;
-struct platform_msi_priv_data;
 struct device_attribute;
 struct irq_domain;
 struct irq_affinity_desc;
@@ -228,22 +223,6 @@ struct msi_dev_domain {
 	struct irq_domain	*domain;
 };
=20
-/**
- * msi_device_data - MSI per device data
- * @properties:		MSI properties which are interesting to drivers
- * @platform_data:	Platform-MSI specific data
- * @mutex:		Mutex protecting the MSI descriptor store
- * @__domains:		Internal data for per device MSI domains
- * @__iter_idx:		Index to search the next entry for iterators
- */
-struct msi_device_data {
-	unsigned long			properties;
-	struct platform_msi_priv_data	*platform_data;
-	struct mutex			mutex;
-	struct msi_dev_domain		__domains[MSI_MAX_DEVICE_IRQDOMAINS];
-	unsigned long			__iter_idx;
-};
-
 int msi_setup_device_data(struct device *dev);
=20
 void msi_lock_descs(struct device *dev);
@@ -556,6 +535,8 @@ enum {
 	MSI_FLAG_USE_DEV_FWNODE		=3D (1 << 7),
 	/* Set parent->dev into domain->pm_dev on device domain creation */
 	MSI_FLAG_PARENT_PM_DEV		=3D (1 << 8),
+	/* Support for parent mask/unmask */
+	MSI_FLAG_PCI_MSI_MASK_PARENT	=3D (1 << 9),
=20
 	/* Mask for the generic functionality */
 	MSI_GENERIC_FLAGS_MASK		=3D GENMASK(15, 0),
@@ -639,35 +620,6 @@ void msi_domain_free_irqs_all(struct device *dev, unsign=
ed int domid);
=20
 struct msi_domain_info *msi_get_domain_info(struct irq_domain *domain);
=20
-struct irq_domain *platform_msi_create_irq_domain(struct fwnode_handle *fwno=
de,
-						  struct msi_domain_info *info,
-						  struct irq_domain *parent);
-
-/* When an MSI domain is used as an intermediate domain */
-int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev,
-			    int nvec, msi_alloc_info_t *args);
-int msi_domain_populate_irqs(struct irq_domain *domain, struct device *dev,
-			     int virq, int nvec, msi_alloc_info_t *args);
-void msi_domain_depopulate_descs(struct device *dev, int virq, int nvec);
-
-struct irq_domain *
-__platform_msi_create_device_domain(struct device *dev,
-				    unsigned int nvec,
-				    bool is_tree,
-				    irq_write_msi_msg_t write_msi_msg,
-				    const struct irq_domain_ops *ops,
-				    void *host_data);
-
-#define platform_msi_create_device_domain(dev, nvec, write, ops, data)	\
-	__platform_msi_create_device_domain(dev, nvec, false, write, ops, data)
-#define platform_msi_create_device_tree_domain(dev, nvec, write, ops, data) \
-	__platform_msi_create_device_domain(dev, nvec, true, write, ops, data)
-
-int platform_msi_device_domain_alloc(struct irq_domain *domain, unsigned int=
 virq,
-				     unsigned int nr_irqs);
-void platform_msi_device_domain_free(struct irq_domain *domain, unsigned int=
 virq,
-				     unsigned int nvec);
-void *platform_msi_get_host_data(struct irq_domain *domain);
 /* Per device platform MSI */
 int platform_device_msi_init_and_alloc_irqs(struct device *dev, unsigned int=
 nvec,
 					    irq_write_msi_msg_t write_msi_msg);
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index aadc8891cc16..8475b83c5519 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -438,7 +438,8 @@ struct irq_domain *irq_find_matching_fwspec(struct irq_fw=
spec *fwspec,
 	struct fwnode_handle *fwnode =3D fwspec->fwnode;
 	int rc;
=20
-	/* We might want to match the legacy controller last since
+	/*
+	 * We might want to match the legacy controller last since
 	 * it might potentially be set to match all interrupts in
 	 * the absence of a device node. This isn't a problem so far
 	 * yet though...
diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c
index 2024f89baea4..5fa0547ece0c 100644
--- a/kernel/irq/msi.c
+++ b/kernel/irq/msi.c
@@ -8,17 +8,33 @@
  * This file contains common code to support Message Signaled Interrupts for
  * PCI compatible and non PCI compatible devices.
  */
-#include <linux/types.h>
 #include <linux/device.h>
 #include <linux/irq.h>
 #include <linux/irqdomain.h>
 #include <linux/msi.h>
+#include <linux/mutex.h>
+#include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/sysfs.h>
-#include <linux/pci.h>
+#include <linux/types.h>
+#include <linux/xarray.h>
=20
 #include "internals.h"
=20
+/**
+ * struct msi_device_data - MSI per device data
+ * @properties:		MSI properties which are interesting to drivers
+ * @mutex:		Mutex protecting the MSI descriptor store
+ * @__domains:		Internal data for per device MSI domains
+ * @__iter_idx:		Index to search the next entry for iterators
+ */
+struct msi_device_data {
+	unsigned long			properties;
+	struct mutex			mutex;
+	struct msi_dev_domain		__domains[MSI_MAX_DEVICE_IRQDOMAINS];
+	unsigned long			__iter_idx;
+};
+
 /**
  * struct msi_ctrl - MSI internal management control structure
  * @domid:	ID of the domain on which management operations should be done
@@ -1088,8 +1104,8 @@ bool msi_match_device_irq_domain(struct device *dev, un=
signed int domid,
 	return ret;
 }
=20
-int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev,
-			    int nvec, msi_alloc_info_t *arg)
+static int msi_domain_prepare_irqs(struct irq_domain *domain, struct device =
*dev,
+				   int nvec, msi_alloc_info_t *arg)
 {
 	struct msi_domain_info *info =3D domain->host_data;
 	struct msi_domain_ops *ops =3D info->ops;
@@ -1097,77 +1113,6 @@ int msi_domain_prepare_irqs(struct irq_domain *domain,=
 struct device *dev,
 	return ops->msi_prepare(domain, dev, nvec, arg);
 }
=20
-int msi_domain_populate_irqs(struct irq_domain *domain, struct device *dev,
-			     int virq_base, int nvec, msi_alloc_info_t *arg)
-{
-	struct msi_domain_info *info =3D domain->host_data;
-	struct msi_domain_ops *ops =3D info->ops;
-	struct msi_ctrl ctrl =3D {
-		.domid	=3D MSI_DEFAULT_DOMAIN,
-		.first  =3D virq_base,
-		.last	=3D virq_base + nvec - 1,
-	};
-	struct msi_desc *desc;
-	struct xarray *xa;
-	int ret, virq;
-
-	msi_lock_descs(dev);
-
-	if (!msi_ctrl_valid(dev, &ctrl)) {
-		ret =3D -EINVAL;
-		goto unlock;
-	}
-
-	ret =3D msi_domain_add_simple_msi_descs(dev, &ctrl);
-	if (ret)
-		goto unlock;
-
-	xa =3D &dev->msi.data->__domains[ctrl.domid].store;
-
-	for (virq =3D virq_base; virq < virq_base + nvec; virq++) {
-		desc =3D xa_load(xa, virq);
-		desc->irq =3D virq;
-
-		ops->set_desc(arg, desc);
-		ret =3D irq_domain_alloc_irqs_hierarchy(domain, virq, 1, arg);
-		if (ret)
-			goto fail;
-
-		irq_set_msi_desc(virq, desc);
-	}
-	msi_unlock_descs(dev);
-	return 0;
-
-fail:
-	for (--virq; virq >=3D virq_base; virq--) {
-		msi_domain_depopulate_descs(dev, virq, 1);
-		irq_domain_free_irqs_common(domain, virq, 1);
-	}
-	msi_domain_free_descs(dev, &ctrl);
-unlock:
-	msi_unlock_descs(dev);
-	return ret;
-}
-
-void msi_domain_depopulate_descs(struct device *dev, int virq_base, int nvec)
-{
-	struct msi_ctrl ctrl =3D {
-		.domid	=3D MSI_DEFAULT_DOMAIN,
-		.first  =3D virq_base,
-		.last	=3D virq_base + nvec - 1,
-	};
-	struct msi_desc *desc;
-	struct xarray *xa;
-	unsigned long idx;
-
-	if (!msi_ctrl_valid(dev, &ctrl))
-		return;
-
-	xa =3D &dev->msi.data->__domains[ctrl.domid].store;
-	xa_for_each_range(xa, idx, desc, ctrl.first, ctrl.last)
-		desc->irq =3D 0;
-}
-
 /*
  * Carefully check whether the device can use reservation mode. If
  * reservation mode is enabled then the early activation will assign a


.
Date: Mon, 22 Jul 2024 21:27:18 +0200 (CEST)
From: Thomas Gleixner <tglx@linutronix.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, x86@kernel.org
Subject: [GIT pull] irq/core for v6.11-rc1

Linus,

please pull the latest irq/core branch from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq-core-2024-07=
-15

up to:  b7b377332b96: irqdomain: Fix the kernel-doc and plug it into Document=
ation

[ Same as V1 minus the MSI conversion ]

Updates for the interrupt subsystem:

  - Core:

    - Provide a new mechanism to create interrupt domains. The existing
      interfaces have already too many parameters and it's a pain to expand
      any of this for new required functionality.

      The new function takes a pointer to a data structure as argument. The
      data structure combines all existing parameters and allows for easy
      extension.

      The first extension for this is to handle the instantiation of
      generic interrupt chips at the core level and to allow drivers to
      provide extra init/exit callbacks.

      This is necessary to do the full interrupt chip initialization before
      the new domain is published, so that concurrent usage sites won't see
      a half initialized interrupt domain. Similar problems exist on
      teardown.

      This has turned out to be a real problem due to the deferred and
      parallel probing which was added in recent years.

      Handling this at the core level allows to remove quite some accrued
      boilerplate code in existing drivers and avoids horrible workarounds
      at the driver level.

    - The usual small improvements all over the place

  - Drivers

    - Add support for LAN966x OIC and RZ/Five SoC

    - Split the STM ExtI driver into a microcontroller and a SMP version to
      allow building the latter as a module for multi-platform kernels.

    - Enable MSI support for Armada 370XP on platforms which do not support
      IPIs.

    - The usual small fixes and enhancements all over the place.


Thanks,

	tglx

------------------>
Adrian Huang (1):
      genirq/proc: Simplify irqdesc::kstat_irqs handling further

Antonio Borneo (8):
      irqchip/stm32-exti: Add CONFIG_STM32MP_EXTI
      ARM: stm32: Use different EXTI driver on ARMv7m and ARMv7a
      arm64: Kconfig: Select STM32MP_EXTI on STM32 platforms
      irqchip/stm32-exti: Split MCU and MPU code
      irqchip/stm32mp-exti: Rename internal symbols
      irqchip/stm32mp-exti: Allow building as module
      ARM: stm32: Allow build irq-stm32mp-exti driver as module
      arm64: Kconfig: Allow build irq-stm32mp-exti driver as module

Geert Uytterhoeven (1):
      irqchip/gic-v3: Pass #redistributor-regions to gic_of_setup_kvm_info()

Herve Codina (24):
      irqdomain: Add missing parameter descriptions in kernel-doc comments
      irqdomain: Fixed unbalanced fwnode get and put
      irqdomain: Introduce irq_domain_free()
      irqdomain: Introduce irq_domain_instantiate()
      irqdomain: Constify parameter in is_fwnode_irqchip()
      irqdomain: Use a dedicated function to set the domain name
      irqdomain: Convert __irq_domain_create() to use struct irq_domain_info
      irqdomain: Handle additional domain flags in irq_domain_instantiate()
      irqdomain: Handle domain hierarchy parent in irq_domain_instantiate()
      irqdomain: Use irq_domain_instantiate() for hierarchy domain creation
      irqdomain: Make __irq_domain_create() return an error code
      irqdomain: Handle domain bus token in irq_domain_create()
      irqdomain: Introduce init() and exit() hooks
      genirq/generic_chip: Introduce irq_domain_{alloc,remove}_generic_chips()
      genirq/generic_chip: Introduce init() and exit() hooks
      irqdomain: Add support for generic irq chips creation before publishing=
 a domain
      irqdomain: Add a resource managed version of irq_domain_instantiate()
      irqdomain: Convert __irq_domain_add() wrappers to irq_domain_instantiat=
e()
      irqdomain: Convert domain creation functions to irq_domain_instantiate()
      _PATCH_19_23_um_virt_pci_Use_irq_domain_instantiate_
      irqdomain: Remove __irq_domain_add()
      dt-bindings: interrupt-controller: Add support for Microchip LAN966x OIC
      irqchip: Add support for LAN966x OIC
      MAINTAINERS: Add the Microchip LAN966x OIC driver entry

Jeff Johnson (1):
      irqchip: Add missing MODULE_DESCRIPTION() macros

Jinjie Ruan (2):
      genirq/debugfs: Print irqdomain flags as human-readable strings
      irqchip/riscv-aplic: Simplify the initialization code

Jiri Slaby (SUSE) (1):
      irqdomain: Fix the kernel-doc and plug it into Documentation

Jisheng Zhang (2):
      irqchip/riscv-intc: Remove asmlinkage
      irqchip/dw-apb-ictl: Support building as module

Lad Prabhakar (3):
      dt-bindings: interrupt-controller: renesas,rzg2l-irqc: Document RZ/Five=
 SoC
      irqchip/renesas-rzg2l: Add support for RZ/Five SoC
      irqchip/renesas-rzg2l: Reorder function calls in rzg2l_irqc_irq_disable=
()

Lorenzo Pieralisi (1):
      irqchip/gic-v3: Enable non-coherent redistributors/ITSes ACPI probing

Marc Zyngier (3):
      irqchip/gic-v4: Always configure affinity on VPE activation
      irqchip/gic-v4: Substitute vmovp_lock for a per-VM lock
      irqchip/gic-v4: Make sure a VPE is locked when VMAPP is issued

Marek Beh=C3=BAn (1):
      irqchip/armada-370-xp: Use atomic_io_modify() instead of another spinlo=
ck

Pali Roh=C3=A1r (4):
      irqchip/armada-370-xp: Do not allow mapping IRQ 0 and 1
      irqchip/armada-370-xp: Only call ipi_resume() if IPI is available
      irqchip/armada-370-xp: Do not touch IPI registers on platforms without =
IPI
      irqchip/armada-370-xp: Add support for 32 MSI interrupts on non-IPI pla=
tforms

Rafael J. Wysocki (1):
      genirq: Set IRQF_COND_ONESHOT in request_irq()

Shenwei Wang (1):
      irqchip/imx-irqsteer: Handle runtime power management correctly

Stefan Wahren (1):
      irqchip/bcm2835: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND

Thomas Gleixner (3):
      irqdomain: Make build work for CONFIG_GENERIC_IRQ_CHIP=3Dn
      Revert "Loongarch: Support loongarch avec"
      Revert "irqchip/dw-apb-ictl: Support building as module"

Tianyang Zhang (1):
      Loongarch: Support loongarch avec


 Documentation/core-api/genericirq.rst              |   2 +
 .../microchip,lan966x-oic.yaml                     |  55 ++
 .../interrupt-controller/renesas,rzg2l-irqc.yaml   |  17 +-
 MAINTAINERS                                        |   6 +
 arch/arm/mach-stm32/Kconfig                        |   2 +-
 arch/arm64/Kconfig.platforms                       |   1 -
 arch/um/drivers/virt-pci.c                         |  16 +-
 drivers/acpi/processor_core.c                      |  15 +
 drivers/irqchip/Kconfig                            |  21 +
 drivers/irqchip/Makefile                           |   2 +
 drivers/irqchip/irq-armada-370-xp.c                | 121 +++-
 drivers/irqchip/irq-bcm2835.c                      |   4 +-
 drivers/irqchip/irq-gic-v3-its.c                   |  52 +-
 drivers/irqchip/irq-gic-v3.c                       |  22 +-
 drivers/irqchip/irq-imx-irqsteer.c                 |  24 +-
 drivers/irqchip/irq-lan966x-oic.c                  | 278 ++++++++
 drivers/irqchip/irq-meson-gpio.c                   |   1 +
 drivers/irqchip/irq-mvebu-pic.c                    |   1 +
 drivers/irqchip/irq-renesas-rzg2l.c                | 150 ++++-
 drivers/irqchip/irq-riscv-aplic-main.c             |  13 +-
 drivers/irqchip/irq-riscv-intc.c                   |   4 +-
 drivers/irqchip/irq-stm32-exti.c                   | 670 +------------------
 drivers/irqchip/irq-stm32mp-exti.c                 | 729 +++++++++++++++++++=
++
 drivers/irqchip/irq-ts4800.c                       |   1 +
 include/linux/acpi.h                               |   3 +
 include/linux/interrupt.h                          |   2 +-
 include/linux/irq.h                                |  43 ++
 include/linux/irqchip/arm-gic-v4.h                 |   8 +
 include/linux/irqdomain.h                          | 136 +++-
 kernel/irq/debugfs.c                               |  10 +-
 kernel/irq/devres.c                                |  41 ++
 kernel/irq/generic-chip.c                          | 111 +++-
 kernel/irq/internals.h                             |  10 +
 kernel/irq/irqdomain.c                             | 287 +++++---
 kernel/irq/proc.c                                  |   7 +-
 35 files changed, 1965 insertions(+), 900 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/mi=
crochip,lan966x-oic.yaml
 create mode 100644 drivers/irqchip/irq-lan966x-oic.c
 create mode 100644 drivers/irqchip/irq-stm32mp-exti.c

diff --git a/Documentation/core-api/genericirq.rst b/Documentation/core-api/g=
enericirq.rst
index 4a460639ab1c..7a27663f309f 100644
--- a/Documentation/core-api/genericirq.rst
+++ b/Documentation/core-api/genericirq.rst
@@ -410,6 +410,8 @@ which are used in the generic IRQ layer.
 .. kernel-doc:: include/linux/interrupt.h
    :internal:
=20
+.. kernel-doc:: include/linux/irqdomain.h
+
 Public Functions Provided
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=20
diff --git a/Documentation/devicetree/bindings/interrupt-controller/microchip=
,lan966x-oic.yaml b/Documentation/devicetree/bindings/interrupt-controller/mi=
crochip,lan966x-oic.yaml
new file mode 100644
index 000000000000..b2adc7174177
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/microchip,lan966=
x-oic.yaml
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/microchip,lan966x-oi=
c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip LAN966x outband interrupt controller
+
+maintainers:
+  - Herve Codina <herve.codina@bootlin.com>
+
+allOf:
+  - $ref: /schemas/interrupt-controller.yaml#
+
+description: |
+  The Microchip LAN966x outband interrupt controller (OIC) maps the internal
+  interrupt sources of the LAN966x device to an external interrupt.
+  When the LAN966x device is used as a PCI device, the external interrupt is
+  routed to the PCI interrupt.
+
+properties:
+  compatible:
+    const: microchip,lan966x-oic
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupt-controller: true
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - '#interrupt-cells'
+  - interrupt-controller
+  - interrupts
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@e00c0120 {
+        compatible =3D "microchip,lan966x-oic";
+        reg =3D <0xe00c0120 0x190>;
+        #interrupt-cells =3D <2>;
+        interrupt-controller;
+        interrupts =3D <0>;
+        interrupt-parent =3D <&intc>;
+    };
+...
diff --git a/Documentation/devicetree/bindings/interrupt-controller/renesas,r=
zg2l-irqc.yaml b/Documentation/devicetree/bindings/interrupt-controller/renes=
as,rzg2l-irqc.yaml
index daef4ee06f4e..44b6ae5fc802 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/renesas,rzg2l-ir=
qc.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/renesas,rzg2l-ir=
qc.yaml
@@ -21,13 +21,16 @@ description: |
=20
 properties:
   compatible:
-    items:
-      - enum:
-          - renesas,r9a07g043u-irqc   # RZ/G2UL
-          - renesas,r9a07g044-irqc    # RZ/G2{L,LC}
-          - renesas,r9a07g054-irqc    # RZ/V2L
-          - renesas,r9a08g045-irqc    # RZ/G3S
-      - const: renesas,rzg2l-irqc
+    oneOf:
+      - items:
+          - enum:
+              - renesas,r9a07g043u-irqc    # RZ/G2UL
+              - renesas,r9a07g044-irqc     # RZ/G2{L,LC}
+              - renesas,r9a07g054-irqc     # RZ/V2L
+              - renesas,r9a08g045-irqc     # RZ/G3S
+          - const: renesas,rzg2l-irqc
+
+      - const: renesas,r9a07g043f-irqc     # RZ/Five
=20
   '#interrupt-cells':
     description: The first cell should contain a macro RZG2L_{NMI,IRQX} incl=
uded in the
diff --git a/MAINTAINERS b/MAINTAINERS
index 8754ac2c259d..c47d8b9114b8 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14727,6 +14727,12 @@ L:	netdev@vger.kernel.org
 S:	Maintained
 F:	drivers/net/ethernet/microchip/lan966x/*
=20
+MICROCHIP LAN966X OIC DRIVER
+M:	Herve Codina <herve.codina@bootlin.com>
+S:	Maintained
+F:	Documentation/devicetree/bindings/interrupt-controller/microchip,lan966x-=
oic.yaml
+F:	drivers/irqchip/irq-lan966x-oic.c
+
 MICROCHIP LCDFB DRIVER
 M:	Nicolas Ferre <nicolas.ferre@microchip.com>
 L:	linux-fbdev@vger.kernel.org
diff --git a/arch/arm/mach-stm32/Kconfig b/arch/arm/mach-stm32/Kconfig
index ae21a9f78f9c..630b992f32b1 100644
--- a/arch/arm/mach-stm32/Kconfig
+++ b/arch/arm/mach-stm32/Kconfig
@@ -11,7 +11,7 @@ menuconfig ARCH_STM32
 	select CLKSRC_STM32
 	select PINCTRL
 	select RESET_CONTROLLER
-	select STM32_EXTI
+	select STM32_EXTI if ARM_SINGLE_ARMV7M
 	select STM32_FIREWALL
 	help
 	  Support for STMicroelectronics STM32 processors.
diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
index a52618073de2..a028ea312378 100644
--- a/arch/arm64/Kconfig.platforms
+++ b/arch/arm64/Kconfig.platforms
@@ -309,7 +309,6 @@ config ARCH_STM32
 	select GPIOLIB
 	select PINCTRL
 	select PINCTRL_STM32MP257
-	select STM32_EXTI
 	select ARM_SMC_MBOX
 	select ARM_SCMI_PROTOCOL
 	select COMMON_CLK_SCMI
diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
index 7cb503469bbd..a0883d5445b5 100644
--- a/arch/um/drivers/virt-pci.c
+++ b/arch/um/drivers/virt-pci.c
@@ -986,6 +986,11 @@ static struct resource virt_platform_resource =3D {
=20
 static int __init um_pci_init(void)
 {
+	struct irq_domain_info inner_domain_info =3D {
+		.size		=3D MAX_MSI_VECTORS,
+		.hwirq_max	=3D MAX_MSI_VECTORS,
+		.ops		=3D &um_pci_inner_domain_ops,
+	};
 	int err, i;
=20
 	WARN_ON(logic_iomem_add_region(&virt_cfgspace_resource,
@@ -1015,11 +1020,10 @@ static int __init um_pci_init(void)
 		goto free;
 	}
=20
-	um_pci_inner_domain =3D __irq_domain_add(um_pci_fwnode, MAX_MSI_VECTORS,
-					       MAX_MSI_VECTORS, 0,
-					       &um_pci_inner_domain_ops, NULL);
-	if (!um_pci_inner_domain) {
-		err =3D -ENOMEM;
+	inner_domain_info.fwnode =3D um_pci_fwnode;
+	um_pci_inner_domain =3D irq_domain_instantiate(&inner_domain_info);
+	if (IS_ERR(um_pci_inner_domain)) {
+		err =3D PTR_ERR(um_pci_inner_domain);
 		goto free;
 	}
=20
@@ -1056,7 +1060,7 @@ static int __init um_pci_init(void)
 		goto free;
 	return 0;
 free:
-	if (um_pci_inner_domain)
+	if (!IS_ERR_OR_NULL(um_pci_inner_domain))
 		irq_domain_remove(um_pci_inner_domain);
 	if (um_pci_fwnode)
 		irq_domain_free_fwnode(um_pci_fwnode);
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index b203cfe28550..915713c0e9b7 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -215,6 +215,21 @@ phys_cpuid_t __init acpi_map_madt_entry(u32 acpi_id)
 	return rv;
 }
=20
+int __init acpi_get_madt_revision(void)
+{
+	struct acpi_table_header *madt =3D NULL;
+	int revision;
+
+	if (ACPI_FAILURE(acpi_get_table(ACPI_SIG_MADT, 0, &madt)))
+		return -EINVAL;
+
+	revision =3D madt->revision;
+
+	acpi_put_table(madt);
+
+	return revision;
+}
+
 static phys_cpuid_t map_mat_entry(acpi_handle handle, int type, u32 acpi_id)
 {
 	struct acpi_buffer buffer =3D { ACPI_ALLOCATE_BUFFER, NULL };
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 14464716bacb..344c484736af 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -169,6 +169,18 @@ config IXP4XX_IRQ
 	select IRQ_DOMAIN
 	select SPARSE_IRQ
=20
+config LAN966X_OIC
+	tristate "Microchip LAN966x OIC Support"
+	select GENERIC_IRQ_CHIP
+	select IRQ_DOMAIN
+	help
+	  Enable support for the LAN966x Outbound Interrupt Controller.
+	  This controller is present on the Microchip LAN966x PCI device and
+	  maps the internal interrupts sources to PCIe interrupt.
+
+	  To compile this driver as a module, choose M here: the module
+	  will be called irq-lan966x-oic.
+
 config MADERA_IRQ
 	tristate
=20
@@ -392,6 +404,15 @@ config LS_SCFG_MSI
 config PARTITION_PERCPU
 	bool
=20
+config STM32MP_EXTI
+	tristate "STM32MP extended interrupts and event controller"
+	depends on (ARCH_STM32 && !ARM_SINGLE_ARMV7M) || COMPILE_TEST
+	default y
+	select IRQ_DOMAIN_HIERARCHY
+	select GENERIC_IRQ_CHIP
+	help
+	  Support STM32MP EXTI (extended interrupts and event) controller.
+
 config STM32_EXTI
 	bool
 	select IRQ_DOMAIN
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index d9dc3d99aaa8..2df72b7b165b 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -84,6 +84,7 @@ obj-$(CONFIG_MVEBU_SEI)			+=3D irq-mvebu-sei.o
 obj-$(CONFIG_LS_EXTIRQ)			+=3D irq-ls-extirq.o
 obj-$(CONFIG_LS_SCFG_MSI)		+=3D irq-ls-scfg-msi.o
 obj-$(CONFIG_ARCH_ASPEED)		+=3D irq-aspeed-vic.o irq-aspeed-i2c-ic.o irq-asp=
eed-scu-ic.o
+obj-$(CONFIG_STM32MP_EXTI)		+=3D irq-stm32mp-exti.o
 obj-$(CONFIG_STM32_EXTI) 		+=3D irq-stm32-exti.o
 obj-$(CONFIG_QCOM_IRQ_COMBINER)		+=3D qcom-irq-combiner.o
 obj-$(CONFIG_IRQ_UNIPHIER_AIDET)	+=3D irq-uniphier-aidet.o
@@ -104,6 +105,7 @@ obj-$(CONFIG_IMX_IRQSTEER)		+=3D irq-imx-irqsteer.o
 obj-$(CONFIG_IMX_INTMUX)		+=3D irq-imx-intmux.o
 obj-$(CONFIG_IMX_MU_MSI)		+=3D irq-imx-mu-msi.o
 obj-$(CONFIG_MADERA_IRQ)		+=3D irq-madera.o
+obj-$(CONFIG_LAN966X_OIC)		+=3D irq-lan966x-oic.o
 obj-$(CONFIG_LS1X_IRQ)			+=3D irq-ls1x.o
 obj-$(CONFIG_TI_SCI_INTR_IRQCHIP)	+=3D irq-ti-sci-intr.o
 obj-$(CONFIG_TI_SCI_INTA_IRQCHIP)	+=3D irq-ti-sci-inta.o
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada=
-370-xp.c
index 4b021a67bdfe..dce2b80bf439 100644
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -13,6 +13,7 @@
  * warranty of any kind, whether express or implied.
  */
=20
+#include <linux/bits.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -29,6 +30,7 @@
 #include <linux/slab.h>
 #include <linux/syscore_ops.h>
 #include <linux/msi.h>
+#include <linux/types.h>
 #include <asm/mach/arch.h>
 #include <asm/exception.h>
 #include <asm/smp_plat.h>
@@ -135,6 +137,7 @@
=20
 #define ARMADA_370_XP_MAX_PER_CPU_IRQS		(28)
=20
+/* IPI and MSI interrupt definitions for IPI platforms */
 #define IPI_DOORBELL_START                      (0)
 #define IPI_DOORBELL_END                        (8)
 #define IPI_DOORBELL_MASK                       0xFF
@@ -143,6 +146,14 @@
 #define PCI_MSI_DOORBELL_END                    (32)
 #define PCI_MSI_DOORBELL_MASK                   0xFFFF0000
=20
+/* MSI interrupt definitions for non-IPI platforms */
+#define PCI_MSI_FULL_DOORBELL_START		0
+#define PCI_MSI_FULL_DOORBELL_NR		32
+#define PCI_MSI_FULL_DOORBELL_END		32
+#define PCI_MSI_FULL_DOORBELL_MASK		GENMASK(31, 0)
+#define PCI_MSI_FULL_DOORBELL_SRC0_MASK		GENMASK(15, 0)
+#define PCI_MSI_FULL_DOORBELL_SRC1_MASK		GENMASK(31, 16)
+
 static void __iomem *per_cpu_int_base;
 static void __iomem *main_int_base;
 static struct irq_domain *armada_370_xp_mpic_domain;
@@ -151,11 +162,46 @@ static int parent_irq;
 #ifdef CONFIG_PCI_MSI
 static struct irq_domain *armada_370_xp_msi_domain;
 static struct irq_domain *armada_370_xp_msi_inner_domain;
-static DECLARE_BITMAP(msi_used, PCI_MSI_DOORBELL_NR);
+static DECLARE_BITMAP(msi_used, PCI_MSI_FULL_DOORBELL_NR);
 static DEFINE_MUTEX(msi_used_lock);
 static phys_addr_t msi_doorbell_addr;
 #endif
=20
+static inline bool is_ipi_available(void)
+{
+	/*
+	 * We distinguish IPI availability in the IC by the IC not having a
+	 * parent irq defined. If a parent irq is defined, there is a parent
+	 * interrupt controller (e.g. GIC) that takes care of inter-processor
+	 * interrupts.
+	 */
+	return parent_irq <=3D 0;
+}
+
+static inline u32 msi_doorbell_mask(void)
+{
+	return is_ipi_available() ? PCI_MSI_DOORBELL_MASK :
+				    PCI_MSI_FULL_DOORBELL_MASK;
+}
+
+static inline unsigned int msi_doorbell_start(void)
+{
+	return is_ipi_available() ? PCI_MSI_DOORBELL_START :
+				    PCI_MSI_FULL_DOORBELL_START;
+}
+
+static inline unsigned int msi_doorbell_size(void)
+{
+	return is_ipi_available() ? PCI_MSI_DOORBELL_NR :
+				    PCI_MSI_FULL_DOORBELL_NR;
+}
+
+static inline unsigned int msi_doorbell_end(void)
+{
+	return is_ipi_available() ? PCI_MSI_DOORBELL_END :
+				    PCI_MSI_FULL_DOORBELL_END;
+}
+
 static inline bool is_percpu_irq(irq_hw_number_t irq)
 {
 	if (irq <=3D ARMADA_370_XP_MAX_PER_CPU_IRQS)
@@ -213,7 +259,7 @@ static void armada_370_xp_compose_msi_msg(struct irq_data=
 *data, struct msi_msg
=20
 	msg->address_lo =3D lower_32_bits(msi_doorbell_addr);
 	msg->address_hi =3D upper_32_bits(msi_doorbell_addr);
-	msg->data =3D BIT(cpu + 8) | (data->hwirq + PCI_MSI_DOORBELL_START);
+	msg->data =3D BIT(cpu + 8) | (data->hwirq + msi_doorbell_start());
 }
=20
 static int armada_370_xp_msi_set_affinity(struct irq_data *irq_data,
@@ -246,7 +292,7 @@ static int armada_370_xp_msi_alloc(struct irq_domain *dom=
ain, unsigned int virq,
 	int hwirq, i;
=20
 	mutex_lock(&msi_used_lock);
-	hwirq =3D bitmap_find_free_region(msi_used, PCI_MSI_DOORBELL_NR,
+	hwirq =3D bitmap_find_free_region(msi_used, msi_doorbell_size(),
 					order_base_2(nr_irqs));
 	mutex_unlock(&msi_used_lock);
=20
@@ -283,9 +329,10 @@ static void armada_370_xp_msi_reenable_percpu(void)
 	u32 reg;
=20
 	/* Enable MSI doorbell mask and combined cpu local interrupt */
-	reg =3D readl(per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_MSK_OFFS)
-		| PCI_MSI_DOORBELL_MASK;
+	reg =3D readl(per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_MSK_OFFS);
+	reg |=3D msi_doorbell_mask();
 	writel(reg, per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_MSK_OFFS);
+
 	/* Unmask local doorbell interrupt */
 	writel(1, per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
 }
@@ -297,7 +344,7 @@ static int armada_370_xp_msi_init(struct device_node *nod=
e,
 		ARMADA_370_XP_SW_TRIG_INT_OFFS;
=20
 	armada_370_xp_msi_inner_domain =3D
-		irq_domain_add_linear(NULL, PCI_MSI_DOORBELL_NR,
+		irq_domain_add_linear(NULL, msi_doorbell_size(),
 				      &armada_370_xp_msi_domain_ops, NULL);
 	if (!armada_370_xp_msi_inner_domain)
 		return -ENOMEM;
@@ -313,6 +360,10 @@ static int armada_370_xp_msi_init(struct device_node *no=
de,
=20
 	armada_370_xp_msi_reenable_percpu();
=20
+	/* Unmask low 16 MSI irqs on non-IPI platforms */
+	if (!is_ipi_available())
+		writel(0, per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
+
 	return 0;
 }
 #else
@@ -461,24 +512,18 @@ static __init void armada_xp_ipi_init(struct device_nod=
e *node)
 	set_smp_ipi_range(base_ipi, IPI_DOORBELL_END);
 }
=20
-static DEFINE_RAW_SPINLOCK(irq_controller_lock);
-
 static int armada_xp_set_affinity(struct irq_data *d,
 				  const struct cpumask *mask_val, bool force)
 {
 	irq_hw_number_t hwirq =3D irqd_to_hwirq(d);
-	unsigned long reg, mask;
 	int cpu;
=20
 	/* Select a single core from the affinity mask which is online */
 	cpu =3D cpumask_any_and(mask_val, cpu_online_mask);
-	mask =3D 1UL << cpu_logical_map(cpu);
=20
-	raw_spin_lock(&irq_controller_lock);
-	reg =3D readl(main_int_base + ARMADA_370_XP_INT_SOURCE_CTL(hwirq));
-	reg =3D (reg & (~ARMADA_370_XP_INT_SOURCE_CPU_MASK)) | mask;
-	writel(reg, main_int_base + ARMADA_370_XP_INT_SOURCE_CTL(hwirq));
-	raw_spin_unlock(&irq_controller_lock);
+	atomic_io_modify(main_int_base + ARMADA_370_XP_INT_SOURCE_CTL(hwirq),
+			 ARMADA_370_XP_INT_SOURCE_CPU_MASK,
+			 BIT(cpu_logical_map(cpu)));
=20
 	irq_data_update_effective_affinity(d, cpumask_of(cpu));
=20
@@ -496,6 +541,9 @@ static void armada_xp_mpic_smp_cpu_init(void)
 	for (i =3D 0; i < nr_irqs; i++)
 		writel(i, per_cpu_int_base + ARMADA_370_XP_INT_SET_MASK_OFFS);
=20
+	if (!is_ipi_available())
+		return;
+
 	/* Disable all IPIs */
 	writel(0, per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_MSK_OFFS);
=20
@@ -527,7 +575,8 @@ static void armada_xp_mpic_reenable_percpu(void)
 		armada_370_xp_irq_unmask(data);
 	}
=20
-	ipi_resume();
+	if (is_ipi_available())
+		ipi_resume();
=20
 	armada_370_xp_msi_reenable_percpu();
 }
@@ -566,6 +615,10 @@ static struct irq_chip armada_370_xp_irq_chip =3D {
 static int armada_370_xp_mpic_irq_map(struct irq_domain *h,
 				      unsigned int virq, irq_hw_number_t hw)
 {
+	/* IRQs 0 and 1 cannot be mapped, they are handled internally */
+	if (hw <=3D 1)
+		return -EINVAL;
+
 	armada_370_xp_irq_mask(irq_get_irq_data(virq));
 	if (!is_percpu_irq(hw))
 		writel(hw, per_cpu_int_base +
@@ -599,20 +652,20 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs=
 *regs, bool is_chained)
 	u32 msimask, msinr;
=20
 	msimask =3D readl_relaxed(per_cpu_int_base +
-				ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS)
-		& PCI_MSI_DOORBELL_MASK;
+				ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS);
+	msimask &=3D msi_doorbell_mask();
=20
 	writel(~msimask, per_cpu_int_base +
 	       ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS);
=20
-	for (msinr =3D PCI_MSI_DOORBELL_START;
-	     msinr < PCI_MSI_DOORBELL_END; msinr++) {
+	for (msinr =3D msi_doorbell_start();
+	     msinr < msi_doorbell_end(); msinr++) {
 		unsigned int irq;
=20
 		if (!(msimask & BIT(msinr)))
 			continue;
=20
-		irq =3D msinr - PCI_MSI_DOORBELL_START;
+		irq =3D msinr - msi_doorbell_start();
=20
 		generic_handle_domain_irq(armada_370_xp_msi_inner_domain, irq);
 	}
@@ -641,7 +694,7 @@ static void armada_370_xp_mpic_handle_cascade_irq(struct =
irq_desc *desc)
 		if (!(irqsrc & ARMADA_370_XP_INT_IRQ_FIQ_MASK(cpuid)))
 			continue;
=20
-		if (irqn =3D=3D 1) {
+		if (irqn =3D=3D 0 || irqn =3D=3D 1) {
 			armada_370_xp_handle_msi_irq(NULL, true);
 			continue;
 		}
@@ -702,6 +755,7 @@ static int armada_370_xp_mpic_suspend(void)
=20
 static void armada_370_xp_mpic_resume(void)
 {
+	bool src0, src1;
 	int nirqs;
 	irq_hw_number_t irq;
=20
@@ -741,12 +795,22 @@ static void armada_370_xp_mpic_resume(void)
 	/* Reconfigure doorbells for IPIs and MSIs */
 	writel(doorbell_mask_reg,
 	       per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_MSK_OFFS);
-	if (doorbell_mask_reg & IPI_DOORBELL_MASK)
+
+	if (is_ipi_available()) {
+		src0 =3D doorbell_mask_reg & IPI_DOORBELL_MASK;
+		src1 =3D doorbell_mask_reg & PCI_MSI_DOORBELL_MASK;
+	} else {
+		src0 =3D doorbell_mask_reg & PCI_MSI_FULL_DOORBELL_SRC0_MASK;
+		src1 =3D doorbell_mask_reg & PCI_MSI_FULL_DOORBELL_SRC1_MASK;
+	}
+
+	if (src0)
 		writel(0, per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
-	if (doorbell_mask_reg & PCI_MSI_DOORBELL_MASK)
+	if (src1)
 		writel(1, per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
=20
-	ipi_resume();
+	if (is_ipi_available())
+		ipi_resume();
 }
=20
 static struct syscore_ops armada_370_xp_mpic_syscore_ops =3D {
@@ -791,13 +855,18 @@ static int __init armada_370_xp_mpic_of_init(struct dev=
ice_node *node,
 	BUG_ON(!armada_370_xp_mpic_domain);
 	irq_domain_update_bus_token(armada_370_xp_mpic_domain, DOMAIN_BUS_WIRED);
=20
+	/*
+	 * Initialize parent_irq before calling any other functions, since it is
+	 * used to distinguish between IPI and non-IPI platforms.
+	 */
+	parent_irq =3D irq_of_parse_and_map(node, 0);
+
 	/* Setup for the boot CPU */
 	armada_xp_mpic_perf_init();
 	armada_xp_mpic_smp_cpu_init();
=20
 	armada_370_xp_msi_init(node, main_int_res.start);
=20
-	parent_irq =3D irq_of_parse_and_map(node, 0);
 	if (parent_irq <=3D 0) {
 		irq_set_default_host(armada_370_xp_mpic_domain);
 		set_handle_irq(armada_370_xp_handle_irq);
diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
index e94e2882286c..6c20604c2242 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -102,7 +102,9 @@ static void armctrl_unmask_irq(struct irq_data *d)
 static struct irq_chip armctrl_chip =3D {
 	.name =3D "ARMCTRL-level",
 	.irq_mask =3D armctrl_mask_irq,
-	.irq_unmask =3D armctrl_unmask_irq
+	.irq_unmask =3D armctrl_unmask_irq,
+	.flags =3D IRQCHIP_MASK_ON_SUSPEND |
+		 IRQCHIP_SKIP_SET_WAKE,
 };
=20
 static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr,
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-it=
s.c
index 40ebf1726393..c23a64fcf9b3 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -1317,7 +1317,6 @@ static void its_send_vmovp(struct its_vpe *vpe)
 {
 	struct its_cmd_desc desc =3D {};
 	struct its_node *its;
-	unsigned long flags;
 	int col_id =3D vpe->col_idx;
=20
 	desc.its_vmovp_cmd.vpe =3D vpe;
@@ -1329,6 +1328,12 @@ static void its_send_vmovp(struct its_vpe *vpe)
 		return;
 	}
=20
+	/*
+	 * Protect against concurrent updates of the mapping state on
+	 * individual VMs.
+	 */
+	guard(raw_spinlock_irqsave)(&vpe->its_vm->vmapp_lock);
+
 	/*
 	 * Yet another marvel of the architecture. If using the
 	 * its_list "feature", we need to make sure that all ITSs
@@ -1337,8 +1342,7 @@ static void its_send_vmovp(struct its_vpe *vpe)
 	 *
 	 * Wall <-- Head.
 	 */
-	raw_spin_lock_irqsave(&vmovp_lock, flags);
-
+	guard(raw_spinlock)(&vmovp_lock);
 	desc.its_vmovp_cmd.seq_num =3D vmovp_seq_num++;
 	desc.its_vmovp_cmd.its_list =3D get_its_list(vpe->its_vm);
=20
@@ -1353,8 +1357,6 @@ static void its_send_vmovp(struct its_vpe *vpe)
 		desc.its_vmovp_cmd.col =3D &its->collections[col_id];
 		its_send_single_vcommand(its, its_build_vmovp_cmd, &desc);
 	}
-
-	raw_spin_unlock_irqrestore(&vmovp_lock, flags);
 }
=20
 static void its_send_vinvall(struct its_node *its, struct its_vpe *vpe)
@@ -1791,12 +1793,10 @@ static bool gic_requires_eager_mapping(void)
=20
 static void its_map_vm(struct its_node *its, struct its_vm *vm)
 {
-	unsigned long flags;
-
 	if (gic_requires_eager_mapping())
 		return;
=20
-	raw_spin_lock_irqsave(&vmovp_lock, flags);
+	guard(raw_spinlock_irqsave)(&vm->vmapp_lock);
=20
 	/*
 	 * If the VM wasn't mapped yet, iterate over the vpes and get
@@ -1809,37 +1809,31 @@ static void its_map_vm(struct its_node *its, struct i=
ts_vm *vm)
=20
 		for (i =3D 0; i < vm->nr_vpes; i++) {
 			struct its_vpe *vpe =3D vm->vpes[i];
-			struct irq_data *d =3D irq_get_irq_data(vpe->irq);
=20
-			/* Map the VPE to the first possible CPU */
-			vpe->col_idx =3D cpumask_first(cpu_online_mask);
-			its_send_vmapp(its, vpe, true);
+			scoped_guard(raw_spinlock, &vpe->vpe_lock)
+				its_send_vmapp(its, vpe, true);
+
 			its_send_vinvall(its, vpe);
-			irq_data_update_effective_affinity(d, cpumask_of(vpe->col_idx));
 		}
 	}
-
-	raw_spin_unlock_irqrestore(&vmovp_lock, flags);
 }
=20
 static void its_unmap_vm(struct its_node *its, struct its_vm *vm)
 {
-	unsigned long flags;
-
 	/* Not using the ITS list? Everything is always mapped. */
 	if (gic_requires_eager_mapping())
 		return;
=20
-	raw_spin_lock_irqsave(&vmovp_lock, flags);
+	guard(raw_spinlock_irqsave)(&vm->vmapp_lock);
=20
 	if (!--vm->vlpi_count[its->list_nr]) {
 		int i;
=20
-		for (i =3D 0; i < vm->nr_vpes; i++)
+		for (i =3D 0; i < vm->nr_vpes; i++) {
+			guard(raw_spinlock)(&vm->vpes[i]->vpe_lock);
 			its_send_vmapp(its, vm->vpes[i], false);
+		}
 	}
-
-	raw_spin_unlock_irqrestore(&vmovp_lock, flags);
 }
=20
 static int its_vlpi_map(struct irq_data *d, struct its_cmd_info *info)
@@ -3946,6 +3940,8 @@ static void its_vpe_invall(struct its_vpe *vpe)
 {
 	struct its_node *its;
=20
+	guard(raw_spinlock_irqsave)(&vpe->its_vm->vmapp_lock);
+
 	list_for_each_entry(its, &its_nodes, entry) {
 		if (!is_v4(its))
 			continue;
@@ -4551,6 +4547,7 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *=
domain, unsigned int virq
 	vm->db_lpi_base =3D base;
 	vm->nr_db_lpis =3D nr_ids;
 	vm->vprop_page =3D vprop_page;
+	raw_spin_lock_init(&vm->vmapp_lock);
=20
 	if (gic_rdists->has_rvpeid)
 		irqchip =3D &its_vpe_4_1_irq_chip;
@@ -4582,6 +4579,10 @@ static int its_vpe_irq_domain_activate(struct irq_doma=
in *domain,
 	struct its_vpe *vpe =3D irq_data_get_irq_chip_data(d);
 	struct its_node *its;
=20
+	/* Map the VPE to the first possible CPU */
+	vpe->col_idx =3D cpumask_first(cpu_online_mask);
+	irq_data_update_effective_affinity(d, cpumask_of(vpe->col_idx));
+
 	/*
 	 * If we use the list map, we issue VMAPP on demand... Unless
 	 * we're on a GICv4.1 and we eagerly map the VPE on all ITSs
@@ -4590,9 +4591,6 @@ static int its_vpe_irq_domain_activate(struct irq_domai=
n *domain,
 	if (!gic_requires_eager_mapping())
 		return 0;
=20
-	/* Map the VPE to the first possible CPU */
-	vpe->col_idx =3D cpumask_first(cpu_online_mask);
-
 	list_for_each_entry(its, &its_nodes, entry) {
 		if (!is_v4(its))
 			continue;
@@ -4601,8 +4599,6 @@ static int its_vpe_irq_domain_activate(struct irq_domai=
n *domain,
 		its_send_vinvall(its, vpe);
 	}
=20
-	irq_data_update_effective_affinity(d, cpumask_of(vpe->col_idx));
-
 	return 0;
 }
=20
@@ -5600,6 +5596,10 @@ static int __init gic_acpi_parse_madt_its(union acpi_s=
ubtable_headers *header,
 		goto node_err;
 	}
=20
+	if (acpi_get_madt_revision() >=3D 7 &&
+	    (its_entry->flags & ACPI_MADT_ITS_NON_COHERENT))
+		its->flags |=3D ITS_FLAGS_FORCE_NON_SHAREABLE;
+
 	err =3D its_probe_one(its);
 	if (!err)
 		return 0;
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index 6fb276504bcc..7c12d11513c6 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -2190,11 +2190,10 @@ static void __init gic_populate_ppi_partitions(struct=
 device_node *gic_node)
 	of_node_put(parts_node);
 }
=20
-static void __init gic_of_setup_kvm_info(struct device_node *node)
+static void __init gic_of_setup_kvm_info(struct device_node *node, u32 nr_re=
dist_regions)
 {
 	int ret;
 	struct resource r;
-	u32 gicv_idx;
=20
 	gic_v3_kvm_info.type =3D GIC_V3;
=20
@@ -2202,12 +2201,8 @@ static void __init gic_of_setup_kvm_info(struct device=
_node *node)
 	if (!gic_v3_kvm_info.maint_irq)
 		return;
=20
-	if (of_property_read_u32(node, "#redistributor-regions",
-				 &gicv_idx))
-		gicv_idx =3D 1;
-
-	gicv_idx +=3D 3;	/* Also skip GICD, GICC, GICH */
-	ret =3D of_address_to_resource(node, gicv_idx, &r);
+	/* Also skip GICD, GICC, GICH */
+	ret =3D of_address_to_resource(node, nr_redist_regions + 3, &r);
 	if (!ret)
 		gic_v3_kvm_info.vcpu =3D r;
=20
@@ -2297,7 +2292,7 @@ static int __init gic_of_init(struct device_node *node,=
 struct device_node *pare
 	gic_populate_ppi_partitions(node);
=20
 	if (static_branch_likely(&supports_deactivate_key))
-		gic_of_setup_kvm_info(node);
+		gic_of_setup_kvm_info(node, nr_redist_regions);
 	return 0;
=20
 out_unmap_rdist:
@@ -2349,6 +2344,11 @@ gic_acpi_parse_madt_redist(union acpi_subtable_headers=
 *header,
 		pr_err("Couldn't map GICR region @%llx\n", redist->base_address);
 		return -ENOMEM;
 	}
+
+	if (acpi_get_madt_revision() >=3D 7 &&
+	    (redist->flags & ACPI_MADT_GICR_NON_COHERENT))
+		gic_data.rdists.flags |=3D RDIST_FLAGS_FORCE_NON_SHAREABLE;
+
 	gic_request_region(redist->base_address, redist->length, "GICR");
=20
 	gic_acpi_register_redist(redist->base_address, redist_base);
@@ -2373,6 +2373,10 @@ gic_acpi_parse_madt_gicc(union acpi_subtable_headers *=
header,
 		return -ENOMEM;
 	gic_request_region(gicc->gicr_base_address, size, "GICR");
=20
+	if (acpi_get_madt_revision() >=3D 7 &&
+	    (gicc->flags & ACPI_MADT_GICC_NON_COHERENT))
+		gic_data.rdists.flags |=3D RDIST_FLAGS_FORCE_NON_SHAREABLE;
+
 	gic_acpi_register_redist(gicc->gicr_base_address, redist_base);
 	return 0;
 }
diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-irq=
steer.c
index 20cf7a9e9ece..75a0e980ff35 100644
--- a/drivers/irqchip/irq-imx-irqsteer.c
+++ b/drivers/irqchip/irq-imx-irqsteer.c
@@ -36,6 +36,7 @@ struct irqsteer_data {
 	int			channel;
 	struct irq_domain	*domain;
 	u32			*saved_reg;
+	struct device		*dev;
 };
=20
 static int imx_irqsteer_get_reg_index(struct irqsteer_data *data,
@@ -72,10 +73,26 @@ static void imx_irqsteer_irq_mask(struct irq_data *d)
 	raw_spin_unlock_irqrestore(&data->lock, flags);
 }
=20
+static void imx_irqsteer_irq_bus_lock(struct irq_data *d)
+{
+	struct irqsteer_data *data =3D d->chip_data;
+
+	pm_runtime_get_sync(data->dev);
+}
+
+static void imx_irqsteer_irq_bus_sync_unlock(struct irq_data *d)
+{
+	struct irqsteer_data *data =3D d->chip_data;
+
+	pm_runtime_put_autosuspend(data->dev);
+}
+
 static const struct irq_chip imx_irqsteer_irq_chip =3D {
-	.name		=3D "irqsteer",
-	.irq_mask	=3D imx_irqsteer_irq_mask,
-	.irq_unmask	=3D imx_irqsteer_irq_unmask,
+	.name			=3D "irqsteer",
+	.irq_mask		=3D imx_irqsteer_irq_mask,
+	.irq_unmask		=3D imx_irqsteer_irq_unmask,
+	.irq_bus_lock		=3D imx_irqsteer_irq_bus_lock,
+	.irq_bus_sync_unlock	=3D imx_irqsteer_irq_bus_sync_unlock,
 };
=20
 static int imx_irqsteer_irq_map(struct irq_domain *h, unsigned int irq,
@@ -150,6 +167,7 @@ static int imx_irqsteer_probe(struct platform_device *pde=
v)
 	if (!data)
 		return -ENOMEM;
=20
+	data->dev =3D &pdev->dev;
 	data->regs =3D devm_platform_ioremap_resource(pdev, 0);
 	if (IS_ERR(data->regs)) {
 		dev_err(&pdev->dev, "failed to initialize reg\n");
diff --git a/drivers/irqchip/irq-lan966x-oic.c b/drivers/irqchip/irq-lan966x-=
oic.c
new file mode 100644
index 000000000000..41ac880e3b87
--- /dev/null
+++ b/drivers/irqchip/irq-lan966x-oic.c
@@ -0,0 +1,278 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Driver for the Microchip LAN966x outbound interrupt controller
+ *
+ * Copyright (c) 2024 Technology Inc. and its subsidiaries.
+ *
+ * Authors:
+ *	Horatiu Vultur <horatiu.vultur@microchip.com>
+ *	Cl=C3=A9ment L=C3=A9ger <clement.leger@bootlin.com>
+ *	Herve Codina <herve.codina@bootlin.com>
+ */
+
+#include <linux/interrupt.h>
+#include <linux/irqchip/chained_irq.h>
+#include <linux/irqchip.h>
+#include <linux/irq.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+
+struct lan966x_oic_chip_regs {
+	int reg_off_ena_set;
+	int reg_off_ena_clr;
+	int reg_off_sticky;
+	int reg_off_ident;
+	int reg_off_map;
+};
+
+struct lan966x_oic_data {
+	void __iomem	*regs;
+	int		irq;
+};
+
+#define LAN966X_OIC_NR_IRQ 86
+
+/* Interrupt sticky status */
+#define LAN966X_OIC_INTR_STICKY		0x30
+#define LAN966X_OIC_INTR_STICKY1	0x34
+#define LAN966X_OIC_INTR_STICKY2	0x38
+
+/* Interrupt enable */
+#define LAN966X_OIC_INTR_ENA		0x48
+#define LAN966X_OIC_INTR_ENA1		0x4c
+#define LAN966X_OIC_INTR_ENA2		0x50
+
+/* Atomic clear of interrupt enable */
+#define LAN966X_OIC_INTR_ENA_CLR	0x54
+#define LAN966X_OIC_INTR_ENA_CLR1	0x58
+#define LAN966X_OIC_INTR_ENA_CLR2	0x5c
+
+/* Atomic set of interrupt */
+#define LAN966X_OIC_INTR_ENA_SET	0x60
+#define LAN966X_OIC_INTR_ENA_SET1	0x64
+#define LAN966X_OIC_INTR_ENA_SET2	0x68
+
+/* Mapping of source to destination interrupts (_n =3D 0..8) */
+#define LAN966X_OIC_DST_INTR_MAP(_n)	(0x78 + (_n) * 4)
+#define LAN966X_OIC_DST_INTR_MAP1(_n)	(0x9c + (_n) * 4)
+#define LAN966X_OIC_DST_INTR_MAP2(_n)	(0xc0 + (_n) * 4)
+
+/* Currently active interrupt sources per destination (_n =3D 0..8) */
+#define LAN966X_OIC_DST_INTR_IDENT(_n)	(0xe4 + (_n) * 4)
+#define LAN966X_OIC_DST_INTR_IDENT1(_n)	(0x108 + (_n) * 4)
+#define LAN966X_OIC_DST_INTR_IDENT2(_n)	(0x12c + (_n) * 4)
+
+static unsigned int lan966x_oic_irq_startup(struct irq_data *data)
+{
+	struct irq_chip_generic *gc =3D irq_data_get_irq_chip_data(data);
+	struct irq_chip_type *ct =3D irq_data_get_chip_type(data);
+	struct lan966x_oic_chip_regs *chip_regs =3D gc->private;
+	u32 map;
+
+	irq_gc_lock(gc);
+
+	/* Map the source interrupt to the destination */
+	map =3D irq_reg_readl(gc, chip_regs->reg_off_map);
+	map |=3D data->mask;
+	irq_reg_writel(gc, map, chip_regs->reg_off_map);
+
+	irq_gc_unlock(gc);
+
+	ct->chip.irq_ack(data);
+	ct->chip.irq_unmask(data);
+
+	return 0;
+}
+
+static void lan966x_oic_irq_shutdown(struct irq_data *data)
+{
+	struct irq_chip_generic *gc =3D irq_data_get_irq_chip_data(data);
+	struct irq_chip_type *ct =3D irq_data_get_chip_type(data);
+	struct lan966x_oic_chip_regs *chip_regs =3D gc->private;
+	u32 map;
+
+	ct->chip.irq_mask(data);
+
+	irq_gc_lock(gc);
+
+	/* Unmap the interrupt */
+	map =3D irq_reg_readl(gc, chip_regs->reg_off_map);
+	map &=3D ~data->mask;
+	irq_reg_writel(gc, map, chip_regs->reg_off_map);
+
+	irq_gc_unlock(gc);
+}
+
+static int lan966x_oic_irq_set_type(struct irq_data *data,
+				    unsigned int flow_type)
+{
+	if (flow_type !=3D IRQ_TYPE_LEVEL_HIGH) {
+		pr_err("lan966x oic doesn't support flow type %d\n", flow_type);
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static void lan966x_oic_irq_handler_domain(struct irq_domain *d, u32 first_i=
rq)
+{
+	struct irq_chip_generic *gc =3D irq_get_domain_generic_chip(d, first_irq);
+	struct lan966x_oic_chip_regs *chip_regs =3D gc->private;
+	unsigned long ident;
+	unsigned int hwirq;
+
+	ident =3D irq_reg_readl(gc, chip_regs->reg_off_ident);
+	if (!ident)
+		return;
+
+	for_each_set_bit(hwirq, &ident, 32)
+		generic_handle_domain_irq(d, hwirq + first_irq);
+}
+
+static void lan966x_oic_irq_handler(struct irq_desc *desc)
+{
+	struct irq_domain *d =3D irq_desc_get_handler_data(desc);
+	struct irq_chip *chip =3D irq_desc_get_chip(desc);
+
+	chained_irq_enter(chip, desc);
+	lan966x_oic_irq_handler_domain(d, 0);
+	lan966x_oic_irq_handler_domain(d, 32);
+	lan966x_oic_irq_handler_domain(d, 64);
+	chained_irq_exit(chip, desc);
+}
+
+static struct lan966x_oic_chip_regs lan966x_oic_chip_regs[3] =3D {
+	{
+		.reg_off_ena_set =3D LAN966X_OIC_INTR_ENA_SET,
+		.reg_off_ena_clr =3D LAN966X_OIC_INTR_ENA_CLR,
+		.reg_off_sticky  =3D LAN966X_OIC_INTR_STICKY,
+		.reg_off_ident   =3D LAN966X_OIC_DST_INTR_IDENT(0),
+		.reg_off_map     =3D LAN966X_OIC_DST_INTR_MAP(0),
+	}, {
+		.reg_off_ena_set =3D LAN966X_OIC_INTR_ENA_SET1,
+		.reg_off_ena_clr =3D LAN966X_OIC_INTR_ENA_CLR1,
+		.reg_off_sticky  =3D LAN966X_OIC_INTR_STICKY1,
+		.reg_off_ident   =3D LAN966X_OIC_DST_INTR_IDENT1(0),
+		.reg_off_map     =3D LAN966X_OIC_DST_INTR_MAP1(0),
+	}, {
+		.reg_off_ena_set =3D LAN966X_OIC_INTR_ENA_SET2,
+		.reg_off_ena_clr =3D LAN966X_OIC_INTR_ENA_CLR2,
+		.reg_off_sticky  =3D LAN966X_OIC_INTR_STICKY2,
+		.reg_off_ident   =3D LAN966X_OIC_DST_INTR_IDENT2(0),
+		.reg_off_map     =3D LAN966X_OIC_DST_INTR_MAP2(0),
+	}
+};
+
+static int lan966x_oic_chip_init(struct irq_chip_generic *gc)
+{
+	struct lan966x_oic_data *lan966x_oic =3D gc->domain->host_data;
+	struct lan966x_oic_chip_regs *chip_regs;
+
+	chip_regs =3D &lan966x_oic_chip_regs[gc->irq_base / 32];
+
+	gc->reg_base =3D lan966x_oic->regs;
+	gc->chip_types[0].regs.enable =3D chip_regs->reg_off_ena_set;
+	gc->chip_types[0].regs.disable =3D chip_regs->reg_off_ena_clr;
+	gc->chip_types[0].regs.ack =3D chip_regs->reg_off_sticky;
+	gc->chip_types[0].chip.irq_startup =3D lan966x_oic_irq_startup;
+	gc->chip_types[0].chip.irq_shutdown =3D lan966x_oic_irq_shutdown;
+	gc->chip_types[0].chip.irq_set_type =3D lan966x_oic_irq_set_type;
+	gc->chip_types[0].chip.irq_mask =3D irq_gc_mask_disable_reg;
+	gc->chip_types[0].chip.irq_unmask =3D irq_gc_unmask_enable_reg;
+	gc->chip_types[0].chip.irq_ack =3D irq_gc_ack_set_bit;
+	gc->private =3D chip_regs;
+
+	/* Disable all interrupts handled by this chip */
+	irq_reg_writel(gc, ~0U, chip_regs->reg_off_ena_clr);
+
+	return 0;
+}
+
+static void lan966x_oic_chip_exit(struct irq_chip_generic *gc)
+{
+	/* Disable and ack all interrupts handled by this chip */
+	irq_reg_writel(gc, ~0U, gc->chip_types[0].regs.disable);
+	irq_reg_writel(gc, ~0U, gc->chip_types[0].regs.ack);
+}
+
+static int lan966x_oic_domain_init(struct irq_domain *d)
+{
+	struct lan966x_oic_data *lan966x_oic =3D d->host_data;
+
+	irq_set_chained_handler_and_data(lan966x_oic->irq, lan966x_oic_irq_handler,=
 d);
+
+	return 0;
+}
+
+static void lan966x_oic_domain_exit(struct irq_domain *d)
+{
+	struct lan966x_oic_data *lan966x_oic =3D d->host_data;
+
+	irq_set_chained_handler_and_data(lan966x_oic->irq, NULL, NULL);
+}
+
+static int lan966x_oic_probe(struct platform_device *pdev)
+{
+	struct irq_domain_chip_generic_info dgc_info =3D {
+		.name		=3D "lan966x-oic",
+		.handler	=3D handle_level_irq,
+		.irqs_per_chip	=3D 32,
+		.num_ct		=3D 1,
+		.init		=3D lan966x_oic_chip_init,
+		.exit		=3D lan966x_oic_chip_exit,
+	};
+	struct irq_domain_info d_info =3D {
+		.fwnode		=3D of_node_to_fwnode(pdev->dev.of_node),
+		.domain_flags	=3D IRQ_DOMAIN_FLAG_DESTROY_GC,
+		.size		=3D LAN966X_OIC_NR_IRQ,
+		.hwirq_max	=3D LAN966X_OIC_NR_IRQ,
+		.ops		=3D &irq_generic_chip_ops,
+		.dgc_info	=3D &dgc_info,
+		.init		=3D lan966x_oic_domain_init,
+		.exit		=3D lan966x_oic_domain_exit,
+	};
+	struct lan966x_oic_data *lan966x_oic;
+	struct device *dev =3D &pdev->dev;
+	struct irq_domain *domain;
+
+	lan966x_oic =3D devm_kmalloc(dev, sizeof(*lan966x_oic), GFP_KERNEL);
+	if (!lan966x_oic)
+		return -ENOMEM;
+
+	lan966x_oic->regs =3D devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(lan966x_oic->regs))
+		return dev_err_probe(dev, PTR_ERR(lan966x_oic->regs),
+				     "failed to map resource\n");
+
+	lan966x_oic->irq =3D platform_get_irq(pdev, 0);
+	if (lan966x_oic->irq < 0)
+		return dev_err_probe(dev, lan966x_oic->irq, "failed to get the IRQ\n");
+
+	d_info.host_data =3D lan966x_oic;
+	domain =3D devm_irq_domain_instantiate(dev, &d_info);
+	if (IS_ERR(domain))
+		return dev_err_probe(dev, PTR_ERR(domain),
+				     "failed to instantiate the IRQ domain\n");
+	return 0;
+}
+
+static const struct of_device_id lan966x_oic_of_match[] =3D {
+	{ .compatible =3D "microchip,lan966x-oic" },
+	{} /* sentinel */
+};
+MODULE_DEVICE_TABLE(of, lan966x_oic_of_match);
+
+static struct platform_driver lan966x_oic_driver =3D {
+	.probe =3D lan966x_oic_probe,
+	.driver =3D {
+		.name =3D "lan966x-oic",
+		.of_match_table =3D lan966x_oic_of_match,
+	},
+};
+module_platform_driver(lan966x_oic_driver);
+
+MODULE_AUTHOR("Herve Codina <herve.codina@bootlin.com>");
+MODULE_DESCRIPTION("Microchip LAN966x OIC driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/irqchip/irq-meson-gpio.c b/drivers/irqchip/irq-meson-gpi=
o.c
index 9a1791908598..27e30ce41db3 100644
--- a/drivers/irqchip/irq-meson-gpio.c
+++ b/drivers/irqchip/irq-meson-gpio.c
@@ -608,5 +608,6 @@ IRQCHIP_MATCH("amlogic,meson-gpio-intc", meson_gpio_irq_o=
f_init)
 IRQCHIP_PLATFORM_DRIVER_END(meson_gpio_intc)
=20
 MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
+MODULE_DESCRIPTION("Meson GPIO Interrupt Multiplexer driver");
 MODULE_LICENSE("GPL v2");
 MODULE_ALIAS("platform:meson-gpio-intc");
diff --git a/drivers/irqchip/irq-mvebu-pic.c b/drivers/irqchip/irq-mvebu-pic.c
index d17d9c0e2880..08b0cc862adf 100644
--- a/drivers/irqchip/irq-mvebu-pic.c
+++ b/drivers/irqchip/irq-mvebu-pic.c
@@ -193,6 +193,7 @@ module_platform_driver(mvebu_pic_driver);
=20
 MODULE_AUTHOR("Yehuda Yitschak <yehuday@marvell.com>");
 MODULE_AUTHOR("Thomas Petazzoni <thomas.petazzoni@free-electrons.com>");
+MODULE_DESCRIPTION("Marvell Armada 7K/8K PIC driver");
 MODULE_LICENSE("GPL v2");
 MODULE_ALIAS("platform:mvebu_pic");
=20
diff --git a/drivers/irqchip/irq-renesas-rzg2l.c b/drivers/irqchip/irq-renesa=
s-rzg2l.c
index f6484bf15e0b..693ff285ca2c 100644
--- a/drivers/irqchip/irq-renesas-rzg2l.c
+++ b/drivers/irqchip/irq-renesas-rzg2l.c
@@ -37,6 +37,8 @@
 #define TSSEL_SHIFT(n)			(8 * (n))
 #define TSSEL_MASK			GENMASK(7, 0)
 #define IRQ_MASK			0x3
+#define IMSK				0x10010
+#define TMSK				0x10020
=20
 #define TSSR_OFFSET(n)			((n) % 4)
 #define TSSR_INDEX(n)			((n) / 4)
@@ -69,12 +71,14 @@ struct rzg2l_irqc_reg_cache {
 /**
  * struct rzg2l_irqc_priv - IRQ controller private data structure
  * @base:	Controller's base address
+ * @irqchip:	Pointer to struct irq_chip
  * @fwspec:	IRQ firmware specific data
  * @lock:	Lock to serialize access to hardware registers
  * @cache:	Registers cache for suspend/resume
  */
 static struct rzg2l_irqc_priv {
 	void __iomem			*base;
+	const struct irq_chip		*irqchip;
 	struct irq_fwspec		fwspec[IRQC_NUM_IRQ];
 	raw_spinlock_t			lock;
 	struct rzg2l_irqc_reg_cache	cache;
@@ -138,6 +142,111 @@ static void rzg2l_irqc_eoi(struct irq_data *d)
 	irq_chip_eoi_parent(d);
 }
=20
+static void rzfive_irqc_mask_irq_interrupt(struct rzg2l_irqc_priv *priv,
+					   unsigned int hwirq)
+{
+	u32 bit =3D BIT(hwirq - IRQC_IRQ_START);
+
+	writel_relaxed(readl_relaxed(priv->base + IMSK) | bit, priv->base + IMSK);
+}
+
+static void rzfive_irqc_unmask_irq_interrupt(struct rzg2l_irqc_priv *priv,
+					     unsigned int hwirq)
+{
+	u32 bit =3D BIT(hwirq - IRQC_IRQ_START);
+
+	writel_relaxed(readl_relaxed(priv->base + IMSK) & ~bit, priv->base + IMSK);
+}
+
+static void rzfive_irqc_mask_tint_interrupt(struct rzg2l_irqc_priv *priv,
+					    unsigned int hwirq)
+{
+	u32 bit =3D BIT(hwirq - IRQC_TINT_START);
+
+	writel_relaxed(readl_relaxed(priv->base + TMSK) | bit, priv->base + TMSK);
+}
+
+static void rzfive_irqc_unmask_tint_interrupt(struct rzg2l_irqc_priv *priv,
+					      unsigned int hwirq)
+{
+	u32 bit =3D BIT(hwirq - IRQC_TINT_START);
+
+	writel_relaxed(readl_relaxed(priv->base + TMSK) & ~bit, priv->base + TMSK);
+}
+
+static void rzfive_irqc_mask(struct irq_data *d)
+{
+	struct rzg2l_irqc_priv *priv =3D irq_data_to_priv(d);
+	unsigned int hwirq =3D irqd_to_hwirq(d);
+
+	raw_spin_lock(&priv->lock);
+	if (hwirq >=3D IRQC_IRQ_START && hwirq <=3D IRQC_IRQ_COUNT)
+		rzfive_irqc_mask_irq_interrupt(priv, hwirq);
+	else if (hwirq >=3D IRQC_TINT_START && hwirq < IRQC_NUM_IRQ)
+		rzfive_irqc_mask_tint_interrupt(priv, hwirq);
+	raw_spin_unlock(&priv->lock);
+	irq_chip_mask_parent(d);
+}
+
+static void rzfive_irqc_unmask(struct irq_data *d)
+{
+	struct rzg2l_irqc_priv *priv =3D irq_data_to_priv(d);
+	unsigned int hwirq =3D irqd_to_hwirq(d);
+
+	raw_spin_lock(&priv->lock);
+	if (hwirq >=3D IRQC_IRQ_START && hwirq <=3D IRQC_IRQ_COUNT)
+		rzfive_irqc_unmask_irq_interrupt(priv, hwirq);
+	else if (hwirq >=3D IRQC_TINT_START && hwirq < IRQC_NUM_IRQ)
+		rzfive_irqc_unmask_tint_interrupt(priv, hwirq);
+	raw_spin_unlock(&priv->lock);
+	irq_chip_unmask_parent(d);
+}
+
+static void rzfive_tint_irq_endisable(struct irq_data *d, bool enable)
+{
+	struct rzg2l_irqc_priv *priv =3D irq_data_to_priv(d);
+	unsigned int hwirq =3D irqd_to_hwirq(d);
+
+	if (hwirq >=3D IRQC_TINT_START && hwirq < IRQC_NUM_IRQ) {
+		u32 offset =3D hwirq - IRQC_TINT_START;
+		u32 tssr_offset =3D TSSR_OFFSET(offset);
+		u8 tssr_index =3D TSSR_INDEX(offset);
+		u32 reg;
+
+		raw_spin_lock(&priv->lock);
+		if (enable)
+			rzfive_irqc_unmask_tint_interrupt(priv, hwirq);
+		else
+			rzfive_irqc_mask_tint_interrupt(priv, hwirq);
+		reg =3D readl_relaxed(priv->base + TSSR(tssr_index));
+		if (enable)
+			reg |=3D TIEN << TSSEL_SHIFT(tssr_offset);
+		else
+			reg &=3D ~(TIEN << TSSEL_SHIFT(tssr_offset));
+		writel_relaxed(reg, priv->base + TSSR(tssr_index));
+		raw_spin_unlock(&priv->lock);
+	} else {
+		raw_spin_lock(&priv->lock);
+		if (enable)
+			rzfive_irqc_unmask_irq_interrupt(priv, hwirq);
+		else
+			rzfive_irqc_mask_irq_interrupt(priv, hwirq);
+		raw_spin_unlock(&priv->lock);
+	}
+}
+
+static void rzfive_irqc_irq_disable(struct irq_data *d)
+{
+	irq_chip_disable_parent(d);
+	rzfive_tint_irq_endisable(d, false);
+}
+
+static void rzfive_irqc_irq_enable(struct irq_data *d)
+{
+	rzfive_tint_irq_endisable(d, true);
+	irq_chip_enable_parent(d);
+}
+
 static void rzg2l_tint_irq_endisable(struct irq_data *d, bool enable)
 {
 	unsigned int hw_irq =3D irqd_to_hwirq(d);
@@ -162,8 +271,8 @@ static void rzg2l_tint_irq_endisable(struct irq_data *d, =
bool enable)
=20
 static void rzg2l_irqc_irq_disable(struct irq_data *d)
 {
-	rzg2l_tint_irq_endisable(d, false);
 	irq_chip_disable_parent(d);
+	rzg2l_tint_irq_endisable(d, false);
 }
=20
 static void rzg2l_irqc_irq_enable(struct irq_data *d)
@@ -321,7 +430,7 @@ static struct syscore_ops rzg2l_irqc_syscore_ops =3D {
 	.resume		=3D rzg2l_irqc_irq_resume,
 };
=20
-static const struct irq_chip irqc_chip =3D {
+static const struct irq_chip rzg2l_irqc_chip =3D {
 	.name			=3D "rzg2l-irqc",
 	.irq_eoi		=3D rzg2l_irqc_eoi,
 	.irq_mask		=3D irq_chip_mask_parent,
@@ -338,6 +447,23 @@ static const struct irq_chip irqc_chip =3D {
 				  IRQCHIP_SKIP_SET_WAKE,
 };
=20
+static const struct irq_chip rzfive_irqc_chip =3D {
+	.name			=3D "rzfive-irqc",
+	.irq_eoi		=3D rzg2l_irqc_eoi,
+	.irq_mask		=3D rzfive_irqc_mask,
+	.irq_unmask		=3D rzfive_irqc_unmask,
+	.irq_disable		=3D rzfive_irqc_irq_disable,
+	.irq_enable		=3D rzfive_irqc_irq_enable,
+	.irq_get_irqchip_state	=3D irq_chip_get_parent_state,
+	.irq_set_irqchip_state	=3D irq_chip_set_parent_state,
+	.irq_retrigger		=3D irq_chip_retrigger_hierarchy,
+	.irq_set_type		=3D rzg2l_irqc_set_type,
+	.irq_set_affinity	=3D irq_chip_set_affinity_parent,
+	.flags			=3D IRQCHIP_MASK_ON_SUSPEND |
+				  IRQCHIP_SET_TYPE_MASKED |
+				  IRQCHIP_SKIP_SET_WAKE,
+};
+
 static int rzg2l_irqc_alloc(struct irq_domain *domain, unsigned int virq,
 			    unsigned int nr_irqs, void *arg)
 {
@@ -369,7 +495,7 @@ static int rzg2l_irqc_alloc(struct irq_domain *domain, un=
signed int virq,
 	if (hwirq > (IRQC_NUM_IRQ - 1))
 		return -EINVAL;
=20
-	ret =3D irq_domain_set_hwirq_and_chip(domain, virq, hwirq, &irqc_chip,
+	ret =3D irq_domain_set_hwirq_and_chip(domain, virq, hwirq, priv->irqchip,
 					    (void *)(uintptr_t)tint);
 	if (ret)
 		return ret;
@@ -401,7 +527,8 @@ static int rzg2l_irqc_parse_interrupts(struct rzg2l_irqc_=
priv *priv,
 	return 0;
 }
=20
-static int rzg2l_irqc_init(struct device_node *node, struct device_node *par=
ent)
+static int rzg2l_irqc_common_init(struct device_node *node, struct device_no=
de *parent,
+				  const struct irq_chip *irq_chip)
 {
 	struct irq_domain *irq_domain, *parent_domain;
 	struct platform_device *pdev;
@@ -422,6 +549,8 @@ static int rzg2l_irqc_init(struct device_node *node, stru=
ct device_node *parent)
 	if (!rzg2l_irqc_data)
 		return -ENOMEM;
=20
+	rzg2l_irqc_data->irqchip =3D irq_chip;
+
 	rzg2l_irqc_data->base =3D devm_of_iomap(&pdev->dev, pdev->dev.of_node, 0, N=
ULL);
 	if (IS_ERR(rzg2l_irqc_data->base))
 		return PTR_ERR(rzg2l_irqc_data->base);
@@ -472,8 +601,21 @@ static int rzg2l_irqc_init(struct device_node *node, str=
uct device_node *parent)
 	return ret;
 }
=20
+static int __init rzg2l_irqc_init(struct device_node *node,
+				  struct device_node *parent)
+{
+	return rzg2l_irqc_common_init(node, parent, &rzg2l_irqc_chip);
+}
+
+static int __init rzfive_irqc_init(struct device_node *node,
+				   struct device_node *parent)
+{
+	return rzg2l_irqc_common_init(node, parent, &rzfive_irqc_chip);
+}
+
 IRQCHIP_PLATFORM_DRIVER_BEGIN(rzg2l_irqc)
 IRQCHIP_MATCH("renesas,rzg2l-irqc", rzg2l_irqc_init)
+IRQCHIP_MATCH("renesas,r9a07g043f-irqc", rzfive_irqc_init)
 IRQCHIP_PLATFORM_DRIVER_END(rzg2l_irqc)
 MODULE_AUTHOR("Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>");
 MODULE_DESCRIPTION("Renesas RZ/G2L IRQC Driver");
diff --git a/drivers/irqchip/irq-riscv-aplic-main.c b/drivers/irqchip/irq-ris=
cv-aplic-main.c
index 774a0c97fdab..28dd175b5764 100644
--- a/drivers/irqchip/irq-riscv-aplic-main.c
+++ b/drivers/irqchip/irq-riscv-aplic-main.c
@@ -127,6 +127,7 @@ static void aplic_init_hw_irqs(struct aplic_priv *priv)
=20
 int aplic_setup_priv(struct aplic_priv *priv, struct device *dev, void __iom=
em *regs)
 {
+	struct device_node *np =3D to_of_node(dev->fwnode);
 	struct of_phandle_args parent;
 	int rc;
=20
@@ -134,7 +135,7 @@ int aplic_setup_priv(struct aplic_priv *priv, struct devi=
ce *dev, void __iomem *
 	 * Currently, only OF fwnode is supported so extend this
 	 * function for ACPI support.
 	 */
-	if (!is_of_node(dev->fwnode))
+	if (!np)
 		return -EINVAL;
=20
 	/* Save device pointer and register base */
@@ -142,8 +143,7 @@ int aplic_setup_priv(struct aplic_priv *priv, struct devi=
ce *dev, void __iomem *
 	priv->regs =3D regs;
=20
 	/* Find out number of interrupt sources */
-	rc =3D of_property_read_u32(to_of_node(dev->fwnode), "riscv,num-sources",
-				  &priv->nr_irqs);
+	rc =3D of_property_read_u32(np, "riscv,num-sources", &priv->nr_irqs);
 	if (rc) {
 		dev_err(dev, "failed to get number of interrupt sources\n");
 		return rc;
@@ -155,8 +155,8 @@ int aplic_setup_priv(struct aplic_priv *priv, struct devi=
ce *dev, void __iomem *
 	 * If "msi-parent" property is present then we ignore the
 	 * APLIC IDCs which forces the APLIC driver to use MSI mode.
 	 */
-	if (!of_property_present(to_of_node(dev->fwnode), "msi-parent")) {
-		while (!of_irq_parse_one(to_of_node(dev->fwnode), priv->nr_idcs, &parent))
+	if (!of_property_present(np, "msi-parent")) {
+		while (!of_irq_parse_one(np, priv->nr_idcs, &parent))
 			priv->nr_idcs++;
 	}
=20
@@ -184,8 +184,7 @@ static int aplic_probe(struct platform_device *pdev)
 	 * If msi-parent property is present then setup APLIC MSI
 	 * mode otherwise setup APLIC direct mode.
 	 */
-	if (is_of_node(dev->fwnode))
-		msi_mode =3D of_property_present(to_of_node(dev->fwnode), "msi-parent");
+	msi_mode =3D of_property_present(to_of_node(dev->fwnode), "msi-parent");
 	if (msi_mode)
 		rc =3D aplic_msi_setup(dev, regs);
 	else
diff --git a/drivers/irqchip/irq-riscv-intc.c b/drivers/irqchip/irq-riscv-int=
c.c
index 9e71c4428814..983538a89e65 100644
--- a/drivers/irqchip/irq-riscv-intc.c
+++ b/drivers/irqchip/irq-riscv-intc.c
@@ -26,7 +26,7 @@ static unsigned int riscv_intc_nr_irqs __ro_after_init =3D =
BITS_PER_LONG;
 static unsigned int riscv_intc_custom_base __ro_after_init =3D BITS_PER_LONG;
 static unsigned int riscv_intc_custom_nr_irqs __ro_after_init;
=20
-static asmlinkage void riscv_intc_irq(struct pt_regs *regs)
+static void riscv_intc_irq(struct pt_regs *regs)
 {
 	unsigned long cause =3D regs->cause & ~CAUSE_IRQ_FLAG;
=20
@@ -34,7 +34,7 @@ static asmlinkage void riscv_intc_irq(struct pt_regs *regs)
 		pr_warn_ratelimited("Failed to handle interrupt (cause: %ld)\n", cause);
 }
=20
-static asmlinkage void riscv_intc_aia_irq(struct pt_regs *regs)
+static void riscv_intc_aia_irq(struct pt_regs *regs)
 {
 	unsigned long topi;
=20
diff --git a/drivers/irqchip/irq-stm32-exti.c b/drivers/irqchip/irq-stm32-ext=
i.c
index 2cc9f3b7d669..7c6a0080c330 100644
--- a/drivers/irqchip/irq-stm32-exti.c
+++ b/drivers/irqchip/irq-stm32-exti.c
@@ -1,45 +1,22 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (C) Maxime Coquelin 2015
- * Copyright (C) STMicroelectronics 2017
+ * Copyright (C) STMicroelectronics 2017-2024
  * Author:  Maxime Coquelin <mcoquelin.stm32@gmail.com>
  */
=20
 #include <linux/bitops.h>
-#include <linux/delay.h>
-#include <linux/hwspinlock.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/irq.h>
 #include <linux/irqchip.h>
 #include <linux/irqchip/chained_irq.h>
 #include <linux/irqdomain.h>
-#include <linux/mod_devicetable.h>
-#include <linux/module.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
-#include <linux/platform_device.h>
-#include <linux/pm.h>
-
-#include <dt-bindings/interrupt-controller/arm-gic.h>
=20
 #define IRQS_PER_BANK			32
=20
-#define HWSPNLCK_TIMEOUT		1000 /* usec */
-
-#define EXTI_EnCIDCFGR(n)		(0x180 + (n) * 4)
-#define EXTI_HWCFGR1			0x3f0
-
-/* Register: EXTI_EnCIDCFGR(n) */
-#define EXTI_CIDCFGR_CFEN_MASK		BIT(0)
-#define EXTI_CIDCFGR_CID_MASK		GENMASK(6, 4)
-#define EXTI_CIDCFGR_CID_SHIFT		4
-
-/* Register: EXTI_HWCFGR1 */
-#define EXTI_HWCFGR1_CIDWIDTH_MASK	GENMASK(27, 24)
-
-#define EXTI_CID1			1
-
 struct stm32_exti_bank {
 	u32 imr_ofst;
 	u32 emr_ofst;
@@ -47,13 +24,8 @@ struct stm32_exti_bank {
 	u32 ftsr_ofst;
 	u32 swier_ofst;
 	u32 rpr_ofst;
-	u32 fpr_ofst;
-	u32 trg_ofst;
-	u32 seccfgr_ofst;
 };
=20
-#define UNDEF_REG ~0
-
 struct stm32_exti_drv_data {
 	const struct stm32_exti_bank **exti_banks;
 	const u8 *desc_irqs;
@@ -63,7 +35,6 @@ struct stm32_exti_drv_data {
 struct stm32_exti_chip_data {
 	struct stm32_exti_host_data *host_data;
 	const struct stm32_exti_bank *reg_bank;
-	struct raw_spinlock rlock;
 	u32 wake_active;
 	u32 mask_cache;
 	u32 rtsr_cache;
@@ -76,8 +47,6 @@ struct stm32_exti_host_data {
 	struct device *dev;
 	struct stm32_exti_chip_data *chips_data;
 	const struct stm32_exti_drv_data *drv_data;
-	struct hwspinlock *hwlock;
-	bool dt_has_irqs_desc; /* skip internal desc_irqs array and get it from DT =
*/
 };
=20
 static const struct stm32_exti_bank stm32f4xx_exti_b1 =3D {
@@ -87,9 +56,6 @@ static const struct stm32_exti_bank stm32f4xx_exti_b1 =3D {
 	.ftsr_ofst	=3D 0x0C,
 	.swier_ofst	=3D 0x10,
 	.rpr_ofst	=3D 0x14,
-	.fpr_ofst	=3D UNDEF_REG,
-	.trg_ofst	=3D UNDEF_REG,
-	.seccfgr_ofst	=3D UNDEF_REG,
 };
=20
 static const struct stm32_exti_bank *stm32f4xx_exti_banks[] =3D {
@@ -108,9 +74,6 @@ static const struct stm32_exti_bank stm32h7xx_exti_b1 =3D {
 	.ftsr_ofst	=3D 0x04,
 	.swier_ofst	=3D 0x08,
 	.rpr_ofst	=3D 0x88,
-	.fpr_ofst	=3D UNDEF_REG,
-	.trg_ofst	=3D UNDEF_REG,
-	.seccfgr_ofst	=3D UNDEF_REG,
 };
=20
 static const struct stm32_exti_bank stm32h7xx_exti_b2 =3D {
@@ -120,9 +83,6 @@ static const struct stm32_exti_bank stm32h7xx_exti_b2 =3D {
 	.ftsr_ofst	=3D 0x24,
 	.swier_ofst	=3D 0x28,
 	.rpr_ofst	=3D 0x98,
-	.fpr_ofst	=3D UNDEF_REG,
-	.trg_ofst	=3D UNDEF_REG,
-	.seccfgr_ofst	=3D UNDEF_REG,
 };
=20
 static const struct stm32_exti_bank stm32h7xx_exti_b3 =3D {
@@ -132,9 +92,6 @@ static const struct stm32_exti_bank stm32h7xx_exti_b3 =3D {
 	.ftsr_ofst	=3D 0x44,
 	.swier_ofst	=3D 0x48,
 	.rpr_ofst	=3D 0xA8,
-	.fpr_ofst	=3D UNDEF_REG,
-	.trg_ofst	=3D UNDEF_REG,
-	.seccfgr_ofst	=3D UNDEF_REG,
 };
=20
 static const struct stm32_exti_bank *stm32h7xx_exti_banks[] =3D {
@@ -148,183 +105,12 @@ static const struct stm32_exti_drv_data stm32h7xx_drv_=
data =3D {
 	.bank_nr =3D ARRAY_SIZE(stm32h7xx_exti_banks),
 };
=20
-static const struct stm32_exti_bank stm32mp1_exti_b1 =3D {
-	.imr_ofst	=3D 0x80,
-	.emr_ofst	=3D UNDEF_REG,
-	.rtsr_ofst	=3D 0x00,
-	.ftsr_ofst	=3D 0x04,
-	.swier_ofst	=3D 0x08,
-	.rpr_ofst	=3D 0x0C,
-	.fpr_ofst	=3D 0x10,
-	.trg_ofst	=3D 0x3EC,
-	.seccfgr_ofst	=3D 0x14,
-};
-
-static const struct stm32_exti_bank stm32mp1_exti_b2 =3D {
-	.imr_ofst	=3D 0x90,
-	.emr_ofst	=3D UNDEF_REG,
-	.rtsr_ofst	=3D 0x20,
-	.ftsr_ofst	=3D 0x24,
-	.swier_ofst	=3D 0x28,
-	.rpr_ofst	=3D 0x2C,
-	.fpr_ofst	=3D 0x30,
-	.trg_ofst	=3D 0x3E8,
-	.seccfgr_ofst	=3D 0x34,
-};
-
-static const struct stm32_exti_bank stm32mp1_exti_b3 =3D {
-	.imr_ofst	=3D 0xA0,
-	.emr_ofst	=3D UNDEF_REG,
-	.rtsr_ofst	=3D 0x40,
-	.ftsr_ofst	=3D 0x44,
-	.swier_ofst	=3D 0x48,
-	.rpr_ofst	=3D 0x4C,
-	.fpr_ofst	=3D 0x50,
-	.trg_ofst	=3D 0x3E4,
-	.seccfgr_ofst	=3D 0x54,
-};
-
-static const struct stm32_exti_bank *stm32mp1_exti_banks[] =3D {
-	&stm32mp1_exti_b1,
-	&stm32mp1_exti_b2,
-	&stm32mp1_exti_b3,
-};
-
-static struct irq_chip stm32_exti_h_chip;
-static struct irq_chip stm32_exti_h_chip_direct;
-
-#define EXTI_INVALID_IRQ       U8_MAX
-#define STM32MP1_DESC_IRQ_SIZE (ARRAY_SIZE(stm32mp1_exti_banks) * IRQS_PER_B=
ANK)
-
-/*
- * Use some intentionally tricky logic here to initialize the whole array to
- * EXTI_INVALID_IRQ, but then override certain fields, requiring us to indic=
ate
- * that we "know" that there are overrides in this structure, and we'll need=
 to
- * disable that warning from W=3D1 builds.
- */
-__diag_push();
-__diag_ignore_all("-Woverride-init",
-		  "logic to initialize all and then override some is OK");
-
-static const u8 stm32mp1_desc_irq[] =3D {
-	/* default value */
-	[0 ... (STM32MP1_DESC_IRQ_SIZE - 1)] =3D EXTI_INVALID_IRQ,
-
-	[0] =3D 6,
-	[1] =3D 7,
-	[2] =3D 8,
-	[3] =3D 9,
-	[4] =3D 10,
-	[5] =3D 23,
-	[6] =3D 64,
-	[7] =3D 65,
-	[8] =3D 66,
-	[9] =3D 67,
-	[10] =3D 40,
-	[11] =3D 42,
-	[12] =3D 76,
-	[13] =3D 77,
-	[14] =3D 121,
-	[15] =3D 127,
-	[16] =3D 1,
-	[19] =3D 3,
-	[21] =3D 31,
-	[22] =3D 33,
-	[23] =3D 72,
-	[24] =3D 95,
-	[25] =3D 107,
-	[26] =3D 37,
-	[27] =3D 38,
-	[28] =3D 39,
-	[29] =3D 71,
-	[30] =3D 52,
-	[31] =3D 53,
-	[32] =3D 82,
-	[33] =3D 83,
-	[46] =3D 151,
-	[47] =3D 93,
-	[48] =3D 138,
-	[50] =3D 139,
-	[52] =3D 140,
-	[53] =3D 141,
-	[54] =3D 135,
-	[61] =3D 100,
-	[65] =3D 144,
-	[68] =3D 143,
-	[70] =3D 62,
-	[73] =3D 129,
-};
-
-static const u8 stm32mp13_desc_irq[] =3D {
-	/* default value */
-	[0 ... (STM32MP1_DESC_IRQ_SIZE - 1)] =3D EXTI_INVALID_IRQ,
-
-	[0] =3D 6,
-	[1] =3D 7,
-	[2] =3D 8,
-	[3] =3D 9,
-	[4] =3D 10,
-	[5] =3D 24,
-	[6] =3D 65,
-	[7] =3D 66,
-	[8] =3D 67,
-	[9] =3D 68,
-	[10] =3D 41,
-	[11] =3D 43,
-	[12] =3D 77,
-	[13] =3D 78,
-	[14] =3D 106,
-	[15] =3D 109,
-	[16] =3D 1,
-	[19] =3D 3,
-	[21] =3D 32,
-	[22] =3D 34,
-	[23] =3D 73,
-	[24] =3D 93,
-	[25] =3D 114,
-	[26] =3D 38,
-	[27] =3D 39,
-	[28] =3D 40,
-	[29] =3D 72,
-	[30] =3D 53,
-	[31] =3D 54,
-	[32] =3D 83,
-	[33] =3D 84,
-	[44] =3D 96,
-	[47] =3D 92,
-	[48] =3D 116,
-	[50] =3D 117,
-	[52] =3D 118,
-	[53] =3D 119,
-	[68] =3D 63,
-	[70] =3D 98,
-};
-
-__diag_pop();
-
-static const struct stm32_exti_drv_data stm32mp1_drv_data =3D {
-	.exti_banks =3D stm32mp1_exti_banks,
-	.bank_nr =3D ARRAY_SIZE(stm32mp1_exti_banks),
-	.desc_irqs =3D stm32mp1_desc_irq,
-};
-
-static const struct stm32_exti_drv_data stm32mp13_drv_data =3D {
-	.exti_banks =3D stm32mp1_exti_banks,
-	.bank_nr =3D ARRAY_SIZE(stm32mp1_exti_banks),
-	.desc_irqs =3D stm32mp13_desc_irq,
-};
-
 static unsigned long stm32_exti_pending(struct irq_chip_generic *gc)
 {
 	struct stm32_exti_chip_data *chip_data =3D gc->private;
 	const struct stm32_exti_bank *stm32_bank =3D chip_data->reg_bank;
-	unsigned long pending;
=20
-	pending =3D irq_reg_readl(gc, stm32_bank->rpr_ofst);
-	if (stm32_bank->fpr_ofst !=3D UNDEF_REG)
-		pending |=3D irq_reg_readl(gc, stm32_bank->fpr_ofst);
-
-	return pending;
+	return irq_reg_readl(gc, stm32_bank->rpr_ofst);
 }
=20
 static void stm32_irq_handler(struct irq_desc *desc)
@@ -380,33 +166,21 @@ static int stm32_irq_set_type(struct irq_data *d, unsig=
ned int type)
 	struct irq_chip_generic *gc =3D irq_data_get_irq_chip_data(d);
 	struct stm32_exti_chip_data *chip_data =3D gc->private;
 	const struct stm32_exti_bank *stm32_bank =3D chip_data->reg_bank;
-	struct hwspinlock *hwlock =3D chip_data->host_data->hwlock;
 	u32 rtsr, ftsr;
 	int err;
=20
 	irq_gc_lock(gc);
=20
-	if (hwlock) {
-		err =3D hwspin_lock_timeout_in_atomic(hwlock, HWSPNLCK_TIMEOUT);
-		if (err) {
-			pr_err("%s can't get hwspinlock (%d)\n", __func__, err);
-			goto unlock;
-		}
-	}
-
 	rtsr =3D irq_reg_readl(gc, stm32_bank->rtsr_ofst);
 	ftsr =3D irq_reg_readl(gc, stm32_bank->ftsr_ofst);
=20
 	err =3D stm32_exti_set_type(d, type, &rtsr, &ftsr);
 	if (err)
-		goto unspinlock;
+		goto unlock;
=20
 	irq_reg_writel(gc, rtsr, stm32_bank->rtsr_ofst);
 	irq_reg_writel(gc, ftsr, stm32_bank->ftsr_ofst);
=20
-unspinlock:
-	if (hwlock)
-		hwspin_unlock_in_atomic(hwlock);
 unlock:
 	irq_gc_unlock(gc);
=20
@@ -494,287 +268,10 @@ static void stm32_irq_ack(struct irq_data *d)
 	irq_gc_lock(gc);
=20
 	irq_reg_writel(gc, d->mask, stm32_bank->rpr_ofst);
-	if (stm32_bank->fpr_ofst !=3D UNDEF_REG)
-		irq_reg_writel(gc, d->mask, stm32_bank->fpr_ofst);
=20
 	irq_gc_unlock(gc);
 }
=20
-/* directly set the target bit without reading first. */
-static inline void stm32_exti_write_bit(struct irq_data *d, u32 reg)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	void __iomem *base =3D chip_data->host_data->base;
-	u32 val =3D BIT(d->hwirq % IRQS_PER_BANK);
-
-	writel_relaxed(val, base + reg);
-}
-
-static inline u32 stm32_exti_set_bit(struct irq_data *d, u32 reg)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	void __iomem *base =3D chip_data->host_data->base;
-	u32 val;
-
-	val =3D readl_relaxed(base + reg);
-	val |=3D BIT(d->hwirq % IRQS_PER_BANK);
-	writel_relaxed(val, base + reg);
-
-	return val;
-}
-
-static inline u32 stm32_exti_clr_bit(struct irq_data *d, u32 reg)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	void __iomem *base =3D chip_data->host_data->base;
-	u32 val;
-
-	val =3D readl_relaxed(base + reg);
-	val &=3D ~BIT(d->hwirq % IRQS_PER_BANK);
-	writel_relaxed(val, base + reg);
-
-	return val;
-}
-
-static void stm32_exti_h_eoi(struct irq_data *d)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	const struct stm32_exti_bank *stm32_bank =3D chip_data->reg_bank;
-
-	raw_spin_lock(&chip_data->rlock);
-
-	stm32_exti_write_bit(d, stm32_bank->rpr_ofst);
-	if (stm32_bank->fpr_ofst !=3D UNDEF_REG)
-		stm32_exti_write_bit(d, stm32_bank->fpr_ofst);
-
-	raw_spin_unlock(&chip_data->rlock);
-
-	if (d->parent_data->chip)
-		irq_chip_eoi_parent(d);
-}
-
-static void stm32_exti_h_mask(struct irq_data *d)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	const struct stm32_exti_bank *stm32_bank =3D chip_data->reg_bank;
-
-	raw_spin_lock(&chip_data->rlock);
-	chip_data->mask_cache =3D stm32_exti_clr_bit(d, stm32_bank->imr_ofst);
-	raw_spin_unlock(&chip_data->rlock);
-
-	if (d->parent_data->chip)
-		irq_chip_mask_parent(d);
-}
-
-static void stm32_exti_h_unmask(struct irq_data *d)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	const struct stm32_exti_bank *stm32_bank =3D chip_data->reg_bank;
-
-	raw_spin_lock(&chip_data->rlock);
-	chip_data->mask_cache =3D stm32_exti_set_bit(d, stm32_bank->imr_ofst);
-	raw_spin_unlock(&chip_data->rlock);
-
-	if (d->parent_data->chip)
-		irq_chip_unmask_parent(d);
-}
-
-static int stm32_exti_h_set_type(struct irq_data *d, unsigned int type)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	const struct stm32_exti_bank *stm32_bank =3D chip_data->reg_bank;
-	struct hwspinlock *hwlock =3D chip_data->host_data->hwlock;
-	void __iomem *base =3D chip_data->host_data->base;
-	u32 rtsr, ftsr;
-	int err;
-
-	raw_spin_lock(&chip_data->rlock);
-
-	if (hwlock) {
-		err =3D hwspin_lock_timeout_in_atomic(hwlock, HWSPNLCK_TIMEOUT);
-		if (err) {
-			pr_err("%s can't get hwspinlock (%d)\n", __func__, err);
-			goto unlock;
-		}
-	}
-
-	rtsr =3D readl_relaxed(base + stm32_bank->rtsr_ofst);
-	ftsr =3D readl_relaxed(base + stm32_bank->ftsr_ofst);
-
-	err =3D stm32_exti_set_type(d, type, &rtsr, &ftsr);
-	if (err)
-		goto unspinlock;
-
-	writel_relaxed(rtsr, base + stm32_bank->rtsr_ofst);
-	writel_relaxed(ftsr, base + stm32_bank->ftsr_ofst);
-
-unspinlock:
-	if (hwlock)
-		hwspin_unlock_in_atomic(hwlock);
-unlock:
-	raw_spin_unlock(&chip_data->rlock);
-
-	return err;
-}
-
-static int stm32_exti_h_set_wake(struct irq_data *d, unsigned int on)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	u32 mask =3D BIT(d->hwirq % IRQS_PER_BANK);
-
-	raw_spin_lock(&chip_data->rlock);
-
-	if (on)
-		chip_data->wake_active |=3D mask;
-	else
-		chip_data->wake_active &=3D ~mask;
-
-	raw_spin_unlock(&chip_data->rlock);
-
-	return 0;
-}
-
-static int stm32_exti_h_set_affinity(struct irq_data *d,
-				     const struct cpumask *dest, bool force)
-{
-	if (d->parent_data->chip)
-		return irq_chip_set_affinity_parent(d, dest, force);
-
-	return IRQ_SET_MASK_OK_DONE;
-}
-
-static int stm32_exti_h_suspend(struct device *dev)
-{
-	struct stm32_exti_host_data *host_data =3D dev_get_drvdata(dev);
-	struct stm32_exti_chip_data *chip_data;
-	int i;
-
-	for (i =3D 0; i < host_data->drv_data->bank_nr; i++) {
-		chip_data =3D &host_data->chips_data[i];
-		stm32_chip_suspend(chip_data, chip_data->wake_active);
-	}
-
-	return 0;
-}
-
-static int stm32_exti_h_resume(struct device *dev)
-{
-	struct stm32_exti_host_data *host_data =3D dev_get_drvdata(dev);
-	struct stm32_exti_chip_data *chip_data;
-	int i;
-
-	for (i =3D 0; i < host_data->drv_data->bank_nr; i++) {
-		chip_data =3D &host_data->chips_data[i];
-		stm32_chip_resume(chip_data, chip_data->mask_cache);
-	}
-
-	return 0;
-}
-
-static int stm32_exti_h_retrigger(struct irq_data *d)
-{
-	struct stm32_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
-	const struct stm32_exti_bank *stm32_bank =3D chip_data->reg_bank;
-	void __iomem *base =3D chip_data->host_data->base;
-	u32 mask =3D BIT(d->hwirq % IRQS_PER_BANK);
-
-	writel_relaxed(mask, base + stm32_bank->swier_ofst);
-
-	return 0;
-}
-
-static struct irq_chip stm32_exti_h_chip =3D {
-	.name			=3D "stm32-exti-h",
-	.irq_eoi		=3D stm32_exti_h_eoi,
-	.irq_mask		=3D stm32_exti_h_mask,
-	.irq_unmask		=3D stm32_exti_h_unmask,
-	.irq_retrigger		=3D stm32_exti_h_retrigger,
-	.irq_set_type		=3D stm32_exti_h_set_type,
-	.irq_set_wake		=3D stm32_exti_h_set_wake,
-	.flags			=3D IRQCHIP_MASK_ON_SUSPEND,
-	.irq_set_affinity	=3D IS_ENABLED(CONFIG_SMP) ? stm32_exti_h_set_affinity : =
NULL,
-};
-
-static struct irq_chip stm32_exti_h_chip_direct =3D {
-	.name			=3D "stm32-exti-h-direct",
-	.irq_eoi		=3D irq_chip_eoi_parent,
-	.irq_ack		=3D irq_chip_ack_parent,
-	.irq_mask		=3D stm32_exti_h_mask,
-	.irq_unmask		=3D stm32_exti_h_unmask,
-	.irq_retrigger		=3D irq_chip_retrigger_hierarchy,
-	.irq_set_type		=3D irq_chip_set_type_parent,
-	.irq_set_wake		=3D stm32_exti_h_set_wake,
-	.flags			=3D IRQCHIP_MASK_ON_SUSPEND,
-	.irq_set_affinity	=3D IS_ENABLED(CONFIG_SMP) ? irq_chip_set_affinity_parent=
 : NULL,
-};
-
-static int stm32_exti_h_domain_alloc(struct irq_domain *dm,
-				     unsigned int virq,
-				     unsigned int nr_irqs, void *data)
-{
-	struct stm32_exti_host_data *host_data =3D dm->host_data;
-	struct stm32_exti_chip_data *chip_data;
-	u8 desc_irq;
-	struct irq_fwspec *fwspec =3D data;
-	struct irq_fwspec p_fwspec;
-	irq_hw_number_t hwirq;
-	int bank;
-	u32 event_trg;
-	struct irq_chip *chip;
-
-	hwirq =3D fwspec->param[0];
-	if (hwirq >=3D host_data->drv_data->bank_nr * IRQS_PER_BANK)
-		return -EINVAL;
-
-	bank  =3D hwirq / IRQS_PER_BANK;
-	chip_data =3D &host_data->chips_data[bank];
-
-	/* Check if event is reserved (Secure) */
-	if (chip_data->event_reserved & BIT(hwirq % IRQS_PER_BANK)) {
-		dev_err(host_data->dev, "event %lu is reserved, secure\n", hwirq);
-		return -EPERM;
-	}
-
-	event_trg =3D readl_relaxed(host_data->base + chip_data->reg_bank->trg_ofst=
);
-	chip =3D (event_trg & BIT(hwirq % IRQS_PER_BANK)) ?
-	       &stm32_exti_h_chip : &stm32_exti_h_chip_direct;
-
-	irq_domain_set_hwirq_and_chip(dm, virq, hwirq, chip, chip_data);
-
-	if (host_data->dt_has_irqs_desc) {
-		struct of_phandle_args out_irq;
-		int ret;
-
-		ret =3D of_irq_parse_one(host_data->dev->of_node, hwirq, &out_irq);
-		if (ret)
-			return ret;
-		/* we only support one parent, so far */
-		if (of_node_to_fwnode(out_irq.np) !=3D dm->parent->fwnode)
-			return -EINVAL;
-
-		of_phandle_args_to_fwspec(out_irq.np, out_irq.args,
-					  out_irq.args_count, &p_fwspec);
-
-		return irq_domain_alloc_irqs_parent(dm, virq, 1, &p_fwspec);
-	}
-
-	if (!host_data->drv_data->desc_irqs)
-		return -EINVAL;
-
-	desc_irq =3D host_data->drv_data->desc_irqs[hwirq];
-	if (desc_irq !=3D EXTI_INVALID_IRQ) {
-		p_fwspec.fwnode =3D dm->parent->fwnode;
-		p_fwspec.param_count =3D 3;
-		p_fwspec.param[0] =3D GIC_SPI;
-		p_fwspec.param[1] =3D desc_irq;
-		p_fwspec.param[2] =3D IRQ_TYPE_LEVEL_HIGH;
-
-		return irq_domain_alloc_irqs_parent(dm, virq, 1, &p_fwspec);
-	}
-
-	return 0;
-}
-
 static struct
 stm32_exti_host_data *stm32_exti_host_init(const struct stm32_exti_drv_data =
*dd,
 					   struct device_node *node)
@@ -822,19 +319,12 @@ stm32_exti_chip_data *stm32_exti_chip_init(struct stm32=
_exti_host_data *h_data,
 	chip_data->host_data =3D h_data;
 	chip_data->reg_bank =3D stm32_bank;
=20
-	raw_spin_lock_init(&chip_data->rlock);
-
 	/*
 	 * This IP has no reset, so after hot reboot we should
 	 * clear registers to avoid residue
 	 */
 	writel_relaxed(0, base + stm32_bank->imr_ofst);
-	if (stm32_bank->emr_ofst !=3D UNDEF_REG)
-		writel_relaxed(0, base + stm32_bank->emr_ofst);
-
-	/* reserve Secure events */
-	if (stm32_bank->seccfgr_ofst !=3D UNDEF_REG)
-		chip_data->event_reserved =3D readl_relaxed(base + stm32_bank->seccfgr_ofs=
t);
+	writel_relaxed(0, base + stm32_bank->emr_ofst);
=20
 	pr_info("%pOF: bank%d\n", node, bank_idx);
=20
@@ -914,158 +404,6 @@ static int __init stm32_exti_init(const struct stm32_ex=
ti_drv_data *drv_data,
 	return ret;
 }
=20
-static const struct irq_domain_ops stm32_exti_h_domain_ops =3D {
-	.alloc	=3D stm32_exti_h_domain_alloc,
-	.free	=3D irq_domain_free_irqs_common,
-	.xlate =3D irq_domain_xlate_twocell,
-};
-
-static void stm32_exti_check_rif(struct stm32_exti_host_data *host_data)
-{
-	unsigned int bank, i, event;
-	u32 cid, cidcfgr, hwcfgr1;
-
-	/* quit on CID not supported */
-	hwcfgr1 =3D readl_relaxed(host_data->base + EXTI_HWCFGR1);
-	if ((hwcfgr1 & EXTI_HWCFGR1_CIDWIDTH_MASK) =3D=3D 0)
-		return;
-
-	for (bank =3D 0; bank < host_data->drv_data->bank_nr; bank++) {
-		for (i =3D 0; i < IRQS_PER_BANK; i++) {
-			event =3D bank * IRQS_PER_BANK + i;
-			cidcfgr =3D readl_relaxed(host_data->base + EXTI_EnCIDCFGR(event));
-			cid =3D (cidcfgr & EXTI_CIDCFGR_CID_MASK) >> EXTI_CIDCFGR_CID_SHIFT;
-			if ((cidcfgr & EXTI_CIDCFGR_CFEN_MASK) && cid !=3D EXTI_CID1)
-				host_data->chips_data[bank].event_reserved |=3D BIT(i);
-		}
-	}
-}
-
-static void stm32_exti_remove_irq(void *data)
-{
-	struct irq_domain *domain =3D data;
-
-	irq_domain_remove(domain);
-}
-
-static int stm32_exti_probe(struct platform_device *pdev)
-{
-	int ret, i;
-	struct device *dev =3D &pdev->dev;
-	struct device_node *np =3D dev->of_node;
-	struct irq_domain *parent_domain, *domain;
-	struct stm32_exti_host_data *host_data;
-	const struct stm32_exti_drv_data *drv_data;
-
-	host_data =3D devm_kzalloc(dev, sizeof(*host_data), GFP_KERNEL);
-	if (!host_data)
-		return -ENOMEM;
-
-	dev_set_drvdata(dev, host_data);
-	host_data->dev =3D dev;
-
-	/* check for optional hwspinlock which may be not available yet */
-	ret =3D of_hwspin_lock_get_id(np, 0);
-	if (ret =3D=3D -EPROBE_DEFER)
-		/* hwspinlock framework not yet ready */
-		return ret;
-
-	if (ret >=3D 0) {
-		host_data->hwlock =3D devm_hwspin_lock_request_specific(dev, ret);
-		if (!host_data->hwlock) {
-			dev_err(dev, "Failed to request hwspinlock\n");
-			return -EINVAL;
-		}
-	} else if (ret !=3D -ENOENT) {
-		/* note: ENOENT is a valid case (means 'no hwspinlock') */
-		dev_err(dev, "Failed to get hwspinlock\n");
-		return ret;
-	}
-
-	/* initialize host_data */
-	drv_data =3D of_device_get_match_data(dev);
-	if (!drv_data) {
-		dev_err(dev, "no of match data\n");
-		return -ENODEV;
-	}
-	host_data->drv_data =3D drv_data;
-
-	host_data->chips_data =3D devm_kcalloc(dev, drv_data->bank_nr,
-					     sizeof(*host_data->chips_data),
-					     GFP_KERNEL);
-	if (!host_data->chips_data)
-		return -ENOMEM;
-
-	host_data->base =3D devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(host_data->base))
-		return PTR_ERR(host_data->base);
-
-	for (i =3D 0; i < drv_data->bank_nr; i++)
-		stm32_exti_chip_init(host_data, i, np);
-
-	stm32_exti_check_rif(host_data);
-
-	parent_domain =3D irq_find_host(of_irq_find_parent(np));
-	if (!parent_domain) {
-		dev_err(dev, "GIC interrupt-parent not found\n");
-		return -EINVAL;
-	}
-
-	domain =3D irq_domain_add_hierarchy(parent_domain, 0,
-					  drv_data->bank_nr * IRQS_PER_BANK,
-					  np, &stm32_exti_h_domain_ops,
-					  host_data);
-
-	if (!domain) {
-		dev_err(dev, "Could not register exti domain\n");
-		return -ENOMEM;
-	}
-
-	ret =3D devm_add_action_or_reset(dev, stm32_exti_remove_irq, domain);
-	if (ret)
-		return ret;
-
-	if (of_property_read_bool(np, "interrupts-extended"))
-		host_data->dt_has_irqs_desc =3D true;
-
-	return 0;
-}
-
-/* platform driver only for MP1 */
-static const struct of_device_id stm32_exti_ids[] =3D {
-	{ .compatible =3D "st,stm32mp1-exti", .data =3D &stm32mp1_drv_data},
-	{ .compatible =3D "st,stm32mp13-exti", .data =3D &stm32mp13_drv_data},
-	{},
-};
-MODULE_DEVICE_TABLE(of, stm32_exti_ids);
-
-static const struct dev_pm_ops stm32_exti_dev_pm_ops =3D {
-	NOIRQ_SYSTEM_SLEEP_PM_OPS(stm32_exti_h_suspend, stm32_exti_h_resume)
-};
-
-static struct platform_driver stm32_exti_driver =3D {
-	.probe		=3D stm32_exti_probe,
-	.driver		=3D {
-		.name		=3D "stm32_exti",
-		.of_match_table	=3D stm32_exti_ids,
-		.pm		=3D &stm32_exti_dev_pm_ops,
-	},
-};
-
-static int __init stm32_exti_arch_init(void)
-{
-	return platform_driver_register(&stm32_exti_driver);
-}
-
-static void __exit stm32_exti_arch_exit(void)
-{
-	return platform_driver_unregister(&stm32_exti_driver);
-}
-
-arch_initcall(stm32_exti_arch_init);
-module_exit(stm32_exti_arch_exit);
-
-/* no platform driver for F4 and H7 */
 static int __init stm32f4_exti_of_init(struct device_node *np,
 				       struct device_node *parent)
 {
diff --git a/drivers/irqchip/irq-stm32mp-exti.c b/drivers/irqchip/irq-stm32mp=
-exti.c
new file mode 100644
index 000000000000..33e0cfdea654
--- /dev/null
+++ b/drivers/irqchip/irq-stm32mp-exti.c
@@ -0,0 +1,729 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) Maxime Coquelin 2015
+ * Copyright (C) STMicroelectronics 2017-2024
+ * Author:  Maxime Coquelin <mcoquelin.stm32@gmail.com>
+ */
+
+#include <linux/bitops.h>
+#include <linux/hwspinlock.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/irq.h>
+#include <linux/irqchip.h>
+#include <linux/irqdomain.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/of_address.h>
+#include <linux/of_irq.h>
+#include <linux/platform_device.h>
+#include <linux/pm.h>
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+#define IRQS_PER_BANK			32
+
+#define HWSPNLCK_TIMEOUT		1000 /* usec */
+
+#define EXTI_EnCIDCFGR(n)		(0x180 + (n) * 4)
+#define EXTI_HWCFGR1			0x3f0
+
+/* Register: EXTI_EnCIDCFGR(n) */
+#define EXTI_CIDCFGR_CFEN_MASK		BIT(0)
+#define EXTI_CIDCFGR_CID_MASK		GENMASK(6, 4)
+#define EXTI_CIDCFGR_CID_SHIFT		4
+
+/* Register: EXTI_HWCFGR1 */
+#define EXTI_HWCFGR1_CIDWIDTH_MASK	GENMASK(27, 24)
+
+#define EXTI_CID1			1
+
+struct stm32mp_exti_bank {
+	u32 imr_ofst;
+	u32 rtsr_ofst;
+	u32 ftsr_ofst;
+	u32 swier_ofst;
+	u32 rpr_ofst;
+	u32 fpr_ofst;
+	u32 trg_ofst;
+	u32 seccfgr_ofst;
+};
+
+struct stm32mp_exti_drv_data {
+	const struct stm32mp_exti_bank	**exti_banks;
+	const u8			*desc_irqs;
+	u32				bank_nr;
+};
+
+struct stm32mp_exti_chip_data {
+	struct stm32mp_exti_host_data	*host_data;
+	const struct stm32mp_exti_bank	*reg_bank;
+	struct raw_spinlock		rlock;
+	u32				wake_active;
+	u32				mask_cache;
+	u32				rtsr_cache;
+	u32				ftsr_cache;
+	u32				event_reserved;
+};
+
+struct stm32mp_exti_host_data {
+	void __iomem				*base;
+	struct device				*dev;
+	struct stm32mp_exti_chip_data		*chips_data;
+	const struct stm32mp_exti_drv_data	*drv_data;
+	struct hwspinlock			*hwlock;
+	/* skip internal desc_irqs array and get it from DT */
+	bool dt_has_irqs_desc;
+};
+
+static const struct stm32mp_exti_bank stm32mp_exti_b1 =3D {
+	.imr_ofst	=3D 0x80,
+	.rtsr_ofst	=3D 0x00,
+	.ftsr_ofst	=3D 0x04,
+	.swier_ofst	=3D 0x08,
+	.rpr_ofst	=3D 0x0C,
+	.fpr_ofst	=3D 0x10,
+	.trg_ofst	=3D 0x3EC,
+	.seccfgr_ofst	=3D 0x14,
+};
+
+static const struct stm32mp_exti_bank stm32mp_exti_b2 =3D {
+	.imr_ofst	=3D 0x90,
+	.rtsr_ofst	=3D 0x20,
+	.ftsr_ofst	=3D 0x24,
+	.swier_ofst	=3D 0x28,
+	.rpr_ofst	=3D 0x2C,
+	.fpr_ofst	=3D 0x30,
+	.trg_ofst	=3D 0x3E8,
+	.seccfgr_ofst	=3D 0x34,
+};
+
+static const struct stm32mp_exti_bank stm32mp_exti_b3 =3D {
+	.imr_ofst	=3D 0xA0,
+	.rtsr_ofst	=3D 0x40,
+	.ftsr_ofst	=3D 0x44,
+	.swier_ofst	=3D 0x48,
+	.rpr_ofst	=3D 0x4C,
+	.fpr_ofst	=3D 0x50,
+	.trg_ofst	=3D 0x3E4,
+	.seccfgr_ofst	=3D 0x54,
+};
+
+static const struct stm32mp_exti_bank *stm32mp_exti_banks[] =3D {
+	&stm32mp_exti_b1,
+	&stm32mp_exti_b2,
+	&stm32mp_exti_b3,
+};
+
+static struct irq_chip stm32mp_exti_chip;
+static struct irq_chip stm32mp_exti_chip_direct;
+
+#define EXTI_INVALID_IRQ       U8_MAX
+#define STM32MP_DESC_IRQ_SIZE  (ARRAY_SIZE(stm32mp_exti_banks) * IRQS_PER_BA=
NK)
+
+/*
+ * Use some intentionally tricky logic here to initialize the whole array to
+ * EXTI_INVALID_IRQ, but then override certain fields, requiring us to indic=
ate
+ * that we "know" that there are overrides in this structure, and we'll need=
 to
+ * disable that warning from W=3D1 builds.
+ */
+__diag_push();
+__diag_ignore_all("-Woverride-init",
+		  "logic to initialize all and then override some is OK");
+
+static const u8 stm32mp1_desc_irq[] =3D {
+	/* default value */
+	[0 ... (STM32MP_DESC_IRQ_SIZE - 1)] =3D EXTI_INVALID_IRQ,
+
+	[0] =3D 6,
+	[1] =3D 7,
+	[2] =3D 8,
+	[3] =3D 9,
+	[4] =3D 10,
+	[5] =3D 23,
+	[6] =3D 64,
+	[7] =3D 65,
+	[8] =3D 66,
+	[9] =3D 67,
+	[10] =3D 40,
+	[11] =3D 42,
+	[12] =3D 76,
+	[13] =3D 77,
+	[14] =3D 121,
+	[15] =3D 127,
+	[16] =3D 1,
+	[19] =3D 3,
+	[21] =3D 31,
+	[22] =3D 33,
+	[23] =3D 72,
+	[24] =3D 95,
+	[25] =3D 107,
+	[26] =3D 37,
+	[27] =3D 38,
+	[28] =3D 39,
+	[29] =3D 71,
+	[30] =3D 52,
+	[31] =3D 53,
+	[32] =3D 82,
+	[33] =3D 83,
+	[46] =3D 151,
+	[47] =3D 93,
+	[48] =3D 138,
+	[50] =3D 139,
+	[52] =3D 140,
+	[53] =3D 141,
+	[54] =3D 135,
+	[61] =3D 100,
+	[65] =3D 144,
+	[68] =3D 143,
+	[70] =3D 62,
+	[73] =3D 129,
+};
+
+static const u8 stm32mp13_desc_irq[] =3D {
+	/* default value */
+	[0 ... (STM32MP_DESC_IRQ_SIZE - 1)] =3D EXTI_INVALID_IRQ,
+
+	[0] =3D 6,
+	[1] =3D 7,
+	[2] =3D 8,
+	[3] =3D 9,
+	[4] =3D 10,
+	[5] =3D 24,
+	[6] =3D 65,
+	[7] =3D 66,
+	[8] =3D 67,
+	[9] =3D 68,
+	[10] =3D 41,
+	[11] =3D 43,
+	[12] =3D 77,
+	[13] =3D 78,
+	[14] =3D 106,
+	[15] =3D 109,
+	[16] =3D 1,
+	[19] =3D 3,
+	[21] =3D 32,
+	[22] =3D 34,
+	[23] =3D 73,
+	[24] =3D 93,
+	[25] =3D 114,
+	[26] =3D 38,
+	[27] =3D 39,
+	[28] =3D 40,
+	[29] =3D 72,
+	[30] =3D 53,
+	[31] =3D 54,
+	[32] =3D 83,
+	[33] =3D 84,
+	[44] =3D 96,
+	[47] =3D 92,
+	[48] =3D 116,
+	[50] =3D 117,
+	[52] =3D 118,
+	[53] =3D 119,
+	[68] =3D 63,
+	[70] =3D 98,
+};
+
+__diag_pop();
+
+static const struct stm32mp_exti_drv_data stm32mp1_drv_data =3D {
+	.exti_banks =3D stm32mp_exti_banks,
+	.bank_nr =3D ARRAY_SIZE(stm32mp_exti_banks),
+	.desc_irqs =3D stm32mp1_desc_irq,
+};
+
+static const struct stm32mp_exti_drv_data stm32mp13_drv_data =3D {
+	.exti_banks =3D stm32mp_exti_banks,
+	.bank_nr =3D ARRAY_SIZE(stm32mp_exti_banks),
+	.desc_irqs =3D stm32mp13_desc_irq,
+};
+
+static int stm32mp_exti_convert_type(struct irq_data *d, unsigned int type, =
u32 *rtsr, u32 *ftsr)
+{
+	u32 mask =3D BIT(d->hwirq % IRQS_PER_BANK);
+
+	switch (type) {
+	case IRQ_TYPE_EDGE_RISING:
+		*rtsr |=3D mask;
+		*ftsr &=3D ~mask;
+		break;
+	case IRQ_TYPE_EDGE_FALLING:
+		*rtsr &=3D ~mask;
+		*ftsr |=3D mask;
+		break;
+	case IRQ_TYPE_EDGE_BOTH:
+		*rtsr |=3D mask;
+		*ftsr |=3D mask;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static void stm32mp_chip_suspend(struct stm32mp_exti_chip_data *chip_data, u=
32 wake_active)
+{
+	const struct stm32mp_exti_bank *bank =3D chip_data->reg_bank;
+	void __iomem *base =3D chip_data->host_data->base;
+
+	/* save rtsr, ftsr registers */
+	chip_data->rtsr_cache =3D readl_relaxed(base + bank->rtsr_ofst);
+	chip_data->ftsr_cache =3D readl_relaxed(base + bank->ftsr_ofst);
+
+	writel_relaxed(wake_active, base + bank->imr_ofst);
+}
+
+static void stm32mp_chip_resume(struct stm32mp_exti_chip_data *chip_data, u3=
2 mask_cache)
+{
+	const struct stm32mp_exti_bank *bank =3D chip_data->reg_bank;
+	void __iomem *base =3D chip_data->host_data->base;
+
+	/* restore rtsr, ftsr, registers */
+	writel_relaxed(chip_data->rtsr_cache, base + bank->rtsr_ofst);
+	writel_relaxed(chip_data->ftsr_cache, base + bank->ftsr_ofst);
+
+	writel_relaxed(mask_cache, base + bank->imr_ofst);
+}
+
+/* directly set the target bit without reading first. */
+static inline void stm32mp_exti_write_bit(struct irq_data *d, u32 reg)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	void __iomem *base =3D chip_data->host_data->base;
+	u32 val =3D BIT(d->hwirq % IRQS_PER_BANK);
+
+	writel_relaxed(val, base + reg);
+}
+
+static inline u32 stm32mp_exti_set_bit(struct irq_data *d, u32 reg)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	void __iomem *base =3D chip_data->host_data->base;
+	u32 val;
+
+	val =3D readl_relaxed(base + reg);
+	val |=3D BIT(d->hwirq % IRQS_PER_BANK);
+	writel_relaxed(val, base + reg);
+
+	return val;
+}
+
+static inline u32 stm32mp_exti_clr_bit(struct irq_data *d, u32 reg)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	void __iomem *base =3D chip_data->host_data->base;
+	u32 val;
+
+	val =3D readl_relaxed(base + reg);
+	val &=3D ~BIT(d->hwirq % IRQS_PER_BANK);
+	writel_relaxed(val, base + reg);
+
+	return val;
+}
+
+static void stm32mp_exti_eoi(struct irq_data *d)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	const struct stm32mp_exti_bank *bank =3D chip_data->reg_bank;
+
+	raw_spin_lock(&chip_data->rlock);
+
+	stm32mp_exti_write_bit(d, bank->rpr_ofst);
+	stm32mp_exti_write_bit(d, bank->fpr_ofst);
+
+	raw_spin_unlock(&chip_data->rlock);
+
+	if (d->parent_data->chip)
+		irq_chip_eoi_parent(d);
+}
+
+static void stm32mp_exti_mask(struct irq_data *d)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	const struct stm32mp_exti_bank *bank =3D chip_data->reg_bank;
+
+	raw_spin_lock(&chip_data->rlock);
+	chip_data->mask_cache =3D stm32mp_exti_clr_bit(d, bank->imr_ofst);
+	raw_spin_unlock(&chip_data->rlock);
+
+	if (d->parent_data->chip)
+		irq_chip_mask_parent(d);
+}
+
+static void stm32mp_exti_unmask(struct irq_data *d)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	const struct stm32mp_exti_bank *bank =3D chip_data->reg_bank;
+
+	raw_spin_lock(&chip_data->rlock);
+	chip_data->mask_cache =3D stm32mp_exti_set_bit(d, bank->imr_ofst);
+	raw_spin_unlock(&chip_data->rlock);
+
+	if (d->parent_data->chip)
+		irq_chip_unmask_parent(d);
+}
+
+static int stm32mp_exti_set_type(struct irq_data *d, unsigned int type)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	const struct stm32mp_exti_bank *bank =3D chip_data->reg_bank;
+	struct hwspinlock *hwlock =3D chip_data->host_data->hwlock;
+	void __iomem *base =3D chip_data->host_data->base;
+	u32 rtsr, ftsr;
+	int err;
+
+	raw_spin_lock(&chip_data->rlock);
+
+	if (hwlock) {
+		err =3D hwspin_lock_timeout_in_atomic(hwlock, HWSPNLCK_TIMEOUT);
+		if (err) {
+			pr_err("%s can't get hwspinlock (%d)\n", __func__, err);
+			goto unlock;
+		}
+	}
+
+	rtsr =3D readl_relaxed(base + bank->rtsr_ofst);
+	ftsr =3D readl_relaxed(base + bank->ftsr_ofst);
+
+	err =3D stm32mp_exti_convert_type(d, type, &rtsr, &ftsr);
+	if (!err) {
+		writel_relaxed(rtsr, base + bank->rtsr_ofst);
+		writel_relaxed(ftsr, base + bank->ftsr_ofst);
+	}
+
+	if (hwlock)
+		hwspin_unlock_in_atomic(hwlock);
+unlock:
+	raw_spin_unlock(&chip_data->rlock);
+	return err;
+}
+
+static int stm32mp_exti_set_wake(struct irq_data *d, unsigned int on)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	u32 mask =3D BIT(d->hwirq % IRQS_PER_BANK);
+
+	raw_spin_lock(&chip_data->rlock);
+
+	if (on)
+		chip_data->wake_active |=3D mask;
+	else
+		chip_data->wake_active &=3D ~mask;
+
+	raw_spin_unlock(&chip_data->rlock);
+
+	return 0;
+}
+
+static int stm32mp_exti_set_affinity(struct irq_data *d, const struct cpumas=
k *dest, bool force)
+{
+	if (d->parent_data->chip)
+		return irq_chip_set_affinity_parent(d, dest, force);
+
+	return IRQ_SET_MASK_OK_DONE;
+}
+
+static int stm32mp_exti_suspend(struct device *dev)
+{
+	struct stm32mp_exti_host_data *host_data =3D dev_get_drvdata(dev);
+	struct stm32mp_exti_chip_data *chip_data;
+	int i;
+
+	for (i =3D 0; i < host_data->drv_data->bank_nr; i++) {
+		chip_data =3D &host_data->chips_data[i];
+		stm32mp_chip_suspend(chip_data, chip_data->wake_active);
+	}
+
+	return 0;
+}
+
+static int stm32mp_exti_resume(struct device *dev)
+{
+	struct stm32mp_exti_host_data *host_data =3D dev_get_drvdata(dev);
+	struct stm32mp_exti_chip_data *chip_data;
+	int i;
+
+	for (i =3D 0; i < host_data->drv_data->bank_nr; i++) {
+		chip_data =3D &host_data->chips_data[i];
+		stm32mp_chip_resume(chip_data, chip_data->mask_cache);
+	}
+
+	return 0;
+}
+
+static int stm32mp_exti_retrigger(struct irq_data *d)
+{
+	struct stm32mp_exti_chip_data *chip_data =3D irq_data_get_irq_chip_data(d);
+	const struct stm32mp_exti_bank *bank =3D chip_data->reg_bank;
+	void __iomem *base =3D chip_data->host_data->base;
+	u32 mask =3D BIT(d->hwirq % IRQS_PER_BANK);
+
+	writel_relaxed(mask, base + bank->swier_ofst);
+
+	return 0;
+}
+
+static struct irq_chip stm32mp_exti_chip =3D {
+	.name			=3D "stm32mp-exti",
+	.irq_eoi		=3D stm32mp_exti_eoi,
+	.irq_mask		=3D stm32mp_exti_mask,
+	.irq_unmask		=3D stm32mp_exti_unmask,
+	.irq_retrigger		=3D stm32mp_exti_retrigger,
+	.irq_set_type		=3D stm32mp_exti_set_type,
+	.irq_set_wake		=3D stm32mp_exti_set_wake,
+	.flags			=3D IRQCHIP_MASK_ON_SUSPEND,
+	.irq_set_affinity	=3D IS_ENABLED(CONFIG_SMP) ? stm32mp_exti_set_affinity : =
NULL,
+};
+
+static struct irq_chip stm32mp_exti_chip_direct =3D {
+	.name			=3D "stm32mp-exti-direct",
+	.irq_eoi		=3D irq_chip_eoi_parent,
+	.irq_ack		=3D irq_chip_ack_parent,
+	.irq_mask		=3D stm32mp_exti_mask,
+	.irq_unmask		=3D stm32mp_exti_unmask,
+	.irq_retrigger		=3D irq_chip_retrigger_hierarchy,
+	.irq_set_type		=3D irq_chip_set_type_parent,
+	.irq_set_wake		=3D stm32mp_exti_set_wake,
+	.flags			=3D IRQCHIP_MASK_ON_SUSPEND,
+	.irq_set_affinity	=3D IS_ENABLED(CONFIG_SMP) ? irq_chip_set_affinity_parent=
 : NULL,
+};
+
+static int stm32mp_exti_domain_alloc(struct irq_domain *dm,
+				     unsigned int virq,
+				     unsigned int nr_irqs, void *data)
+{
+	struct stm32mp_exti_host_data *host_data =3D dm->host_data;
+	struct stm32mp_exti_chip_data *chip_data;
+	struct irq_fwspec *fwspec =3D data;
+	struct irq_fwspec p_fwspec;
+	irq_hw_number_t hwirq;
+	struct irq_chip *chip;
+	u32 event_trg;
+	u8 desc_irq;
+	int bank;
+
+	hwirq =3D fwspec->param[0];
+	if (hwirq >=3D host_data->drv_data->bank_nr * IRQS_PER_BANK)
+		return -EINVAL;
+
+	bank  =3D hwirq / IRQS_PER_BANK;
+	chip_data =3D &host_data->chips_data[bank];
+
+	/* Check if event is reserved (Secure) */
+	if (chip_data->event_reserved & BIT(hwirq % IRQS_PER_BANK)) {
+		dev_err(host_data->dev, "event %lu is reserved, secure\n", hwirq);
+		return -EPERM;
+	}
+
+	event_trg =3D readl_relaxed(host_data->base + chip_data->reg_bank->trg_ofst=
);
+	chip =3D (event_trg & BIT(hwirq % IRQS_PER_BANK)) ?
+	       &stm32mp_exti_chip : &stm32mp_exti_chip_direct;
+
+	irq_domain_set_hwirq_and_chip(dm, virq, hwirq, chip, chip_data);
+
+	if (host_data->dt_has_irqs_desc) {
+		struct of_phandle_args out_irq;
+		int ret;
+
+		ret =3D of_irq_parse_one(host_data->dev->of_node, hwirq, &out_irq);
+		if (ret)
+			return ret;
+		/* we only support one parent, so far */
+		if (of_node_to_fwnode(out_irq.np) !=3D dm->parent->fwnode)
+			return -EINVAL;
+
+		of_phandle_args_to_fwspec(out_irq.np, out_irq.args,
+					  out_irq.args_count, &p_fwspec);
+
+		return irq_domain_alloc_irqs_parent(dm, virq, 1, &p_fwspec);
+	}
+
+	if (!host_data->drv_data->desc_irqs)
+		return -EINVAL;
+
+	desc_irq =3D host_data->drv_data->desc_irqs[hwirq];
+	if (desc_irq !=3D EXTI_INVALID_IRQ) {
+		p_fwspec.fwnode =3D dm->parent->fwnode;
+		p_fwspec.param_count =3D 3;
+		p_fwspec.param[0] =3D GIC_SPI;
+		p_fwspec.param[1] =3D desc_irq;
+		p_fwspec.param[2] =3D IRQ_TYPE_LEVEL_HIGH;
+
+		return irq_domain_alloc_irqs_parent(dm, virq, 1, &p_fwspec);
+	}
+
+	return 0;
+}
+
+static struct stm32mp_exti_chip_data *stm32mp_exti_chip_init(struct stm32mp_=
exti_host_data *h_data,
+							     u32 bank_idx, struct device_node *node)
+{
+	struct stm32mp_exti_chip_data *chip_data;
+	const struct stm32mp_exti_bank *bank;
+	void __iomem *base =3D h_data->base;
+
+	bank =3D h_data->drv_data->exti_banks[bank_idx];
+	chip_data =3D &h_data->chips_data[bank_idx];
+	chip_data->host_data =3D h_data;
+	chip_data->reg_bank =3D bank;
+
+	raw_spin_lock_init(&chip_data->rlock);
+
+	/*
+	 * This IP has no reset, so after hot reboot we should
+	 * clear registers to avoid residue
+	 */
+	writel_relaxed(0, base + bank->imr_ofst);
+
+	/* reserve Secure events */
+	chip_data->event_reserved =3D readl_relaxed(base + bank->seccfgr_ofst);
+
+	pr_info("%pOF: bank%d\n", node, bank_idx);
+
+	return chip_data;
+}
+
+static const struct irq_domain_ops stm32mp_exti_domain_ops =3D {
+	.alloc	=3D stm32mp_exti_domain_alloc,
+	.free	=3D irq_domain_free_irqs_common,
+	.xlate =3D irq_domain_xlate_twocell,
+};
+
+static void stm32mp_exti_check_rif(struct stm32mp_exti_host_data *host_data)
+{
+	unsigned int bank, i, event;
+	u32 cid, cidcfgr, hwcfgr1;
+
+	/* quit on CID not supported */
+	hwcfgr1 =3D readl_relaxed(host_data->base + EXTI_HWCFGR1);
+	if ((hwcfgr1 & EXTI_HWCFGR1_CIDWIDTH_MASK) =3D=3D 0)
+		return;
+
+	for (bank =3D 0; bank < host_data->drv_data->bank_nr; bank++) {
+		for (i =3D 0; i < IRQS_PER_BANK; i++) {
+			event =3D bank * IRQS_PER_BANK + i;
+			cidcfgr =3D readl_relaxed(host_data->base + EXTI_EnCIDCFGR(event));
+			cid =3D (cidcfgr & EXTI_CIDCFGR_CID_MASK) >> EXTI_CIDCFGR_CID_SHIFT;
+			if ((cidcfgr & EXTI_CIDCFGR_CFEN_MASK) && cid !=3D EXTI_CID1)
+				host_data->chips_data[bank].event_reserved |=3D BIT(i);
+		}
+	}
+}
+
+static void stm32mp_exti_remove_irq(void *data)
+{
+	struct irq_domain *domain =3D data;
+
+	irq_domain_remove(domain);
+}
+
+static int stm32mp_exti_probe(struct platform_device *pdev)
+{
+	const struct stm32mp_exti_drv_data *drv_data;
+	struct irq_domain *parent_domain, *domain;
+	struct stm32mp_exti_host_data *host_data;
+	struct device *dev =3D &pdev->dev;
+	struct device_node *np =3D dev->of_node;
+	int ret, i;
+
+	host_data =3D devm_kzalloc(dev, sizeof(*host_data), GFP_KERNEL);
+	if (!host_data)
+		return -ENOMEM;
+
+	dev_set_drvdata(dev, host_data);
+	host_data->dev =3D dev;
+
+	/* check for optional hwspinlock which may be not available yet */
+	ret =3D of_hwspin_lock_get_id(np, 0);
+	if (ret =3D=3D -EPROBE_DEFER)
+		/* hwspinlock framework not yet ready */
+		return ret;
+
+	if (ret >=3D 0) {
+		host_data->hwlock =3D devm_hwspin_lock_request_specific(dev, ret);
+		if (!host_data->hwlock) {
+			dev_err(dev, "Failed to request hwspinlock\n");
+			return -EINVAL;
+		}
+	} else if (ret !=3D -ENOENT) {
+		/* note: ENOENT is a valid case (means 'no hwspinlock') */
+		dev_err(dev, "Failed to get hwspinlock\n");
+		return ret;
+	}
+
+	/* initialize host_data */
+	drv_data =3D of_device_get_match_data(dev);
+	if (!drv_data) {
+		dev_err(dev, "no of match data\n");
+		return -ENODEV;
+	}
+	host_data->drv_data =3D drv_data;
+
+	host_data->chips_data =3D devm_kcalloc(dev, drv_data->bank_nr,
+					     sizeof(*host_data->chips_data),
+					     GFP_KERNEL);
+	if (!host_data->chips_data)
+		return -ENOMEM;
+
+	host_data->base =3D devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(host_data->base))
+		return PTR_ERR(host_data->base);
+
+	for (i =3D 0; i < drv_data->bank_nr; i++)
+		stm32mp_exti_chip_init(host_data, i, np);
+
+	stm32mp_exti_check_rif(host_data);
+
+	parent_domain =3D irq_find_host(of_irq_find_parent(np));
+	if (!parent_domain) {
+		dev_err(dev, "GIC interrupt-parent not found\n");
+		return -EINVAL;
+	}
+
+	domain =3D irq_domain_add_hierarchy(parent_domain, 0,
+					  drv_data->bank_nr * IRQS_PER_BANK,
+					  np, &stm32mp_exti_domain_ops,
+					  host_data);
+
+	if (!domain) {
+		dev_err(dev, "Could not register exti domain\n");
+		return -ENOMEM;
+	}
+
+	ret =3D devm_add_action_or_reset(dev, stm32mp_exti_remove_irq, domain);
+	if (ret)
+		return ret;
+
+	if (of_property_read_bool(np, "interrupts-extended"))
+		host_data->dt_has_irqs_desc =3D true;
+
+	return 0;
+}
+
+static const struct of_device_id stm32mp_exti_ids[] =3D {
+	{ .compatible =3D "st,stm32mp1-exti", .data =3D &stm32mp1_drv_data},
+	{ .compatible =3D "st,stm32mp13-exti", .data =3D &stm32mp13_drv_data},
+	{},
+};
+MODULE_DEVICE_TABLE(of, stm32mp_exti_ids);
+
+static const struct dev_pm_ops stm32mp_exti_dev_pm_ops =3D {
+	NOIRQ_SYSTEM_SLEEP_PM_OPS(stm32mp_exti_suspend, stm32mp_exti_resume)
+};
+
+static struct platform_driver stm32mp_exti_driver =3D {
+	.probe		=3D stm32mp_exti_probe,
+	.driver		=3D {
+		.name		=3D "stm32mp_exti",
+		.of_match_table	=3D stm32mp_exti_ids,
+		.pm		=3D &stm32mp_exti_dev_pm_ops,
+	},
+};
+
+module_platform_driver(stm32mp_exti_driver);
+
+MODULE_AUTHOR("Maxime Coquelin <mcoquelin.stm32@gmail.com>");
+MODULE_DESCRIPTION("STM32MP EXTI driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/irqchip/irq-ts4800.c b/drivers/irqchip/irq-ts4800.c
index 57f610dab6b8..b5dddb3c1568 100644
--- a/drivers/irqchip/irq-ts4800.c
+++ b/drivers/irqchip/irq-ts4800.c
@@ -163,5 +163,6 @@ static struct platform_driver ts4800_ic_driver =3D {
 module_platform_driver(ts4800_ic_driver);
=20
 MODULE_AUTHOR("Damien Riegel <damien.riegel@savoirfairelinux.com>");
+MODULE_DESCRIPTION("Multiplexed-IRQs driver for TS-4800's FPGA");
 MODULE_LICENSE("GPL v2");
 MODULE_ALIAS("platform:ts4800_irqc");
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 28c3fb2bef0d..000d339e1596 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -279,6 +279,9 @@ static inline bool invalid_phys_cpuid(phys_cpuid_t phys_i=
d)
 	return phys_id =3D=3D PHYS_CPUID_INVALID;
 }
=20
+
+int __init acpi_get_madt_revision(void);
+
 /* Validate the processor object's proc_id */
 bool acpi_duplicate_processor_id(int proc_id);
 /* Processor _CTS control */
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 5c9bdd3ffccc..dac7466de5f3 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -168,7 +168,7 @@ static inline int __must_check
 request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
 	    const char *name, void *dev)
 {
-	return request_threaded_irq(irq, handler, NULL, flags, name, dev);
+	return request_threaded_irq(irq, handler, NULL, flags | IRQF_COND_ONESHOT, =
name, dev);
 }
=20
 extern int __must_check
diff --git a/include/linux/irq.h b/include/linux/irq.h
index a217e1029c1d..1f5dbf1f92c9 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -1106,6 +1106,7 @@ enum irq_gc_flags {
  * @irq_flags_to_set:	IRQ* flags to set on irq setup
  * @irq_flags_to_clear:	IRQ* flags to clear on irq setup
  * @gc_flags:		Generic chip specific setup flags
+ * @exit:		Function called on each chip when they are destroyed.
  * @gc:			Array of pointers to generic interrupt chips
  */
 struct irq_domain_chip_generic {
@@ -1114,9 +1115,37 @@ struct irq_domain_chip_generic {
 	unsigned int		irq_flags_to_clear;
 	unsigned int		irq_flags_to_set;
 	enum irq_gc_flags	gc_flags;
+	void			(*exit)(struct irq_chip_generic *gc);
 	struct irq_chip_generic	*gc[];
 };
=20
+/**
+ * struct irq_domain_chip_generic_info - Generic chip information structure
+ * @name:		Name of the generic interrupt chip
+ * @handler:		Interrupt handler used by the generic interrupt chip
+ * @irqs_per_chip:	Number of interrupts each chip handles (max 32)
+ * @num_ct:		Number of irq_chip_type instances associated with each
+ *			chip
+ * @irq_flags_to_clear:	IRQ_* bits to clear in the mapping function
+ * @irq_flags_to_set:	IRQ_* bits to set in the mapping function
+ * @gc_flags:		Generic chip specific setup flags
+ * @init:		Function called on each chip when they are created.
+ *			Allow to do some additional chip initialisation.
+ * @exit:		Function called on each chip when they are destroyed.
+ *			Allow to do some chip cleanup operation.
+ */
+struct irq_domain_chip_generic_info {
+	const char		*name;
+	irq_flow_handler_t	handler;
+	unsigned int		irqs_per_chip;
+	unsigned int		num_ct;
+	unsigned int		irq_flags_to_clear;
+	unsigned int		irq_flags_to_set;
+	enum irq_gc_flags	gc_flags;
+	int			(*init)(struct irq_chip_generic *gc);
+	void			(*exit)(struct irq_chip_generic *gc);
+};
+
 /* Generic chip callback functions */
 void irq_gc_noop(struct irq_data *d);
 void irq_gc_mask_disable_reg(struct irq_data *d);
@@ -1153,6 +1182,20 @@ int devm_irq_setup_generic_chip(struct device *dev, st=
ruct irq_chip_generic *gc,
=20
 struct irq_chip_generic *irq_get_domain_generic_chip(struct irq_domain *d, u=
nsigned int hw_irq);
=20
+#ifdef CONFIG_GENERIC_IRQ_CHIP
+int irq_domain_alloc_generic_chips(struct irq_domain *d,
+				   const struct irq_domain_chip_generic_info *info);
+void irq_domain_remove_generic_chips(struct irq_domain *d);
+#else
+static inline int
+irq_domain_alloc_generic_chips(struct irq_domain *d,
+			       const struct irq_domain_chip_generic_info *info)
+{
+	return -EINVAL;
+}
+static inline void irq_domain_remove_generic_chips(struct irq_domain *d) { }
+#endif /* CONFIG_GENERIC_IRQ_CHIP */
+
 int __irq_alloc_domain_generic_chips(struct irq_domain *d, int irqs_per_chip,
 				     int num_ct, const char *name,
 				     irq_flow_handler_t handler,
diff --git a/include/linux/irqchip/arm-gic-v4.h b/include/linux/irqchip/arm-g=
ic-v4.h
index 2c63375bbd43..ecabed6d3307 100644
--- a/include/linux/irqchip/arm-gic-v4.h
+++ b/include/linux/irqchip/arm-gic-v4.h
@@ -25,6 +25,14 @@ struct its_vm {
 	irq_hw_number_t		db_lpi_base;
 	unsigned long		*db_bitmap;
 	int			nr_db_lpis;
+	/*
+	 * Ensures mutual exclusion between updates to vlpi_count[]
+	 * and map/unmap when using the ITSList mechanism.
+	 *
+	 * The lock order for any sequence involving the ITSList is
+	 * vmapp_lock -> vpe_lock ->vmovp_lock.
+	 */
+	raw_spinlock_t		vmapp_lock;
 	u32			vlpi_count[GICv4_ITS_LIST_MAX];
 };
=20
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 21ecf582a0fe..de6105f68fec 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -74,11 +74,24 @@ void of_phandle_args_to_fwspec(struct device_node *np, co=
nst u32 *args,
  * struct irq_domain_ops - Methods for irq_domain objects
  * @match: Match an interrupt controller device node to a host, returns
  *         1 on a match
+ * @select: Match an interrupt controller fw specification. It is more gener=
ic
+ *	    than @match as it receives a complete struct irq_fwspec. Therefore,
+ *	    @select is preferred if provided. Returns 1 on a match.
  * @map: Create or update a mapping between a virtual irq number and a hw
  *       irq number. This is called only once for a given mapping.
  * @unmap: Dispose of such a mapping
  * @xlate: Given a device tree node and interrupt specifier, decode
  *         the hardware irq number and linux irq type value.
+ * @alloc: Allocate @nr_irqs interrupts starting from @virq.
+ * @free: Free @nr_irqs interrupts starting from @virq.
+ * @activate: Activate one interrupt in HW (@irqd). If @reserve is set, only
+ *	      reserve the vector. If unset, assign the vector (called from
+ *	      request_irq()).
+ * @deactivate: Disarm one interrupt (@irqd).
+ * @translate: Given @fwspec, decode the hardware irq number (@out_hwirq) and
+ *	       linux irq type value (@out_type). This is a generalised @xlate
+ *	       (over struct irq_fwspec) and is preferred if provided.
+ * @debug_show: For domains to show specific data for an interrupt in debugf=
s.
  *
  * Functions below are provided by the driver and called whenever a new mapp=
ing
  * is created or an old mapping is disposed. The driver can then proceed to
@@ -131,6 +144,9 @@ struct irq_domain_chip_generic;
  * Optional elements:
  * @fwnode:	Pointer to firmware node associated with the irq_domain. Pretty =
easy
  *		to swap it for the of_node via the irq_domain_get_of_node accessor
+ * @bus_token:	@fwnode's device_node might be used for several irq domains. =
But
+ *		in connection with @bus_token, the pair shall be unique in a
+ *		system.
  * @gc:		Pointer to a list of generic chips. There is a helper function for
  *		setting up one or more generic chips for interrupt controllers
  *		drivers using the generic chip library which uses this pointer.
@@ -141,9 +157,12 @@ struct irq_domain_chip_generic;
  *		purposes related to the irq domain.
  * @parent:	Pointer to parent irq_domain to support hierarchy irq_domains
  * @msi_parent_ops: Pointer to MSI parent domain methods for per device doma=
in init
+ * @exit:	Function called when the domain is destroyed
  *
  * Revmap data, used internally by the irq domain code:
- * @revmap_size:	Size of the linear map table @revmap[]
+ * @hwirq_max:		Top limit for the HW irq number. Especially to avoid
+ *			conflicts/failures with reserved HW irqs. Can be ~0.
+ * @revmap_size:	Size of the linear map table @revmap
  * @revmap_tree:	Radix map tree for hwirqs that don't fit in the linear map
  * @revmap:		Linear table of irq_data pointers
  */
@@ -169,6 +188,7 @@ struct irq_domain {
 #ifdef CONFIG_GENERIC_MSI_IRQ
 	const struct msi_parent_ops	*msi_parent_ops;
 #endif
+	void				(*exit)(struct irq_domain *d);
=20
 	/* reverse map data. The linear map gets appended to the irq_domain */
 	irq_hw_number_t			hwirq_max;
@@ -182,7 +202,7 @@ enum {
 	/* Irq domain is hierarchical */
 	IRQ_DOMAIN_FLAG_HIERARCHY	=3D (1 << 0),
=20
-	/* Irq domain name was allocated in __irq_domain_add() */
+	/* Irq domain name was allocated internally */
 	IRQ_DOMAIN_NAME_ALLOCATED	=3D (1 << 1),
=20
 	/* Irq domain is an IPI domain with virq per cpu */
@@ -208,6 +228,9 @@ enum {
 	/* Irq domain is a MSI device domain */
 	IRQ_DOMAIN_FLAG_MSI_DEVICE	=3D (1 << 9),
=20
+	/* Irq domain must destroy generic chips when removed */
+	IRQ_DOMAIN_FLAG_DESTROY_GC	=3D (1 << 10),
+
 	/*
 	 * Flags starting from IRQ_DOMAIN_FLAG_NONCORE are reserved
 	 * for implementation specific purposes and ignored by the
@@ -257,10 +280,51 @@ static inline struct fwnode_handle *irq_domain_alloc_fw=
node(phys_addr_t *pa)
 }
=20
 void irq_domain_free_fwnode(struct fwnode_handle *fwnode);
-struct irq_domain *__irq_domain_add(struct fwnode_handle *fwnode, unsigned i=
nt size,
-				    irq_hw_number_t hwirq_max, int direct_max,
-				    const struct irq_domain_ops *ops,
-				    void *host_data);
+
+struct irq_domain_chip_generic_info;
+
+/**
+ * struct irq_domain_info - Domain information structure
+ * @fwnode:		firmware node for the interrupt controller
+ * @domain_flags:	Additional flags to add to the domain flags
+ * @size:		Size of linear map; 0 for radix mapping only
+ * @hwirq_max:		Maximum number of interrupts supported by controller
+ * @direct_max:		Maximum value of direct maps;
+ *			Use ~0 for no limit; 0 for no direct mapping
+ * @bus_token:		Domain bus token
+ * @ops:		Domain operation callbacks
+ * @host_data:		Controller private data pointer
+ * @dgc_info:		Geneneric chip information structure pointer used to
+ *			create generic chips for the domain if not NULL.
+ * @init:		Function called when the domain is created.
+ *			Allow to do some additional domain initialisation.
+ * @exit:		Function called when the domain is destroyed.
+ *			Allow to do some additional cleanup operation.
+ */
+struct irq_domain_info {
+	struct fwnode_handle			*fwnode;
+	unsigned int				domain_flags;
+	unsigned int				size;
+	irq_hw_number_t				hwirq_max;
+	int					direct_max;
+	enum irq_domain_bus_token		bus_token;
+	const struct irq_domain_ops		*ops;
+	void					*host_data;
+#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
+	/**
+	 * @parent: Pointer to the parent irq domain used in a hierarchy domain
+	 */
+	struct irq_domain			*parent;
+#endif
+	struct irq_domain_chip_generic_info	*dgc_info;
+	int					(*init)(struct irq_domain *d);
+	void					(*exit)(struct irq_domain *d);
+};
+
+struct irq_domain *irq_domain_instantiate(const struct irq_domain_info *info=
);
+struct irq_domain *devm_irq_domain_instantiate(struct device *dev,
+					       const struct irq_domain_info *info);
+
 struct irq_domain *irq_domain_create_simple(struct fwnode_handle *fwnode,
 					    unsigned int size,
 					    unsigned int first_irq,
@@ -293,7 +357,7 @@ static inline struct fwnode_handle *of_node_to_fwnode(str=
uct device_node *node)
=20
 extern const struct fwnode_operations irqchip_fwnode_ops;
=20
-static inline bool is_fwnode_irqchip(struct fwnode_handle *fwnode)
+static inline bool is_fwnode_irqchip(const struct fwnode_handle *fwnode)
 {
 	return fwnode && fwnode->ops =3D=3D &irqchip_fwnode_ops;
 }
@@ -350,7 +414,17 @@ static inline struct irq_domain *irq_domain_add_linear(s=
truct device_node *of_no
 					 const struct irq_domain_ops *ops,
 					 void *host_data)
 {
-	return __irq_domain_add(of_node_to_fwnode(of_node), size, size, 0, ops, hos=
t_data);
+	struct irq_domain_info info =3D {
+		.fwnode		=3D of_node_to_fwnode(of_node),
+		.size		=3D size,
+		.hwirq_max	=3D size,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+	};
+	struct irq_domain *d;
+
+	d =3D irq_domain_instantiate(&info);
+	return IS_ERR(d) ? NULL : d;
 }
=20
 #ifdef CONFIG_IRQ_DOMAIN_NOMAP
@@ -359,7 +433,17 @@ static inline struct irq_domain *irq_domain_add_nomap(st=
ruct device_node *of_nod
 					 const struct irq_domain_ops *ops,
 					 void *host_data)
 {
-	return __irq_domain_add(of_node_to_fwnode(of_node), 0, max_irq, max_irq, op=
s, host_data);
+	struct irq_domain_info info =3D {
+		.fwnode		=3D of_node_to_fwnode(of_node),
+		.hwirq_max	=3D max_irq,
+		.direct_max	=3D max_irq,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+	};
+	struct irq_domain *d;
+
+	d =3D irq_domain_instantiate(&info);
+	return IS_ERR(d) ? NULL : d;
 }
=20
 extern unsigned int irq_create_direct_mapping(struct irq_domain *host);
@@ -369,7 +453,16 @@ static inline struct irq_domain *irq_domain_add_tree(str=
uct device_node *of_node
 					 const struct irq_domain_ops *ops,
 					 void *host_data)
 {
-	return __irq_domain_add(of_node_to_fwnode(of_node), 0, ~0, 0, ops, host_dat=
a);
+	struct irq_domain_info info =3D {
+		.fwnode		=3D of_node_to_fwnode(of_node),
+		.hwirq_max	=3D ~0U,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+	};
+	struct irq_domain *d;
+
+	d =3D irq_domain_instantiate(&info);
+	return IS_ERR(d) ? NULL : d;
 }
=20
 static inline struct irq_domain *irq_domain_create_linear(struct fwnode_hand=
le *fwnode,
@@ -377,14 +470,33 @@ static inline struct irq_domain *irq_domain_create_line=
ar(struct fwnode_handle *
 					 const struct irq_domain_ops *ops,
 					 void *host_data)
 {
-	return __irq_domain_add(fwnode, size, size, 0, ops, host_data);
+	struct irq_domain_info info =3D {
+		.fwnode		=3D fwnode,
+		.size		=3D size,
+		.hwirq_max	=3D size,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+	};
+	struct irq_domain *d;
+
+	d =3D irq_domain_instantiate(&info);
+	return IS_ERR(d) ? NULL : d;
 }
=20
 static inline struct irq_domain *irq_domain_create_tree(struct fwnode_handle=
 *fwnode,
 					 const struct irq_domain_ops *ops,
 					 void *host_data)
 {
-	return __irq_domain_add(fwnode, 0, ~0, 0, ops, host_data);
+	struct irq_domain_info info =3D {
+		.fwnode		=3D fwnode,
+		.hwirq_max	=3D ~0,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+	};
+	struct irq_domain *d;
+
+	d =3D irq_domain_instantiate(&info);
+	return IS_ERR(d) ? NULL : d;
 }
=20
 extern void irq_domain_remove(struct irq_domain *host);
diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c
index aae0402507ed..c6ffb97966be 100644
--- a/kernel/irq/debugfs.c
+++ b/kernel/irq/debugfs.c
@@ -9,14 +9,8 @@
=20
 static struct dentry *irq_dir;
=20
-struct irq_bit_descr {
-	unsigned int	mask;
-	char		*name;
-};
-#define BIT_MASK_DESCR(m)	{ .mask =3D m, .name =3D #m }
-
-static void irq_debug_show_bits(struct seq_file *m, int ind, unsigned int st=
ate,
-				const struct irq_bit_descr *sd, int size)
+void irq_debug_show_bits(struct seq_file *m, int ind, unsigned int state,
+			 const struct irq_bit_descr *sd, int size)
 {
 	int i;
=20
diff --git a/kernel/irq/devres.c b/kernel/irq/devres.c
index f6e5515ee077..b3e98668f4dd 100644
--- a/kernel/irq/devres.c
+++ b/kernel/irq/devres.c
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 #include <linux/module.h>
 #include <linux/interrupt.h>
+#include <linux/irqdomain.h>
 #include <linux/device.h>
 #include <linux/gfp.h>
 #include <linux/irq.h>
@@ -282,3 +283,43 @@ int devm_irq_setup_generic_chip(struct device *dev, stru=
ct irq_chip_generic *gc,
 }
 EXPORT_SYMBOL_GPL(devm_irq_setup_generic_chip);
 #endif /* CONFIG_GENERIC_IRQ_CHIP */
+
+#ifdef CONFIG_IRQ_DOMAIN
+static void devm_irq_domain_remove(struct device *dev, void *res)
+{
+	struct irq_domain **domain =3D res;
+
+	irq_domain_remove(*domain);
+}
+
+/**
+ * devm_irq_domain_instantiate() - Instantiate a new irq domain data for a
+ *                                 managed device.
+ * @dev:	Device to instantiate the domain for
+ * @info:	Domain information pointer pointing to the information for this
+ *		domain
+ *
+ * Return: A pointer to the instantiated irq domain or an ERR_PTR value.
+ */
+struct irq_domain *devm_irq_domain_instantiate(struct device *dev,
+					       const struct irq_domain_info *info)
+{
+	struct irq_domain *domain;
+	struct irq_domain **dr;
+
+	dr =3D devres_alloc(devm_irq_domain_remove, sizeof(*dr), GFP_KERNEL);
+	if (!dr)
+		return ERR_PTR(-ENOMEM);
+
+	domain =3D irq_domain_instantiate(info);
+	if (!IS_ERR(domain)) {
+		*dr =3D domain;
+		devres_add(dev, dr);
+	} else {
+		devres_free(dr);
+	}
+
+	return domain;
+}
+EXPORT_SYMBOL_GPL(devm_irq_domain_instantiate);
+#endif /* CONFIG_IRQ_DOMAIN */
diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
index d39a40bc542b..32ffcbb87fa1 100644
--- a/kernel/irq/generic-chip.c
+++ b/kernel/irq/generic-chip.c
@@ -276,21 +276,14 @@ irq_gc_init_mask_cache(struct irq_chip_generic *gc, enu=
m irq_gc_flags flags)
 }
=20
 /**
- * __irq_alloc_domain_generic_chips - Allocate generic chips for an irq doma=
in
- * @d:			irq domain for which to allocate chips
- * @irqs_per_chip:	Number of interrupts each chip handles (max 32)
- * @num_ct:		Number of irq_chip_type instances associated with this
- * @name:		Name of the irq chip
- * @handler:		Default flow handler associated with these chips
- * @clr:		IRQ_* bits to clear in the mapping function
- * @set:		IRQ_* bits to set in the mapping function
- * @gcflags:		Generic chip specific setup flags
+ * irq_domain_alloc_generic_chips - Allocate generic chips for an irq domain
+ * @d:		irq domain for which to allocate chips
+ * @info:	Generic chip information
+ *
+ * Return: 0 on success, negative error code on failure
  */
-int __irq_alloc_domain_generic_chips(struct irq_domain *d, int irqs_per_chip,
-				     int num_ct, const char *name,
-				     irq_flow_handler_t handler,
-				     unsigned int clr, unsigned int set,
-				     enum irq_gc_flags gcflags)
+int irq_domain_alloc_generic_chips(struct irq_domain *d,
+				   const struct irq_domain_chip_generic_info *info)
 {
 	struct irq_domain_chip_generic *dgc;
 	struct irq_chip_generic *gc;
@@ -300,27 +293,29 @@ int __irq_alloc_domain_generic_chips(struct irq_domain =
*d, int irqs_per_chip,
 	size_t gc_sz;
 	size_t sz;
 	void *tmp;
+	int ret;
=20
 	if (d->gc)
 		return -EBUSY;
=20
-	numchips =3D DIV_ROUND_UP(d->revmap_size, irqs_per_chip);
+	numchips =3D DIV_ROUND_UP(d->revmap_size, info->irqs_per_chip);
 	if (!numchips)
 		return -EINVAL;
=20
 	/* Allocate a pointer, generic chip and chiptypes for each chip */
-	gc_sz =3D struct_size(gc, chip_types, num_ct);
+	gc_sz =3D struct_size(gc, chip_types, info->num_ct);
 	dgc_sz =3D struct_size(dgc, gc, numchips);
 	sz =3D dgc_sz + numchips * gc_sz;
=20
 	tmp =3D dgc =3D kzalloc(sz, GFP_KERNEL);
 	if (!dgc)
 		return -ENOMEM;
-	dgc->irqs_per_chip =3D irqs_per_chip;
+	dgc->irqs_per_chip =3D info->irqs_per_chip;
 	dgc->num_chips =3D numchips;
-	dgc->irq_flags_to_set =3D set;
-	dgc->irq_flags_to_clear =3D clr;
-	dgc->gc_flags =3D gcflags;
+	dgc->irq_flags_to_set =3D info->irq_flags_to_set;
+	dgc->irq_flags_to_clear =3D info->irq_flags_to_clear;
+	dgc->gc_flags =3D info->gc_flags;
+	dgc->exit =3D info->exit;
 	d->gc =3D dgc;
=20
 	/* Calc pointer to the first generic chip */
@@ -328,15 +323,22 @@ int __irq_alloc_domain_generic_chips(struct irq_domain =
*d, int irqs_per_chip,
 	for (i =3D 0; i < numchips; i++) {
 		/* Store the pointer to the generic chip */
 		dgc->gc[i] =3D gc =3D tmp;
-		irq_init_generic_chip(gc, name, num_ct, i * irqs_per_chip,
-				      NULL, handler);
+		irq_init_generic_chip(gc, info->name, info->num_ct,
+				      i * dgc->irqs_per_chip, NULL,
+				      info->handler);
=20
 		gc->domain =3D d;
-		if (gcflags & IRQ_GC_BE_IO) {
+		if (dgc->gc_flags & IRQ_GC_BE_IO) {
 			gc->reg_readl =3D &irq_readl_be;
 			gc->reg_writel =3D &irq_writel_be;
 		}
=20
+		if (info->init) {
+			ret =3D info->init(gc);
+			if (ret)
+				goto err;
+		}
+
 		raw_spin_lock_irqsave(&gc_lock, flags);
 		list_add_tail(&gc->list, &gc_list);
 		raw_spin_unlock_irqrestore(&gc_lock, flags);
@@ -344,6 +346,69 @@ int __irq_alloc_domain_generic_chips(struct irq_domain *=
d, int irqs_per_chip,
 		tmp +=3D gc_sz;
 	}
 	return 0;
+
+err:
+	while (i--) {
+		if (dgc->exit)
+			dgc->exit(dgc->gc[i]);
+		irq_remove_generic_chip(dgc->gc[i], ~0U, 0, 0);
+	}
+	d->gc =3D NULL;
+	kfree(dgc);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(irq_domain_alloc_generic_chips);
+
+/**
+ * irq_domain_remove_generic_chips - Remove generic chips from an irq domain
+ * @d: irq domain for which generic chips are to be removed
+ */
+void irq_domain_remove_generic_chips(struct irq_domain *d)
+{
+	struct irq_domain_chip_generic *dgc =3D d->gc;
+	unsigned int i;
+
+	if (!dgc)
+		return;
+
+	for (i =3D 0; i < dgc->num_chips; i++) {
+		if (dgc->exit)
+			dgc->exit(dgc->gc[i]);
+		irq_remove_generic_chip(dgc->gc[i], ~0U, 0, 0);
+	}
+	d->gc =3D NULL;
+	kfree(dgc);
+}
+EXPORT_SYMBOL_GPL(irq_domain_remove_generic_chips);
+
+/**
+ * __irq_alloc_domain_generic_chips - Allocate generic chips for an irq doma=
in
+ * @d:			irq domain for which to allocate chips
+ * @irqs_per_chip:	Number of interrupts each chip handles (max 32)
+ * @num_ct:		Number of irq_chip_type instances associated with this
+ * @name:		Name of the irq chip
+ * @handler:		Default flow handler associated with these chips
+ * @clr:		IRQ_* bits to clear in the mapping function
+ * @set:		IRQ_* bits to set in the mapping function
+ * @gcflags:		Generic chip specific setup flags
+ */
+int __irq_alloc_domain_generic_chips(struct irq_domain *d, int irqs_per_chip,
+				     int num_ct, const char *name,
+				     irq_flow_handler_t handler,
+				     unsigned int clr, unsigned int set,
+				     enum irq_gc_flags gcflags)
+{
+	struct irq_domain_chip_generic_info info =3D {
+		.irqs_per_chip		=3D irqs_per_chip,
+		.num_ct			=3D num_ct,
+		.name			=3D name,
+		.handler		=3D handler,
+		.irq_flags_to_clear	=3D clr,
+		.irq_flags_to_set	=3D set,
+		.gc_flags		=3D gcflags,
+	};
+
+	return irq_domain_alloc_generic_chips(d, &info);
 }
 EXPORT_SYMBOL_GPL(__irq_alloc_domain_generic_chips);
=20
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index ed28059e9849..fe0272cd84a5 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -501,6 +501,16 @@ static inline struct irq_data *irqd_get_parent_data(stru=
ct irq_data *irqd)
 #ifdef CONFIG_GENERIC_IRQ_DEBUGFS
 #include <linux/debugfs.h>
=20
+struct irq_bit_descr {
+	unsigned int	mask;
+	char		*name;
+};
+
+#define BIT_MASK_DESCR(m)	{ .mask =3D m, .name =3D #m }
+
+void irq_debug_show_bits(struct seq_file *m, int ind, unsigned int state,
+			 const struct irq_bit_descr *sd, int size);
+
 void irq_add_debugfs_entry(unsigned int irq, struct irq_desc *desc);
 static inline void irq_remove_debugfs_entry(struct irq_desc *desc)
 {
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index aadc8891cc16..91eaf6bfcbf0 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -111,6 +111,7 @@ EXPORT_SYMBOL_GPL(__irq_domain_alloc_fwnode);
=20
 /**
  * irq_domain_free_fwnode - Free a non-OF-backed fwnode_handle
+ * @fwnode: fwnode_handle to free
  *
  * Free a fwnode_handle allocated with irq_domain_alloc_fwnode.
  */
@@ -127,27 +128,12 @@ void irq_domain_free_fwnode(struct fwnode_handle *fwnod=
e)
 }
 EXPORT_SYMBOL_GPL(irq_domain_free_fwnode);
=20
-static struct irq_domain *__irq_domain_create(struct fwnode_handle *fwnode,
-					      unsigned int size,
-					      irq_hw_number_t hwirq_max,
-					      int direct_max,
-					      const struct irq_domain_ops *ops,
-					      void *host_data)
+static int irq_domain_set_name(struct irq_domain *domain,
+			       const struct fwnode_handle *fwnode,
+			       enum irq_domain_bus_token bus_token)
 {
-	struct irqchip_fwid *fwid;
-	struct irq_domain *domain;
-
 	static atomic_t unknown_domains;
-
-	if (WARN_ON((size && direct_max) ||
-		    (!IS_ENABLED(CONFIG_IRQ_DOMAIN_NOMAP) && direct_max) ||
-		    (direct_max && (direct_max !=3D hwirq_max))))
-		return NULL;
-
-	domain =3D kzalloc_node(struct_size(domain, revmap, size),
-			      GFP_KERNEL, of_node_to_nid(to_of_node(fwnode)));
-	if (!domain)
-		return NULL;
+	struct irqchip_fwid *fwid;
=20
 	if (is_fwnode_irqchip(fwnode)) {
 		fwid =3D container_of(fwnode, struct irqchip_fwid, fwnode);
@@ -155,17 +141,23 @@ static struct irq_domain *__irq_domain_create(struct fw=
node_handle *fwnode,
 		switch (fwid->type) {
 		case IRQCHIP_FWNODE_NAMED:
 		case IRQCHIP_FWNODE_NAMED_ID:
-			domain->fwnode =3D fwnode;
-			domain->name =3D kstrdup(fwid->name, GFP_KERNEL);
-			if (!domain->name) {
-				kfree(domain);
-				return NULL;
-			}
+			domain->name =3D bus_token ?
+					kasprintf(GFP_KERNEL, "%s-%d",
+						  fwid->name, bus_token) :
+					kstrdup(fwid->name, GFP_KERNEL);
+			if (!domain->name)
+				return -ENOMEM;
 			domain->flags |=3D IRQ_DOMAIN_NAME_ALLOCATED;
 			break;
 		default:
-			domain->fwnode =3D fwnode;
 			domain->name =3D fwid->name;
+			if (bus_token) {
+				domain->name =3D kasprintf(GFP_KERNEL, "%s-%d",
+							 fwid->name, bus_token);
+				if (!domain->name)
+					return -ENOMEM;
+				domain->flags |=3D IRQ_DOMAIN_NAME_ALLOCATED;
+			}
 			break;
 		}
 	} else if (is_of_node(fwnode) || is_acpi_device_node(fwnode) ||
@@ -177,42 +169,68 @@ static struct irq_domain *__irq_domain_create(struct fw=
node_handle *fwnode,
 		 * unhappy about. Replace them with ':', which does
 		 * the trick and is not as offensive as '\'...
 		 */
-		name =3D kasprintf(GFP_KERNEL, "%pfw", fwnode);
-		if (!name) {
-			kfree(domain);
-			return NULL;
-		}
+		name =3D bus_token ?
+			kasprintf(GFP_KERNEL, "%pfw-%d", fwnode, bus_token) :
+			kasprintf(GFP_KERNEL, "%pfw", fwnode);
+		if (!name)
+			return -ENOMEM;
=20
 		domain->name =3D strreplace(name, '/', ':');
-		domain->fwnode =3D fwnode;
 		domain->flags |=3D IRQ_DOMAIN_NAME_ALLOCATED;
 	}
=20
 	if (!domain->name) {
 		if (fwnode)
 			pr_err("Invalid fwnode type for irqdomain\n");
-		domain->name =3D kasprintf(GFP_KERNEL, "unknown-%d",
-					 atomic_inc_return(&unknown_domains));
-		if (!domain->name) {
-			kfree(domain);
-			return NULL;
-		}
+		domain->name =3D bus_token ?
+				kasprintf(GFP_KERNEL, "unknown-%d-%d",
+					  atomic_inc_return(&unknown_domains),
+					  bus_token) :
+				kasprintf(GFP_KERNEL, "unknown-%d",
+					  atomic_inc_return(&unknown_domains));
+		if (!domain->name)
+			return -ENOMEM;
 		domain->flags |=3D IRQ_DOMAIN_NAME_ALLOCATED;
 	}
=20
-	fwnode_handle_get(fwnode);
-	fwnode_dev_initialized(fwnode, true);
+	return 0;
+}
+
+static struct irq_domain *__irq_domain_create(const struct irq_domain_info *=
info)
+{
+	struct irq_domain *domain;
+	int err;
+
+	if (WARN_ON((info->size && info->direct_max) ||
+		    (!IS_ENABLED(CONFIG_IRQ_DOMAIN_NOMAP) && info->direct_max) ||
+		    (info->direct_max && info->direct_max !=3D info->hwirq_max)))
+		return ERR_PTR(-EINVAL);
+
+	domain =3D kzalloc_node(struct_size(domain, revmap, info->size),
+			      GFP_KERNEL, of_node_to_nid(to_of_node(info->fwnode)));
+	if (!domain)
+		return ERR_PTR(-ENOMEM);
+
+	err =3D irq_domain_set_name(domain, info->fwnode, info->bus_token);
+	if (err) {
+		kfree(domain);
+		return ERR_PTR(err);
+	}
+
+	domain->fwnode =3D fwnode_handle_get(info->fwnode);
+	fwnode_dev_initialized(domain->fwnode, true);
=20
 	/* Fill structure */
 	INIT_RADIX_TREE(&domain->revmap_tree, GFP_KERNEL);
-	domain->ops =3D ops;
-	domain->host_data =3D host_data;
-	domain->hwirq_max =3D hwirq_max;
+	domain->ops =3D info->ops;
+	domain->host_data =3D info->host_data;
+	domain->bus_token =3D info->bus_token;
+	domain->hwirq_max =3D info->hwirq_max;
=20
-	if (direct_max)
+	if (info->direct_max)
 		domain->flags |=3D IRQ_DOMAIN_FLAG_NO_MAP;
=20
-	domain->revmap_size =3D size;
+	domain->revmap_size =3D info->size;
=20
 	/*
 	 * Hierarchical domains use the domain lock of the root domain
@@ -240,34 +258,64 @@ static void __irq_domain_publish(struct irq_domain *dom=
ain)
 	pr_debug("Added domain %s\n", domain->name);
 }
=20
+static void irq_domain_free(struct irq_domain *domain)
+{
+	fwnode_dev_initialized(domain->fwnode, false);
+	fwnode_handle_put(domain->fwnode);
+	if (domain->flags & IRQ_DOMAIN_NAME_ALLOCATED)
+		kfree(domain->name);
+	kfree(domain);
+}
+
 /**
- * __irq_domain_add() - Allocate a new irq_domain data structure
- * @fwnode: firmware node for the interrupt controller
- * @size: Size of linear map; 0 for radix mapping only
- * @hwirq_max: Maximum number of interrupts supported by controller
- * @direct_max: Maximum value of direct maps; Use ~0 for no limit; 0 for no
- *              direct mapping
- * @ops: domain callbacks
- * @host_data: Controller private data pointer
+ * irq_domain_instantiate() - Instantiate a new irq domain data structure
+ * @info: Domain information pointer pointing to the information for this do=
main
  *
- * Allocates and initializes an irq_domain structure.
- * Returns pointer to IRQ domain, or NULL on failure.
+ * Return: A pointer to the instantiated irq domain or an ERR_PTR value.
  */
-struct irq_domain *__irq_domain_add(struct fwnode_handle *fwnode, unsigned i=
nt size,
-				    irq_hw_number_t hwirq_max, int direct_max,
-				    const struct irq_domain_ops *ops,
-				    void *host_data)
+struct irq_domain *irq_domain_instantiate(const struct irq_domain_info *info)
 {
 	struct irq_domain *domain;
+	int err;
=20
-	domain =3D __irq_domain_create(fwnode, size, hwirq_max, direct_max,
-				     ops, host_data);
-	if (domain)
-		__irq_domain_publish(domain);
+	domain =3D __irq_domain_create(info);
+	if (IS_ERR(domain))
+		return domain;
+
+	domain->flags |=3D info->domain_flags;
+	domain->exit =3D info->exit;
+
+#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
+	if (info->parent) {
+		domain->root =3D info->parent->root;
+		domain->parent =3D info->parent;
+	}
+#endif
+
+	if (info->dgc_info) {
+		err =3D irq_domain_alloc_generic_chips(domain, info->dgc_info);
+		if (err)
+			goto err_domain_free;
+	}
+
+	if (info->init) {
+		err =3D info->init(domain);
+		if (err)
+			goto err_domain_gc_remove;
+	}
+
+	__irq_domain_publish(domain);
=20
 	return domain;
+
+err_domain_gc_remove:
+	if (info->dgc_info)
+		irq_domain_remove_generic_chips(domain);
+err_domain_free:
+	irq_domain_free(domain);
+	return ERR_PTR(err);
 }
-EXPORT_SYMBOL_GPL(__irq_domain_add);
+EXPORT_SYMBOL_GPL(irq_domain_instantiate);
=20
 /**
  * irq_domain_remove() - Remove an irq domain.
@@ -279,6 +327,9 @@ EXPORT_SYMBOL_GPL(__irq_domain_add);
  */
 void irq_domain_remove(struct irq_domain *domain)
 {
+	if (domain->exit)
+		domain->exit(domain);
+
 	mutex_lock(&irq_domain_mutex);
 	debugfs_remove_domain_dir(domain);
=20
@@ -294,13 +345,11 @@ void irq_domain_remove(struct irq_domain *domain)
=20
 	mutex_unlock(&irq_domain_mutex);
=20
-	pr_debug("Removed domain %s\n", domain->name);
+	if (domain->flags & IRQ_DOMAIN_FLAG_DESTROY_GC)
+		irq_domain_remove_generic_chips(domain);
=20
-	fwnode_dev_initialized(domain->fwnode, false);
-	fwnode_handle_put(domain->fwnode);
-	if (domain->flags & IRQ_DOMAIN_NAME_ALLOCATED)
-		kfree(domain->name);
-	kfree(domain);
+	pr_debug("Removed domain %s\n", domain->name);
+	irq_domain_free(domain);
 }
 EXPORT_SYMBOL_GPL(irq_domain_remove);
=20
@@ -360,10 +409,17 @@ struct irq_domain *irq_domain_create_simple(struct fwno=
de_handle *fwnode,
 					    const struct irq_domain_ops *ops,
 					    void *host_data)
 {
+	struct irq_domain_info info =3D {
+		.fwnode		=3D fwnode,
+		.size		=3D size,
+		.hwirq_max	=3D size,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+	};
 	struct irq_domain *domain;
=20
-	domain =3D __irq_domain_add(fwnode, size, size, 0, ops, host_data);
-	if (!domain)
+	domain =3D irq_domain_instantiate(&info);
+	if (IS_ERR(domain))
 		return NULL;
=20
 	if (first_irq > 0) {
@@ -416,11 +472,20 @@ struct irq_domain *irq_domain_create_legacy(struct fwno=
de_handle *fwnode,
 					 const struct irq_domain_ops *ops,
 					 void *host_data)
 {
+	struct irq_domain_info info =3D {
+		.fwnode		=3D fwnode,
+		.size		=3D first_hwirq + size,
+		.hwirq_max	=3D first_hwirq + size,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+	};
 	struct irq_domain *domain;
=20
-	domain =3D __irq_domain_add(fwnode, first_hwirq + size, first_hwirq + size,=
 0, ops, host_data);
-	if (domain)
-		irq_domain_associate_many(domain, first_irq, first_hwirq, size);
+	domain =3D irq_domain_instantiate(&info);
+	if (IS_ERR(domain))
+		return NULL;
+
+	irq_domain_associate_many(domain, first_irq, first_hwirq, size);
=20
 	return domain;
 }
@@ -982,6 +1047,12 @@ EXPORT_SYMBOL_GPL(__irq_resolve_mapping);
=20
 /**
  * irq_domain_xlate_onecell() - Generic xlate for direct one cell bindings
+ * @d:		Interrupt domain involved in the translation
+ * @ctrlr:	The device tree node for the device whose interrupt is translated
+ * @intspec:	The interrupt specifier data from the device tree
+ * @intsize:	The number of entries in @intspec
+ * @out_hwirq:	Pointer to storage for the hardware interrupt number
+ * @out_type:	Pointer to storage for the interrupt type
  *
  * Device Tree IRQ specifier translation function which works with one cell
  * bindings where the cell value maps directly to the hwirq number.
@@ -1000,6 +1071,12 @@ EXPORT_SYMBOL_GPL(irq_domain_xlate_onecell);
=20
 /**
  * irq_domain_xlate_twocell() - Generic xlate for direct two cell bindings
+ * @d:		Interrupt domain involved in the translation
+ * @ctrlr:	The device tree node for the device whose interrupt is translated
+ * @intspec:	The interrupt specifier data from the device tree
+ * @intsize:	The number of entries in @intspec
+ * @out_hwirq:	Pointer to storage for the hardware interrupt number
+ * @out_type:	Pointer to storage for the interrupt type
  *
  * Device Tree IRQ specifier translation function which works with two cell
  * bindings where the cell values map directly to the hwirq number
@@ -1018,6 +1095,12 @@ EXPORT_SYMBOL_GPL(irq_domain_xlate_twocell);
=20
 /**
  * irq_domain_xlate_onetwocell() - Generic xlate for one or two cell bindings
+ * @d:		Interrupt domain involved in the translation
+ * @ctrlr:	The device tree node for the device whose interrupt is translated
+ * @intspec:	The interrupt specifier data from the device tree
+ * @intsize:	The number of entries in @intspec
+ * @out_hwirq:	Pointer to storage for the hardware interrupt number
+ * @out_type:	Pointer to storage for the interrupt type
  *
  * Device Tree IRQ specifier translation function which works with either one
  * or two cell bindings where the cell values map directly to the hwirq numb=
er
@@ -1051,6 +1134,10 @@ EXPORT_SYMBOL_GPL(irq_domain_simple_ops);
 /**
  * irq_domain_translate_onecell() - Generic translate for direct one cell
  * bindings
+ * @d:		Interrupt domain involved in the translation
+ * @fwspec:	The firmware interrupt specifier to translate
+ * @out_hwirq:	Pointer to storage for the hardware interrupt number
+ * @out_type:	Pointer to storage for the interrupt type
  */
 int irq_domain_translate_onecell(struct irq_domain *d,
 				 struct irq_fwspec *fwspec,
@@ -1068,6 +1155,10 @@ EXPORT_SYMBOL_GPL(irq_domain_translate_onecell);
 /**
  * irq_domain_translate_twocell() - Generic translate for direct two cell
  * bindings
+ * @d:		Interrupt domain involved in the translation
+ * @fwspec:	The firmware interrupt specifier to translate
+ * @out_hwirq:	Pointer to storage for the hardware interrupt number
+ * @out_type:	Pointer to storage for the interrupt type
  *
  * Device Tree IRQ specifier translation function which works with two cell
  * bindings where the cell values map directly to the hwirq number
@@ -1144,23 +1235,22 @@ struct irq_domain *irq_domain_create_hierarchy(struct=
 irq_domain *parent,
 					    const struct irq_domain_ops *ops,
 					    void *host_data)
 {
-	struct irq_domain *domain;
-
-	if (size)
-		domain =3D __irq_domain_create(fwnode, size, size, 0, ops, host_data);
-	else
-		domain =3D __irq_domain_create(fwnode, 0, ~0, 0, ops, host_data);
-
-	if (domain) {
-		if (parent)
-			domain->root =3D parent->root;
-		domain->parent =3D parent;
-		domain->flags |=3D flags;
+	struct irq_domain_info info =3D {
+		.fwnode		=3D fwnode,
+		.size		=3D size,
+		.hwirq_max	=3D size,
+		.ops		=3D ops,
+		.host_data	=3D host_data,
+		.domain_flags	=3D flags,
+		.parent		=3D parent,
+	};
+	struct irq_domain *d;
=20
-		__irq_domain_publish(domain);
-	}
+	if (!info.size)
+		info.hwirq_max =3D ~0U;
=20
-	return domain;
+	d =3D irq_domain_instantiate(&info);
+	return IS_ERR(d) ? NULL : d;
 }
 EXPORT_SYMBOL_GPL(irq_domain_create_hierarchy);
=20
@@ -1932,13 +2022,26 @@ static void irq_domain_free_one_irq(struct irq_domain=
 *domain, unsigned int virq
=20
 static struct dentry *domain_dir;
=20
-static void
-irq_domain_debug_show_one(struct seq_file *m, struct irq_domain *d, int ind)
+static const struct irq_bit_descr irqdomain_flags[] =3D {
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_HIERARCHY),
+	BIT_MASK_DESCR(IRQ_DOMAIN_NAME_ALLOCATED),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_IPI_PER_CPU),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_IPI_SINGLE),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_MSI),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_ISOLATED_MSI),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_NO_MAP),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_MSI_PARENT),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_MSI_DEVICE),
+	BIT_MASK_DESCR(IRQ_DOMAIN_FLAG_NONCORE),
+};
+
+static void irq_domain_debug_show_one(struct seq_file *m, struct irq_domain =
*d, int ind)
 {
 	seq_printf(m, "%*sname:   %s\n", ind, "", d->name);
 	seq_printf(m, "%*ssize:   %u\n", ind + 1, "", d->revmap_size);
 	seq_printf(m, "%*smapped: %u\n", ind + 1, "", d->mapcount);
 	seq_printf(m, "%*sflags:  0x%08x\n", ind +1 , "", d->flags);
+	irq_debug_show_bits(m, ind, d->flags, irqdomain_flags, ARRAY_SIZE(irqdomain=
_flags));
 	if (d->ops && d->ops->debug_show)
 		d->ops->debug_show(m, d, NULL, ind + 1);
 #ifdef	CONFIG_IRQ_DOMAIN_HIERARCHY
diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c
index 5c320c3f10a7..8cccdf40725a 100644
--- a/kernel/irq/proc.c
+++ b/kernel/irq/proc.c
@@ -461,10 +461,10 @@ int show_interrupts(struct seq_file *p, void *v)
 {
 	static int prec;
=20
-	unsigned long flags, any_count =3D 0;
 	int i =3D *(loff_t *) v, j;
 	struct irqaction *action;
 	struct irq_desc *desc;
+	unsigned long flags;
=20
 	if (i > ACTUAL_NR_IRQS)
 		return 0;
@@ -488,10 +488,7 @@ int show_interrupts(struct seq_file *p, void *v)
 	if (!desc || irq_settings_is_hidden(desc))
 		goto outsparse;
=20
-	if (desc->kstat_irqs)
-		any_count =3D kstat_irqs_desc(desc, cpu_online_mask);
-
-	if ((!desc->action || irq_desc_is_chained(desc)) && !any_count)
+	if (!desc->action || irq_desc_is_chained(desc) || !desc->kstat_irqs)
 		goto outsparse;
=20
 	seq_printf(p, "%*d: ", prec, i);


.
Date: Mon, 22 Jul 2024 15:08:00 -0500
From: Dave Kleikamp <dave.kleikamp@oracle.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org,
        "jfs-discussion@lists.sourceforge.net" <jfs-discussion@lists.sourceforge.net>
Subject: [GIT PULL] jfs updates for v6.11

The following changes since commit 6d69b6c12fce479fde7bc06f686212451688a102:

   Merge tag 'nfs-for-6.10-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs (2024-05-23 13:51:09 -0700)

are available in the Git repository at:

   git@github.com:kleikamp/linux-shaggy.git tags/jfs-6.11

for you to fetch changes up to d0fa70aca54c8643248e89061da23752506ec0d4:

   jfs: don't walk off the end of ealist (2024-06-27 08:43:07 -0500)

----------------------------------------------------------------
Folio conversion from Matthew Wilcox and a few various fixes

----------------------------------------------------------------
Edward Adam Davis (1):
       jfs: fix null ptr deref in dtInsertEntry

Jeongjun Park (1):
       jfs: Fix array-index-out-of-bounds in diFree

Matthew Wilcox (Oracle) (14):
       jfs: Convert metapage_read_folio to use folio APIs
       jfs: Convert metapage_writepage to metapage_write_folio
       jfs: Convert __get_metapage to use a folio
       jfs: Convert insert_metapage() to take a folio
       jfs; Convert release_metapage to use a folio
       jfs: Convert drop_metapage and remove_metapage to take a folio
       jfs: Convert dec_io to take a folio
       jfs; Convert __invalidate_metapages to use a folio
       jfs: Convert page_to_mp to folio_to_mp
       jfs: Convert inc_io to take a folio
       jfs: Convert force_metapage to use a folio
       jfs: Change metapage->page to metapage->folio
       fs: Remove i_blocks_per_page
       jfs: Remove use of folio error flag

Pei Li (1):
       jfs: Fix shift-out-of-bounds in dbDiscardAG

lei lu (1):
       jfs: don't walk off the end of ealist

  fs/jfs/jfs_dmap.c       |   2 +
  fs/jfs/jfs_dtree.c      |   2 +
  fs/jfs/jfs_imap.c       |   5 +-
  fs/jfs/jfs_logmgr.c     |   2 +-
  fs/jfs/jfs_metapage.c   | 316 ++++++++++++++++++++++++------------------------
  fs/jfs/jfs_metapage.h   |  16 +--
  fs/jfs/xattr.c          |  23 +++-
  include/linux/pagemap.h |   6 -
  8 files changed, 193 insertions(+), 179 deletions(-)

.
Date: Mon, 22 Jul 2024 23:10:06 +0200
From: Sebastian Reichel <sre@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org
Subject: [GIT PULL] hsi changes for hsi-6.11


--2uwjop5b73lktmyw
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi Linus,

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi.git tags/hsi-for-6.11

for you to fetch changes up to f02cfe6950479b04fb75cf8424a852af7c50d3ad:

  HSI: ssi_protocol: Remove unused linux/gpio.h (2024-05-27 12:19:06 +0200)

----------------------------------------------------------------
HSI changes for the 6.11 series

 * drop unused gpio.h header from SSI McSAAB protocol driver

----------------------------------------------------------------
Andy Shevchenko (1):
      HSI: ssi_protocol: Remove unused linux/gpio.h

 drivers/hsi/clients/ssi_protocol.c | 1 -
 1 file changed, 1 deletion(-)

--2uwjop5b73lktmyw
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEE72YNB0Y/i3JqeVQT2O7X88g7+poFAmaeyqgACgkQ2O7X88g7
+ppBrA/+MI62aVIeLizoc+TnM3MeH+5tcOFdOY7YS0dU+dXNiIOeKQfgSgGl0kOu
eVI6PK2DcMQcngqMXlLOaINvlclEKBx3//cTZX3Ic8nwa8Rpfgf48dF+iT4JNv0g
Sb2tF2m01LDeKCMrUjTExnz0lO7vXW0FcX4mSGdZ3uifYoqurXzT7YWhsoiDWgsn
JVDdkIZyRB4Cm+KCmtiYacjedE4C8wvKyabD+ZsZS1GWTG8NN7l3A5iVn2Dz1Oky
DtCe0Bxrec4nj/JvwLZN35Ly6YDyWe/JbXaTki6d7FTIzADw9ZfYxi3W+o61Ve2w
gBzF3hkgWzus6mwY4jkyTb8gSPzYYEUTjv9ygywxTQyMvyDko8vi058os7dquxN3
KuEG5puKWGpJr0yrY+xvq1kny+V5zb9GcER9XFnRFYC9euLJqBhzVxE0fYj6Kxbp
BxsZYR40xIIS2DEmQlk40/XOMF+Zl3+Lt7D/4vdE08OKYmab2g86RcNAycJR/E3N
iS+AzQJPFxZ4c32sRof/8Oi+7cG1E2JLg7U4dOa9sWsY3iGvyNTOy9A1ZrhE/rqt
mb4hphM6sEhkYkHEKmCwRpdmiANbF2uJnY12qSJJJrrdn+ZfXgR38itZHub45h+x
Rx7pY1oiQEA7saL+A2iVtGpB+oOnwBYiHCz16E1Tetqq8RUYGFk=
=Dzgr
-----END PGP SIGNATURE-----

--2uwjop5b73lktmyw--

.
Date: Mon, 22 Jul 2024 23:10:23 +0200
From: Sebastian Reichel <sre@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org
Subject: [GIT PULL] power-supply changes for 6.11


--ip5bv667r5wohcbv
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hi Linus,

This time Stephen Rothwell noticed one merge conflict
with the LED tree. The discussion around that can be
found here:

https://lore.kernel.org/all/20240709133420.55645c59@canb.auug.org.au/

All changes have been in -next for 3 weeks and are
well-hung by now.

Greetings,

-- Sebastian

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.gi=
t tags/for-v6.11

for you to fetch changes up to be6299c6e55e971ffc060495708740a59aa0e45b:

  power: supply: sysfs: use power_supply_property_is_writeable() (2024-07-0=
4 12:30:49 +0200)

----------------------------------------------------------------
power supply and reset changes for the 6.11 series

 * power-supply core
   - new charging_orange_full_green RGB LED trigger
   - simplify and cleanup power-supply LED trigger code
   - expose power information via hwmon compatibility layer
 * new hardware support
   - enable battery support for Qualcomm Snapdragon X Elite
   - new battery driver for Maxim MAX17201/MAX17205
   - new battery driver for Lenovo Yoga C630 laptop (custom EC)
 * cleanup 'struct i2c_device_id' initializations
 * misc. small battery driver cleanups and fixes

----------------------------------------------------------------
Abel Vesa (1):
      power: supply: qcom_battmgr: Enable battery support on x1e80100

Armin Wolf (1):
      power: supply: hwmon: Add support for power sensors

Bjorn Andersson (1):
      dt-bindings: platform: Add Lenovo Yoga C630 EC

Christophe JAILLET (6):
      power: supply: ab8500: Fix error handling when calling iio_read_chann=
el_processed()
      power: supply: ab8500: Use iio_read_channel_processed_scale()
      power: supply: ab8500: Clean some error messages
      power: supply: ingenic: Fix some error handling paths in ingenic_batt=
ery_get_property()
      power: supply: samsung-sdi-battery: Constify struct power_supply_vbat=
_ri_table
      power: supply: samsung-sdi-battery: Constify struct power_supply_main=
tenance_charge_table

Dimitri Fedrau (2):
      dt-bindings: power: supply: add support for MAX17201/MAX17205 fuel ga=
uge
      power: supply: add support for MAX1720x standalone fuel gauge

Dmitry Baryshkov (3):
      platform: arm64: add Lenovo Yoga C630 WOS EC driver
      platform/arm64: build drivers even on non-ARM64 platforms
      power: supply: lenovo_yoga_c630_battery: add Lenovo C630 driver

Dr. David Alan Gilbert (2):
      power: supply: bd99954: remove unused struct 'battery_data'
      power: supply: ab8500: remove unused struct 'inst_curr_result_list'

Hans de Goede (6):
      leds: rgb: leds-ktd202x: Initialize mutex earlier
      leds: core: Add led_mc_set_brightness() function
      leds: trigger: Add led_mc_trigger_event() function
      power: supply: leds: Add power_supply_[un]register_led_trigger()
      power: supply: leds: Share trig pointer for online and charging_full
      power: supply: leds: Add activate() callback to triggers

Jeff Johnson (1):
      power: reset: piix4: add missing MODULE_DESCRIPTION() macro

Kate Hsuan (3):
      leds: rgb: leds-ktd202x: Get device properties through fwnode to supp=
ort ACPI
      leds: rgb: leds-ktd202x: I2C ID tables for KTD2026 and 2027
      power: supply: power-supply-leds: Add charging_orange_full_green trig=
ger for RGB LED

Sebastian Reichel (2):
      Merge tag 'ib-leds-platform-power-v6.11'
      Merge tag 'platform-drivers-x86-ib-lenovo-c630-v6.11-2'

Thomas Wei=DFschuh (1):
      power: supply: sysfs: use power_supply_property_is_writeable()

Uwe Kleine-K=F6nig (1):
      power: supply: Drop explicit initialization of struct i2c_device_id::=
driver_data to 0

 .../bindings/platform/lenovo,yoga-c630-ec.yaml     |  83 ++++
 .../bindings/power/supply/maxim,max17201.yaml      |  58 +++
 drivers/leds/led-class-multicolor.c                |   1 +
 drivers/leds/led-core.c                            |  31 ++
 drivers/leds/led-triggers.c                        |  20 +
 drivers/leds/rgb/Kconfig                           |   1 -
 drivers/leds/rgb/leds-ktd202x.c                    |  80 ++--
 drivers/platform/Makefile                          |   2 +-
 drivers/platform/arm64/Kconfig                     |  14 +
 drivers/platform/arm64/Makefile                    |   1 +
 drivers/platform/arm64/lenovo-yoga-c630.c          | 291 ++++++++++++
 drivers/power/reset/piix4-poweroff.c               |   1 +
 drivers/power/supply/Kconfig                       |  21 +
 drivers/power/supply/Makefile                      |   2 +
 drivers/power/supply/ab8500_chargalg.c             |   2 +-
 drivers/power/supply/ab8500_charger.c              |  52 ++-
 drivers/power/supply/ab8500_fg.c                   |   5 -
 drivers/power/supply/adp5061.c                     |   2 +-
 drivers/power/supply/bd99954-charger.c             |   7 -
 drivers/power/supply/bq24735-charger.c             |   2 +-
 drivers/power/supply/bq25890_charger.c             |  10 +-
 drivers/power/supply/cw2015_battery.c              |   2 +-
 drivers/power/supply/ingenic-battery.c             |  10 +-
 drivers/power/supply/lenovo_yoga_c630_battery.c    | 501 +++++++++++++++++=
++++
 drivers/power/supply/lp8727_charger.c              |   2 +-
 drivers/power/supply/ltc4162-l-charger.c           |   4 +-
 drivers/power/supply/max14656_charger_detector.c   |   2 +-
 drivers/power/supply/max1720x_battery.c            | 337 ++++++++++++++
 drivers/power/supply/max77976_charger.c            |   4 +-
 drivers/power/supply/mm8013.c                      |   2 +-
 drivers/power/supply/power_supply_core.c           |   4 +-
 drivers/power/supply/power_supply_hwmon.c          |  25 +
 drivers/power/supply/power_supply_leds.c           | 179 +++++---
 drivers/power/supply/power_supply_sysfs.c          |   3 +-
 drivers/power/supply/qcom_battmgr.c                |   1 +
 drivers/power/supply/rt9455_charger.c              |   4 +-
 drivers/power/supply/samsung-sdi-battery.c         |  26 +-
 drivers/power/supply/sbs-charger.c                 |   2 +-
 drivers/power/supply/sbs-manager.c                 |   4 +-
 include/linux/leds.h                               |  26 ++
 include/linux/platform_data/lenovo-yoga-c630.h     |  44 ++
 include/linux/power_supply.h                       |  19 +-
 42 files changed, 1700 insertions(+), 187 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/platform/lenovo,yoga-=
c630-ec.yaml
 create mode 100644 Documentation/devicetree/bindings/power/supply/maxim,ma=
x17201.yaml
 create mode 100644 drivers/platform/arm64/lenovo-yoga-c630.c
 create mode 100644 drivers/power/supply/lenovo_yoga_c630_battery.c
 create mode 100644 drivers/power/supply/max1720x_battery.c
 create mode 100644 include/linux/platform_data/lenovo-yoga-c630.h

--ip5bv667r5wohcbv
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEE72YNB0Y/i3JqeVQT2O7X88g7+poFAmaeyr4ACgkQ2O7X88g7
+pqPIhAAnrjfzh8GqtqP2GTcGyiALYX0GoJnmJx1yqxmtBlxe6wQwXK/X6Mtcd/z
28Jiz8UID1t0XsHL9LWBMg99CiT7oYBo0wncqE5Hx+/r8VlFIbU8aCUDgJ45y756
6tbfIhKjjqpiHX6Htc52Vs/OB1pXNRBeAxyYUi/yIzDw1HU4Peyh8nEraRM0MEpy
rVl+wi6JYBE/5TlMaGuXHubsQM3PMQTZDdhyCqdHgfrCug8lGiYZZRbuddjXyImI
ztJ0q/nhmhk3zG/Qp+EwB7d96qPYFpT7d6xUnDN/snmJ8EVwFKvjxsjtlFCXAaEB
Bd7Moo1hkcOmDbcH4tee84OoECfcy4pEAGHoIcS0Ooern38pMK1Uvi31E1unPoKm
agQbxSlIjTdd+h6BuN3E54S8UzCiQZkvwMuVQuwOIBKBds5y8/l/aipPnM5c8WA6
idTTL2HFtTIEbVWKSjPCggQCicuLR630sXaKA2adiMkxqmhtYU+wRGpe53MdpxDo
//dwHetmidMvHM2d+/LgIvLFovUv9Zlr4CN8WN4BftV+raxs0dntXT1EWd/lO1eM
ATBFSdgtoxOuhRxnIuNwrFlQ1dPf0MKslflqkJhx5SEL8LW+OvLMU/TDi13mFaPc
e0CR/6fTrwixzSDVNPhIv5mumOTzv/81ROj0/V+CD14THv8LZFI=
=yrtu
-----END PGP SIGNATURE-----

--ip5bv667r5wohcbv--

.
Date: Tue, 23 Jul 2024 06:36:09 +0200
From: Dominik Brodowski <linux@dominikbrodowski.net>
To: torvalds@linux-foundation.org
Cc: linux-kernel@vger.kernel.org
Subject: [GIT PULL] PCMCIA improvements for 6.11-rc1

Hi Linus,

a few PCMCIA changes since commit f2661062f16b2de5d7b6a5c42a9a5c96326b8454

  Merge tag 'powerpc-6.8-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux (2024-02-17 16:59:31 -0800)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux tags/pcmcia-6.11-rc1

for you to fetch changes up to 0630e3bc0e91b57288921df2927859b23184ca45:

  pcmcia: add missing MODULE_DESCRIPTION() macros (2024-06-30 15:51:34 +0200)

----------------------------------------------------------------
PCMCIA: improvements for v6.11-rc1

A number of tiny cleanups of the PCMCIA subsystem by Jeff Johnson,
Jules Irenge, and Krzysztof Kozlowski.

----------------------------------------------------------------
Jeff Johnson (1):
      pcmcia: add missing MODULE_DESCRIPTION() macros

Jules Irenge (1):
      pcmcia: Use resource_size function on resource object

Krzysztof Kozlowski (1):
      pcmcia: bcm63xx: drop driver owner assignment

 drivers/pcmcia/bcm63xx_pcmcia.c | 1 -
 drivers/pcmcia/i82092.c         | 1 +
 drivers/pcmcia/i82365.c         | 1 +
 drivers/pcmcia/max1600.c        | 1 +
 drivers/pcmcia/rsrc_mgr.c       | 1 +
 drivers/pcmcia/yenta_socket.c   | 7 ++++---
 6 files changed, 8 insertions(+), 4 deletions(-)


Thanks,
	Dominik

.
Date: Tue, 23 Jul 2024 00:55:35 -0500
From: Jassi Brar <jassisinghbrar@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, 
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>
Subject: [GIT PULL] Mailbox changes for v6.11

Hi Linus,

The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox.git
tags/mailbox-v6.11

for you to fetch changes up to a8bd68e4329f9a0ad1b878733e0f80be6a971649:

  mailbox: mtk-cmdq: Move devm_mbox_controller_register() after
devm_pm_runtime_enable() (2024-07-19 21:25:23 -0500)

----------------------------------------------------------------
broadcom: remove unused pdc_dma_map
imx: fix TXDB_V2 channel race condition
mediatek: cleanup and refactor driver
      add bindings for gce-props
omap: fix mailbox interrupt sharing
qcom: add bindings for SA8775p
      add CPUCP driver
zynqmp: make polling period configurable

----------------------------------------------------------------
Andrew Davis (1):
      mailbox: omap: Fix mailbox interrupt sharing

AngeloGioacchino Del Regno (3):
      mailbox: mtk-cmdq: Stop requiring name for GCE clock
      mailbox: mtk-cmdq: Move and partially refactor clocks probe
      mailbox: mtk-cmdq: Dynamically allocate clk_bulk_data structure

Arnd Bergmann (1):
      mailbox: qcom-cpucp: fix 64BIT dependency

Bartosz Golaszewski (1):
      dt-bindings: remoteproc: qcom,sa8775p-pas: Document the SA8775p
ADSP, CDSP and GPDSP

Ben Levinsky (1):
      mailbox: zynqmp-ipi: Make polling period configurable

Dr. David Alan Gilbert (1):
      mailbox: bcm-pdc: remove unused struct 'pdc_dma_map'

Jason-JH.Lin (2):
      dt-bindings: mailbox: Add mediatek,gce-props.yaml
      mailbox: mtk-cmdq: Move devm_mbox_controller_register() after
devm_pm_runtime_enable()

Jeff Johnson (1):
      mailbox: mtk-cmdq: add missing MODULE_DESCRIPTION() macro

Peng Fan (1):
      mailbox: imx: fix TXDB_V2 channel race condition

Sibi Sankar (2):
      dt-bindings: mailbox: qcom: Add CPUCP mailbox controller bindings
      mailbox: Add support for QTI CPUCP mailbox controller

 .../bindings/mailbox/mediatek,gce-props.yaml       |  52 ++++++
 .../bindings/mailbox/qcom,cpucp-mbox.yaml          |  49 ++++++
 .../bindings/remoteproc/qcom,sa8775p-pas.yaml      | 160 ++++++++++++++++++
 MAINTAINERS                                        |   7 +
 drivers/mailbox/Kconfig                            |   8 +
 drivers/mailbox/Makefile                           |   2 +
 drivers/mailbox/bcm-pdc-mailbox.c                  |   4 -
 drivers/mailbox/imx-mailbox.c                      |  10 +-
 drivers/mailbox/mtk-cmdq-mailbox.c                 | 100 +++++++----
 drivers/mailbox/omap-mailbox.c                     |   3 +-
 drivers/mailbox/qcom-cpucp-mbox.c                  | 187 +++++++++++++++++++++
 drivers/mailbox/zynqmp-ipi-mailbox.c               |   9 +-
 12 files changed, 548 insertions(+), 43 deletions(-)
 create mode 100644
Documentation/devicetree/bindings/mailbox/mediatek,gce-props.yaml
 create mode 100644
Documentation/devicetree/bindings/mailbox/qcom,cpucp-mbox.yaml
 create mode 100644
Documentation/devicetree/bindings/remoteproc/qcom,sa8775p-pas.yaml
 create mode 100644 drivers/mailbox/qcom-cpucp-mbox.c

.
Date: Tue, 23 Jul 2024 13:19:36 +0200
From: Wolfram Sang <wsa@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
	Peter Rosin <peda@axentia.se>, Bartosz Golaszewski <brgl@bgdev.pl>,
	Andi Shyti <andi.shyti@kernel.org>
Subject: [PULL REQUEST] i2c-for-6.11-rc1-second-batch


--qz7dd/UTaslIo8U4
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

The following changes since commit 8e5c0abfa02d85b9cd2419567ad2d73ed8fe4b74:

  Merge tag 'input-for-v6.11-rc0' of git://git.kernel.org/pub/scm/linux/ker=
nel/git/dtor/input (2024-07-19 16:51:39 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git tags/i2c-for-=
6.11-rc1-second-batch

for you to fetch changes up to 385ac870bdd531348de123d6790626ccd7827f69:

  i2c: header: improve kdoc for i2c_algorithm (2024-07-20 15:45:27 +0200)

----------------------------------------------------------------
I2C for 6.11-rc1 second batch

The I2C core has two header documentation updates to be applied as the
dependecies are in now.

The I2C host drivers add some patches which nearly fell through the
cracks, namely:

Added descriptions in the DTS for the Qualcomm SM8650 and SM8550
Camera Control Interface (CCI).

Added support for the "settle-time-us" property, which allows the
gpio-mux device to switch from one bus to another with a configurable
delay. The time can be set in the DTS. The latest change also includes
file sorting.

Fixed slot numbering in the SMBus framework to prevent failures
when more than 8 slots are occupied. It now enforces a a maximum
of 8 slots to be used. This ensures that the Intel PIIX4 device
can register the SPDs correctly without failure, even if other
slots are populated but not used.

----------------------------------------------------------------
Bastien Curutchet (3):
      dt-bindings: i2c: mux-gpio: Add 'settle-time-us' property
      i2c: mux: gpio: Re-order #include to match alphabetic order
      i2c: mux: gpio: Add support for the 'settle-time-us' property

Thomas Wei=C3=9Fschuh (2):
      i2c: smbus: remove i801 assumptions from SPD probing
      i2c: piix4: Register SPDs

Vladimir Zapolskiy (2):
      dt-bindings: i2c: qcom-cci: Document sm8550 compatible
      dt-bindings: i2c: qcom-cci: Document sm8650 compatible

Wolfram Sang (3):
      Merge tag 'i2c-host-6.11-part-2' of git://git.kernel.org/pub/scm/linu=
x/kernel/git/andi.shyti/linux into i2c/for-mergewindow
      i2c: header: remove unneeded stuff regarding i2c_algorithm
      i2c: header: improve kdoc for i2c_algorithm


with much appreciated quality assurance from
----------------------------------------------------------------
Andi Shyti (3):
      (Rev.) i2c: mux: gpio: Add support for the 'settle-time-us' property
      (Rev.) i2c: mux: gpio: Re-order #include to match alphabetic order
      (Rev.) dt-bindings: i2c: mux-gpio: Add 'settle-time-us' property

Guenter Roeck (2):
      (Rev.) i2c: piix4: Register SPDs
      (Test) i2c: piix4: Register SPDs

Heiner Kallweit (1):
      (Rev.) i2c: smbus: remove i801 assumptions from SPD probing

Krzysztof Kozlowski (3):
      (Rev.) dt-bindings: i2c: mux-gpio: Add 'settle-time-us' property
      (Rev.) dt-bindings: i2c: qcom-cci: Document sm8650 compatible
      (Rev.) dt-bindings: i2c: qcom-cci: Document sm8550 compatible

 .../devicetree/bindings/i2c/i2c-mux-gpio.yaml       |  3 +++
 .../devicetree/bindings/i2c/qcom,i2c-cci.yaml       | 20 +++++++++++++++++=
+++
 drivers/i2c/busses/Kconfig                          |  1 +
 drivers/i2c/busses/i2c-piix4.c                      |  9 +++++++++
 drivers/i2c/i2c-smbus.c                             | 15 ++++-----------
 drivers/i2c/muxes/i2c-mux-gpio.c                    | 14 ++++++++++----
 include/linux/i2c.h                                 | 21 +++++++----------=
----
 include/linux/platform_data/i2c-mux-gpio.h          |  2 ++
 8 files changed, 56 insertions(+), 29 deletions(-)

--qz7dd/UTaslIo8U4
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmafkcgACgkQFA3kzBSg
KbZa3w//RFl0P8gWFR3hdS6fbKK0aVnhjQT3fsM44qD2PqTAaYHWAq/0iHRLyXtb
GJnEGOU1BEgPwxGlnnleeUe2odHEQPxwFDEhmCedaylFe94FaDv3x5V/G+FmWjCC
7UhANR6X/1Ff+iuj1kPh2IxzsDTmx0FMX064QykxW2SxAZH76PWjFIqS+XvpBu32
pb0LkwNms6NbmVDTzlLiQc1RHok9D2nKHYJsXQo8+FqcikvDNgCiyXJndusAgVJY
n5F0wX7/r6ZX2eOzxxlnapVONZGQJWRkat7YiD2qSVA0Xvri3rTYisjtVGu6t7EI
/9PRrJsin18Z78WPuFQKFLwMGaNqMWoW1sMgjG+bU3bgqfILSyCat/PsoGZs7UtQ
Hnfh19WSMOXScjMSL988WYXBjydMtESUtnR0tPEF2xQwIb1TTwS3HugSe+0Un+bT
PoIXWWAW3HGE3ZZLh0x019ylSnf8SRr/qd1JphWqOCwaSlG6g1sdKp6v9mgEHE4N
j6B1wekVrWuO9etU7GcNXCpwLxqaNtSMkqNeqYFsiKLvOcBWbgS5skxwejbkdwRm
yLMvxmuptVgfZ+4PYUGaaRJ9z4P6/sst5TIRXaRwIENovYT3xs8x3lKOGKgSaEiE
Xu6wUaM9qHuaQhgbb/ROT1d4kB1h0xTGzNEU213/QEvuhvOg+D8=
=qCWM
-----END PGP SIGNATURE-----

--qz7dd/UTaslIo8U4--

.
Date: Tue, 23 Jul 2024 16:38:18 +0200
From: Petr Mladek <pmladek@suse.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	John Ogness <john.ogness@linutronix.de>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Thomas Gleixner <tglx@linutronix.de>, Jan Kara <jack@suse.cz>,
	Peter Zijlstra <peterz@infradead.org>, linux-kernel@vger.kernel.org
Subject: [GIT PULL] printk for 6.11

Hi Linus,

please pull the latest printk changes from

  git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git tags/printk-for-6.11

===========================================

Next preparation step for introducing printk kthreads. This part
wires up flushing consoles via con->write_atomic() callback.

The write_atomic() callback can be used for flushing nbcon consoles
in any context. It is needed when the console could not be reliably
flushed using the printk kthread. Namely, it is used:

  - During the early boot, from the legacy loop in console_unlock().
    It allows to see the messages before processes (kthreads) could
    get started.

    Note that it must be used as long as there is a boot console
    registered. The console_lock() serializes accesses to the same
    HW port between the early and normal console driver.

  - In an emergency section, directly from nbcon_cpu_emergency_exit()
    or nbcon_cpu_emergency_flush(). It allows to see the messages
    when the system is in an unexpected state and might not be
    able to continue properly.

    The messages are flushed at the end of the emergency section
    to allow storing the full log (backtrace) first. It helps to
    see it even when other CPUs add messages in parallel. The flush()
    API is used to explicitly flush parts of longer logs which might
    not fit into the buffer or might cause a softlockup.

    The emergency section is used for WARN(), Oops, RCU stall,
    and lockdep reports.

  - In panic(), directly from printk() on the panic-CPU. Note that
    other CPUs are not allowed to add new messages at this point.

There is also a new uart_port_lock() API in serial_core.h. It allows to
take port->lock and also acquire the nbcon console context when
the particular port gets registered as a console.

The port->lock serializes code for non-printing activities, for example,
for writing or setting the port speed. The nbcon context allows to
serialize the access in emergency or panic situations where the classic
spin lock (port->lock) could cause a deadlock. Note that the nbcon
context allows a safe takeover in the middle of a printed message.

IMPORTANT: The changes do not affect the behavior of legacy consoles,
    except for two situations:

  - Legacy consoles are not longer flushed directly from printk()
    in emergency sections. The flush is done on exit from
    the emergency section or by nbcon_cpu_emergency_flush().
    The motivation is the same as for nbcon consoles.

  - Legacy consoles are not longer flushed directly from printk()
    in panic() when crash dump is created and a nbcon console
    is registered. They could create a deadlock in compare with
    nbcon consoles.

----------------------------------------------------------------
Jeff Johnson (1):
      vsprintf: add missing MODULE_DESCRIPTION() macro

John Ogness (25):
      printk: Add notation to console_srcu locking
      printk: nbcon: Remove return value for write_atomic()
      printk: nbcon: Add detailed doc for write_atomic()
      printk: nbcon: Add callbacks to synchronize with driver
      printk: nbcon: Use driver synchronization while (un)registering
      serial: core: Provide low-level functions to lock port
      serial: core: Introduce wrapper to set @uart_port->cons
      console: Improve console_srcu_read_flags() comments
      nbcon: Add API to acquire context for non-printing operations
      serial: core: Implement processing in port->lock wrapper
      printk: nbcon: Do not rely on proxy headers
      printk: Make console_is_usable() available to nbcon
      printk: Let console_is_usable() handle nbcon
      printk: Add @flags argument for console_is_usable()
      printk: nbcon: Add helper to assign priority based on CPU state
      printk: Track registered boot consoles
      printk: nbcon: Use nbcon consoles in console_flush_all()
      printk: nbcon: Add unsafe flushing on panic
      printk: Avoid console_lock dance if no legacy or boot consoles
      printk: Track nbcon consoles
      printk: Coordinate direct printing in panic
      panic: Mark emergency section in oops
      rcu: Mark emergency sections in rcu stalls
      lockdep: Mark emergency sections in lockdep splats
      printk: nbcon: do not require migration disabled for nbcon_get_cpu_emergency_nesting()

Petr Mladek (2):
      printk: Properly deal with nbcon consoles on seq init
      Merge branch 'rework/write-atomic' into for-linus

Sebastian Andrzej Siewior (1):
      printk: Check printk_deferred_enter()/_exit() usage

Sreenath Vijayan (1):
      printk: Rename console_replay_all() and update context

Thomas Gleixner (3):
      printk: nbcon: Provide function to flush using write_atomic()
      printk: nbcon: Implement emergency sections
      panic: Mark emergency section in warn

 drivers/tty/serial/8250/8250_core.c |   6 +-
 drivers/tty/serial/amba-pl011.c     |   2 +-
 drivers/tty/serial/serial_core.c    |  16 +-
 drivers/tty/sysrq.c                 |   2 +-
 include/linux/console.h             | 112 ++++++--
 include/linux/printk.h              |  37 ++-
 include/linux/serial_core.h         | 117 +++++++-
 kernel/locking/lockdep.c            |  84 +++++-
 kernel/panic.c                      |   9 +
 kernel/printk/internal.h            |  73 ++++-
 kernel/printk/nbcon.c               | 513 ++++++++++++++++++++++++++++++++++--
 kernel/printk/printk.c              | 313 ++++++++++++++++------
 kernel/printk/printk_ringbuffer.h   |   2 +
 kernel/printk/printk_safe.c         |  23 +-
 kernel/rcu/tree_exp.h               |   9 +
 kernel/rcu/tree_stall.h             |  11 +
 lib/test_printf.c                   |   1 +
 lib/test_scanf.c                    |   1 +
 18 files changed, 1194 insertions(+), 137 deletions(-)

.
Date: Tue, 23 Jul 2024 17:46:20 +0200
From: Petr Mladek <pmladek@suse.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, live-patching@vger.kernel.org
Subject: [GIT PULL] livepatching for 6.11

Hi Linus,

please pull the latest changes for the kernel livepatching from

  git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching tags/livepatching-for-6.11

============================================

- Show also patch->replace flag in sysfs.
- Add or improve few selftests.

----------------------------------------------------------------
Marcos Paulo de Souza (1):
      selftests: livepatch: Test atomic replace against multiple modules

Petr Mladek (1):
      Merge branch 'for-6.11/sysfs-patch-replace' into for-linus

Ryan Sullivan (1):
      selftests/livepatch: define max test-syscall processes

Yafang Shao (3):
      livepatch: Add "replace" sysfs attribute
      selftests/livepatch: Add selftests for "replace" sysfs attribute
      livepatch: Replace snprintf() with sysfs_emit()

 Documentation/ABI/testing/sysfs-kernel-livepatch   |   8 ++
 kernel/livepatch/core.c                            |  17 ++-
 .../testing/selftests/livepatch/test-livepatch.sh  | 138 +++++++++++++--------
 tools/testing/selftests/livepatch/test-syscall.sh  |   5 +-
 tools/testing/selftests/livepatch/test-sysfs.sh    |  48 +++++++
 5 files changed, 163 insertions(+), 53 deletions(-)

.
Date: Tue, 23 Jul 2024 10:14:01 -0700
From: Luis Chamberlain <mcgrof@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	linux-modules@vger.kernel.org
Cc: patches@lists.linux.dev, linux-kernel@vger.kernel.org,
	jtornosm@redhat.com, lucas.demarchi@intel.com, mcgrof@kernel.org
Subject: [GIT PULL] Modules changes for v6.11-rc1

The following changes since commit 6ba59ff4227927d3a8530fc2973b80e94b54d58f:

  Linux 6.10-rc4 (2024-06-16 13:40:16 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git/ tags/modules-6.11-rc1

for you to fetch changes up to 61842868de13aa7fd7391c626e889f4d6f1450bf:

  module: create weak dependecies (2024-06-30 18:57:20 -0700)

----------------------------------------------------------------
Modules changes for v6.11-rc1

This is a super boring development cycle this time around for modules,
there is only one patch in this pull request. The patch deals with a
corner case set of dependencies which is not resolved today to ensure
users get the modules they need on initramfs. Currently only one modules
is known to exist which needs this, however this can grow to capture
other corner cases likely escaped and not reported before. The kernel
change is just a section update, the real work is done and merged
already on upstream kmod.

This has been on linux-next for 3 weeks now.

----------------------------------------------------------------
Jose Ignacio Tornos Martinez (1):
      module: create weak dependecies

 include/linux/module.h | 6 ++++++
 1 file changed, 6 insertions(+)

.
Date: Tue, 23 Jul 2024 10:20:47 -0700
From: Bjorn Andersson <andersson@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-remoteproc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Richard Maina <quic_rmaina@quicinc.com>
Subject: [GIT PULL] hwspinlock updates for v6.11


The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux.git tags/hwlock-v6.11

for you to fetch changes up to 718a7ad700b1ea86ae5a3ee636a275f98ba8ef86:

  Merge branch '20240529-hwspinlock-bust-v3-2-c8b924ffa5a2@quicinc.com' into hwspinlock-next (2024-05-29 12:52:37 -0700)

----------------------------------------------------------------
hwspinlock updates for v6.11

This introduces a mechanism in the hardware spinlock framework, and the
Qualcomm TCSR mutex driver, for allowing clients to bust locks held by a
remote processor in the event that this enters a faulty state while
holding the shared lock.

----------------------------------------------------------------
Bjorn Andersson (1):
      Merge branch '20240529-hwspinlock-bust-v3-2-c8b924ffa5a2@quicinc.com' into hwspinlock-next

Richard Maina (2):
      hwspinlock: Introduce hwspin_lock_bust()
      hwspinlock: qcom: implement bust operation

 Documentation/locking/hwspinlock.rst     | 11 +++++++++++
 drivers/hwspinlock/hwspinlock_core.c     | 28 ++++++++++++++++++++++++++++
 drivers/hwspinlock/hwspinlock_internal.h |  3 +++
 drivers/hwspinlock/qcom_hwspinlock.c     | 25 +++++++++++++++++++++++++
 include/linux/hwspinlock.h               |  6 ++++++
 5 files changed, 73 insertions(+)

.
Date: Tue, 23 Jul 2024 11:30:41 -0700
From: Bjorn Andersson <andersson@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-remoteproc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Andrew Davis <afd@ti.com>,
	Richard Maina <quic_rmaina@quicinc.com>,
	Aleksandr Mishin <amishin@t-argos.ru>,
	AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>,
	Chris Lew <quic_clew@quicinc.com>,
	Frank Li <Frank.Li@nxp.com>,
	Garrett Giordano <ggiordano@phytec.com>,
	Hari Nagalla <hnagalla@ti.com>,
	Jason Chen <Jason-ch.Chen@mediatek.com>,
	=?UTF-8?q?N=C3=ADcolas=20F=20=2E=20R=20=2E=20A=20=2E=20Prado?= <nfraprado@collabora.com>,
	Richard Genoud <richard.genoud@bootlin.com>,
	Tanmay Shah <tanmay.shah@amd.com>
Subject: [GIT PULL] remoteproc updates for v6.11


The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux.git tags/rproc-v6.11

for you to fetch changes up to 19cb6058620620e68f1a9aed99393be5c3629db4:

  remoteproc: mediatek: Increase MT8188/MT8195 SCP core0 DRAM size (2024-07-08 09:57:16 -0600)

----------------------------------------------------------------
remoteproc updates for v6.11

The maximum amount of DDR memory used by the Mediatek MT8188/MT8195 SCP
is increased, to handle new use cases. Handling of optional L1TCM memory
is made actually optional.
An optimization is introduced to only clear the unused portion of IPI
shared buffers, rather than the entire buffer before writing the
message.

Detection for IPC-only mode in the TI K3 DSP remoteproc driver is
corrected. The loglevel of a debug print in the same is lowered from
error.

Support for attaching to an running remote processor is added to the
Xilinx R5F.

An in-kernel implementation of the Qualcomm "protected domain mapper"
(aka service registry) service is introduced, to remove the dependency
on a userspace implementation to detect when the battery monitor and USB
Type-C port manager becomes available. This is then integrated with the
Qualcomm remoteproc driver.

The Qualcomm PAS remoteproc driver gains support for attempting to bust
hwspinlocks held by the remote processor when it crashed/stopped.

The TI OMAP remoteproc driver is transitioned to use devres helpers for
various forms of allocations.

Parsing of memory-regions in the i.MX remoteproc driver is improved to
avoid a NULL pointer dereference if the phandle reference is empty.
of_node reference counting is corrected in the same.

----------------------------------------------------------------
Aleksandr Mishin (2):
      remoteproc: imx_rproc: Skip over memory region when node value is NULL
      remoteproc: imx_rproc: Fix refcount mistake in imx_rproc_addr_init

Andrew Davis (3):
      remoteproc: omap: Use devm_rproc_alloc() helper
      remoteproc: omap: Use devm action to release reserved memory
      remoteproc: omap: Use devm_rproc_add() helper

AngeloGioacchino Del Regno (1):
      remoteproc: mediatek: Zero out only remaining bytes of IPI buffer

Bjorn Andersson (2):
      Merge branch '20240529-hwspinlock-bust-v3-2-c8b924ffa5a2@quicinc.com' into rproc-next
      Merge branch '20240622-qcom-pd-mapper-v9-0-a84ee3591c8e@linaro.org' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into rproc-next

Chris Lew (1):
      soc: qcom: smem: Add qcom_smem_bust_hwspin_lock_by_host()

Dmitry Baryshkov (6):
      soc: qcom: pdr: protect locator_addr with the main mutex
      soc: qcom: pdr: fix parsing of domains lists
      soc: qcom: pdr: extract PDR message marshalling data
      soc: qcom: add pd-mapper implementation
      remoteproc: qcom: enable in-kernel PD mapper
      remoteproc: qcom: select AUXILIARY_BUS

Frank Li (1):
      dt-bindings: remoteproc: imx_rproc: Add minItems for power-domain

Garrett Giordano (1):
      remoteproc: k3-dsp: Fix log levels where appropriate

Hari Nagalla (1):
      dt-bindings: remoteproc: k3-dsp: Correct optional sram properties for AM62A SoCs

Jason Chen (1):
      remoteproc: mediatek: Increase MT8188/MT8195 SCP core0 DRAM size

NĂ­colas F. R. A. Prado (1):
      remoteproc: mediatek: Don't attempt to remap l1tcm memory if missing

Richard Genoud (1):
      remoteproc: k3-r5: Fix IPC-only mode detection

Richard Maina (3):
      hwspinlock: Introduce hwspin_lock_bust()
      hwspinlock: qcom: implement bust operation
      remoteproc: qcom_q6v5_pas: Add hwspinlock bust on stop

Tanmay Shah (1):
      remoteproc: xlnx: Add attach detach support

 .../bindings/remoteproc/fsl,imx-rproc.yaml         |  15 +
 .../bindings/remoteproc/ti,k3-dsp-rproc.yaml       |  89 +--
 Documentation/locking/hwspinlock.rst               |  11 +
 drivers/hwspinlock/hwspinlock_core.c               |  28 +
 drivers/hwspinlock/hwspinlock_internal.h           |   3 +
 drivers/hwspinlock/qcom_hwspinlock.c               |  25 +
 drivers/remoteproc/Kconfig                         |   1 +
 drivers/remoteproc/imx_rproc.c                     |  10 +-
 drivers/remoteproc/mtk_scp.c                       |  23 +-
 drivers/remoteproc/omap_remoteproc.c               |  46 +-
 drivers/remoteproc/qcom_common.c                   |  87 +++
 drivers/remoteproc/qcom_common.h                   |  10 +
 drivers/remoteproc/qcom_q6v5_adsp.c                |   3 +
 drivers/remoteproc/qcom_q6v5_mss.c                 |   3 +
 drivers/remoteproc/qcom_q6v5_pas.c                 |  14 +
 drivers/remoteproc/qcom_q6v5_wcss.c                |   3 +
 drivers/remoteproc/ti_k3_dsp_remoteproc.c          |   2 +-
 drivers/remoteproc/ti_k3_r5_remoteproc.c           |  13 +-
 drivers/remoteproc/xlnx_r5_remoteproc.c            | 151 +++++
 drivers/soc/qcom/Kconfig                           |  15 +
 drivers/soc/qcom/Makefile                          |   2 +
 drivers/soc/qcom/pdr_interface.c                   |   8 +-
 drivers/soc/qcom/pdr_internal.h                    | 318 +---------
 drivers/soc/qcom/qcom_pd_mapper.c                  | 677 +++++++++++++++++++++
 drivers/soc/qcom/qcom_pdr_msg.c                    | 353 +++++++++++
 drivers/soc/qcom/smem.c                            |  26 +
 include/linux/hwspinlock.h                         |   6 +
 include/linux/soc/qcom/smem.h                      |   2 +
 28 files changed, 1562 insertions(+), 382 deletions(-)
 create mode 100644 drivers/soc/qcom/qcom_pd_mapper.c
 create mode 100644 drivers/soc/qcom/qcom_pdr_msg.c

.
Date: Tue, 23 Jul 2024 12:17:49 -0700
From: Bjorn Andersson <andersson@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-remoteproc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>,
	Gwenael Treuveur <gwenael.treuveur@foss.st.com>,
	Jeff Johnson <quic_jjohnson@quicinc.com>
Subject: [GIT PULL] rpmsg updates for v6.11


The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux.git tags/rpmsg-v6.11

for you to fetch changes up to 36862eab884d997e182aad9163cc6ca953614a68:

  rpmsg: char: add missing MODULE_DESCRIPTION() macro (2024-06-10 11:11:59 -0600)

----------------------------------------------------------------
rpmsg updates for v6.11

This corrects interrupt handling in the stm32 remoteproc driver when
being attached to an already running remote processor.
It fixes invalid kernel-doc and adds missing MODULE_DESCRIPTION() in the
rpmsg char driver.

----------------------------------------------------------------
Arnaud Pouliquen (1):
      rpmsg: char: Fix rpmsg_eptdev structure documentation

Gwenael Treuveur (1):
      remoteproc: stm32_rproc: Fix mailbox interrupts queuing

Jeff Johnson (1):
      rpmsg: char: add missing MODULE_DESCRIPTION() macro

 drivers/remoteproc/stm32_rproc.c | 2 +-
 drivers/rpmsg/rpmsg_char.c       | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

.
Date: Wed, 24 Jul 2024 04:44:06 +0900
From: Masahiro Yamada <masahiroy@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>, 
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] Kbuild updates for v6.11-rc1

Hello Linus,

Please pull Kbuild updates for v6.11-rc1




You will get a merge conflict in scripts/Makefile.lib

It is a conflict between the following two commits:
 49636c5680b977d8a39263c6c8db6061c427346e
 712aba5543b88996bc4682086471076fbf048927

The resolution exists in linux-next.


Thank you.





The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948=
:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
tags/kbuild-v6.11

for you to fetch changes up to 13c239a2c088e91e453d26517b562c9a116444fa:

  kbuild: doc: gcc to CC change (2024-07-24 01:18:25 +0900)

----------------------------------------------------------------
Kbuild updates for v6.11

 - Remove tristate choice support from Kconfig

 - Stop using the PROVIDE() directive in the linker script

 - Reduce the number of links for the combination of CONFIG_DEBUG_INFO_BTF
   and CONFIG_KALLSYMS

 - Enable the warning for symbol reference to .exit.* sections by default

 - Fix warnings in RPM package builds

 - Improve scripts/make_fit.py to generate a FIT image with separate base
   DTB and overlays

 - Improve choice value calculation in Kconfig

 - Fix conditional prompt behavior in choice in Kconfig

 - Remove support for the uncommon EMAIL environment variable in Debian
   package builds

 - Remove support for the uncommon "name <email>" form for the DEBEMAIL
   environment variable

 - Raise the minimum supported GNU Make version to 4.0

 - Remove stale code for the absolute kallsyms

 - Move header files commonly used for host programs to scripts/include/

 - Introduce the pacman-pkg target to generate a pacman package used in
   Arch Linux

 - Clean up Kconfig

----------------------------------------------------------------
Chen-Yu Tsai (1):
      scripts/make_fit: Support decomposing DTBs

HONG Yifan (1):
      kconfig: recursive checks drop file/lineno

Ivan Davydov (1):
      kbuild: doc: gcc to CC change

Jann Horn (1):
      kallsyms: get rid of code for absolute kallsyms

Masahiro Yamada (55):
      initramfs: shorten cmd_initfs in usr/Makefile
      kconfig: qconf: remove initial call to conf_changed()
      kconfig: gconf: remove unnecessary forward declarations
      kconfig: gconf: move conf_changed() definition up
      kconfig: pass new conf_changed value to the callback
      kconfig: remove tristate choice support
      kconfig: refactor conf_set_all_new_symbols() to reduce indentation le=
vel
      kconfig: refactor conf_write_defconfig() to reduce indentation level
      kbuild: refactor variables in scripts/link-vmlinux.sh
      kbuild: remove PROVIDE() for kallsyms symbols
      kbuild: merge temporary vmlinux for BTF and kallsyms
      kconfig: add -e and -u options to *conf-cfg.sh scripts
      kconfig: remove unneeded code in expr_compare_type()
      kconfig: add fallthrough comments to expr_compare_type()
      kconfig: introduce choice_set_value() helper
      kconfig: remember the current choice while parsing the choice block
      kbuild: move init/build-version to scripts/
      kconfig: import list_move(_tail) and list_for_each_entry_reverse macr=
os
      kconfig: refactor choice value calculation
      kconfig: remove sym_get_choice_value()
      kconfig: remove conf_unsaved in conf_read_simple()
      kconfig: change sym_choice_default() to take the choice menu
      kconfig: use menu_list_for_each_sym() in sym_choice_default()
      kconfig: remove expr_list_for_each_sym() macro
      kconfig: use sym_get_choice_menu() in sym_check_print_recursive()
      kconfig: use sym_get_choice_menu() in sym_check_choice_deps()
      kconfig: use sym_get_choice_menu() in sym_check_deps()
      kconfig: remove P_CHOICE property
      kconfig: remove E_LIST expression type
      treewide: change conditional prompt for choices to 'depends on'
      kconfig: fix conditional prompt behavior for choice
      kconfig: improve error message for dependency between choice members
      kconfig: improve error message for recursive dependency in choice
      kconfig: refactor error messages in sym_check_print_recursive()
      kbuild: deb-pkg: remove support for EMAIL environment variable
      kbuild: deb-pkg: remove support for "name <email>" form for DEBEMAIL
      kbuild: package: add -e and -u options to some shell scripts
      kbuild: avoid build error when single DTB is turned into composite DT=
B
      kbuild: raise the minimum GNU Make requirement to 4.0
      modpost: remove self-definitions of R_ARM_* macros
      modpost: rename R_ARM_THM_CALL to R_ARM_THM_PC22
      kbuild: deb-pkg: use default string when variable is unset or null
      kconfig: call expr_eliminate_yn() at least once in expr_eliminate_dup=
s()
      kconfig: add const qualifiers to several function arguments
      kconfig: remove SYMBOL_CHOICEVAL flag
      kconfig: remove 'e1' and 'e2' macros from expression deduplication
      kbuild: clean up scripts/remove-stale-files
      Makefile: add comment to discourage tools/* addition for kernel build=
s
      kbuild: move some helper headers from scripts/kconfig/ to scripts/inc=
lude/
      modpost: use generic macros for hash table implementation
      kallsyms: avoid repeated calculation of array size for markers
      kallsyms: use \t instead of a tab in printf()
      kallsyms: add more original symbol type/name in comment lines
      kallsyms: unify seq and start_pos fields of struct sym_entry
      kallsyms: change sym_entry::percpu_absolute to bool type

Rafael Aquini (2):
      kbuild: rpm-pkg: make sure to have versioned 'Obsoletes' for kernel.s=
pec
      kbuild: rpm-pkg: introduce a simple changelog section for kernel.spec

Thomas Wei=C3=9Fschuh (1):
      kbuild: add script and target to generate pacman package

Uwe Kleine-K=C3=B6nig (1):
      modpost: Enable section warning from *driver to .exit.text

Zhang Bingwu (2):
      kbuild: Abort make on install failures
      kbuild: Create INSTALL_PATH directory if it does not exist

 .gitignore                                                    |   6 +
 Documentation/kbuild/kconfig-language.rst                     |  11 +-
 Documentation/kbuild/makefiles.rst                            |   6 +-
 Documentation/process/changes.rst                             |   4 +-
 MAINTAINERS                                                   |   8 +
 Makefile                                                      |  36 ++--
 arch/arm/Kconfig                                              |   6 +-
 arch/arm/boot/install.sh                                      |   2 +
 arch/arm64/Kconfig                                            |   3 +-
 arch/arm64/boot/install.sh                                    |   2 +
 arch/m68k/install.sh                                          |   2 +
 arch/mips/Kconfig                                             |   6 +-
 arch/nios2/boot/install.sh                                    |   2 +
 arch/parisc/install.sh                                        |   2 +
 arch/powerpc/Kconfig                                          |   3 +-
 arch/riscv/Kconfig                                            |   3 +-
 arch/riscv/boot/install.sh                                    |   2 +
 arch/s390/boot/install.sh                                     |   2 +
 arch/sparc/boot/install.sh                                    |   2 +
 arch/x86/boot/install.sh                                      |   2 +
 fs/jffs2/Kconfig                                              |   3 +-
 include/asm-generic/vmlinux.lds.h                             |  19 --
 init/Kconfig                                                  |  18 --
 init/Makefile                                                 |   2 +-
 kernel/kallsyms.c                                             |   5 +-
 kernel/kallsyms_internal.h                                    |   6 -
 kernel/vmcore_info.c                                          |   4 -
 scripts/Kbuild.include                                        |   2 +-
 scripts/Makefile.lib                                          |   7 +-
 scripts/Makefile.package                                      |  14 ++
 {init =3D> scripts}/build-version                               |   0
 scripts/{kconfig =3D> include}/array_size.h                     |   0
 scripts/{kconfig =3D> include}/hashtable.h                      |   0
 scripts/{kconfig =3D> include}/list.h                           |  53 ++++=
++
 scripts/{kconfig =3D> include}/list_types.h                     |   0
 scripts/install.sh                                            |   4 +
 scripts/kallsyms.c                                            | 125
++++++-------
 scripts/kconfig/conf.c                                        | 238
++++++++++--------------
 scripts/kconfig/confdata.c                                    | 127
++++---------
 scripts/kconfig/expr.c                                        | 128
++++++-------
 scripts/kconfig/expr.h                                        |  29 ++-
 scripts/kconfig/gconf-cfg.sh                                  |   2 +
 scripts/kconfig/gconf.c                                       |  26 ++-
 scripts/kconfig/internal.h                                    |   2 +-
 scripts/kconfig/lkc.h                                         |  34 ++--
 scripts/kconfig/lkc_proto.h                                   |  16 +-
 scripts/kconfig/mconf-cfg.sh                                  |   2 +
 scripts/kconfig/mconf.c                                       |  38 ++--
 scripts/kconfig/menu.c                                        | 111
++----------
 scripts/kconfig/mnconf-common.c                               |   2 +-
 scripts/kconfig/mnconf-common.h                               |   2 +
 scripts/kconfig/nconf-cfg.sh                                  |   2 +
 scripts/kconfig/nconf.c                                       |  38 ++--
 scripts/kconfig/parser.y                                      |  45 ++---
 scripts/kconfig/preprocess.c                                  |   4 +-
 scripts/kconfig/qconf-cfg.sh                                  |   2 +
 scripts/kconfig/qconf.cc                                      |  20 +--
 scripts/kconfig/qconf.h                                       |   2 +-
 scripts/kconfig/symbol.c                                      | 369
++++++++++++++++++++------------------
 scripts/kconfig/tests/choice/Kconfig                          |  17 --
 scripts/kconfig/tests/choice/__init__.py                      |  10 --
 scripts/kconfig/tests/choice/alldef_expected_config           |   3 -
 scripts/kconfig/tests/choice/allmod_expected_config           |   3 -
 scripts/kconfig/tests/choice/allno_expected_config            |   3 -
 scripts/kconfig/tests/choice/allyes_expected_config           |   3 -
 scripts/kconfig/tests/choice/oldask0_expected_stdout          |   4 -
 scripts/kconfig/tests/choice/oldask1_config                   |   1 -
 scripts/kconfig/tests/choice/oldask1_expected_stdout          |   9 -
 scripts/kconfig/tests/choice_value_with_m_dep/Kconfig         |  21 ---
 scripts/kconfig/tests/choice_value_with_m_dep/__init__.py     |  16 --
 scripts/kconfig/tests/choice_value_with_m_dep/config          |   2 -
 scripts/kconfig/tests/choice_value_with_m_dep/expected_config |   3 -
 scripts/kconfig/tests/choice_value_with_m_dep/expected_stdout |   4 -
 scripts/kconfig/tests/err_recursive_dep/expected_stderr       |  36 ++--
 scripts/kconfig/tests/inter_choice/Kconfig                    |  25 ---
 scripts/kconfig/tests/inter_choice/__init__.py                |  15 --
 scripts/kconfig/tests/inter_choice/defconfig                  |   1 -
 scripts/kconfig/tests/inter_choice/expected_config            |   4 -
 scripts/kconfig/util.c                                        |   4 +-
 scripts/link-vmlinux.sh                                       | 105 ++++++=
-----
 scripts/make_fit.py                                           |  86 ++++++=
---
 scripts/mod/list.h                                            | 213
----------------------
 scripts/mod/modpost.c                                         |  67 +-----=
-
 scripts/mod/modpost.h                                         |   2 +-
 scripts/package/PKGBUILD                                      | 108 ++++++=
+++++
 scripts/package/builddeb                                      |   2 +-
 scripts/package/buildtar                                      |   2 +-
 scripts/package/gen-diff-patch                                |   2 +
 scripts/package/install-extmod-build                          |   5 +-
 scripts/package/kernel.spec                                   |   2 +-
 scripts/package/mkdebian                                      |  44 ++---
 scripts/package/mkspec                                        |  27 ++-
 scripts/remove-stale-files                                    |  18 --
 tools/perf/tests/vmlinux-kallsyms.c                           |   1 -
 usr/Makefile                                                  |   4 +-
 95 files changed, 1016 insertions(+), 1467 deletions(-)
 rename {init =3D> scripts}/build-version (100%)
 rename scripts/{kconfig =3D> include}/array_size.h (100%)
 rename scripts/{kconfig =3D> include}/hashtable.h (100%)
 rename scripts/{kconfig =3D> include}/list.h (81%)
 rename scripts/{kconfig =3D> include}/list_types.h (100%)
 delete mode 100644 scripts/kconfig/tests/choice/oldask1_config
 delete mode 100644 scripts/kconfig/tests/choice/oldask1_expected_stdout
 delete mode 100644 scripts/kconfig/tests/choice_value_with_m_dep/Kconfig
 delete mode 100644 scripts/kconfig/tests/choice_value_with_m_dep/__init__.=
py
 delete mode 100644 scripts/kconfig/tests/choice_value_with_m_dep/config
 delete mode 100644
scripts/kconfig/tests/choice_value_with_m_dep/expected_config
 delete mode 100644
scripts/kconfig/tests/choice_value_with_m_dep/expected_stdout
 delete mode 100644 scripts/kconfig/tests/inter_choice/Kconfig
 delete mode 100644 scripts/kconfig/tests/inter_choice/__init__.py
 delete mode 100644 scripts/kconfig/tests/inter_choice/defconfig
 delete mode 100644 scripts/kconfig/tests/inter_choice/expected_config
 delete mode 100644 scripts/mod/list.h
 create mode 100644 scripts/package/PKGBUILD




--=20
Best Regards
Masahiro Yamada

.
Date: Tue, 23 Jul 2024 13:05:45 -0700
From: Kees Cook <kees@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Christian Brauner <brauner@kernel.org>,
	David Gow <davidgow@google.com>, Kees Cook <kees@kernel.org>,
	SeongJae Park <sj@kernel.org>
Subject: [GIT PULL] execve update for v6.11-rc1-fix1

Hi Linus,

Please pull this execve fix for v6.11-rc1. This moves the exec and
binfmt_elf tests out of your way and into the tests/ subdirectory,
following the newly ratified KUnit naming conventions. :)

Thanks!

-Kees

The following changes since commit 21f93108306026b8066db31c24a097192c8c36c7:

  exec: Avoid pathological argc, envc, and bprm->p values (2024-07-13 21:31:58 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git tags/execve-v6.11-rc1-fix1

for you to fetch changes up to b6f5ee4d53019443fb99dd23bc08680b1244ccfa:

  execve: Move KUnit tests to tests/ subdirectory (2024-07-22 18:25:47 -0700)

----------------------------------------------------------------
execve fix for v6.11-rc1

- Move KUnit tests to tests/ subdirectory

----------------------------------------------------------------
Kees Cook (1):
      execve: Move KUnit tests to tests/ subdirectory

 MAINTAINERS                                        | 3 ++-
 fs/binfmt_elf.c                                    | 2 +-
 fs/exec.c                                          | 2 +-
 fs/{binfmt_elf_test.c => tests/binfmt_elf_kunit.c} | 0
 fs/{exec_test.c => tests/exec_kunit.c}             | 0
 5 files changed, 4 insertions(+), 3 deletions(-)
 rename fs/{binfmt_elf_test.c => tests/binfmt_elf_kunit.c} (100%)
 rename fs/{exec_test.c => tests/exec_kunit.c} (100%)

-- 
Kees Cook

.
Date: Tue, 23 Jul 2024 20:58:12 +0000
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux F2FS Dev Mailing List <linux-f2fs-devel@lists.sourceforge.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] f2fs update for 6.11-rc1

Hi Linus,

Could you please consider this pull request?

Thanks,

The following changes since commit 2ef5971ff345d3c000873725db555085e0131961:

  Merge tag 'vfs-6.10-rc4.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs (2024-06-11 12:04:21 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/f2fs-for-6.11-rc1

for you to fetch changes up to bed6b0317441d82c32506750ccd868d83850e6f4:

  f2fs: clean up addrs_per_{inode,block}() (2024-07-10 23:15:36 +0000)

----------------------------------------------------------------
f2fs update for 6.11-rc1

It's a pretty small update including mostly minor bug fixes in zoned storage
along with the large section support.

Enhancement:
 - add support for FS_IOC_GETFSSYSFSPATH
 - enable atgc dynamically if conditions are met
 - use new ioprio Macro to get ckpt thread ioprio level
 - remove unreachable lazytime mount option parsing

Bug fix:
 - fix null reference error when checking end of zone
 - fix start segno of large section
 - fix to cover read extent cache access with lock
 - don't dirty inode for readonly filesystem
 - allocate a new section if curseg is not the first seg in its zone
 - only fragment segment in the same section
 - truncate preallocated blocks in f2fs_file_open()
 - fix to avoid use SSR allocate when do defragment
 - fix to force buffered IO on inline_data inode

And, it includes some minor code clean-ups, and sanity checks.

----------------------------------------------------------------
Chao Yu (12):
      f2fs: fix to do sanity check on F2FS_INLINE_DATA flag in inode during GC
      f2fs: fix to do sanity check on blocks for inline_data inode
      f2fs: add support for FS_IOC_GETFSSYSFSPATH
      f2fs: fix to force buffered IO on inline_data inode
      f2fs: fix to don't dirty inode for readonly filesystem
      f2fs: fix return value of f2fs_convert_inline_inode()
      f2fs: fix to cover read extent cache access with lock
      f2fs: fix to truncate preallocated blocks in f2fs_file_open()
      f2fs: remove redundant sanity check in sanity_check_inode()
      f2fs: fix to update user block counts in block_operations()
      f2fs: clean up F2FS_I()
      f2fs: clean up addrs_per_{inode,block}()

Daejun Park (1):
      f2fs: fix null reference error when checking end of zone

Eric Sandeen (1):
      f2fs: remove unreachable lazytime mount option parsing

Jaegeuk Kim (2):
      f2fs: clean up set REQ_RAHEAD given rac
      f2fs: assign CURSEG_ALL_DATA_ATGC if blkaddr is valid

Sheng Yong (3):
      f2fs: alloc new section if curseg is not the first seg in its zone
      f2fs: fix start segno of large section
      f2fs: only fragment segment in the same section

Sunmin Jeong (2):
      f2fs: use meta inode for GC of atomic file
      f2fs: use meta inode for GC of COW file

Zhiguo Niu (5):
      f2fs: fix to remove redundant SBI_NEED_FSCK flag set
      f2fs: fix to avoid use SSR allocate when do defragment
      f2fs: use new ioprio Macro to get ckpt thread ioprio level
      f2fs: enable atgc dynamically if conditions are met
      f2fs: fix to use mnt_{want,drop}_write_file replace file_{start,end}_wrtie

 fs/f2fs/checkpoint.c    |  11 ++--
 fs/f2fs/compress.c      |   2 +-
 fs/f2fs/data.c          |  27 ++++++----
 fs/f2fs/extent_cache.c  |  48 +++++++----------
 fs/f2fs/f2fs.h          |  78 +++++++++++++++-------------
 fs/f2fs/file.c          | 135 ++++++++++++++++++++++++++++++++++--------------
 fs/f2fs/gc.c            |  24 ++++++---
 fs/f2fs/inline.c        |  28 ++++++++--
 fs/f2fs/inode.c         |  84 ++++++++++++------------------
 fs/f2fs/namei.c         |  20 +++----
 fs/f2fs/recovery.c      |  11 ++--
 fs/f2fs/segment.c       |  54 +++++++++++++++----
 fs/f2fs/segment.h       |   3 +-
 fs/f2fs/super.c         |  11 +---
 fs/f2fs/sysfs.c         |  12 ++---
 include/linux/f2fs_fs.h |   7 ++-
 16 files changed, 329 insertions(+), 226 deletions(-)

.
Date: Tue, 23 Jul 2024 16:04:36 -0700
From: Namhyung Kim <namhyung@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-perf-users@vger.kernel.org
Subject: [GIT PULL] perf-tools fixes for v6.11-rc1

Hi Linus,

Please consider pulling the following changes in perf tools for v6.11.

Thanks,
Namhyung


The following changes since commit 7a2fb5619cc1fb53cb8784154d5ef2bd99997436:

  perf trace: Fix iteration of syscall ids in syscalltbl->entries (2024-07-12 09:49:02 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools.git tags/perf-tools-fixes-for-v6.11-2024-07-23

for you to fetch changes up to 92717bc077892d1ce60fee07aee3a33f33909b85:

  perf dso: Fix build when libunwind is enabled (2024-07-17 13:17:57 -0700)

----------------------------------------------------------------
perf tools fixes for v6.11

Two fixes about building perf and other tools:

* Fix breakage in tracing tools due to pkg-config for libtrace{event,fs}

* Fix build of perf when libunwind is used

Signed-off-by: Namhyung Kim <namhyung@kernel.org>

----------------------------------------------------------------
Guilherme Amadio (5):
      perf build: Warn if libtracefs is not found
      tools: Make pkg-config dependency checks usable by other tools
      tools/verification: Use pkg-config in lib_setup of Makefile.config
      tools/rtla: Use pkg-config in lib_setup of Makefile.config
      tools/latency: Use pkg-config in lib_setup of Makefile.config

James Clark (1):
      perf dso: Fix build when libunwind is enabled

 tools/build/Makefile.feature             | 18 ++++++++++++++++++
 tools/perf/Makefile.config               | 13 +++++--------
 tools/perf/util/dso.c                    |  2 +-
 tools/perf/util/dso.h                    |  5 +++++
 tools/perf/util/unwind-libunwind-local.c |  2 +-
 tools/tracing/latency/Makefile.config    |  3 ++-
 tools/tracing/rtla/Makefile.config       |  3 ++-
 tools/verification/rv/Makefile.config    |  3 ++-
 8 files changed, 36 insertions(+), 13 deletions(-)

.
Date: Tue, 23 Jul 2024 19:40:12 -0400
From: Gabriel Krisman Bertazi <krisman@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ben Dooks <ben.dooks@codethink.co.uk>, Jeff Johnson
 <quic_jjohnson@quicinc.com>, linux-fsdevel
 <linux-fsdevel@vger.kernel.org>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] trivial unicode patches for 6.11


The following changes since commit 6ba59ff4227927d3a8530fc2973b80e94b54d58f:

  Linux 6.10-rc4 (2024-06-16 13:40:16 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/krisman/unicode.git tags/unicode-next-6.11

for you to fetch changes up to 68318904a7758e11f16fa9d202a6df60f896e71a:

  unicode: add MODULE_DESCRIPTION() macros (2024-06-20 19:30:02 -0400)

----------------------------------------------------------------
Two small fixes to silent the compiler and static analyzers tools from
Ben Dooks and Jeff Johnson.

----------------------------------------------------------------
Ben Dooks (1):
      unicode: make utf8 test count static

Jeff Johnson (1):
      unicode: add MODULE_DESCRIPTION() macros

 fs/unicode/mkutf8data.c       | 1 +
 fs/unicode/utf8-selftest.c    | 5 +++--
 fs/unicode/utf8data.c_shipped | 1 +
 3 files changed, 5 insertions(+), 2 deletions(-)


-- 
Gabriel Krisman Bertazi

.
Date: Wed, 24 Jul 2024 13:15:49 +0530
From: Vinod Koul <vkoul@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [GIT PULL]: dmaengine updates for v6.11


--fRE79iUECku18urW
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hello Linus,

Please pull to receive dmaengine updates for this cycle. A new dmaengine
API with its user is the key feature of this request along with yaml
conversion and updates to bunch of drivers.

Please note that the tag dmaengine_topic_dma_vec was pulled into the iio
tree so you might have recieved that or might receive it from iio
people.

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git tags/dm=
aengine-6.11-rc1

for you to fetch changes up to b8ec9dba02a74797421c52b1226b23a4302362a6:

  dt-bindings: fsl-qdma: fix interrupts 'if' check logic (2024-07-10 15:42:=
40 +0530)

----------------------------------------------------------------
dmaengine updates for v6.11

 New support:
  - New dmaengine_prep_peripheral_dma_vec() to support transfers using dma
    vectors and documentation and user in AXI dma
  - STMicro STM32 DMA3 support and new capabilities of cyclic dma

 Updates:
  - Yaml conversion for Freescale imx dma and qdma bindings, sprd sc9860 dma
    binding
  - Altera msgdma updates for descriptor management

----------------------------------------------------------------
Amelie Delaunay (11):
      dt-bindings: dma: New directory for STM32 DMA controllers bindings
      dmaengine: stm32: New directory for STM32 DMA controllers drivers
      MAINTAINERS: Add entry for STM32 DMA controllers drivers and document=
ation
      dt-bindings: dma: Document STM32 DMA3 controller bindings
      dmaengine: Add STM32 DMA3 support
      dmaengine: stm32-dma3: add DMA_CYCLIC capability
      dmaengine: stm32-dma3: add DMA_MEMCPY capability
      dmaengine: stm32-dma3: add device_pause and device_resume ops
      dmaengine: stm32-dma3: improve residue granularity
      dmaengine: add channel device name to channel registration
      dmaengine: stm32-dma3: defer channel registration to specify channel =
name

Animesh Agarwal (1):
      dt-bindings: dma: fsl,imx-dma: Convert to dtschema

Biju Das (1):
      dmaengine: sh: rz-dmac: Fix lockdep assert warning

Dan Carpenter (1):
      dmaengine: qcom: gpi: clean up the IRQ disable/enable in gpi_reset_ch=
an()

Dr. David Alan Gilbert (2):
      dmaengine: moxart-dma: remove unused struct 'moxart_filter_data'
      dmaengine: qcom: gpi: remove unused struct 'reg_info'

Frank Li (4):
      dmaengine: fsl-edma: request per-channel IRQ only when channel is all=
ocated
      dmaengine: fsl-edma: remove redundant "idle" field from fsl_chan
      dt-bindings: fsl-qdma: Convert to yaml format
      dt-bindings: fsl-qdma: fix interrupts 'if' check logic

Jeff Johnson (6):
      dmaengine: add missing MODULE_DESCRIPTION() macros
      dmaengine: qcom: add missing MODULE_DESCRIPTION() macros
      dmaengine: virt-dma: add missing MODULE_DESCRIPTION() macro
      dmaengine: ti: cppi41: add missing MODULE_DESCRIPTION() macro
      dmaengine: ti: add missing MODULE_DESCRIPTION() macros
      dmaengine: fsl-dpaa2-qdma: add missing MODULE_DESCRIPTION() macro

Joy Zou (1):
      dmaengine: fsl-edma: change the memory access from local into remote =
mode in i.MX 8QM

Krzysztof Kozlowski (1):
      dmaengine: ti: k3-udma: fix module autoloading

Lucas Stach (2):
      firmware: add nowarn variant of request_firmware_nowait()
      dmaengine: imx-sdma: don't print warning when firmware is absent

Olivier Dautricourt (3):
      dmaengine: altera-msgdma: use irq variant of spin_lock/unlock while i=
nvoking callbacks
      dmaengine: altera-msgdma: cleanup after completing all descriptors
      dmaengine: altera-msgdma: properly free descriptor in msgdma_free_des=
criptor

Paul Cercueil (3):
      dmaengine: Add API function dmaengine_prep_peripheral_dma_vec()
      dmaengine: dma-axi-dmac: Implement device_prep_peripheral_dma_vec
      Documentation: dmaengine: Document new dma_vec API

Stanislav Jakubek (1):
      dt-bindings: dma: sprd,sc9860-dma: convert to YAML

Vignesh Raghavendra (1):
      dmaengine: ti: k3-udma: Fix BCHAN count with UHC and HC channels

Vinod Koul (1):
      Merge tag 'dmaengine_topic_dma_vec' into next

 .../devicetree/bindings/dma/fsl,imx-dma.yaml       |   56 +
 .../devicetree/bindings/dma/fsl-imx-dma.txt        |   50 -
 Documentation/devicetree/bindings/dma/fsl-qdma.txt |   58 -
 .../devicetree/bindings/dma/fsl-qdma.yaml          |  132 ++
 .../devicetree/bindings/dma/sprd,sc9860-dma.yaml   |   92 +
 Documentation/devicetree/bindings/dma/sprd-dma.txt |   44 -
 .../bindings/dma/{ =3D> stm32}/st,stm32-dma.yaml     |    4 +-
 .../bindings/dma/stm32/st,stm32-dma3.yaml          |  135 ++
 .../bindings/dma/{ =3D> stm32}/st,stm32-dmamux.yaml  |    4 +-
 .../bindings/dma/{ =3D> stm32}/st,stm32-mdma.yaml    |    4 +-
 .../devicetree/bindings/spi/st,stm32-spi.yaml      |    2 +-
 Documentation/driver-api/dmaengine/client.rst      |    9 +
 Documentation/driver-api/dmaengine/provider.rst    |   10 +
 MAINTAINERS                                        |    9 +
 drivers/base/firmware_loader/main.c                |  106 +-
 drivers/dma/Kconfig                                |   34 +-
 drivers/dma/Makefile                               |    4 +-
 drivers/dma/altera-msgdma.c                        |   16 +-
 drivers/dma/dma-axi-dmac.c                         |   40 +
 drivers/dma/dmaengine.c                            |   16 +-
 drivers/dma/dmatest.c                              |    1 +
 drivers/dma/fsl-dpaa2-qdma/dpdmai.c                |    1 +
 drivers/dma/fsl-edma-common.c                      |   24 +-
 drivers/dma/fsl-edma-common.h                      |    4 +-
 drivers/dma/fsl-edma-main.c                        |   34 +-
 drivers/dma/idxd/dma.c                             |    2 +-
 drivers/dma/idxd/init.c                            |    1 +
 drivers/dma/imx-sdma.c                             |    5 +-
 drivers/dma/ioat/init.c                            |    1 +
 drivers/dma/mcf-edma-main.c                        |    2 -
 drivers/dma/moxart-dma.c                           |    5 -
 drivers/dma/qcom/gpi.c                             |   11 +-
 drivers/dma/qcom/hidma.c                           |    1 +
 drivers/dma/qcom/hidma_mgmt.c                      |    1 +
 drivers/dma/sh/rz-dmac.c                           |    2 +-
 drivers/dma/stm32/Kconfig                          |   47 +
 drivers/dma/stm32/Makefile                         |    5 +
 drivers/dma/{ =3D> stm32}/stm32-dma.c                |    2 +-
 drivers/dma/stm32/stm32-dma3.c                     | 1847 ++++++++++++++++=
++++
 drivers/dma/{ =3D> stm32}/stm32-dmamux.c             |    0
 drivers/dma/{ =3D> stm32}/stm32-mdma.c               |    2 +-
 drivers/dma/ti/cppi41.c                            |    1 +
 drivers/dma/ti/k3-psil.c                           |    1 +
 drivers/dma/ti/k3-udma-glue.c                      |    1 +
 drivers/dma/ti/k3-udma.c                           |    6 +-
 drivers/dma/ti/omap-dma.c                          |    1 +
 drivers/dma/virt-dma.c                             |    1 +
 include/linux/dmaengine.h                          |   36 +-
 include/linux/firmware.h                           |   12 +
 49 files changed, 2592 insertions(+), 290 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/dma/fsl,imx-dma.yaml
 delete mode 100644 Documentation/devicetree/bindings/dma/fsl-imx-dma.txt
 delete mode 100644 Documentation/devicetree/bindings/dma/fsl-qdma.txt
 create mode 100644 Documentation/devicetree/bindings/dma/fsl-qdma.yaml
 create mode 100644 Documentation/devicetree/bindings/dma/sprd,sc9860-dma.y=
aml
 delete mode 100644 Documentation/devicetree/bindings/dma/sprd-dma.txt
 rename Documentation/devicetree/bindings/dma/{ =3D> stm32}/st,stm32-dma.ya=
ml (97%)
 create mode 100644 Documentation/devicetree/bindings/dma/stm32/st,stm32-dm=
a3.yaml
 rename Documentation/devicetree/bindings/dma/{ =3D> stm32}/st,stm32-dmamux=
=2Eyaml (90%)
 rename Documentation/devicetree/bindings/dma/{ =3D> stm32}/st,stm32-mdma.y=
aml (96%)
 create mode 100644 drivers/dma/stm32/Kconfig
 create mode 100644 drivers/dma/stm32/Makefile
 rename drivers/dma/{ =3D> stm32}/stm32-dma.c (99%)
 create mode 100644 drivers/dma/stm32/stm32-dma3.c
 rename drivers/dma/{ =3D> stm32}/stm32-dmamux.c (100%)
 rename drivers/dma/{ =3D> stm32}/stm32-mdma.c (99%)


--=20
~Vinod

--fRE79iUECku18urW
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE+vs47OPLdNbVcHzyfBQHDyUjg0cFAmagsS0ACgkQfBQHDyUj
g0fgQhAAjRuTDIRV8uazVkPT7HeuWXNapu8CA7z8BnAHKD49YSfO3JD0C+vymrIE
ly6a4G+4tssVa2xOFPzLuol1+umVI9xPqpoII4X3zQRgIxqUGEi7p/bQUC64EuLb
gVWGJmd2RpE+jq6cy7DshR2ha2BVfuiz62kptb7lCjGZ/PrDkkWTFsozm+kH9u8f
jrExdufi8CbSk4fRBPIv+W6FuoNhLLgcjkz1aBhPsrqvP1FKoOprouDpD8eu4A0I
O8IOqe1uSTscGoDD0q2w1ojkr7ZHzQhanvIfDUgVTb9/p5cwUjGj9y1kaHHRzv3G
NBr5jXyg9IfA3MjpBnM2stc/RpR1bDi09vyyf2OmJJW+qtYc+uHZ5ATjjUHRE60E
167sFob2S02AU58unN8p+oo1WOR0+rJcDkC3GumBecz8uaVUTLlhylLc4XlU4q8H
HVDYwGnppUYDmzkt9tcD2OK6SoeqkuPbflk7946ergyZ8VRrL5OdgFA39P70I0Ah
reeaOuMJKgKfJ6T1p85YqCp3uI5ab3jZKw8h7E7h1KOs7dLMmFHs48sfknGadke9
5DxTzSFnw+znR9941/2teC1UZcZ8gKRFj0er8FS9D+oEYziwslv7z6WEMlYxleGA
CZH2mLpfZS2NzyvrESAw6k/AFn6PdHWbj/sXc7kGhJBu8gcNs+g=
=5906
-----END PGP SIGNATURE-----

--fRE79iUECku18urW--

.
Date: Wed, 24 Jul 2024 13:17:57 +0530
From: Vinod Koul <vkoul@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [GIT PULL]: Generic phy updates for v6.11


--k1mDpk1/Cp1/jO8V
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hello again,

Second request for generic phy subsystem feature bunch of new driver and
device support and updates to few of the drivers

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git tags/phy-=
for-6.11

for you to fetch changes up to 2a011c3c12e8de461fb1fdce85fa38d308c4eb8b:

  phy: airoha: Add dtime and Rx AEQ IO registers (2024-07-02 18:54:28 +0530)

----------------------------------------------------------------
phy-for-6.11

- New Support
  - Samsung Exynos gs101 drd combo phy
  - Qualcomm SC8180x USB uniphy, IPQ9574 QMP PCIe phy
  - Airoha EN7581 PCIe phy
  - Freescale i.MX8Q HSIO SerDes phy
  - Starfive jh7110 dphy tx

- Updates
  - Resume support for j721e-wiz driver
  - Updates to Exynos usbdrd driver
  - Support for optional power domains in g12a usb2-phy driver
  - Debugfs support and updates to zynqmp driver

----------------------------------------------------------------
Andr=E9 Draszik (11):
      phy: exynos5-usbdrd: uniform order of register bit macros
      phy: exynos5-usbdrd: convert udelay() to fsleep()
      phy: exynos5-usbdrd: make phy_isol() take a bool for clarity
      phy: exynos5-usbdrd: fix definition of EXYNOS5_FSEL_26MHZ
      phy: exynos5-usbdrd: set ref clk freq in exynos850_usbdrd_utmi_init()
      dt-bindings: phy: samsung,usb3-drd-phy: add gs101 compatible
      phy: exynos5-usbdrd: support isolating HS and SS ports independently
      phy: exynos5-usbdrd: convert core clocks to clk_bulk
      phy: exynos5-usbdrd: convert (phy) register access clock to clk_bulk
      phy: exynos5-usbdrd: convert Vbus supplies to regulator_bulk
      phy: exynos5-usbdrd: support Exynos USBDRD 3.1 combo phy (HS & SS)

Bjorn Andersson (2):
      dt-bindings: phy: qcom,sc8280xp-qmp-usb3-uni: Add sc8180x USB3 compat=
ible
      phy: qcom-qmp-usb: Add sc8180x USB UNIPHY

Changhuang Liang (1):
      phy: starfive: Correct the dphy configure process

Cristian Ciocaltea (1):
      phy: phy-rockchip-samsung-hdptx: Select CONFIG_MFD_SYSCON

Dmitry Baryshkov (2):
      phy: qcom: qmp-pcie: restore compatibility with existing DTs
      dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: drop second output cloc=
k name

Dr. David Alan Gilbert (2):
      phy: starfive: remove unused struct 'regval'
      phy: miphy28lp: remove unused struct 'miphy_initval'

Herman van Hazendonk (1):
      dt-bindings: phy: qcom,usb-hs-phy: Add compatible

Jan Kiszka (1):
      phy: ti: am654-serdes: Remove duplicate define

Jeff Johnson (1):
      phy: broadcom: add missing MODULE_DESCRIPTION() macros

Josua Mayer (1):
      dt-bindings: phy: armada-cp110-utmi: add optional swap-dx-lanes prope=
rty

Liu Jing (1):
      phy: Fix the cacography in phy-exynos5250-usb2.c

Lorenzo Bianconi (4):
      dt-bindings: phy: airoha: Add PCIe PHY controller
      phy: airoha: Add PCIe PHY driver for EN7581 SoC.
      dt-bindings: phy: airoha: Add dtime and Rx AEQ IO registers
      phy: airoha: Add dtime and Rx AEQ IO registers

Ma Ke (1):
      phy: cadence-torrent: Check return value on register read

Miaoqian Lin (1):
      phy: core: Fix documentation of of_phy_get

Nathan Chancellor (1):
      phy: freescale: imx8qm-hsio: Include bitfield.h for FIELD_PREP

Neil Armstrong (1):
      dt-bindings: phy: g12a-usb2-phy: add optional power-domains

Richard Zhu (2):
      dt-bindings: phy: Add i.MX8Q HSIO SerDes PHY binding
      phy: freescale: imx8qm-hsio: Add i.MX8QM HSIO PHY driver support

Sean Anderson (5):
      phy: zynqmp: Enable reference clock correctly
      phy: zynqmp: Store instance instead of type
      phy: zynqmp: Only wait for PLL lock "primary" instances
      phy: zynqmp: Take the phy mutex in xlate
      phy: zynqmp: Add debugfs support

Shengyang Chen (2):
      dt-bindings: phy: Add starfive,jh7110-dphy-tx
      phy: starfive: Add mipi dphy tx support

Shresth Prasad (1):
      dt-bindings: phy: rockchip-emmc-phy: Convert to dtschema

Swapnil Jakhade (1):
      phy: cadence-torrent: Add SGMII + QSGMII multilink configuration for =
100MHz refclk

Thomas Richard (8):
      phy: ti: phy-j721e-wiz: use dev_err_probe() instead of dev_err()
      phy: ti: phy-j721e-wiz: split wiz_clock_init() function
      phy: ti: phy-j721e-wiz: add resume support
      phy: cadence-torrent: extract calls to clk_get from cdns_torrent_clk
      phy: cadence-torrent: register resets even if the phy is already conf=
igured
      phy: cadence-torrent: add already_configured to struct cdns_torrent_p=
hy
      phy: cadence-torrent: remove noop_ops phy operations
      phy: cadence-torrent: add suspend and resume support

Yijie Yang (1):
      dt-bindings: phy: qcom,qmp-usb: fix spelling error

devi priya (4):
      dt-bindings: phy: qcom,ipq8074-qmp-pcie: Document the IPQ9574 QMP PCI=
e PHYs
      phy: qcom-qmp: Add missing offsets for Qserdes PLL registers.
      phy: qcom-qmp: Add missing register definitions for PCS V5
      phy: qcom-qmp-pcie: Add support for IPQ9574 g3x1 and g3x2 PCIEs

 .../bindings/phy/airoha,en7581-pcie-phy.yaml       |   69 ++
 .../bindings/phy/amlogic,g12a-usb2-phy.yaml        |    3 +
 .../devicetree/bindings/phy/fsl,imx8qm-hsio.yaml   |  164 +++
 .../phy/marvell,armada-cp110-utmi-phy.yaml         |    6 +
 .../bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml    |    2 +
 .../bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml   |    7 +-
 .../phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml        |    5 +-
 .../devicetree/bindings/phy/qcom,usb-hs-phy.yaml   |    2 +
 .../bindings/phy/rockchip,rk3399-emmc-phy.yaml     |   64 +
 .../devicetree/bindings/phy/rockchip-emmc-phy.txt  |   43 -
 .../bindings/phy/samsung,usb3-drd-phy.yaml         |   77 +-
 .../bindings/phy/starfive,jh7110-dphy-tx.yaml      |   68 ++
 .../devicetree/bindings/soc/rockchip/grf.yaml      |   16 +-
 MAINTAINERS                                        |   15 +
 drivers/phy/Kconfig                                |   10 +
 drivers/phy/Makefile                               |    1 +
 drivers/phy/broadcom/phy-bcm-ns-usb2.c             |    1 +
 drivers/phy/broadcom/phy-bcm-ns-usb3.c             |    1 +
 drivers/phy/cadence/phy-cadence-torrent.c          |  207 +++-
 drivers/phy/freescale/Kconfig                      |    9 +-
 drivers/phy/freescale/Makefile                     |    1 +
 drivers/phy/freescale/phy-fsl-imx8qm-hsio.c        |  611 ++++++++++
 drivers/phy/phy-airoha-pcie-regs.h                 |  494 ++++++++
 drivers/phy/phy-airoha-pcie.c                      | 1286 ++++++++++++++++=
++++
 drivers/phy/phy-core.c                             |    2 +-
 drivers/phy/qualcomm/phy-qcom-qmp-pcie.c           |  318 ++++-
 drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v5.h    |   14 +
 drivers/phy/qualcomm/phy-qcom-qmp-qserdes-pll.h    |    3 +
 drivers/phy/qualcomm/phy-qcom-qmp-usb.c            |    3 +
 drivers/phy/rockchip/Kconfig                       |    2 +
 drivers/phy/samsung/phy-exynos5-usbdrd.c           | 1053 +++++++++++++---
 drivers/phy/samsung/phy-exynos5250-usb2.c          |    2 +-
 drivers/phy/st/phy-miphy28lp.c                     |    5 -
 drivers/phy/starfive/Kconfig                       |   10 +
 drivers/phy/starfive/Makefile                      |    1 +
 drivers/phy/starfive/phy-jh7110-dphy-rx.c          |    5 -
 drivers/phy/starfive/phy-jh7110-dphy-tx.c          |  461 +++++++
 drivers/phy/ti/phy-am654-serdes.c                  |    1 -
 drivers/phy/ti/phy-j721e-wiz.c                     |  133 +-
 drivers/phy/xilinx/phy-zynqmp.c                    |  198 +--
 include/linux/soc/samsung/exynos-regs-pmu.h        |    4 +
 41 files changed, 4925 insertions(+), 452 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/phy/airoha,en7581-pci=
e-phy.yaml
 create mode 100644 Documentation/devicetree/bindings/phy/fsl,imx8qm-hsio.y=
aml
 create mode 100644 Documentation/devicetree/bindings/phy/rockchip,rk3399-e=
mmc-phy.yaml
 delete mode 100644 Documentation/devicetree/bindings/phy/rockchip-emmc-phy=
=2Etxt
 create mode 100644 Documentation/devicetree/bindings/phy/starfive,jh7110-d=
phy-tx.yaml
 create mode 100644 drivers/phy/freescale/phy-fsl-imx8qm-hsio.c
 create mode 100644 drivers/phy/phy-airoha-pcie-regs.h
 create mode 100644 drivers/phy/phy-airoha-pcie.c
 create mode 100644 drivers/phy/starfive/phy-jh7110-dphy-tx.c
--=20
~Vinod

--k1mDpk1/Cp1/jO8V
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE+vs47OPLdNbVcHzyfBQHDyUjg0cFAmagsa0ACgkQfBQHDyUj
g0c6CRAAtQmq0V694Gjzep/QAJFiEUgi3z01ypJy0Tp6RYRQqRVZL38bURd/uF1I
NCnF4nEXv/N6tpbjNMesAtMc/CeKXPmB2JwvaMMfM69Nbj9jAaJCq0U7rpU5FA3y
e2YtrdT/vm4MFLYlTDqWkqnb5IsQe851nEq7ghxDKX4Ak36AyGRMlUmChIV1WudX
A/6QiZphunWgYdHtVRBAmRZnzWthQAgxPDUpybyMjPWQwx8NLt1tE2/mGfMvdZoJ
r++vykW4gm0/0VdTkZREop8CuD8azFVg8WoxbifSZ+tXbg5vrXNSA5fYRwLuhe1A
a+/5pNPtQYWGiDtIhj73+Xb2YsExUATPGNkutvNLNy3Lw2xZpN77fCJYO/KFERj7
QCo9FTG5YiMVQEPVawktdnad1Oyx4rsZwjLrXoD+yl1o9x/pUhGvC3Gz10yUHA5c
Cycvvbr54mUdWcTIbYmwAr0S2WS7xJCjjg2/AIgajv9pm+Ysn3URJy6mx15X2vh4
RQZdrEEGmbfY3XtNgLezZYfd2q0Sx8bVIJ5oTsZ/YG7oLektTfvPMMZlcQP8NhOj
asPE8eNU9tRJM5fmpwyPHqrLQMWri0sAOH9V9pg0RoVkHTR+dc4qF1du5//Kg/Sj
KNyP5KwiQ5hukIDbG8Cnqg58SRvKMunHsVLibkVoQqF79Jce3HI=
=30MT
-----END PGP SIGNATURE-----

--k1mDpk1/Cp1/jO8V--

.
Date: Wed, 24 Jul 2024 13:20:33 +0530
From: Vinod Koul <vkoul@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [GIT PULL]: Soundwire updates for v6.11


--XJG5oV6dLusnWwqG
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hello Linus,

Last one in the lot for the soundwire subsystem updates. Fairly small
one with a cleanup pile, debugfs command support and typical updates
to drivers

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire.git tags/so=
undwire-6.11-rc1

for you to fetch changes up to fdd3d14ca3c8c5269174f10d33d6181173cbd0b4:

  soundwire: debugfs: simplify with cleanup.h (2024-07-09 19:12:49 +0530)

----------------------------------------------------------------
soundwire updates for 6.11

 - Simplification across subsystem using cleanup.h
 - Support for debugfs to read/write commands
 - Few Intel and Qualcomm driver updates

----------------------------------------------------------------
Bard Liao (2):
      soundwire: generic_bandwidth_allocation: change port_bo parameter to =
pointer
      soundwire: intel_auxdevice: add cs42l43 codec to wake_capable_list

Krzysztof Kozlowski (10):
      soundwire: bus: simplify by using local slave->prop
      soundwire: amd: simplify return path in hw_params
      soundwire: amd: simplify with cleanup.h
      soundwire: amd_init: simplify with cleanup.h
      soundwire: intel: simplify return path in hw_params
      soundwire: intel: simplify with cleanup.h
      soundwire: intel_ace2x: simplify return path in hw_params
      soundwire: intel_ace2x: simplify with cleanup.h
      soundwire: cadence: simplify with cleanup.h
      soundwire: debugfs: simplify with cleanup.h

Pierre-Louis Bossart (5):
      soundwire: debugfs: add interface to read/write commands
      soundwire: bus: add stream refcount
      soundwire: intel_ace2.x: add AC timing extensions for PantherLake
      soundwire: Intel: clarify Copyright information
      soundwire: intel_auxdevice: start the bus at default frequency

Srinivas Kandagatla (1):
      drivers:soundwire: qcom: cleanup port maask calculations

 drivers/soundwire/amd_init.c                     |   7 +-
 drivers/soundwire/amd_manager.c                  |  13 +-
 drivers/soundwire/bus.c                          |   6 +-
 drivers/soundwire/cadence_master.c               |   5 +-
 drivers/soundwire/debugfs.c                      | 157 +++++++++++++++++++=
+++-
 drivers/soundwire/generic_bandwidth_allocation.c |  14 +-
 drivers/soundwire/intel.c                        |  25 ++--
 drivers/soundwire/intel.h                        |   5 +
 drivers/soundwire/intel_ace2x.c                  |  39 +++---
 drivers/soundwire/intel_ace2x_debugfs.c          |   2 +-
 drivers/soundwire/intel_auxdevice.c              |  42 ++++++
 drivers/soundwire/intel_bus_common.c             |   2 +-
 drivers/soundwire/qcom.c                         |  22 +---
 drivers/soundwire/stream.c                       |   5 +
 include/linux/soundwire/sdw.h                    |   2 +
 include/linux/soundwire/sdw_intel.h              |   5 +
 16 files changed, 271 insertions(+), 80 deletions(-)

--=20
~Vinod

--XJG5oV6dLusnWwqG
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE+vs47OPLdNbVcHzyfBQHDyUjg0cFAmagskkACgkQfBQHDyUj
g0dMzg//YwiKDDQR9qnvBLGv2ndhv/uX8eMVjOpPWqkRYlogKbqY3fUUYPy6Laze
V9bO3PLqwH8GmFrVzmwqjiwx2AOWOKGjDExOglEziztjH1mXSUvc8HaQbqhuudoq
bRPe0i7ImYDoy+Mit2S0FzouTGhPAOVUPYU29r6tekG7XgB2DXK6qngdJ45jcCcK
tTqKj8P1FgKJ2mK/0zSogY7kDmXp9XdOgpUrKZXA+GC0QpKzDl/HjNYOst4hYEan
FimSXEx6srpnVmI8qbnb2B6tCuJV7mM8D4Wapr9b6Aihrp1PBP8ocI9l3A8ANZwI
6cq3jfHQR79qBt6RCytzo7eR0BlgKalAQFVQ7W0VhdxDnwTV/jvTXC7Qnl7g5P+r
EyQ0EIRm0bHrUc/FFZnFskepe2XYrg0UDEaIad5z6qqfzjYPJYcaM1YOjWw25yUM
kUurC2xmkaFurS42gvUu8rritDICCNlsOtaQ6bvdTgToEwIocOodo5hPyUdqI6NO
fxMimmXQ7RMi4D87yCXKg4Wnd6PDlj4Bjxue/HLFqQuJXoZAeKGnqM801hdku6TV
TTFwoDBIuRTPwMDU1f4CXypd+fYh93fWgMqPGz2XfifAwS2DYsBQPpq3JUnQe8h2
W7EdrejTXc2VDux88A2jH1N2I/hOHnmwnPntJ42wwjDw5YaaQ+w=
=3m2l
-----END PGP SIGNATURE-----

--XJG5oV6dLusnWwqG--

.
Date: Wed, 24 Jul 2024 11:19:49 +0200
From: Christian Brauner <brauner@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Christian Brauner <brauner@kernel.org>,
	linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] vfs fixes

/* Summary */
This contains fixes for this merge window:

VFS:

- The new 64bit mount ids start after the old mount id, i.e., at the first
  non-32 bit value. However, we started counting one id too late and thus lost
  4294967296 as the first valid id. Fix that.

- Update a few comments on some vfs_*() creation helpers.

- Move copying of the xattr name out from the locks required to start a
  filesystem write.

- Extend the filelock lock UAF fix to the compat code as well.

- Now that we added the ability to look up an inode under RCU it's possible
  that lockless hash lookup can find and lock an inode after it gets I_FREEING
  set. It then waits until inode teardown in evict() is finished.

  The flag however is still set after evict() has woken up all waiters. If the
  inode lock is taken late enough on the waiting side after hash removal and
  wakeup happened the waiting thread will never be woken.

  Before RCU based lookup this was synchronized via the inode_hash_lock. But
  since unhashing requires the inode lock as well we can check whether the
  inode is unhashed while holding inode lock even without holding
  inode_hash_lock.

pidfd:

- The nsproxy structure contains nearly all of the namespaces associated with a
  task. When a namespace type isn't supported nsproxy might contain a NULL
  pointer or always point to the initial namespace type. The logic isn't
  consistent. So when deriving namespace fds we need to ensure that the
  namespace type is supported.

  First, so that we don't risk dereferncing NULL pointers. The correct bigger
  fix would be to change all namespaces to always set a valid namespace pointer
  in struct nsproxy independent of whether or not it is compiled in. But that
  requires quite a few changes.

  Second, so that we don't allow deriving namespace fds when the namespace type
  doesn't exist and thus when they couldn't also be derived via /proc/self/ns/.

- Add missing selftests for the new pidfd ioctls to derive namespace fds. This
  simply extends the already existing testsuite.

netfs:

- Fix debug logging and fix kconfig variable name so it actually works.

- Fix writeback that goes both to the server and cache. The streams are only
  activated once a subreq is added. When a server write happens the subreq
  doesn't need to have finished by the time the cache write is started. If the
  server write has already finished by the time the cache write is about to
  start the cache write will operate on a folio that might already have been
  reused. Fix this by preactivating the cache write.

- Limit cachefiles subreq size for cache writes to MAX_RW_COUNT.

The following changes since commit 933069701c1b507825b514317d4edd5d3fd9d417:

  Merge tag '6.11-rc-smb3-server-fixes' of git://git.samba.org/ksmbd (2024-07-21 20:50:39 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.11-rc1.fixes.2

for you to fetch changes up to f5e5e97c719d289025afce07050effcf1f7373ef:

  inode: clarify what's locked (2024-07-24 11:11:40 +0200)

Please consider pulling these changes from the signed vfs-6.11-rc1.fixes.2 tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.11-rc1.fixes.2

----------------------------------------------------------------
Christian Brauner (4):
      pidfs: handle kernels without namespaces cleanly
      pidfs: add selftests for new namespace ioctls
      fs: use all available ids
      inode: clarify what's locked

Congjie Zhou (1):
      vfs: correct the comments of vfs_*() helpers

David Howells (5):
      netfs: Revert "netfs: Switch debug logging to pr_debug()"
      netfs: Rename CONFIG_FSCACHE_DEBUG to CONFIG_NETFS_DEBUG
      netfs: Fix writeback that needs to go to both server and cache
      cachefiles: Set the max subreq size for cache writes to MAX_RW_COUNT
      vfs: Fix potential circular locking through setxattr() and removexattr()

Edward Adam Davis (1):
      pidfs: when time ns disabled add check for ioctl

Jann Horn (1):
      filelock: Fix fcntl/close race recovery compat path

Mateusz Guzik (1):
      vfs: handle __wait_on_freeing_inode() and evict() race

 fs/cachefiles/io.c                               |   2 +-
 fs/inode.c                                       |  40 +++-
 fs/locks.c                                       |   9 +-
 fs/namei.c                                       |  26 +--
 fs/namespace.c                                   |   2 +-
 fs/netfs/Kconfig                                 |  18 +-
 fs/netfs/buffered_read.c                         |  14 +-
 fs/netfs/buffered_write.c                        |  12 +-
 fs/netfs/direct_read.c                           |   2 +-
 fs/netfs/direct_write.c                          |   8 +-
 fs/netfs/fscache_cache.c                         |   4 +-
 fs/netfs/fscache_cookie.c                        |  28 +--
 fs/netfs/fscache_io.c                            |  12 +-
 fs/netfs/fscache_main.c                          |   2 +-
 fs/netfs/fscache_volume.c                        |   4 +-
 fs/netfs/internal.h                              |  33 ++-
 fs/netfs/io.c                                    |  12 +-
 fs/netfs/main.c                                  |   4 +
 fs/netfs/misc.c                                  |   4 +-
 fs/netfs/write_collect.c                         |  16 +-
 fs/netfs/write_issue.c                           |  37 ++--
 fs/pidfs.c                                       |  63 ++++--
 fs/xattr.c                                       |  91 ++++----
 tools/testing/selftests/pidfd/pidfd_setns_test.c | 258 ++++++++++++++++++++---
 24 files changed, 488 insertions(+), 213 deletions(-)

.
Date: Wed, 24 Jul 2024 13:52:54 +0200
From: Wim Van Sebroeck <wim@linux-watchdog.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux Watchdog Mailing List <linux-watchdog@vger.kernel.org>,
	Guenter Roeck <linux@roeck-us.net>,
	Biju Das <biju.das.jz@bp.renesas.com>, Chen Ni <nichen@iscas.ac.cn>,
	Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Thomas =?iso-8859-1?Q?Wei=DFschuh?= <linux@weissschuh.net>
Subject: [GIT PULL REQUEST] watchdog - v6.11 release cycle.

Hi Linus,

On this sad day where the belgian linux community said goodbye to P2:
Please pull following watchdog changes for the v6.11 release cycle.

This series contains:
* Make watchdog_class const
* reworking of the rzg2l_wdt driver
* Other small fixes and improvements

The output from git request-pull:
----------------------------------------------------------------
The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the git repository at:

  git://www.linux-watchdog.org/linux-watchdog.git tags/linux-watchdog-6.11-rc1

for you to fetch changes up to 63d097d46799dc6ab4d1430482cd5ab6a409c4ec:

  dt-bindings: watchdog: dlg,da9062-watchdog: Drop blank space (2024-07-18 20:35:41 +0200)

----------------------------------------------------------------
linux-watchdog 6.11-rc1 tag

----------------------------------------------------------------
Biju Das (1):
      dt-bindings: watchdog: dlg,da9062-watchdog: Drop blank space

Chen Ni (3):
      watchdog: starfive: Add missing clk_disable_unprepare()
      watchdog: lenovo_se10_wdt: Convert comma to semicolon
      watchdog: rzn1: Convert comma to semicolon

Claudiu Beznea (9):
      watchdog: rzg2l_wdt: Restrict the driver to ARCH_RZG2L and ARCH_R9A09G011
      watchdog: rzg2l_wdt: Make the driver depend on PM
      watchdog: rzg2l_wdt: Use pm_runtime_resume_and_get()
      watchdog: rzg2l_wdt: Check return status of pm_runtime_put()
      watchdog: rzg2l_wdt: Remove reset de-assert from probe
      watchdog: rzg2l_wdt: Remove comparison with zero
      watchdog: rzg2l_wdt: Rely on the reset driver for doing proper reset
      watchdog: rzg2l_wdt: Add suspend/resume support
      dt-bindings: watchdog: renesas,wdt: Document RZ/G3S support

Sascha Hauer (1):
      watchdog: imx7ulp_wdt: keep already running watchdog enabled

Thomas Weißschuh (1):
      watchdog: Make watchdog_class const

 .../bindings/watchdog/dlg,da9062-watchdog.yaml     |   2 +-
 .../devicetree/bindings/watchdog/renesas,wdt.yaml  |   1 +
 drivers/watchdog/Kconfig                           |   3 +-
 drivers/watchdog/imx7ulp_wdt.c                     |   5 +
 drivers/watchdog/lenovo_se10_wdt.c                 |   4 +-
 drivers/watchdog/rzg2l_wdt.c                       | 113 ++++++++++++---------
 drivers/watchdog/rzn1_wdt.c                        |   6 +-
 drivers/watchdog/starfive-wdt.c                    |   4 +-
 drivers/watchdog/watchdog_dev.c                    |   2 +-
 9 files changed, 81 insertions(+), 59 deletions(-)
----------------------------------------------------------------

Kind regards,
Wim.


.
Date: Wed, 24 Jul 2024 07:39:35 -0700
From: Christoph Hellwig <hch@infradead.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev
Subject: [GIT PULL] dma-mapping fix for Linux 6.11

The following changes since commit b69bdba5a37eb6224039e9572e0e98fc3a931fee:

  swiotlb: fix kernel-doc description for swiotlb_del_transient (2024-07-13 07:36:10 +0200)

are available in the Git repository at:

  git://git.infradead.org/users/hch/dma-mapping.git tags/dma-mapping-6.11-2024-07-24

for you to fetch changes up to 28e8b7406d3a1f5329a03aa25a43aa28e087cb20:

  dma: fix call order in dmam_free_coherent (2024-07-19 07:27:28 +0200)

----------------------------------------------------------------
dma-mapping fix for Linux 6.11

 - fix the order of actions in dmam_free_coherent (Lance Richardson)

----------------------------------------------------------------
Lance Richardson (1):
      dma: fix call order in dmam_free_coherent

 kernel/dma/mapping.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

.
Date: Wed, 24 Jul 2024 17:54:06 +0200 (CEST)
From: Richard Weinberger <richard@nod.at>
To: torvalds <torvalds@linux-foundation.org>
Cc: linux-um <linux-um@lists.infradead.org>, 
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] UML Changes for v6.11-rc1

Linus,

The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/uml/linux.git tags/uml-for-linus-6.11-rc1

for you to fetch changes up to 98ff534ec2cd02496c166614e6c1391d8e092e51:

  um: vector: always reset vp->opened (2024-07-04 12:03:26 +0200)

----------------------------------------------------------------
This pull request contains the following changes for UML:

- Support for preemption
- i386 Rust support
- Huge cleanup by Benjamin Berg
- UBSAN support
- Removal of dead code

----------------------------------------------------------------
Anton Ivanov (2):
      um: Remove obsolete pcap driver
      um: Enable preemption in UML

Benjamin Berg (16):
      um: irqs: process outstanding IRQs when unblocking signals
      um: chan_user: catch EINTR when reading and writing
      um: chan_user: retry partial writes
      um: chan: use blocking IO for console output for time-travel
      um: Remove stub-data.h include from common-offsets.h
      um: Create signal stack memory assignment in stub_data
      um: Add generic stub_syscall6 function
      um: Rework syscall handling
      um: compress memory related stub syscalls while adding them
      um: remove LDT support
      um: remove copy_context_skas0
      um: Delay flushing syscalls until the thread is restarted
      um: Do not flush MM in flush_thread
      um: remove force_flush_all from fork_handler
      um: simplify and consolidate TLB updates
      um: refactor TLB update handling

David Gow (2):
      arch: um: rust: Use the generated target.json again
      arch: um: rust: Add i386 support for Rust

Dr. David Alan Gilbert (1):
      ubd: Remove unused mutex 'ubd_mutex'

Jeff Johnson (2):
      um: harddog: add missing MODULE_DESCRIPTION() macro
      hostfs: add missing MODULE_DESCRIPTION() macro

Johannes Berg (13):
      um: time-travel: fix time-travel-start option
      um: enable UBSAN
      hostfs: fix dev_t handling
      um: generalize os_rcv_fd
      um: add mmap/mremap OS calls
      um: add shared memory optimisation for time-travel=ext
      um: time-travel: remove time_exit()
      um: time-travel: fix signal blocking race/hang
      um: remove pcap driver from documentation
      um: line: always fill *error_out in setup_one_line()
      um: register power-off handler
      um: vector: remove vp->lock
      um: vector: always reset vp->opened

Mordechay Goodstein (1):
      um: time-travel: support time-travel protocol broadcast messages

Niklas Schnelle (1):
      um: Select HAS_IOREMAP for UML_IOMEM_EMULATION

Tiwei Bie (2):
      um: Remove unused ncpus variable
      um: Remove /proc/sysemu support code

Wei Yang (1):
      um/mm: remove redundant assignment of max_low_pfn

 Documentation/rust/arch-support.rst                |   2 +-
 .../virt/uml/user_mode_linux_howto_v2.rst          |   2 -
 arch/um/Kconfig                                    |   8 +-
 arch/um/drivers/Kconfig                            |  20 -
 arch/um/drivers/Makefile                           |  10 +-
 arch/um/drivers/chan.h                             |   3 +-
 arch/um/drivers/chan_kern.c                        |  81 ++-
 arch/um/drivers/chan_user.c                        |  20 +-
 arch/um/drivers/harddog_kern.c                     |   1 +
 arch/um/drivers/line.c                             |   2 +
 arch/um/drivers/pcap_kern.c                        | 113 -----
 arch/um/drivers/pcap_user.c                        | 137 ------
 arch/um/drivers/pcap_user.h                        |  21 -
 arch/um/drivers/port_kern.c                        |  14 +-
 arch/um/drivers/ubd_kern.c                         |   3 -
 arch/um/drivers/vector_kern.c                      |  19 +-
 arch/um/drivers/vector_kern.h                      |   1 -
 arch/um/drivers/xterm.c                            |   2 +-
 arch/um/drivers/xterm_kern.c                       |  13 +-
 arch/um/include/asm/mmu.h                          |  10 +-
 arch/um/include/asm/mmu_context.h                  |   2 -
 arch/um/include/asm/pgtable.h                      |  32 ++
 arch/um/include/asm/tlbflush.h                     |  46 +-
 arch/um/include/shared/as-layout.h                 |   2 +-
 arch/um/include/shared/common-offsets.h            |   5 -
 arch/um/include/shared/kern_util.h                 |   1 -
 arch/um/include/shared/os.h                        |  33 +-
 arch/um/include/shared/skas/mm_id.h                |   2 +-
 arch/um/include/shared/skas/skas.h                 |   2 +
 arch/um/include/shared/skas/stub-data.h            |  36 +-
 arch/um/include/shared/timetravel.h                |   9 +
 arch/um/include/shared/user.h                      |   8 +
 arch/um/kernel/exec.c                              |   9 -
 arch/um/kernel/irq.c                               |  80 +--
 arch/um/kernel/ksyms.c                             |   2 +-
 arch/um/kernel/mem.c                               |   1 -
 arch/um/kernel/process.c                           |  69 ---
 arch/um/kernel/reboot.c                            |  15 +
 arch/um/kernel/skas/Makefile                       |   9 +-
 arch/um/kernel/skas/clone.c                        |  48 --
 arch/um/kernel/skas/mmu.c                          |  54 +-
 arch/um/kernel/skas/process.c                      |  18 +
 arch/um/kernel/skas/stub.c                         |  69 +++
 arch/um/kernel/time.c                              | 187 ++++++-
 arch/um/kernel/tlb.c                               | 545 ++++-----------------
 arch/um/kernel/trap.c                              |  15 +-
 arch/um/kernel/um_arch.c                           |   3 -
 arch/um/os-Linux/file.c                            |  94 ++--
 arch/um/os-Linux/signal.c                          | 118 ++++-
 arch/um/os-Linux/skas/mem.c                        | 245 +++++----
 arch/um/os-Linux/skas/process.c                    | 124 +----
 arch/um/os-Linux/start_up.c                        |   1 +
 arch/x86/Makefile.um                               |   1 +
 arch/x86/um/Makefile                               |   5 +-
 arch/x86/um/asm/mm_context.h                       |  70 ---
 arch/x86/um/ldt.c                                  | 380 --------------
 arch/x86/um/shared/sysdep/stub.h                   |   2 +-
 arch/x86/um/shared/sysdep/stub_32.h                |  45 +-
 arch/x86/um/shared/sysdep/stub_64.h                |  41 +-
 arch/x86/um/stub_32.S                              |  56 ---
 arch/x86/um/stub_64.S                              |  50 --
 arch/x86/um/tls_32.c                               |   1 +
 fs/hostfs/hostfs.h                                 |   7 +-
 fs/hostfs/hostfs_kern.c                            |  11 +-
 fs/hostfs/hostfs_user.c                            |   7 +-
 include/uapi/linux/um_timetravel.h                 | 190 ++++++-
 rust/Makefile                                      |   2 +-
 scripts/Makefile                                   |   2 +-
 scripts/generate_rust_target.rs                    |  17 +
 69 files changed, 1297 insertions(+), 1956 deletions(-)
 delete mode 100644 arch/um/drivers/pcap_kern.c
 delete mode 100644 arch/um/drivers/pcap_user.c
 delete mode 100644 arch/um/drivers/pcap_user.h
 delete mode 100644 arch/um/kernel/skas/clone.c
 create mode 100644 arch/um/kernel/skas/stub.c
 delete mode 100644 arch/x86/um/asm/mm_context.h
 delete mode 100644 arch/x86/um/ldt.c
 delete mode 100644 arch/x86/um/stub_32.S
 delete mode 100644 arch/x86/um/stub_64.S

.
Date: Wed, 24 Jul 2024 22:16:02 +0200
From: Helge Deller <deller@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-parisc@vger.kernel.org,
	James Bottomley <James.Bottomley@hansenpartnership.com>,
	John David Anglin <dave.anglin@bell.net>
Subject: [GIT PULL] parisc architecture fixes for v6.11-rc1

Hi Linus,

Please pull some updates for the parisc architecture for 6.11-rc1.

The gettimeofday() and clock_gettime() syscalls are now available as
vDSO functions, and Dave added a patch which allows to use NVMe
cards in the PCI slots as fast and easy alternative to SCSI discs.

Thanks!
Helge

----------------------------------------------------------------
The following changes since commit 6ba59ff4227927d3a8530fc2973b80e94b54d58f:

  Linux 6.10-rc4 (2024-06-16 13:40:16 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git tags/parisc-for-6.11-rc1

for you to fetch changes up to cbade823342cd013f1fbd46f6e3b74825fecbc16:

  parisc: Add support for CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN (2024-07-24 02:04:05 +0200)

----------------------------------------------------------------
parisc architecture fixes and updates for kernel v6.11-rc1:

- Add gettimeofday() and clock_gettime() vDSO functions
- Enable PCI_MSI_ARCH_FALLBACKS to allow PCI to PCIe bridge adaptor
  with PCIe NVME card to function in parisc machines
- Allow users to reduce kernel unaligned runtime warnings
- minor code cleanups

----------------------------------------------------------------
Helge Deller (4):
      parisc: Clean up unistd.h file
      parisc: Add 32-bit gettimeofday() and clock_gettime() vDSO functions
      parisc: Add 64-bit gettimeofday() and clock_gettime() vDSO functions
      parisc: Add support for CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN

John David Anglin (1):
      parisc: Fix warning at drivers/pci/msi/msi.h:121

Thorsten Blum (1):
      parisc: Use max() to calculate parisc_tlb_flush_threshold

 Documentation/admin-guide/sysctl/kernel.rst |  2 +-
 arch/parisc/Kconfig                         |  2 ++
 arch/parisc/include/asm/unistd.h            | 54 ++++++++---------------------
 arch/parisc/include/asm/vdso.h              |  2 +-
 arch/parisc/kernel/cache.c                  |  6 +---
 arch/parisc/kernel/unaligned.c              |  2 ++
 arch/parisc/kernel/vdso32/Makefile          | 24 +++++++++++--
 arch/parisc/kernel/vdso32/vdso32.lds.S      |  3 ++
 arch/parisc/kernel/vdso32/vdso32_generic.c  | 32 +++++++++++++++++
 arch/parisc/kernel/vdso64/Makefile          | 25 ++++++++++---
 arch/parisc/kernel/vdso64/vdso64.lds.S      |  2 ++
 arch/parisc/kernel/vdso64/vdso64_generic.c  | 24 +++++++++++++
 12 files changed, 125 insertions(+), 53 deletions(-)
 create mode 100644 arch/parisc/kernel/vdso32/vdso32_generic.c
 create mode 100644 arch/parisc/kernel/vdso64/vdso64_generic.c

.
Date: Thu, 25 Jul 2024 03:32:44 +0200
From: Miguel Ojeda <ojeda@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Miguel Ojeda <ojeda@kernel.org>,
	Wedson Almeida Filho <wedsonaf@gmail.com>,
	Alex Gaynor <alex.gaynor@gmail.com>,
	Boqun Feng <boqun.feng@gmail.com>,
	Gary Guo <gary@garyguo.net>,
	=?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= <bjorn3_gh@protonmail.com>,
	Benno Lossin <benno.lossin@proton.me>,
	Andreas Hindborg <a.hindborg@samsung.com>,
	Alice Ryhl <aliceryhl@google.com>,
	rust-for-linux@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Niko Matsakis <niko@alum.mit.edu>,
	Sid Askary <saskary@futurewei.com>,
	=?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= <emilio@crisal.io>
Subject: [GIT PULL] Rust for 6.11

Hi Linus,

This is the next round of the Rust support.

Later than usual, but all the commits have been in linux-next for about
2 weeks.

A trivial conflict with the block pull you already merged expected
(resolved in linux -next). In addition, there is a small change to the
C side from Arnd that akpm ack'ed.

Please pull for v6.11 -- thanks!

Cheers,
Miguel

The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  https://github.com/Rust-for-Linux/linux.git tags/rust-6.11

for you to fetch changes up to b1263411112305acf2af728728591465becb45b0:

  docs: rust: quick-start: add section on Linux distributions (2024-07-10 10:29:55 +0200)

----------------------------------------------------------------
Rust changes for v6.11

The highlight is the establishment of a minimum version for the Rust
toolchain, including 'rustc' (and bundled tools) and 'bindgen'.

The initial minimum will be the pinned version we currently have, i.e.
we are just widening the allowed versions. That covers 3 stable Rust
releases: 1.78.0, 1.79.0, 1.80.0 (getting released tomorrow), plus beta,
plus nightly.

This should already be enough for kernel developers in distributions
that provide recent Rust compiler versions routinely, such as Arch
Linux, Debian Unstable (outside the freeze period), Fedora Linux,
Gentoo Linux (especially the testing channel), Nix (unstable) and
openSUSE Slowroll and Tumbleweed.

In addition, the kernel is now being built-tested by Rust's pre-merge
CI. That is, every change that is attempting to land into the Rust
compiler is tested against the kernel, and it is merged only if it
passes. Similarly, the bindgen tool has agreed to build the kernel in
their CI too.

Thus, with the pre-merge CI in place, both projects hope to avoid
unintentional changes to Rust that break the kernel. This means that,
in general, apart from intentional changes on their side (that we
will need to workaround conditionally on our side), the upcoming Rust
compiler versions should generally work.

In addition, the Rust project has proposed getting the kernel into
stable Rust (at least solving the main blockers) as one of its three
flagship goals for 2024H2 [1].

I would like to thank Niko, Sid, Emilio et al. for their help promoting
the collaboration between Rust and the kernel.

[1] https://rust-lang.github.io/rust-project-goals/2024h2/index.html#flagship-goals

Toolchain and infrastructure:

 - Support several Rust toolchain versions.

 - Support several bindgen versions.

 - Remove 'cargo' requirement and simplify 'rusttest', thanks to 'alloc'
   having been dropped last cycle.

 - Provide proper error reporting for the 'rust-analyzer' target.

'kernel' crate:

 - Add 'uaccess' module with a safe userspace pointers abstraction.

 - Add 'page' module with a 'struct page' abstraction.

 - Support more complex generics in workqueue's 'impl_has_work!' macro.

'macros' crate:

 - Add 'firmware' field support to the 'module!' macro.

 - Improve 'module!' macro documentation.

Documentation:

 - Provide instructions on what packages should be installed to build
   the kernel in some popular Linux distributions.

 - Introduce the new kernel.org LLVM+Rust toolchains.

 - Explain '#[no_std]'.

And a few other small bits.

----------------------------------------------------------------
Alice Ryhl (4):
      rust: alloc: fix typo in docs for GFP_NOWAIT
      rust: alloc: add __GFP_HIGHMEM flag
      rust: uaccess: add typed accessors for userspace pointers
      rust: add abstraction for `struct page`

Arnd Bergmann (1):
      uaccess: always export _copy_[from|to]_user with CONFIG_RUST

Aswin Unnikrishnan (2):
      rust: add example for `alias` argument in `module` macro documentation
      rust: fix datatype in docs for `module` macro arguments

Dirk Behme (1):
      docs: rust: no_std is used

FUJITA Tomonori (1):
      rust: add 'firmware' field support to module! macro

John Hubbard (2):
      kbuild: rust-analyzer: better error handling
      kbuild: rust-analyzer: improve comment documentation

Miguel Ojeda (12):
      kbuild: rust: remove now-unneeded `rusttest` custom sysroot handling
      rust: macros: indent list item in `paste!`'s docs
      rust: init: simplify from `map_err` to `inspect_err`
      rust: allow `dead_code` for never constructed bindings
      rust: relax most deny-level lints to warnings
      rust: simplify Clippy warning flags set
      rust: start supporting several compiler versions
      rust: avoid assuming a particular `bindgen` build
      rust: work around `bindgen` 0.69.0 issue
      rust: start supporting several `bindgen` versions
      rust: warn about `bindgen` versions 0.66.0 and 0.66.1
      docs: rust: quick-start: add section on Linux distributions

Nathan Chancellor (1):
      docs: rust: introduce the new kernel.org LLVM+Rust toolchains

Roland Xu (1):
      rust: kernel: make impl_has_work compatible with more generics

Wedson Almeida Filho (1):
      rust: uaccess: add userspace pointers

 Documentation/process/changes.rst          |   9 +-
 Documentation/rust/general-information.rst |   8 +
 Documentation/rust/quick-start.rst         | 143 +++++++----
 Documentation/rust/testing.rst             |   5 +-
 Makefile                                   |  30 +--
 include/linux/uaccess.h                    |  46 ++--
 init/Kconfig                               |   5 +-
 lib/usercopy.c                             |  30 +--
 rust/Makefile                              |  74 +-----
 rust/bindings/bindings_helper.h            |   2 +
 rust/bindings/lib.rs                       |   1 +
 rust/helpers.c                             |  34 +++
 rust/kernel/alloc.rs                       |  17 +-
 rust/kernel/init.rs                        |  13 +-
 rust/kernel/lib.rs                         |   2 +
 rust/kernel/page.rs                        | 250 +++++++++++++++++++
 rust/kernel/types.rs                       |  64 +++++
 rust/kernel/uaccess.rs                     | 388 +++++++++++++++++++++++++++++
 rust/kernel/workqueue.rs                   |  16 +-
 rust/macros/lib.rs                         |  45 +++-
 rust/macros/module.rs                      |  18 +-
 rust/uapi/lib.rs                           |   1 +
 scripts/rust_is_available.sh               |  33 +--
 scripts/rust_is_available_bindgen_0_66.h   |   2 +
 scripts/rust_is_available_test.py          |  59 +++--
 25 files changed, 1059 insertions(+), 236 deletions(-)
 create mode 100644 rust/kernel/page.rs
 create mode 100644 rust/kernel/uaccess.rs
 create mode 100644 scripts/rust_is_available_bindgen_0_66.h

.
Date: Thu, 25 Jul 2024 09:36:31 +0200
From: Greg KH <gregkh@linuxfoundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Stephen Rothwell <sfr@canb.auug.org.au>,
	Saravana Kannan <saravanak@google.com>
Subject: [GIT PULL] Driver core changes for 6.11-rc1

***************
This merge request is coming late in the -rc1 cycle on purpose.  I
wanted to make sure that the merge issues and other problems were all
resoved due to some core api changes (platform and bus structures)
happening in this tree.

You will have merge conflicts with your tree when you pull from here in
the following two files:
	drivers/fsi/fsi-occ.c
	drivers/reset/reset-meson-audio-arb.c
the resolution for them should be "obvious", and has been in linux-next
for a while now.

You will also get build errors for the following two platform drivers:
	drivers/net/ethernet/renesas/rtsn.c
	drivers/gpu/drm/stm/lvds.c
due to these new files coming in during the merge window and them not
being in my branch.  They too have fixups that have been in linux-next
for a while.

I have all of the above problems resolved in the following branch:
   git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git driver-core-6.11-rc1-merge-resolution
if you want to compare things, OR you can just pull from that point as
well, I can make a signed tag for you there if that makes it simpler.

Sorry for the conflicts,

greg k-h
***************


The following changes since commit 6ba59ff4227927d3a8530fc2973b80e94b54d58f:

  Linux 6.10-rc4 (2024-06-16 13:40:16 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git tags/driver-core-6.11-rc1

for you to fetch changes up to b57d5ffc3ab507d0e19fc8b90b19c76af43fb790:

  ARM: sa1100: make match function take a const pointer (2024-07-19 13:47:20 +0200)

----------------------------------------------------------------
Driver core changes for 6.11-rc1

Here is the big set of driver core changes for 6.11-rc1.

Lots of stuff in here, with not a huge diffstat, but apis are evolving
which required lots of files to be touched.  Highlights of the changes
in here are:
  - platform remove callback api final fixups (Uwe took many releases to
    get here, finally!)
  - Rust bindings for basic firmware apis and initial driver-core
    interactions.  It's not all that useful for a "write a whole driver
    in rust" type of thing, but the firmware bindings do help out the
    phy rust drivers, and the driver core bindings give a solid base on
    which others can start their work.  There is still a long way to go
    here before we have a multitude of rust drivers being added, but
    it's a great first step.
  - driver core const api changes.  This reached across all bus types,
    and there are some fix-ups for some not-common bus types that
    linux-next and 0-day testing shook out.  This work is being done to
    help make the rust bindings more safe, as well as the C code, moving
    toward the end-goal of allowing us to put driver structures into
    read-only memory.  We aren't there yet, but are getting closer.
  - minor devres cleanups and fixes found by code inspection
  - arch_topology minor changes
  - other minor driver core cleanups

All of these have been in linux-next for a very long time with no
reported problems.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

----------------------------------------------------------------
Andy Shevchenko (2):
      driver core: device.h: Group of_node handling declarations and definitions
      driver core: platform: Switch to use kmemdup_array()

Danilo Krummrich (9):
      rust: add abstraction for struct device
      rust: add firmware abstractions
      firmware: rust: improve safety comments
      MAINTAINERS: add Rust FW abstractions to FIRMWARE LOADER
      MAINTAINERS: add Danilo as FIRMWARE LOADER maintainer
      device: rust: improve safety comments
      MAINTAINERS: add Rust device abstractions to DRIVER CORE
      firmware_loader: annotate doctests as `no_run`
      firmware_loader: fix soundness issue in `request_internal`

Geert Uytterhoeven (1):
      dio: Have dio_bus_match() callback take a const *

Greg Kroah-Hartman (16):
      Merge tag 'platform-remove-void-step-b' of https://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux into driver-core-next
      nvdimm: make nd_class constant
      auxbus: make to_auxiliary_drv accept and return a constant pointer
      driver core: platform: fix ups for constant struct device_driver
      driver core: driver: mark driver_add/remove_groups constant
      driver core: make device_release_driver_internal() take a const *
      driver core: make driver_detach() take a const *
      driver core: mark async_driver as a const *
      Merge tag 'v6.10-rc4' into driver-core-next
      driver core: make [device_]driver_attach take a const *
      driver core: have match() callback in struct bus_type take a const *
      driver core: make driver_[create|remove]_file take a const *
      driver core: make driver_find_device() take a const *
      driver core: module: make module_[add|remove]_driver take a const *
      zorro: make match function take a const pointer
      ARM: sa1100: make match function take a const pointer

Ivan Orlov (1):
      dca: make dca_class a static const structure

Jeff Johnson (1):
      samples/kobject: add missing MODULE_DESCRIPTION() macros

Petr Tesarik (1):
      sysfs/cpu: Make crash_hotplug attribute world-readable

Ricardo B. Marliere (1):
      parport: make parport_bus_type const

Uwe Kleine-König (19):
      reset: meson-audio-arb: Convert to platform remove callback returning void
      reset: rzg2l-usbphy-ctrl: Convert to platform remove callback returning void
      reset: ti-sci: Convert to platform remove callback returning void
      Merge branch 'reset/next' of git://git.pengutronix.de/pza/linux
      fsi: master-aspeed: Convert to platform remove callback returning void
      fsi: master-ast-cf: Convert to platform remove callback returning void
      fsi: master-gpio: Convert to platform remove callback returning void
      fsi: occ: Convert to platform remove callback returning void
      pps: clients: gpio: Convert to platform remove callback returning void
      gpu: host1x: mipi: Benefit from devm_clk_get_prepared()
      drm/imagination: Convert to platform remove callback returning void
      drm/mediatek: Convert to platform remove callback returning void
      gpu: host1x: Convert to platform remove callback returning void
      gpu: ipu-v3: Convert to platform remove callback returning void
      nvdimm/e820: Convert to platform remove callback returning void
      nvdimm/of_pmem: Convert to platform remove callback returning void
      samples: qmi: Convert to platform remove callback returning void
      platform: Make platform_driver::remove() return void
      driver core: Make dev_err_probe() silent for -ENOMEM

Vincenzo Mezzela (2):
      drivers: arch_topology: Refactor do-while loops
      drivers: arch_topology: use __free attribute instead of of_node_put()

Zijun Hu (5):
      kobject_uevent: Fix OOB access within zap_modalias_env()
      devres: Fix devm_krealloc() wasting memory
      devres: Fix memory leakage caused by driver API devm_free_percpu()
      devres: Initialize an uninitialized struct member
      devres: Correct code style for functions that return a pointer type

 MAINTAINERS                                        |   3 +
 arch/arm/common/locomo.c                           |   4 +-
 arch/arm/common/sa1111.c                           |   4 +-
 arch/arm/include/asm/hardware/locomo.h             |   2 +-
 arch/arm/include/asm/hardware/sa1111.h             |   2 +-
 arch/parisc/include/asm/parisc-device.h            |   2 +-
 arch/parisc/kernel/drivers.c                       |   4 +-
 arch/powerpc/include/asm/ps3.h                     |   6 +-
 arch/powerpc/include/asm/vio.h                     |   6 +-
 arch/powerpc/platforms/ps3/system-bus.c            |   4 +-
 arch/powerpc/platforms/pseries/ibmebus.c           |   2 +-
 arch/powerpc/platforms/pseries/vio.c               |   6 +-
 arch/s390/include/asm/ccwdev.h                     |   2 +-
 arch/sparc/include/asm/vio.h                       |   6 +-
 arch/sparc/kernel/vio.c                            |   4 +-
 drivers/acpi/bus.c                                 |   4 +-
 drivers/amba/bus.c                                 |   6 +-
 drivers/base/arch_topology.c                       | 143 ++++++++++-----------
 drivers/base/auxiliary.c                           |  10 +-
 drivers/base/base.h                                |  16 +--
 drivers/base/core.c                                |  17 ++-
 drivers/base/cpu.c                                 |   4 +-
 drivers/base/dd.c                                  |  30 +++--
 drivers/base/devres.c                              |  34 +++--
 drivers/base/driver.c                              |  10 +-
 drivers/base/firmware_loader/Kconfig               |   7 +
 drivers/base/isa.c                                 |   2 +-
 drivers/base/module.c                              |   6 +-
 drivers/base/platform.c                            |  26 ++--
 drivers/bcma/main.c                                |   6 +-
 drivers/bus/fsl-mc/fsl-mc-bus.c                    |   4 +-
 drivers/bus/mhi/ep/main.c                          |   4 +-
 drivers/bus/mhi/host/init.c                        |   4 +-
 drivers/bus/mips_cdmm.c                            |   6 +-
 drivers/bus/moxtet.c                               |   4 +-
 drivers/bus/sunxi-rsb.c                            |   2 +-
 drivers/cdx/cdx.c                                  |   4 +-
 drivers/cxl/core/port.c                            |   2 +-
 drivers/cxl/cxl.h                                  |   5 +-
 drivers/dax/bus.c                                  |  17 +--
 drivers/dca/dca-sysfs.c                            |  20 +--
 drivers/dio/dio-driver.c                           |   4 +-
 drivers/dma/idxd/bus.c                             |   6 +-
 drivers/dma/idxd/compat.c                          |   1 -
 drivers/eisa/eisa-bus.c                            |   4 +-
 drivers/firewire/core-device.c                     |   6 +-
 drivers/firmware/arm_ffa/bus.c                     |   2 +-
 drivers/firmware/arm_scmi/bus.c                    |   6 +-
 drivers/firmware/google/coreboot_table.c           |   6 +-
 drivers/fpga/dfl.c                                 |   4 +-
 drivers/fsi/fsi-core.c                             |   4 +-
 drivers/fsi/fsi-master-aspeed.c                    |   6 +-
 drivers/fsi/fsi-master-ast-cf.c                    |   6 +-
 drivers/fsi/fsi-master-gpio.c                      |   6 +-
 drivers/fsi/fsi-occ.c                              |   6 +-
 drivers/gpio/gpiolib.c                             |   2 +-
 drivers/gpu/drm/display/drm_dp_aux_bus.c           |   2 +-
 drivers/gpu/drm/drm_mipi_dsi.c                     |   2 +-
 drivers/gpu/drm/imagination/pvr_drv.c              |   7 +-
 drivers/gpu/drm/mediatek/mtk_padding.c             |   5 +-
 drivers/gpu/host1x/bus.c                           |   2 +-
 drivers/gpu/host1x/dev.c                           |   6 +-
 drivers/gpu/host1x/mipi.c                          |  17 +--
 drivers/gpu/ipu-v3/ipu-common.c                    |   6 +-
 drivers/gpu/ipu-v3/ipu-pre.c                       |   5 +-
 drivers/gpu/ipu-v3/ipu-prg.c                       |   6 +-
 drivers/greybus/core.c                             |   4 +-
 drivers/hid/hid-core.c                             |   2 +-
 drivers/hid/intel-ish-hid/ishtp/bus.c              |   2 +-
 drivers/hsi/hsi_core.c                             |   2 +-
 drivers/hv/vmbus_drv.c                             |   8 +-
 drivers/hwtracing/intel_th/core.c                  |   4 +-
 drivers/hwtracing/intel_th/intel_th.h              |   2 +-
 drivers/i2c/i2c-core-base.c                        |   4 +-
 drivers/i3c/master.c                               |   4 +-
 drivers/input/gameport/gameport.c                  |   4 +-
 drivers/input/rmi4/rmi_bus.c                       |   6 +-
 drivers/input/rmi4/rmi_bus.h                       |   2 +-
 drivers/input/rmi4/rmi_driver.c                    |   2 +-
 drivers/input/rmi4/rmi_driver.h                    |   2 +-
 drivers/input/serio/serio.c                        |   4 +-
 drivers/ipack/ipack.c                              |   6 +-
 drivers/macintosh/macio_asic.c                     |   2 +-
 drivers/mcb/mcb-core.c                             |   4 +-
 drivers/media/pci/bt8xx/bttv-gpio.c                |   4 +-
 drivers/media/pci/bt8xx/bttv.h                     |   2 +-
 drivers/media/pci/intel/ipu6/ipu6-bus.h            |   2 +-
 drivers/memstick/core/memstick.c                   |   7 +-
 drivers/mfd/mcp-core.c                             |   2 +-
 drivers/misc/mei/bus.c                             |   4 +-
 drivers/misc/tifm_core.c                           |   6 +-
 drivers/mmc/core/sdio_bus.c                        |  10 +-
 drivers/most/core.c                                |   2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c      |   4 +-
 drivers/net/ethernet/intel/ice/ice_ptp.c           |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/dev.c      |   4 +-
 drivers/net/phy/mdio_bus.c                         |   4 +-
 drivers/net/phy/mdio_device.c                      |   4 +-
 drivers/net/phy/phy_device.c                       |   4 +-
 drivers/ntb/ntb_transport.c                        |   2 +-
 drivers/nvdimm/bus.c                               |  25 ++--
 drivers/nvdimm/e820.c                              |   5 +-
 drivers/nvdimm/of_pmem.c                           |   6 +-
 drivers/nvmem/layouts.c                            |   4 +-
 drivers/parport/share.c                            |   2 +-
 drivers/pci/endpoint/pci-epf-core.c                |   4 +-
 drivers/pci/pci-driver.c                           |   8 +-
 drivers/pcmcia/ds.c                                |   2 +-
 drivers/peci/core.c                                |   4 +-
 drivers/peci/internal.h                            |   5 +-
 drivers/platform/surface/aggregator/bus.c          |   4 +-
 drivers/platform/x86/wmi.c                         |   9 +-
 drivers/pnp/driver.c                               |   6 +-
 drivers/pps/clients/pps-gpio.c                     |   5 +-
 drivers/rapidio/rio-driver.c                       |   4 +-
 drivers/reset/reset-meson-audio-arb.c              |   6 +-
 drivers/reset/reset-rzg2l-usbphy-ctrl.c            |   6 +-
 drivers/reset/reset-ti-sci.c                       |   6 +-
 drivers/rpmsg/rpmsg_core.c                         |   4 +-
 drivers/rpmsg/rpmsg_internal.h                     |   2 +-
 drivers/s390/cio/css.c                             |   4 +-
 drivers/s390/cio/css.h                             |   2 +-
 drivers/s390/cio/device.c                          |   4 +-
 drivers/s390/crypto/ap_bus.c                       |   4 +-
 drivers/s390/crypto/ap_bus.h                       |   2 +-
 drivers/scsi/fcoe/fcoe_sysfs.c                     |   2 +-
 drivers/scsi/scsi_sysfs.c                          |   6 +-
 drivers/scsi/scsi_transport_iscsi.c                |   2 +-
 drivers/sh/maple/maple.c                           |   4 +-
 drivers/siox/siox-core.c                           |   2 +-
 drivers/slimbus/core.c                             |   4 +-
 drivers/soc/qcom/apr.c                             |   4 +-
 drivers/soundwire/bus_type.c                       |   6 +-
 drivers/spi/spi.c                                  |   2 +-
 drivers/spmi/spmi.c                                |   2 +-
 drivers/ssb/main.c                                 |   4 +-
 drivers/staging/fieldbus/anybuss/anybuss-client.h  |   6 +-
 drivers/staging/fieldbus/anybuss/host.c            |   4 +-
 drivers/staging/greybus/gbphy.c                    |   2 +-
 .../vc04_services/interface/vchiq_arm/vchiq_bus.c  |   2 +-
 drivers/staging/vme_user/vme.c                     |   2 +-
 drivers/tc/tc-driver.c                             |   6 +-
 drivers/tee/tee_core.c                             |   2 +-
 drivers/thunderbolt/domain.c                       |   8 +-
 drivers/tty/serdev/core.c                          |   2 +-
 drivers/tty/serial/serial_base_bus.c               |   2 +-
 drivers/usb/common/ulpi.c                          |   2 +-
 drivers/usb/core/driver.c                          |   2 +-
 drivers/usb/gadget/udc/core.c                      |   2 +-
 drivers/usb/serial/bus.c                           |   2 +-
 drivers/usb/typec/bus.c                            |   2 +-
 drivers/vdpa/vdpa.c                                |   2 +-
 drivers/vfio/mdev/mdev_driver.c                    |   2 +-
 drivers/virtio/virtio.c                            |   2 +-
 drivers/xen/xenbus/xenbus.h                        |   2 +-
 drivers/xen/xenbus/xenbus_probe.c                  |   4 +-
 drivers/zorro/zorro-driver.c                       |   4 +-
 include/acpi/acpi_bus.h                            |   2 +-
 include/linux/arm_ffa.h                            |   2 +-
 include/linux/auxiliary_bus.h                      |   2 +-
 include/linux/cdx/cdx_bus.h                        |   2 +-
 include/linux/device.h                             |  21 +--
 include/linux/device/bus.h                         |   2 +-
 include/linux/device/driver.h                      |  18 +--
 include/linux/dfl.h                                |   2 +-
 include/linux/dio.h                                |   2 +-
 include/linux/eisa.h                               |   2 +-
 include/linux/fsi.h                                |   2 +-
 include/linux/fsl/mc.h                             |   2 +-
 include/linux/gameport.h                           |   2 +-
 include/linux/greybus.h                            |   2 +-
 include/linux/hyperv.h                             |   6 +-
 include/linux/i2c.h                                |   2 +-
 include/linux/i3c/device.h                         |   5 +-
 include/linux/maple.h                              |   2 +-
 include/linux/mcb.h                                |   5 +-
 include/linux/mdio.h                               |  19 +--
 include/linux/mhi.h                                |   2 +-
 include/linux/mhi_ep.h                             |   2 +-
 include/linux/moxtet.h                             |   9 +-
 include/linux/nd.h                                 |   6 +-
 include/linux/pci-epf.h                            |   3 +-
 include/linux/pci.h                                |   6 +-
 include/linux/phy.h                                |   2 +-
 include/linux/platform_device.h                    |  15 +--
 include/linux/pnp.h                                |   2 +-
 include/linux/rio.h                                |   2 +-
 include/linux/scmi_protocol.h                      |   2 +-
 include/linux/serio.h                              |   2 +-
 include/linux/slimbus.h                            |   2 +-
 include/linux/soc/qcom/apr.h                       |   2 +-
 include/linux/soundwire/sdw_type.h                 |   2 +-
 include/linux/spi/spi.h                            |   6 +-
 include/linux/ssb/ssb.h                            |   2 +-
 include/linux/tc.h                                 |   2 +-
 include/linux/tee_drv.h                            |   2 +-
 include/linux/virtio.h                             |   5 +-
 include/linux/zorro.h                              |   2 +-
 include/scsi/scsi_transport_iscsi.h                |   2 +-
 include/sound/ac97/codec.h                         |   5 +-
 include/xen/xenbus.h                               |   5 +-
 lib/kobject_uevent.c                               |  17 ++-
 net/iucv/iucv.c                                    |   2 +-
 rust/bindings/bindings_helper.h                    |   1 +
 rust/helpers.c                                     |   1 +
 rust/kernel/device.rs                              | 105 +++++++++++++++
 rust/kernel/firmware.rs                            | 117 +++++++++++++++++
 rust/kernel/lib.rs                                 |   3 +
 samples/kobject/kobject-example.c                  |   1 +
 samples/kobject/kset-example.c                     |   1 +
 samples/qmi/qmi_sample_client.c                    |   6 +-
 sound/ac97/bus.c                                   |   4 +-
 sound/core/seq_device.c                            |   4 +-
 sound/hda/hda_bus_type.c                           |   2 +-
 sound/soc/sof/sof-client.c                         |   4 +-
 215 files changed, 777 insertions(+), 620 deletions(-)
 create mode 100644 rust/kernel/device.rs
 create mode 100644 rust/kernel/firmware.rs

.
Date: Thu, 25 Jul 2024 10:47:41 +0200
From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andy Shevchenko <andy@kernel.org>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	linux-kernel@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>
Subject: [GIT PULL] auxdisplay updates for v6.11

	Hi Linus,

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git tags/auxdisplay-for-v6.11-tag1

for you to fetch changes up to 2ccfe94bc3ac980d2d1df9f7a0b2c6d2137abe55:

  auxdisplay: ht16k33: Drop reference after LED registration (2024-06-11 16:58:52 +0300)

----------------------------------------------------------------
auxdisplay updates for v6.11

  - Add support for configuring the boot message on line displays,
  - Miscellaneous fixes and improvements.

As Andy is on holidays[1], and after checking with him earlier today,
I imported his branch, tagged it, and am sending a PR.

All of this has been in linux-next for a while, through Andy's
auxdisplay repo.

Thanks for pulling!

[1] https://lore.kernel.org/CAHp75VehHDikSSPJhc4c8t7jp81bQ_Z+pkqYnM_F87xdJP4Xew@mail.gmail.com/

----------------------------------------------------------------
Andy Shevchenko (1):
      auxdisplay: charlcd: Provide a forward declaration

Chris Packham (1):
      auxdisplay: linedisp: Support configuring the boot message

Erick Archer (1):
      auxdisplay: Use sizeof(*pointer) instead of sizeof(type)

Jeff Johnson (2):
      auxdisplay: linedisp: add missing MODULE_DESCRIPTION() macro
      auxdisplay: hd44780: add missing MODULE_DESCRIPTION() macro

Markus Elfring (1):
      auxdisplay: ht16k33: Drop reference after LED registration

 drivers/auxdisplay/Kconfig          |  2 +-
 drivers/auxdisplay/arm-charlcd.c    |  2 +-
 drivers/auxdisplay/charlcd.h        |  2 ++
 drivers/auxdisplay/hd44780.c        |  2 +-
 drivers/auxdisplay/hd44780_common.c |  1 +
 drivers/auxdisplay/ht16k33.c        |  1 +
 drivers/auxdisplay/line-display.c   | 11 ++++++++++-
 7 files changed, 17 insertions(+), 4 deletions(-)

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

.
Date: Thu, 25 Jul 2024 10:47:33 +0100
From: Daniel Thompson <daniel.thompson@linaro.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jason Wessel <jason.wessel@windriver.com>, linux-kernel@vger.kernel.org,
	Douglas Anderson <dianders@chromium.org>,
	Zheng Zengkai <zhengzengkai@huawei.com>,
	Arnd Bergmann <arnd@arndb.de>
Subject: [GIT PULL] kgdb changes for v6.11

Hi Linus

Sorry this is so late in the window. It's not even a good reason... I
just lost track of which week it was. Happily this is only three small
changes and all have been soaking in linux-next for a month or so.

The following changes since commit 6ba59ff4227927d3a8530fc2973b80e94b54d58f:

  Linux 6.10-rc4 (2024-06-16 13:40:16 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux.git/ tags/kgdb-6.11-rc1

for you to fetch changes up to 9bccbe7b20876a34c70b13430ea1b308fc8d5a7e:

  kdb: Get rid of redundant kdb_curr_task() (2024-06-21 15:49:29 +0100)

----------------------------------------------------------------
kgdb patches for 6.11

Three small changes this cycle:

1. Cleaning up an architecture abstraction that is no longer needed
   because all the architectures have converged.
2. Actually use the prompt argument to kdb_position_cursor() instead of
   ignoring it (functionally this fix is a nop but that was due to luck
   rather than good judgement)
3. Fix a -Wformat-security warning.

Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>

----------------------------------------------------------------
Arnd Bergmann (1):
      kdb: address -Wformat-security warnings

Douglas Anderson (1):
      kdb: Use the passed prompt in kdb_position_cursor()

Zheng Zengkai (1):
      kdb: Get rid of redundant kdb_curr_task()

 kernel/debug/kdb/kdb_bt.c      |  2 +-
 kernel/debug/kdb/kdb_io.c      |  6 +++---
 kernel/debug/kdb/kdb_main.c    | 18 ++++--------------
 kernel/debug/kdb/kdb_private.h |  2 --
 4 files changed, 8 insertions(+), 20 deletions(-)

.
Date: Thu, 25 Jul 2024 16:00:47 +0200
From: Petr Mladek <pmladek@suse.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	John Ogness <john.ogness@linutronix.de>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Thomas Gleixner <tglx@linutronix.de>, Jan Kara <jack@suse.cz>,
	Peter Zijlstra <peterz@infradead.org>,
	Petr Mladek <pmladek@suse.com>, linux-kernel@vger.kernel.org,
	Jeff Johnson <quic_jjohnson@quicinc.com>
Subject: [GIT PULL] trivial printk changes for 6.11

Hi Linus,

please pull the two trivial changes for 6.11 from

  git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git tags/printk-for-6.11-trivial

========================================

- Misc clean up.

----------------------------------------------------------------
Jeff Johnson (1):
      vsprintf: add missing MODULE_DESCRIPTION() macro

Sreenath Vijayan (1):
      printk: Rename console_replay_all() and update context

 drivers/tty/sysrq.c    | 2 +-
 include/linux/printk.h | 4 ++--
 kernel/printk/printk.c | 6 +++---
 lib/test_printf.c      | 1 +
 lib/test_scanf.c       | 1 +
 5 files changed, 8 insertions(+), 6 deletions(-)

.
Date: Thu, 25 Jul 2024 18:09:56 +0200
From: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
To: torvalds@linux-foundation.org
Cc: linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] MIPS changes part 2 for v6.11

The following changes since commit bb2d63500b5c8fd1ea425caffe2d44c931fefc6b:

  MIPS: config: Add ip30_defconfig (2024-07-15 18:17:34 +0200)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/ tags/mips_6.11_1

for you to fetch changes up to 2c716cf17edee74424336e87fe42b99ee5e91bad:

  mips: sibyte: add missing MODULE_DESCRIPTION() macro (2024-07-23 09:47:40 +0200)

----------------------------------------------------------------
- Use improved timer sync for Loongson64
- Fix address of GCR_ACCESS register
- Add missing MODULE_DESCRIPTION

----------------------------------------------------------------
Gregory CLEMENT (1):
      MIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later

Jeff Johnson (1):
      mips: sibyte: add missing MODULE_DESCRIPTION() macro

Jiaxun Yang (1):
      MIPS: Loongson64: Switch to SYNC_R4K

 arch/mips/Kconfig                   |  1 +
 arch/mips/include/asm/mips-cm.h     |  4 ++++
 arch/mips/include/asm/smp.h         |  1 -
 arch/mips/kernel/smp-cps.c          |  5 ++++-
 arch/mips/loongson64/smp.c          | 35 ++---------------------------------
 arch/mips/sibyte/common/sb_tbprof.c |  1 +
 6 files changed, 12 insertions(+), 35 deletions(-)

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

.
Date: Thu, 25 Jul 2024 11:06:28 -0700
From: John Johansen <john.johansen@canonical.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: LKLM <linux-kernel@vger.kernel.org>,
 "open list:SECURITY SUBSYSTEM" <linux-security-module@vger.kernel.org>
Subject: [GIT PULL] AppArmor updates for 6.11-rc1

Hi Linus,

I know this is running extremely late so I have only included bug fixes
and a few small cleanups.

In particular the cleanup
   optimization: try to avoid refing the label in apparmor_file_open
is nice to have for scaling on large systems, as it avoids take a ref count when
it isn't necessary. For the file open test resulting in

   kernel test robot noticed a 93.1% improvement of will-it-scale.per_process_ops on:


These patches have all been merge tested against your tree as of
this morning and regression tested against your tree as of yesterday.

thanks
- john




The following changes since commit 4cece764965020c22cff7665b18a012006359095:

   Linux 6.9-rc1 (2024-03-24 14:10:05 -0700)

are available in the Git repository at:

   git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor tags/apparmor-pr-2024-07-25

for you to fetch changes up to e0ff0cff1f6cdce0aa596aac04129893201c4162:

   apparmor: unpack transition table if dfa is not present (2024-07-24 11:15:06 -0700)

----------------------------------------------------------------
apparmor-pr-2024-07-24 PR 2024-07-25

+ Cleanups
       - optimization: try to avoid refing the label in apparmor_file_open
       - remove useless static inline function is_deleted
       - use kvfree_sensitive to free data->data
       - fix typo in kernel doc

+ Bug fixes
       - unpack transition table if dfa is not present
       - test: add MODULE_DESCRIPTION()
       - take nosymfollow flag into account
       - fix possible NULL pointer dereference
       - fix null pointer deref when receiving skb during sock creation

----------------------------------------------------------------
Alexander Mikhalitsyn (1):
       apparmor: take nosymfollow flag into account

Christian GĂ¶ttsche (1):
       apparmor: fix typo in kernel doc

Colin Ian King (1):
       apparmor: remove useless static inline function is_deleted

Fedor Pchelkin (1):
       apparmor: use kvfree_sensitive to free data->data

Georgia Garcia (1):
       apparmor: unpack transition table if dfa is not present

Jeff Johnson (1):
       apparmor: test: add MODULE_DESCRIPTION()

Leesoo Ahn (1):
       apparmor: fix possible NULL pointer dereference

Mateusz Guzik (1):
       apparmor: try to avoid refing the label in apparmor_file_open

Xiao Liang (1):
       apparmor: Fix null pointer deref when receiving skb during sock creation

  security/apparmor/apparmorfs.c         |  4 ++++
  security/apparmor/file.c               | 13 ----------
  security/apparmor/include/cred.h       | 20 ++++++++++++++++
  security/apparmor/lsm.c                | 14 ++++++++---
  security/apparmor/mount.c              |  2 ++
  security/apparmor/policy.c             |  2 +-
  security/apparmor/policy_unpack.c      | 43 ++++++++++++++++++++--------------
  security/apparmor/policy_unpack_test.c |  1 +
  8 files changed, 65 insertions(+), 34 deletions(-)


.
Date: Fri, 26 Jul 2024 14:00:29 +1000
From: Dave Airlie <airlied@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>, Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: dri-devel <dri-devel@lists.freedesktop.org>, LKML <linux-kernel@vger.kernel.org>
Subject: [git pull] drm fixes for 6.11-rc1

Hi Linus,

Fixes for rc1, mostly amdgpu, i915 and xe, with some other misc ones,
doesn't seem to be anything too serious.

Dave.

drm-next-2024-07-26:
drm fixes for 6.11-rc1

amdgpu:
- Bump driver version for GFX12 DCC
- DC documention warning fixes
- VCN unified queue power fix
- SMU fix
- RAS fix
- Display corruption fix
- SDMA 5.2 workaround
- GFX12 fixes
- Uninitialized variable fix
- VCN/JPEG 4.0.3 fixes
- Misc display fixes
- RAS fixes
- VCN4/5 harvest fix
- GPU reset fix

i915:
- Reset intel_dp->link_trained before retraining the link
- Don't switch the LTTPR mode on an active link
- Do not consider preemption during execlists_dequeue for gen8
- Allow NULL memory region

xe:
- xe_exec ioctl minor fix on sync entry cleanup upon error
- SRIOV: limit VF LMEM provisioning
- Wedge mode fixes

v3d:
- fix indirect dispatch on newer v3d revs

panel:
- fix panel backlight bindings
The following changes since commit 478a52707b0abe98aac7f8c53ccddb759be66b06=
:

  Merge tag 'amd-drm-next-6.11-2024-07-12' of
https://gitlab.freedesktop.org/agd5f/linux into drm-next (2024-07-18
09:20:00 +1000)

are available in the Git repository at:

  https://gitlab.freedesktop.org/drm/kernel.git tags/drm-next-2024-07-26

for you to fetch changes up to d4ef5d2b7ee0cbb5f2d864716140366a618400d6:

  Merge tag 'amd-drm-fixes-6.11-2024-07-25' of
https://gitlab.freedesktop.org/agd5f/linux into drm-next (2024-07-26
09:52:15 +1000)

----------------------------------------------------------------
drm fixes for 6.11-rc1

amdgpu:
- Bump driver version for GFX12 DCC
- DC documention warning fixes
- VCN unified queue power fix
- SMU fix
- RAS fix
- Display corruption fix
- SDMA 5.2 workaround
- GFX12 fixes
- Uninitialized variable fix
- VCN/JPEG 4.0.3 fixes
- Misc display fixes
- RAS fixes
- VCN4/5 harvest fix
- GPU reset fix

i915:
- Reset intel_dp->link_trained before retraining the link
- Don't switch the LTTPR mode on an active link
- Do not consider preemption during execlists_dequeue for gen8
- Allow NULL memory region

xe:
- xe_exec ioctl minor fix on sync entry cleanup upon error
- SRIOV: limit VF LMEM provisioning
- Wedge mode fixes

v3d:
- fix indirect dispatch on newer v3d revs

panel:
- fix panel backlight bindings

----------------------------------------------------------------
Alex Deucher (2):
      drm/amd/display: fix corruption with high refresh rates on DCN 3.0
      drm/amdgpu/sdma5.2: Update wptr registers as well as doorbell

Alex Hung (1):
      drm/amd/display: Add doc entry for program_3dlut_size

Ashutosh Dixit (1):
      drm/xe/exec: Fix minor bug related to xe_sync_entry_cleanup

Aurabindo Pillai (2):
      drm/amd: Bump KMS_DRIVER_MINOR version
      drm/amd/display: fix doc entry for bb_from_dmub

Boyuan Zhang (2):
      drm/amdgpu/vcn: identify unified queue in sw init
      drm/amdgpu/vcn: not pause dpg for unified queue

Dave Airlie (7):
      Merge tag 'drm-intel-next-fixes-2024-07-18' of
https://gitlab.freedesktop.org/drm/i915/kernel into drm-next
      Merge tag 'drm-xe-next-fixes-2024-07-18' of
https://gitlab.freedesktop.org/drm/xe/kernel into drm-next
      Merge tag 'drm-misc-next-fixes-2024-07-19' of
https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
      Merge tag 'amd-drm-fixes-6.11-2024-07-18' of
https://gitlab.freedesktop.org/agd5f/linux into drm-next
      Merge tag 'drm-intel-next-fixes-2024-07-25' of
https://gitlab.freedesktop.org/drm/i915/kernel into drm-next
      Merge tag 'drm-misc-next-fixes-2024-07-25' of
https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
      Merge tag 'amd-drm-fixes-6.11-2024-07-25' of
https://gitlab.freedesktop.org/agd5f/linux into drm-next

David Belanger (1):
      drm/amdgpu: Fix atomics on GFX12

Imre Deak (2):
      drm/i915/dp: Reset intel_dp->link_trained before retraining the link
      drm/i915/dp: Don't switch the LTTPR mode on an active link

Jane Jian (1):
      drm/amdgpu/vcn: Use offsets local to VCN/JPEG in VF

Jonathan Cavitt (1):
      drm/i915: Allow NULL memory region

Li Ma (1):
      drm/amd/swsmu: enable Pstates profile levels for SMU v14.0.4

Lijo Lazar (2):
      drm/amdgpu: Add empty HDP flush function to JPEG v4.0.3
      drm/amdgpu: Add empty HDP flush function to VCN v4.0.3

Ma Ke (1):
      drm/amd/amdgpu: Fix uninitialized variable warnings

Matthew Brost (2):
      drm/xe: Wedge the entire device
      drm/xe: Don't suspend device upon wedge

Ma=C3=ADra Canal (2):
      drm/v3d: Add V3D tech revision to the device information
      drm/v3d: Fix Indirect Dispatch configuration for V3D 7.1.6 and later

Michal Wajdeczko (1):
      drm/xe/pf: Limit fair VF LMEM provisioning

Nitin Gote (1):
      drm/i915/gt: Do not consider preemption during execlists_dequeue for =
gen8

Rodrigo Siqueira (7):
      drm/amd/display: Move DIO documentation to the right place
      Documentation/gpu: Remove ':export:' option from DCN documentation
      Documentation/gpu: Adjust DCN documentation paths
      drm/amd/display: Add simple struct doc to remove doc build warning
      Documentation/gpu: Remove undocumented files from dcn-blockshubbub.h
      Documentation/amdgpu: Fix duplicate declaration
      drm/amd/display: Remove ASSERT if significance is zero in math_ceil2

Roman Li (1):
      drm/amd/display: Add function banner for idle_workqueue

Stanley.Yang (1):
      drm/amdgpu: Fix eeprom max record count

Stephan Gerhold (1):
      dt-bindings: display: panel: samsung,atna33xc20: Document ATNA45AF01

Sung Joon Kim (1):
      drm/amd/display: Check for NULL pointer

Tim Huang (2):
      drm/amd/pm: early return if disabling DPMS for GFX IP v11.5.2
      drm/amdgpu: add missed harvest check for VCN IP v4/v5

YiPeng Chai (2):
      drm/amdgpu: add mutex to protect ras shared memory
      drm/amdgpu: fix ras UE error injection failure issue

ZhenGuo Yin (1):
      drm/amdgpu: reset vm state machine after gpu reset(vram lost)

 .../bindings/display/panel/samsung,atna33xc20.yaml |   8 +-
 Documentation/gpu/amdgpu/display/dcn-blocks.rst    |  35 +-----
 .../gpu/amdgpu/display/display-manager.rst         |   4 +-
 drivers/gpu/drm/amd/amdgpu/Makefile                |   3 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_df.h             |   1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c      |   5 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c            |   3 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c            | 121 ++++++++++++++---=
----
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h            |   1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c         |   2 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c     |   3 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c            |  53 +++++----
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h            |   1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c             |   9 +-
 drivers/gpu/drm/amd/amdgpu/df_v4_15.c              |  45 ++++++++
 drivers/gpu/drm/amd/amdgpu/df_v4_15.h              |  30 +++++
 drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c           |  27 ++++-
 drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c             |  12 ++
 drivers/gpu/drm/amd/amdgpu/smu_v13_0_10.c          |   2 +-
 drivers/gpu/drm/amd/amdgpu/soc24.c                 |   4 +
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c              |   6 +
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c            |  54 ++++++++-
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c            |   6 +
 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c            |   6 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h  |  17 ++-
 drivers/gpu/drm/amd/display/dc/core/dc_surface.c   |   3 +-
 .../src/dml2_standalone_libraries/lib_float_math.c |   2 -
 drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h        |  22 +++-
 drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h        |  14 +++
 drivers/gpu/drm/amd/display/dc/inc/hw/opp.h        |  15 +++
 .../drm/amd/display/dc/link/hwss/link_hwss_dio.c   |  29 +++++
 .../drm/amd/display/dc/link/hwss/link_hwss_dio.h   |   9 --
 .../gpu/drm/amd/display/dc/optc/dcn10/dcn10_optc.c |  15 +--
 .../gpu/drm/amd/display/dc/optc/dcn20/dcn20_optc.c |  10 ++
 .../drm/amd/include/asic_reg/df/df_4_15_offset.h   |  28 +++++
 .../drm/amd/include/asic_reg/df/df_4_15_sh_mask.h  |  28 +++++
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c          |  16 +--
 .../gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c   |  18 ++-
 drivers/gpu/drm/i915/display/intel_dp.c            |   2 +
 .../gpu/drm/i915/display/intel_dp_link_training.c  |  55 ++++++++--
 .../gpu/drm/i915/gt/intel_execlists_submission.c   |   6 +-
 drivers/gpu/drm/i915/intel_memory_region.c         |   6 +-
 drivers/gpu/drm/v3d/v3d_drv.c                      |   5 +-
 drivers/gpu/drm/v3d/v3d_drv.h                      |   8 +-
 drivers/gpu/drm/v3d/v3d_sched.c                    |  16 ++-
 drivers/gpu/drm/xe/xe_device.c                     |  20 ++++
 drivers/gpu/drm/xe/xe_exec.c                       |  14 +--
 drivers/gpu/drm/xe/xe_gt.c                         |  15 +++
 drivers/gpu/drm/xe/xe_gt.h                         |   1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c         |   1 +
 drivers/gpu/drm/xe/xe_guc.c                        |  16 +++
 drivers/gpu/drm/xe/xe_guc.h                        |   1 +
 drivers/gpu/drm/xe/xe_guc_submit.c                 |  38 ++++---
 drivers/gpu/drm/xe/xe_guc_submit.h                 |   1 +
 drivers/gpu/drm/xe/xe_uc.c                         |  14 +++
 drivers/gpu/drm/xe/xe_uc.h                         |   1 +
 56 files changed, 690 insertions(+), 197 deletions(-)
 create mode 100644 drivers/gpu/drm/amd/amdgpu/df_v4_15.c
 create mode 100644 drivers/gpu/drm/amd/amdgpu/df_v4_15.h
 create mode 100644 drivers/gpu/drm/amd/include/asic_reg/df/df_4_15_offset.=
h
 create mode 100644 drivers/gpu/drm/amd/include/asic_reg/df/df_4_15_sh_mask=
.h

.
Date: Fri, 26 Jul 2024 09:00:03 +0200
From: Takashi Iwai <tiwai@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mark Brown <broonie@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>,
 Linux Sound Mailing List <linux-sound@vger.kernel.org>, Linux Kernel
 Mailing List <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] sound fixes for 6.11-rc1

Linus,

please pull sound fixes for v6.11-rc1 from:

  git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git tags/sound-fix-6.11-rc1

The topmost commit is e8b96a66ae01d039699bac256c5b6b30b2284170

----------------------------------------------------------------

sound fixes for 6.11-rc1

A collection of the fixes gathered since the previous PR.
We see a bit large LOCs at a HD-audio quirk, but that's only bulk
COEF data, hence it's safe to take.  In addition to that, there
were two minor fixes for MIDI 2.0 handling for ALSA core, and the
rest are all rather random small and device-specific fixes.

----------------------------------------------------------------

Arnd Bergmann (2):
      ALSA: hda: tas2781: mark const variables as __maybe_unused
      ASoC: tegra: select CONFIG_SND_SIMPLE_CARD_UTILS

Curtis Malainey (1):
      ASoC: Intel: Fix RT5650 SSP lookup

Dan Carpenter (1):
      ASoC: TAS2781: Fix tasdev_load_calibrated_data()

Daniel Baluta (1):
      ASoC: SOF: imx8m: Fix DSP control regmap retrieval

Luke D. Jones (1):
      ALSA: hda/realtek: cs35l41: Fixup remaining asus strix models

Nick Weihs (1):
      ALSA: hda/realtek: Implement sound init sequence for Samsung Galaxy Book3 Pro 360

Peter Ujfalusi (2):
      ASoC: SOF: ipc4-topology: Only handle dai_config with HW_PARAMS for ChainDMA
      ASoC: SOF: ipc4-topology: Preserve the DMA Link ID for ChainDMA on unprepare

Pierre-Louis Bossart (2):
      ASOC: SOF: Intel: hda-loader: only wait for HDaudio IOC for IPC4 devices
      ASoC: Intel: use soc_intel_is_byt_cr() only when IOSF_MBI is reachable

Shengjiu Wang (1):
      ASoC: fsl-asoc-card: Dynamically allocate memory for snd_soc_dai_link_components

Takashi Iwai (4):
      ALSA: usb-audio: Move HD Webcam quirk to the right place
      ALSA: ump: Don't update FB name for static blocks
      ALSA: ump: Force 1 Group for MIDI1 FBs
      ASoC: amd: yc: Support mic on Lenovo Thinkpad E16 Gen 2

Venkata Prasad Potturu (1):
      ASoC: sof: amd: fix for firmware reload failure in Vangogh platform

wangdicheng (2):
      ALSA: usb-audio: Fix microphone sound on HD webcam.
      ALSA: usb-audio: Add a quirk for Sonix HD USB Camera

---
 include/sound/tas2781-tlv.h                        |   6 +-
 sound/core/ump.c                                   |  13 +
 sound/pci/hda/patch_realtek.c                      |  15 +-
 sound/pci/hda/samsung_helper.c                     | 310 +++++++++++++++++++++
 sound/soc/amd/yc/acp6x-mach.c                      |   7 +
 sound/soc/codecs/tas2781-fmwlib.c                  |   2 +-
 sound/soc/fsl/fsl-asoc-card.c                      |  46 +--
 sound/soc/intel/common/soc-acpi-intel-ssp-common.c |   9 +
 sound/soc/intel/common/soc-intel-quirks.h          |   2 +-
 sound/soc/sof/amd/pci-vangogh.c                    |   1 -
 sound/soc/sof/imx/imx8m.c                          |   2 +-
 sound/soc/sof/intel/hda-loader.c                   |  18 +-
 sound/soc/sof/intel/hda.c                          |  17 +-
 sound/soc/sof/ipc4-topology.c                      |  18 +-
 sound/soc/tegra/Kconfig                            |   1 +
 sound/usb/mixer.c                                  |   7 +
 sound/usb/quirks.c                                 |   4 +
 17 files changed, 433 insertions(+), 45 deletions(-)
 create mode 100644 sound/pci/hda/samsung_helper.c


.
Date: Fri, 26 Jul 2024 09:42:46 +0100
From: Will Deacon <will@kernel.org>
To: torvalds@linux-foundation.org
Cc: catalin.marinas@arm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, kernel-team@android.com
Subject: [GIT PULL] arm64 fixes for -rc1

Hi Linus,

Please pull these arm64 fixes for -rc1. The usual summary is in the tag,
but the main fix is for the fast GUP lockless page-table walk when we
have a combination of compile-time and run-time folding of the p4d and
the pud respectively.

Cheers,

Will

--->8

The following changes since commit 4f3a6c4de7d932be94cde2c52ae58feeec9c9dbf:

  Merge branch 'for-next/vcpu-hotplug' into for-next/core (2024-07-11 19:10:02 +0100)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git tags/arm64-fixes

for you to fetch changes up to 36639013b3462c06ff8e3400a427f775b4fc97f5:

  arm64: mm: Fix lockless walks with static and dynamic page-table folding (2024-07-25 13:20:55 +0100)

----------------------------------------------------------------
arm64 fixes for -rc1

- Remove some redundant Kconfig conditionals

- Fix string output in ptrace selftest

- Fix fast GUP crashes in some page-table configurations

- Remove obsolete linker option when building the vDSO

- Fix some sysreg field definitions for the GIC

----------------------------------------------------------------
Anshuman Khandual (1):
      arm64/Kconfig: Remove redundant 'if HAVE_FUNCTION_GRAPH_TRACER'

Fangrui Song (1):
      arm64/vdso: Remove --hash-style=sysv

Masahiro Yamada (1):
      arm64: remove redundant 'if HAVE_ARCH_KASAN' in Kconfig

Raghavendra Rao Ananta (1):
      arm64/sysreg: Correct the values for GICv4.1

Remington Brasga (1):
      kselftest: missing arg in ptrace.c

Will Deacon (1):
      arm64: mm: Fix lockless walks with static and dynamic page-table folding

 arch/arm64/Kconfig                         |  8 ++++----
 arch/arm64/include/asm/pgtable.h           | 22 ++++++++++++++++++++++
 arch/arm64/kernel/vdso/Makefile            |  2 +-
 arch/arm64/kernel/vdso32/Makefile          |  2 +-
 arch/arm64/tools/sysreg                    |  4 ++--
 tools/testing/selftests/arm64/abi/ptrace.c |  2 +-
 6 files changed, 31 insertions(+), 9 deletions(-)

.
Date: Fri, 26 Jul 2024 09:45:32 +0100
From: Will Deacon <will@kernel.org>
To: torvalds@linux-foundation.org
Cc: joro@8bytes.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev
Subject: [GIT PULL] IOMMU fixes for -rc1

Hi Linus,

Please pull this small collection of IOMMU driver fixes for -rc1. The
summary is in the tag.

We're still resolving a regression with the handling of unexpected page
faults on SMMUv3, but we're not quite there with a fix yet.

Cheers,

Will

--->8

The following changes since commit 8b6c32e831ef4496b51a68ddc5be9bb9e8d2337d:

  Merge branch 'iommu/iommufd/paging-domain-alloc' into iommu/next (2024-07-12 16:57:47 +0100)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git tags/iommu-fixes-v6.11-rc1

for you to fetch changes up to 726d4f528dbc98a84d9ce3c749dfdada3dcdd5ca:

  iommu: arm-smmu: Fix Tegra workaround for PAGE_SIZE mappings (2024-07-25 13:08:44 +0100)

----------------------------------------------------------------
IOMMU Fixes for Linux v6.11-rc1

- Fix NULL dereference when freeing domain in Unisoc SPRD driver.

- Separate assignment statements with semicolons in AMD page-table code.

- Fix Tegra erratum workaround when the CPU is using 16KiB pages.

----------------------------------------------------------------
Artem Chernyshev (1):
      iommu: sprd: Avoid NULL deref in sprd_iommu_hw_en

Ashish Mhetre (1):
      iommu: arm-smmu: Fix Tegra workaround for PAGE_SIZE mappings

Chen Ni (1):
      iommu/amd: Convert comma to semicolon

 drivers/iommu/amd/io_pgtable.c               | 6 +++---
 drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c | 2 +-
 drivers/iommu/sprd-iommu.c                   | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

.
Date: Fri, 26 Jul 2024 11:57:58 +0200
From: Juergen Gross <jgross@suse.com>
To: torvalds@linux-foundation.org
Cc: linux-kernel@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	sstabellini@kernel.org
Subject: [GIT PULL] xen: branch for v6.11-rc1 take 2

Linus,

Please git pull the following tag:

 git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.11-rc1a-tag

xen: branch for v6.11-rc1 take 2

It contains 2 fixes for issues introduced in this merge window:

- one for enhanced debugging in the Xen multicall handling

- a series with 2 patches fixing a boot failure when running as dom0 in
  PVH mode

Thanks.

Juergen

 arch/x86/include/asm/xen/hypervisor.h |   5 --
 arch/x86/platform/pvh/enlighten.c     |   3 -
 arch/x86/xen/enlighten_pvh.c          | 107 ++++++++++++++++++----------------
 arch/x86/xen/multicalls.c             |  19 +++---
 arch/x86/xen/smp_pv.c                 |   1 +
 arch/x86/xen/xen-ops.h                |   3 +
 6 files changed, 74 insertions(+), 64 deletions(-)

Juergen Gross (1):
      xen: fix multicall debug data referencing

Roger Pau Monne (2):
      x86/xen: move xen_reserve_extra_memory()
      x86/xen: fix memblock_reserve() usage on PVH

.
Date: Fri, 26 Jul 2024 13:08:09 +0200
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux PM <linux-pm@vger.kernel.org>, 
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: [GIT PULL] One more thermal control fix for v6.11-rc1

Hi Linus,

Please pull from the tag

 git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
 thermal-6.11-rc1-3

with top-most commit f7c1b0e4ae47e67c6f9af84568a5f4a80638ccd8

 thermal: core: Back off when polling thermal zones on errors

on top of commit 539fbb912321ab6361ccc08b72f5f83e8a25c24b

 Merge tag 'thermal-6.11-rc1-2' of
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

to receive one more thermal control fix for 6.11-rc1.

This prevents the thermal core from flooding the kernel log with useless
messages if thermal zone temperature can never be determined (or its
sensor has failed permanently) and makes it finally give up and disable
defective thermal zones.

Thanks!


---------------

Rafael J. Wysocki (2):
      thermal: trip: Split thermal_zone_device_set_mode()
      thermal: core: Back off when polling thermal zones on errors

---------------

 drivers/thermal/thermal_core.c | 89 ++++++++++++++++++++++++++++++++++++------
 drivers/thermal/thermal_core.h | 10 +++--
 2 files changed, 85 insertions(+), 14 deletions(-)

.
Date: Fri, 26 Jul 2024 14:39:24 +0200
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] I3C changes for 6.11

Hello Linus,

Here is the i3c subsystem pull request for 6.11. This cycle, there are
new features for the Designware controller and fixes for the other IPs.

The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0:

  Linux 6.10-rc1 (2024-05-26 15:20:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux.git tags/i3c/for-6.11

for you to fetch changes up to 24168c5e6dfbdd5b414f048f47f75d64533296ca:

  dt-bindings: i3c: add header for generic I3C flags (2024-07-26 14:21:30 +0200)

----------------------------------------------------------------
I3C for 6.11

Drivers:
 - dw: optional apb clock and power management support, IBI handling fixes
 - mipi-i3c-hci: IBI handling fixes
 - svc: few fixes

----------------------------------------------------------------
Aniket (9):
      i3c: dw: Fix clearing queue thld
      i3c: dw: Fix IBI intr programming
      i3c: dw: Remove ibi_capable property
      dt-bindings: i3c: dw: Add apb clock binding
      i3c: dw: Use new *_enabled clk API
      i3c: dw: Add optional apb clock
      i3c: dw: Save timing registers and other values
      i3c: dw: Add some functions for reusability
      i3c: dw: Add power management support

Bhoomik Gupta (1):
      i3c: master: Enhance i3c_bus_type visibility for device searching & event monitoring

Carlos Song (1):
      dt-bindings: i3c: add header for generic I3C flags

Chen Ni (1):
      i3c: master: svc: Convert comma to semicolon

Dan Carpenter (1):
      i3c: master: svc: Fix error code in svc_i3c_master_do_daa_locked()

Frank Li (2):
      i3c: master: svc: resend target address when get NACK
      i3c: master: svc: Improve DAA STOP handle code logic

Jarkko Nikula (5):
      i3c: mipi-i3c-hci: Fix number of DAT/DCT entries for HCI versions < 1.1
      i3c: mipi-i3c-hci: Switch to lower_32_bits()/upper_32_bits() helpers
      i3c: mipi-i3c-hci: Set IBI Status and Data Ring base addresses
      i3c: mipi-i3c-hci: Error out instead on BUG_ON() in IBI DMA setup
      i3c: mipi-i3c-hci: Round IBI data chunk size to HW supported value

 Documentation/devicetree/bindings/i3c/i3c.yaml     |   5 +-
 .../bindings/i3c/snps,dw-i3c-master.yaml           |  11 +-
 MAINTAINERS                                        |   1 +
 drivers/i3c/internals.h                            |   2 -
 drivers/i3c/master.c                               |   1 +
 drivers/i3c/master/ast2600-i3c-master.c            |   1 -
 drivers/i3c/master/dw-i3c-master.c                 | 349 ++++++++++++++++-----
 drivers/i3c/master/dw-i3c-master.h                 |  14 +-
 drivers/i3c/master/mipi-i3c-hci/core.c             |   8 +
 drivers/i3c/master/mipi-i3c-hci/dma.c              |  44 +--
 drivers/i3c/master/svc-i3c-master.c                | 121 +++++--
 include/dt-bindings/i3c/i3c.h                      |  16 +
 include/linux/i3c/master.h                         |   1 +
 13 files changed, 431 insertions(+), 143 deletions(-)
 create mode 100644 include/dt-bindings/i3c/i3c.h

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

-- 
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

.
Date: Fri, 26 Jul 2024 14:50:16 +0200 (CEST)
From: Thomas Gleixner <tglx@linutronix.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, x86@kernel.org,
 Anna-Maria Behnsen <anna-maria@linutronix.de>,
 Frederic Weisbecker <frederic@kernel.org>
Subject: [GIT pull] timers/urgent for v6.11-rc1

Linus,

please pull the latest timers/urgent branch from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers-urgent-20=
24-07-26

up to:  f004bf9de057: timers/migration: Fix grammar in comment


Fixes and minor updates for the timer migration code:

    - Stop testing the group->parent pointer as it is not guaranteed to be
      stable over a chain of operations by design. This includes a warning
      which would be nice to have but it produces false positives due to
      the racy nature of the check.

    - Plug a race between CPUs going in and out of idle and a CPU hotplug
      operation. The latter can create and connect a new hierarchy level
      which is missed in the concurrent updates of CPUs which go into idle.
      As a result the events of such a CPU might not be processed and
      timers go stale.

      Cure it by splitting the hotplug operation into a prepare and online
      callback. The prepare callback is guaranteed to run on an online and
      therefore active CPU. This CPU updates the hierarchy and being online
      ensures that there is always at least one migrator active which
      handles the modified hierarchy correctly when going idle. The online
      callback which runs on the incoming CPU then just marks the CPU
      active and brings it into operation.

    - Improve tracing and polish the code further so it is more obvious
      what's going on.

Thanks,

	tglx

------------------>
Anna-Maria Behnsen (8):
      timers/migration: Do not rely always on group->parent
      timers/migration: Move hierarchy setup into cpuhotplug prepare callback
      timers/migration: Improve tracing
      timers/migration: Use a single struct for hierarchy walk data
      timers/migration: Read childmask and parent pointer in a single place
      timers/migration: Rename childmask by groupmask to make naming more obv=
ious
      timers/migration: Spare write when nothing changed
      timers/migration: Fix grammar in comment


 include/linux/cpuhotplug.h             |   1 +
 include/trace/events/timer_migration.h |  16 +-
 kernel/time/timer_migration.c          | 393 +++++++++++++++++--------------=
--
 kernel/time/timer_migration.h          |  27 ++-
 4 files changed, 224 insertions(+), 213 deletions(-)

diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index 7a5785f405b6..df59666a2a66 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -122,6 +122,7 @@ enum cpuhp_state {
 	CPUHP_KVM_PPC_BOOK3S_PREPARE,
 	CPUHP_ZCOMP_PREPARE,
 	CPUHP_TIMERS_PREPARE,
+	CPUHP_TMIGR_PREPARE,
 	CPUHP_MIPS_SOC_PREPARE,
 	CPUHP_BP_PREPARE_DYN,
 	CPUHP_BP_PREPARE_DYN_END		=3D CPUHP_BP_PREPARE_DYN + 20,
diff --git a/include/trace/events/timer_migration.h b/include/trace/events/ti=
mer_migration.h
index 79f19e76a80b..47db5eaf2f9a 100644
--- a/include/trace/events/timer_migration.h
+++ b/include/trace/events/timer_migration.h
@@ -43,7 +43,7 @@ TRACE_EVENT(tmigr_connect_child_parent,
 		__field( unsigned int,	lvl		)
 		__field( unsigned int,	numa_node	)
 		__field( unsigned int,	num_children	)
-		__field( u32,		childmask	)
+		__field( u32,		groupmask	)
 	),
=20
 	TP_fast_assign(
@@ -52,11 +52,11 @@ TRACE_EVENT(tmigr_connect_child_parent,
 		__entry->lvl		=3D child->parent->level;
 		__entry->numa_node	=3D child->parent->numa_node;
 		__entry->num_children	=3D child->parent->num_children;
-		__entry->childmask	=3D child->childmask;
+		__entry->groupmask	=3D child->groupmask;
 	),
=20
-	TP_printk("group=3D%p childmask=3D%0x parent=3D%p lvl=3D%d numa=3D%d num_ch=
ildren=3D%d",
-		  __entry->child,  __entry->childmask, __entry->parent,
+	TP_printk("group=3D%p groupmask=3D%0x parent=3D%p lvl=3D%d numa=3D%d num_ch=
ildren=3D%d",
+		  __entry->child,  __entry->groupmask, __entry->parent,
 		  __entry->lvl, __entry->numa_node, __entry->num_children)
 );
=20
@@ -72,7 +72,7 @@ TRACE_EVENT(tmigr_connect_cpu_parent,
 		__field( unsigned int,	lvl		)
 		__field( unsigned int,	numa_node	)
 		__field( unsigned int,	num_children	)
-		__field( u32,		childmask	)
+		__field( u32,		groupmask	)
 	),
=20
 	TP_fast_assign(
@@ -81,11 +81,11 @@ TRACE_EVENT(tmigr_connect_cpu_parent,
 		__entry->lvl		=3D tmc->tmgroup->level;
 		__entry->numa_node	=3D tmc->tmgroup->numa_node;
 		__entry->num_children	=3D tmc->tmgroup->num_children;
-		__entry->childmask	=3D tmc->childmask;
+		__entry->groupmask	=3D tmc->groupmask;
 	),
=20
-	TP_printk("cpu=3D%d childmask=3D%0x parent=3D%p lvl=3D%d numa=3D%d num_chil=
dren=3D%d",
-		  __entry->cpu,	 __entry->childmask, __entry->parent,
+	TP_printk("cpu=3D%d groupmask=3D%0x parent=3D%p lvl=3D%d numa=3D%d num_chil=
dren=3D%d",
+		  __entry->cpu,	 __entry->groupmask, __entry->parent,
 		  __entry->lvl, __entry->numa_node, __entry->num_children)
 );
=20
diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c
index 84413114db5c..8d57f7686bb0 100644
--- a/kernel/time/timer_migration.c
+++ b/kernel/time/timer_migration.c
@@ -475,9 +475,54 @@ static bool tmigr_check_lonely(struct tmigr_group *group)
 	return bitmap_weight(&active, BIT_CNT) <=3D 1;
 }
=20
-typedef bool (*up_f)(struct tmigr_group *, struct tmigr_group *, void *);
+/**
+ * struct tmigr_walk - data required for walking the hierarchy
+ * @nextexp:		Next CPU event expiry information which is handed into
+ *			the timer migration code by the timer code
+ *			(get_next_timer_interrupt())
+ * @firstexp:		Contains the first event expiry information when
+ *			hierarchy is completely idle.  When CPU itself was the
+ *			last going idle, information makes sure, that CPU will
+ *			be back in time. When using this value in the remote
+ *			expiry case, firstexp is stored in the per CPU tmigr_cpu
+ *			struct of CPU which expires remote timers. It is updated
+ *			in top level group only. Be aware, there could occur a
+ *			new top level of the hierarchy between the 'top level
+ *			call' in tmigr_update_events() and the check for the
+ *			parent group in walk_groups(). Then @firstexp might
+ *			contain a value !=3D KTIME_MAX even if it was not the
+ *			final top level. This is not a problem, as the worst
+ *			outcome is a CPU which might wake up a little early.
+ * @evt:		Pointer to tmigr_event which needs to be queued (of idle
+ *			child group)
+ * @childmask:		groupmask of child group
+ * @remote:		Is set, when the new timer path is executed in
+ *			tmigr_handle_remote_cpu()
+ * @basej:		timer base in jiffies
+ * @now:		timer base monotonic
+ * @check:		is set if there is the need to handle remote timers;
+ *			required in tmigr_requires_handle_remote() only
+ * @tmc_active:		this flag indicates, whether the CPU which triggers
+ *			the hierarchy walk is !idle in the timer migration
+ *			hierarchy. When the CPU is idle and the whole hierarchy is
+ *			idle, only the first event of the top level has to be
+ *			considered.
+ */
+struct tmigr_walk {
+	u64			nextexp;
+	u64			firstexp;
+	struct tmigr_event	*evt;
+	u8			childmask;
+	bool			remote;
+	unsigned long		basej;
+	u64			now;
+	bool			check;
+	bool			tmc_active;
+};
+
+typedef bool (*up_f)(struct tmigr_group *, struct tmigr_group *, struct tmig=
r_walk *);
=20
-static void __walk_groups(up_f up, void *data,
+static void __walk_groups(up_f up, struct tmigr_walk *data,
 			  struct tmigr_cpu *tmc)
 {
 	struct tmigr_group *child =3D NULL, *group =3D tmc->tmgroup;
@@ -490,64 +535,17 @@ static void __walk_groups(up_f up, void *data,
=20
 		child =3D group;
 		group =3D group->parent;
+		data->childmask =3D child->groupmask;
 	} while (group);
 }
=20
-static void walk_groups(up_f up, void *data, struct tmigr_cpu *tmc)
+static void walk_groups(up_f up, struct tmigr_walk *data, struct tmigr_cpu *=
tmc)
 {
 	lockdep_assert_held(&tmc->lock);
=20
 	__walk_groups(up, data, tmc);
 }
=20
-/**
- * struct tmigr_walk - data required for walking the hierarchy
- * @nextexp:		Next CPU event expiry information which is handed into
- *			the timer migration code by the timer code
- *			(get_next_timer_interrupt())
- * @firstexp:		Contains the first event expiry information when last
- *			active CPU of hierarchy is on the way to idle to make
- *			sure CPU will be back in time.
- * @evt:		Pointer to tmigr_event which needs to be queued (of idle
- *			child group)
- * @childmask:		childmask of child group
- * @remote:		Is set, when the new timer path is executed in
- *			tmigr_handle_remote_cpu()
- */
-struct tmigr_walk {
-	u64			nextexp;
-	u64			firstexp;
-	struct tmigr_event	*evt;
-	u8			childmask;
-	bool			remote;
-};
-
-/**
- * struct tmigr_remote_data - data required for remote expiry hierarchy walk
- * @basej:		timer base in jiffies
- * @now:		timer base monotonic
- * @firstexp:		returns expiry of the first timer in the idle timer
- *			migration hierarchy to make sure the timer is handled in
- *			time; it is stored in the per CPU tmigr_cpu struct of
- *			CPU which expires remote timers
- * @childmask:		childmask of child group
- * @check:		is set if there is the need to handle remote timers;
- *			required in tmigr_requires_handle_remote() only
- * @tmc_active:		this flag indicates, whether the CPU which triggers
- *			the hierarchy walk is !idle in the timer migration
- *			hierarchy. When the CPU is idle and the whole hierarchy is
- *			idle, only the first event of the top level has to be
- *			considered.
- */
-struct tmigr_remote_data {
-	unsigned long	basej;
-	u64		now;
-	u64		firstexp;
-	u8		childmask;
-	bool		check;
-	bool		tmc_active;
-};
-
 /*
  * Returns the next event of the timerqueue @group->events
  *
@@ -618,10 +616,9 @@ static u64 tmigr_next_groupevt_expires(struct tmigr_grou=
p *group)
=20
 static bool tmigr_active_up(struct tmigr_group *group,
 			    struct tmigr_group *child,
-			    void *ptr)
+			    struct tmigr_walk *data)
 {
 	union tmigr_state curstate, newstate;
-	struct tmigr_walk *data =3D ptr;
 	bool walk_done;
 	u8 childmask;
=20
@@ -649,8 +646,7 @@ static bool tmigr_active_up(struct tmigr_group *group,
=20
 	} while (!atomic_try_cmpxchg(&group->migr_state, &curstate.state, newstate.=
state));
=20
-	if ((walk_done =3D=3D false) && group->parent)
-		data->childmask =3D group->childmask;
+	trace_tmigr_group_set_cpu_active(group, newstate, childmask);
=20
 	/*
 	 * The group is active (again). The group event might be still queued
@@ -666,8 +662,6 @@ static bool tmigr_active_up(struct tmigr_group *group,
 	 */
 	group->groupevt.ignore =3D true;
=20
-	trace_tmigr_group_set_cpu_active(group, newstate, childmask);
-
 	return walk_done;
 }
=20
@@ -675,7 +669,7 @@ static void __tmigr_cpu_activate(struct tmigr_cpu *tmc)
 {
 	struct tmigr_walk data;
=20
-	data.childmask =3D tmc->childmask;
+	data.childmask =3D tmc->groupmask;
=20
 	trace_tmigr_cpu_active(tmc);
=20
@@ -860,10 +854,8 @@ bool tmigr_update_events(struct tmigr_group *group, stru=
ct tmigr_group *child,
=20
 static bool tmigr_new_timer_up(struct tmigr_group *group,
 			       struct tmigr_group *child,
-			       void *ptr)
+			       struct tmigr_walk *data)
 {
-	struct tmigr_walk *data =3D ptr;
-
 	return tmigr_update_events(group, child, data);
 }
=20
@@ -995,9 +987,8 @@ static void tmigr_handle_remote_cpu(unsigned int cpu, u64=
 now,
=20
 static bool tmigr_handle_remote_up(struct tmigr_group *group,
 				   struct tmigr_group *child,
-				   void *ptr)
+				   struct tmigr_walk *data)
 {
-	struct tmigr_remote_data *data =3D ptr;
 	struct tmigr_event *evt;
 	unsigned long jif;
 	u8 childmask;
@@ -1034,12 +1025,10 @@ static bool tmigr_handle_remote_up(struct tmigr_group=
 *group,
 	}
=20
 	/*
-	 * Update of childmask for the next level and keep track of the expiry
-	 * of the first event that needs to be handled (group->next_expiry was
-	 * updated by tmigr_next_expired_groupevt(), next was set by
-	 * tmigr_handle_remote_cpu()).
+	 * Keep track of the expiry of the first event that needs to be handled
+	 * (group->next_expiry was updated by tmigr_next_expired_groupevt(),
+	 * next was set by tmigr_handle_remote_cpu()).
 	 */
-	data->childmask =3D group->childmask;
 	data->firstexp =3D group->next_expiry;
=20
 	raw_spin_unlock_irq(&group->lock);
@@ -1055,12 +1044,12 @@ static bool tmigr_handle_remote_up(struct tmigr_group=
 *group,
 void tmigr_handle_remote(void)
 {
 	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
-	struct tmigr_remote_data data;
+	struct tmigr_walk data;
=20
 	if (tmigr_is_not_available(tmc))
 		return;
=20
-	data.childmask =3D tmc->childmask;
+	data.childmask =3D tmc->groupmask;
 	data.firstexp =3D KTIME_MAX;
=20
 	/*
@@ -1068,7 +1057,7 @@ void tmigr_handle_remote(void)
 	 * in tmigr_handle_remote_up() anyway. Keep this check to speed up the
 	 * return when nothing has to be done.
 	 */
-	if (!tmigr_check_migrator(tmc->tmgroup, tmc->childmask)) {
+	if (!tmigr_check_migrator(tmc->tmgroup, tmc->groupmask)) {
 		/*
 		 * If this CPU was an idle migrator, make sure to clear its wakeup
 		 * value so it won't chase timers that have already expired elsewhere.
@@ -1097,9 +1086,8 @@ void tmigr_handle_remote(void)
=20
 static bool tmigr_requires_handle_remote_up(struct tmigr_group *group,
 					    struct tmigr_group *child,
-					    void *ptr)
+					    struct tmigr_walk *data)
 {
-	struct tmigr_remote_data *data =3D ptr;
 	u8 childmask;
=20
 	childmask =3D data->childmask;
@@ -1118,7 +1106,7 @@ static bool tmigr_requires_handle_remote_up(struct tmig=
r_group *group,
 	 * group before reading the next_expiry value.
 	 */
 	if (group->parent && !data->tmc_active)
-		goto out;
+		return false;
=20
 	/*
 	 * The lock is required on 32bit architectures to read the variable
@@ -1143,9 +1131,6 @@ static bool tmigr_requires_handle_remote_up(struct tmig=
r_group *group,
 		raw_spin_unlock(&group->lock);
 	}
=20
-out:
-	/* Update of childmask for the next level */
-	data->childmask =3D group->childmask;
 	return false;
 }
=20
@@ -1157,7 +1142,7 @@ static bool tmigr_requires_handle_remote_up(struct tmig=
r_group *group,
 bool tmigr_requires_handle_remote(void)
 {
 	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
-	struct tmigr_remote_data data;
+	struct tmigr_walk data;
 	unsigned long jif;
 	bool ret =3D false;
=20
@@ -1165,7 +1150,7 @@ bool tmigr_requires_handle_remote(void)
 		return ret;
=20
 	data.now =3D get_jiffies_update(&jif);
-	data.childmask =3D tmc->childmask;
+	data.childmask =3D tmc->groupmask;
 	data.firstexp =3D KTIME_MAX;
 	data.tmc_active =3D !tmc->idle;
 	data.check =3D false;
@@ -1230,14 +1215,13 @@ u64 tmigr_cpu_new_timer(u64 nextexp)
 		if (nextexp !=3D tmc->cpuevt.nextevt.expires ||
 		    tmc->cpuevt.ignore) {
 			ret =3D tmigr_new_timer(tmc, nextexp);
+			/*
+			 * Make sure the reevaluation of timers in idle path
+			 * will not miss an event.
+			 */
+			WRITE_ONCE(tmc->wakeup, ret);
 		}
 	}
-	/*
-	 * Make sure the reevaluation of timers in idle path will not miss an
-	 * event.
-	 */
-	WRITE_ONCE(tmc->wakeup, ret);
-
 	trace_tmigr_cpu_new_timer_idle(tmc, nextexp);
 	raw_spin_unlock(&tmc->lock);
 	return ret;
@@ -1245,10 +1229,9 @@ u64 tmigr_cpu_new_timer(u64 nextexp)
=20
 static bool tmigr_inactive_up(struct tmigr_group *group,
 			      struct tmigr_group *child,
-			      void *ptr)
+			      struct tmigr_walk *data)
 {
 	union tmigr_state curstate, newstate, childstate;
-	struct tmigr_walk *data =3D ptr;
 	bool walk_done;
 	u8 childmask;
=20
@@ -1299,9 +1282,10 @@ static bool tmigr_inactive_up(struct tmigr_group *grou=
p,
=20
 		WARN_ON_ONCE((newstate.migrator !=3D TMIGR_NONE) && !(newstate.active));
=20
-		if (atomic_try_cmpxchg(&group->migr_state, &curstate.state,
-				       newstate.state))
+		if (atomic_try_cmpxchg(&group->migr_state, &curstate.state, newstate.state=
)) {
+			trace_tmigr_group_set_cpu_inactive(group, newstate, childmask);
 			break;
+		}
=20
 		/*
 		 * The memory barrier is paired with the cmpxchg() in
@@ -1317,22 +1301,6 @@ static bool tmigr_inactive_up(struct tmigr_group *grou=
p,
 	/* Event Handling */
 	tmigr_update_events(group, child, data);
=20
-	if (group->parent && (walk_done =3D=3D false))
-		data->childmask =3D group->childmask;
-
-	/*
-	 * data->firstexp was set by tmigr_update_events() and contains the
-	 * expiry of the first global event which needs to be handled. It
-	 * differs from KTIME_MAX if:
-	 * - group is the top level group and
-	 * - group is idle (which means CPU was the last active CPU in the
-	 *   hierarchy) and
-	 * - there is a pending event in the hierarchy
-	 */
-	WARN_ON_ONCE(data->firstexp !=3D KTIME_MAX && group->parent);
-
-	trace_tmigr_group_set_cpu_inactive(group, newstate, childmask);
-
 	return walk_done;
 }
=20
@@ -1341,7 +1309,7 @@ static u64 __tmigr_cpu_deactivate(struct tmigr_cpu *tmc=
, u64 nextexp)
 	struct tmigr_walk data =3D { .nextexp =3D nextexp,
 				   .firstexp =3D KTIME_MAX,
 				   .evt =3D &tmc->cpuevt,
-				   .childmask =3D tmc->childmask };
+				   .childmask =3D tmc->groupmask };
=20
 	/*
 	 * If nextexp is KTIME_MAX, the CPU event will be ignored because the
@@ -1400,7 +1368,7 @@ u64 tmigr_cpu_deactivate(u64 nextexp)
  *			  the only one in the level 0 group; and if it is the
  *			  only one in level 0 group, but there are more than a
  *			  single group active on the way to top level)
- * * nextevt		- when CPU is offline and has to handle timer on his own
+ * * nextevt		- when CPU is offline and has to handle timer on its own
  *			  or when on the way to top in every group only a single
  *			  child is active but @nextevt is before the lowest
  *			  next_expiry encountered while walking up to top level.
@@ -1419,7 +1387,7 @@ u64 tmigr_quick_check(u64 nextevt)
 	if (WARN_ON_ONCE(tmc->idle))
 		return nextevt;
=20
-	if (!tmigr_check_migrator_and_lonely(tmc->tmgroup, tmc->childmask))
+	if (!tmigr_check_migrator_and_lonely(tmc->tmgroup, tmc->groupmask))
 		return KTIME_MAX;
=20
 	do {
@@ -1442,6 +1410,66 @@ u64 tmigr_quick_check(u64 nextevt)
 	return KTIME_MAX;
 }
=20
+/*
+ * tmigr_trigger_active() - trigger a CPU to become active again
+ *
+ * This function is executed on a CPU which is part of cpu_online_mask, when=
 the
+ * last active CPU in the hierarchy is offlining. With this, it is ensured t=
hat
+ * the other CPU is active and takes over the migrator duty.
+ */
+static long tmigr_trigger_active(void *unused)
+{
+	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
+
+	WARN_ON_ONCE(!tmc->online || tmc->idle);
+
+	return 0;
+}
+
+static int tmigr_cpu_offline(unsigned int cpu)
+{
+	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
+	int migrator;
+	u64 firstexp;
+
+	raw_spin_lock_irq(&tmc->lock);
+	tmc->online =3D false;
+	WRITE_ONCE(tmc->wakeup, KTIME_MAX);
+
+	/*
+	 * CPU has to handle the local events on his own, when on the way to
+	 * offline; Therefore nextevt value is set to KTIME_MAX
+	 */
+	firstexp =3D __tmigr_cpu_deactivate(tmc, KTIME_MAX);
+	trace_tmigr_cpu_offline(tmc);
+	raw_spin_unlock_irq(&tmc->lock);
+
+	if (firstexp !=3D KTIME_MAX) {
+		migrator =3D cpumask_any_but(cpu_online_mask, cpu);
+		work_on_cpu(migrator, tmigr_trigger_active, NULL);
+	}
+
+	return 0;
+}
+
+static int tmigr_cpu_online(unsigned int cpu)
+{
+	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
+
+	/* Check whether CPU data was successfully initialized */
+	if (WARN_ON_ONCE(!tmc->tmgroup))
+		return -EINVAL;
+
+	raw_spin_lock_irq(&tmc->lock);
+	trace_tmigr_cpu_online(tmc);
+	tmc->idle =3D timer_base_is_idle();
+	if (!tmc->idle)
+		__tmigr_cpu_activate(tmc);
+	tmc->online =3D true;
+	raw_spin_unlock_irq(&tmc->lock);
+	return 0;
+}
+
 static void tmigr_init_group(struct tmigr_group *group, unsigned int lvl,
 			     int node)
 {
@@ -1514,21 +1542,25 @@ static struct tmigr_group *tmigr_get_group(unsigned i=
nt cpu, int node,
 }
=20
 static void tmigr_connect_child_parent(struct tmigr_group *child,
-				       struct tmigr_group *parent)
+				       struct tmigr_group *parent,
+				       bool activate)
 {
-	union tmigr_state childstate;
+	struct tmigr_walk data;
=20
 	raw_spin_lock_irq(&child->lock);
 	raw_spin_lock_nested(&parent->lock, SINGLE_DEPTH_NESTING);
=20
 	child->parent =3D parent;
-	child->childmask =3D BIT(parent->num_children++);
+	child->groupmask =3D BIT(parent->num_children++);
=20
 	raw_spin_unlock(&parent->lock);
 	raw_spin_unlock_irq(&child->lock);
=20
 	trace_tmigr_connect_child_parent(child);
=20
+	if (!activate)
+		return;
+
 	/*
 	 * To prevent inconsistent states, active children need to be active in
 	 * the new parent as well. Inactive children are already marked inactive
@@ -1544,21 +1576,24 @@ static void tmigr_connect_child_parent(struct tmigr_g=
roup *child,
 	 *   child to the new parent. So tmigr_connect_child_parent() is
 	 *   executed with the formerly top level group (child) and the newly
 	 *   created group (parent).
+	 *
+	 * * It is ensured that the child is active, as this setup path is
+	 *   executed in hotplug prepare callback. This is exectued by an
+	 *   already connected and !idle CPU. Even if all other CPUs go idle,
+	 *   the CPU executing the setup will be responsible up to current top
+	 *   level group. And the next time it goes inactive, it will release
+	 *   the new childmask and parent to subsequent walkers through this
+	 *   @child. Therefore propagate active state unconditionally.
 	 */
-	childstate.state =3D atomic_read(&child->migr_state);
-	if (childstate.migrator !=3D TMIGR_NONE) {
-		struct tmigr_walk data;
-
-		data.childmask =3D child->childmask;
+	data.childmask =3D child->groupmask;
=20
-		/*
-		 * There is only one new level per time. When connecting the
-		 * child and the parent and set the child active when the parent
-		 * is inactive, the parent needs to be the uppermost
-		 * level. Otherwise there went something wrong!
-		 */
-		WARN_ON(!tmigr_active_up(parent, child, &data) && parent->parent);
-	}
+	/*
+	 * There is only one new level per time (which is protected by
+	 * tmigr_mutex). When connecting the child and the parent and set the
+	 * child active when the parent is inactive, the parent needs to be the
+	 * uppermost level. Otherwise there went something wrong!
+	 */
+	WARN_ON(!tmigr_active_up(parent, child, &data) && parent->parent);
 }
=20
 static int tmigr_setup_groups(unsigned int cpu, unsigned int node)
@@ -1611,12 +1646,12 @@ static int tmigr_setup_groups(unsigned int cpu, unsig=
ned int node)
 		 * Update tmc -> group / child -> group connection
 		 */
 		if (i =3D=3D 0) {
-			struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
+			struct tmigr_cpu *tmc =3D per_cpu_ptr(&tmigr_cpu, cpu);
=20
 			raw_spin_lock_irq(&group->lock);
=20
 			tmc->tmgroup =3D group;
-			tmc->childmask =3D BIT(group->num_children++);
+			tmc->groupmask =3D BIT(group->num_children++);
=20
 			raw_spin_unlock_irq(&group->lock);
=20
@@ -1626,7 +1661,8 @@ static int tmigr_setup_groups(unsigned int cpu, unsigne=
d int node)
 			continue;
 		} else {
 			child =3D stack[i - 1];
-			tmigr_connect_child_parent(child, group);
+			/* Will be activated at online time */
+			tmigr_connect_child_parent(child, group, false);
 		}
=20
 		/* check if uppermost level was newly created */
@@ -1637,12 +1673,21 @@ static int tmigr_setup_groups(unsigned int cpu, unsig=
ned int node)
=20
 		lvllist =3D &tmigr_level_list[top];
 		if (group->num_children =3D=3D 1 && list_is_singular(lvllist)) {
+			/*
+			 * The target CPU must never do the prepare work, except
+			 * on early boot when the boot CPU is the target. Otherwise
+			 * it may spuriously activate the old top level group inside
+			 * the new one (nevertheless whether old top level group is
+			 * active or not) and/or release an uninitialized childmask.
+			 */
+			WARN_ON_ONCE(cpu =3D=3D raw_smp_processor_id());
+
 			lvllist =3D &tmigr_level_list[top - 1];
 			list_for_each_entry(child, lvllist, list) {
 				if (child->parent)
 					continue;
=20
-				tmigr_connect_child_parent(child, group);
+				tmigr_connect_child_parent(child, group, true);
 			}
 		}
 	}
@@ -1664,80 +1709,31 @@ static int tmigr_add_cpu(unsigned int cpu)
 	return ret;
 }
=20
-static int tmigr_cpu_online(unsigned int cpu)
-{
-	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
-	int ret;
-
-	/* First online attempt? Initialize CPU data */
-	if (!tmc->tmgroup) {
-		raw_spin_lock_init(&tmc->lock);
-
-		ret =3D tmigr_add_cpu(cpu);
-		if (ret < 0)
-			return ret;
-
-		if (tmc->childmask =3D=3D 0)
-			return -EINVAL;
-
-		timerqueue_init(&tmc->cpuevt.nextevt);
-		tmc->cpuevt.nextevt.expires =3D KTIME_MAX;
-		tmc->cpuevt.ignore =3D true;
-		tmc->cpuevt.cpu =3D cpu;
-
-		tmc->remote =3D false;
-		WRITE_ONCE(tmc->wakeup, KTIME_MAX);
-	}
-	raw_spin_lock_irq(&tmc->lock);
-	trace_tmigr_cpu_online(tmc);
-	tmc->idle =3D timer_base_is_idle();
-	if (!tmc->idle)
-		__tmigr_cpu_activate(tmc);
-	tmc->online =3D true;
-	raw_spin_unlock_irq(&tmc->lock);
-	return 0;
-}
-
-/*
- * tmigr_trigger_active() - trigger a CPU to become active again
- *
- * This function is executed on a CPU which is part of cpu_online_mask, when=
 the
- * last active CPU in the hierarchy is offlining. With this, it is ensured t=
hat
- * the other CPU is active and takes over the migrator duty.
- */
-static long tmigr_trigger_active(void *unused)
+static int tmigr_cpu_prepare(unsigned int cpu)
 {
-	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
+	struct tmigr_cpu *tmc =3D per_cpu_ptr(&tmigr_cpu, cpu);
+	int ret =3D 0;
=20
-	WARN_ON_ONCE(!tmc->online || tmc->idle);
-
-	return 0;
-}
-
-static int tmigr_cpu_offline(unsigned int cpu)
-{
-	struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu);
-	int migrator;
-	u64 firstexp;
+	/* Not first online attempt? */
+	if (tmc->tmgroup)
+		return ret;
=20
-	raw_spin_lock_irq(&tmc->lock);
-	tmc->online =3D false;
+	raw_spin_lock_init(&tmc->lock);
+	timerqueue_init(&tmc->cpuevt.nextevt);
+	tmc->cpuevt.nextevt.expires =3D KTIME_MAX;
+	tmc->cpuevt.ignore =3D true;
+	tmc->cpuevt.cpu =3D cpu;
+	tmc->remote =3D false;
 	WRITE_ONCE(tmc->wakeup, KTIME_MAX);
=20
-	/*
-	 * CPU has to handle the local events on his own, when on the way to
-	 * offline; Therefore nextevt value is set to KTIME_MAX
-	 */
-	firstexp =3D __tmigr_cpu_deactivate(tmc, KTIME_MAX);
-	trace_tmigr_cpu_offline(tmc);
-	raw_spin_unlock_irq(&tmc->lock);
+	ret =3D tmigr_add_cpu(cpu);
+	if (ret < 0)
+		return ret;
=20
-	if (firstexp !=3D KTIME_MAX) {
-		migrator =3D cpumask_any_but(cpu_online_mask, cpu);
-		work_on_cpu(migrator, tmigr_trigger_active, NULL);
-	}
+	if (tmc->groupmask =3D=3D 0)
+		return -EINVAL;
=20
-	return 0;
+	return ret;
 }
=20
 static int __init tmigr_init(void)
@@ -1796,6 +1792,11 @@ static int __init tmigr_init(void)
 		tmigr_hierarchy_levels, TMIGR_CHILDREN_PER_GROUP,
 		tmigr_crossnode_level);
=20
+	ret =3D cpuhp_setup_state(CPUHP_TMIGR_PREPARE, "tmigr:prepare",
+				tmigr_cpu_prepare, NULL);
+	if (ret)
+		goto err;
+
 	ret =3D cpuhp_setup_state(CPUHP_AP_TMIGR_ONLINE, "tmigr:online",
 				tmigr_cpu_online, tmigr_cpu_offline);
 	if (ret)
@@ -1807,4 +1808,4 @@ static int __init tmigr_init(void)
 	pr_err("Timer migration setup failed\n");
 	return ret;
 }
-late_initcall(tmigr_init);
+early_initcall(tmigr_init);
diff --git a/kernel/time/timer_migration.h b/kernel/time/timer_migration.h
index 6c37d94a37d9..154accc7a543 100644
--- a/kernel/time/timer_migration.h
+++ b/kernel/time/timer_migration.h
@@ -22,7 +22,17 @@ struct tmigr_event {
  * struct tmigr_group - timer migration hierarchy group
  * @lock:		Lock protecting the event information and group hierarchy
  *			information during setup
- * @parent:		Pointer to the parent group
+ * @parent:		Pointer to the parent group. Pointer is updated when a
+ *			new hierarchy level is added because of a CPU coming
+ *			online the first time. Once it is set, the pointer will
+ *			not be removed or updated. When accessing parent pointer
+ *			lock less to decide whether to abort a propagation or
+ *			not, it is not a problem. The worst outcome is an
+ *			unnecessary/early CPU wake up. But do not access parent
+ *			pointer several times in the same 'action' (like
+ *			activation, deactivation, check for remote expiry,...)
+ *			without holding the lock as it is not ensured that value
+ *			will not change.
  * @groupevt:		Next event of the group which is only used when the
  *			group is !active. The group event is then queued into
  *			the parent timer queue.
@@ -41,9 +51,8 @@ struct tmigr_event {
  * @num_children:	Counter of group children to make sure the group is only
  *			filled with TMIGR_CHILDREN_PER_GROUP; Required for setup
  *			only
- * @childmask:		childmask of the group in the parent group; is set
- *			during setup and will never change; can be read
- *			lockless
+ * @groupmask:		mask of the group in the parent group; is set during
+ *			setup and will never change; can be read lockless
  * @list:		List head that is added to the per level
  *			tmigr_level_list; is required during setup when a
  *			new group needs to be connected to the existing
@@ -59,7 +68,7 @@ struct tmigr_group {
 	unsigned int		level;
 	int			numa_node;
 	unsigned int		num_children;
-	u8			childmask;
+	u8			groupmask;
 	struct list_head	list;
 };
=20
@@ -79,7 +88,7 @@ struct tmigr_group {
  *			hierarchy
  * @remote:		Is set when timers of the CPU are expired remotely
  * @tmgroup:		Pointer to the parent group
- * @childmask:		childmask of tmigr_cpu in the parent group
+ * @groupmask:		mask of tmigr_cpu in the parent group
  * @wakeup:		Stores the first timer when the timer migration
  *			hierarchy is completely idle and remote expiry was done;
  *			is returned to timer code in the idle path and is only
@@ -92,7 +101,7 @@ struct tmigr_cpu {
 	bool			idle;
 	bool			remote;
 	struct tmigr_group	*tmgroup;
-	u8			childmask;
+	u8			groupmask;
 	u64			wakeup;
 	struct tmigr_event	cpuevt;
 };
@@ -108,8 +117,8 @@ union tmigr_state {
 	u32 state;
 	/**
 	 * struct - split state of tmigr_group
-	 * @active:	Contains each childmask bit of the active children
-	 * @migrator:	Contains childmask of the child which is migrator
+	 * @active:	Contains each mask bit of the active children
+	 * @migrator:	Contains mask of the child which is migrator
 	 * @seq:	Sequence counter needs to be increased when an update
 	 *		to the tmigr_state is done. It prevents a race when
 	 *		updates in the child groups are propagated in changed


.
Date: Fri, 26 Jul 2024 21:12:43 +0800
From: Gao Xiang <xiang@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-erofs@lists.ozlabs.org, LKML <linux-kernel@vger.kernel.org>,
	Hongbo Li <lihongbo22@huawei.com>,
	Huang Xiaojia <huangxiaojia2@huawei.com>,
	Chen Ni <nichen@iscas.ac.cn>, Chao Yu <chao@kernel.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>
Subject: [GIT PULL] erofs more updates for 6.11-rc1

Hi Linus,

Could you consider these extra patches for 6.11-rc1?

Two patches add STATX_DIOALIGN and FS_IOC_GETFSSYSFSPATH support and
another one gets rid of the remaining page->index in the codebase
according to [1].  I tend to resolve them in this cycle since those
improvements are actually straight-forward.

The remaining fix addresses a LZ4 decompression race introduced in
v6.10 found by regular stress tests.

All commits have been in -next except for Chao's new reviewed-bys,
so I re-pushed them again.  No potential merge conflict is observed.

[1] https://lore.kernel.org/r/Zp8fgUSIBGQ1TN0D@casper.infradead.org

Thanks,
Gao Xiang

The following changes since commit a3c10bed330b7ab401254a0c91098a03b04f1448:

  erofs: silence uninitialized variable warning in z_erofs_scan_folio() (2024-07-13 12:47:34 +0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git tags/erofs-for-6.11-rc1-2

for you to fetch changes up to 14e9283fb22d0d259820a5f05c6059678bab9ac5:

  erofs: convert comma to semicolon (2024-07-26 18:48:12 +0800)

----------------------------------------------------------------
Changes since last update:

 - Support STATX_DIOALIGN and FS_IOC_GETFSSYSFSPATH;

 - Fix a race of LZ4 decompression due to recent refactoring;

 - Another multi-page folio adaption in erofs_bread().

----------------------------------------------------------------
Chen Ni (1):
      erofs: convert comma to semicolon

Gao Xiang (2):
      erofs: fix race in z_erofs_get_gbuf()
      erofs: support multi-page folios for erofs_bread()

Hongbo Li (1):
      erofs: support STATX_DIOALIGN

Huang Xiaojia (1):
      erofs: add support for FS_IOC_GETFSSYSFSPATH

 fs/erofs/data.c              | 30 ++++++++++++------------------
 fs/erofs/decompressor_lzma.c |  2 +-
 fs/erofs/inode.c             | 19 +++++++++++++++++--
 fs/erofs/super.c             | 16 ++++++++++++++++
 fs/erofs/zutil.c             |  3 +++
 5 files changed, 49 insertions(+), 21 deletions(-)

.
Date: Fri, 26 Jul 2024 16:17:34 +0200
From: Vasily Gorbik <gor@linux.ibm.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Heiko Carstens <hca@linux.ibm.com>,
        Alexander Gordeev <agordeev@linux.ibm.com>,
        linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Subject: [GIT PULL] more s390 updates for 6.11 merge window

Hello Linus,

please pull more s390 updates for 6.11 merge window.

Thank you,
Vasily

The following changes since commit 66ebbdfdeb093e097399b1883390079cd4c3022b:

  Merge tag 'irq-msi-2024-07-22' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip (2024-07-22 14:02:19 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git tags/s390-6.11-2

for you to fetch changes up to 6dc2e98d5f1de162d1777aee97e59d75d70d07c5:

  s390: Remove protvirt and kvm config guards for uv code (2024-07-23 16:02:33 +0200)

----------------------------------------------------------------
more s390 updates for 6.11 merge window

- Fix KMSAN build breakage caused by the conflict between s390 and
  mm-stable trees

- Add KMSAN page markers for ptdump

- Add runtime constant support

- Fix __pa/__va for modules under non-GPL licenses by exporting necessary
  vm_layout struct with EXPORT_SYMBOL to prevent linkage problems

- Fix an endless loop in the CF_DIAG event stop in the CPU Measurement
  Counter Facility code when the counter set size is zero

- Remove the PROTECTED_VIRTUALIZATION_GUEST config option and enable
  its functionality by default

- Support allocation of multiple MSI interrupts per device and improve
  logging of architecture-specific limitations

- Add support for lowcore relocation as a debugging feature to catch
  all null ptr dereferences in the kernel address space, improving
  detection beyond the current implementation's limited write access
  protection

- Clean up and rework CPU alternatives to allow for callbacks and early
  patching for the lowcore relocation

----------------------------------------------------------------
Alexander Gordeev (1):
      s390/boot: Do not assume the decompressor range is reserved

Gerd Bayer (2):
      s390/pci: Refactor arch_setup_msi_irqs()
      s390/pci: Allow allocation of more than 1 MSI interrupt

Heiko Carstens (11):
      s390: Add runtime constant support
      s390/alternatives: Use consistent naming
      s390/alternatives: Merge both alternative header files
      s390/alternatives: Move text sync functions
      s390/uaccess: Make s390_kernel_write() usable for decompressor
      s390/alternatives: Rework to allow for callbacks
      s390/nospec: Push down alternative handling
      s390/alternatives: Remove alternative facility list
      s390/nmi: Simplify ptregs setup
      s390/entry: Move SIE indicator flag to thread info
      s390/atomic_ops: Disable flag outputs constraint for GCC versions below 14.2.0

Ilya Leoshkevich (2):
      s390/kmsan: Fix merge conflict with get_lowcore() introduction
      s390/ptdump: Add KMSAN page markers

Janosch Frank (1):
      s390: Remove protvirt and kvm config guards for uv code

Sven Schnelle (20):
      s390/smp: Handle restart interrupt on ipl cpu
      s390/smp: Switch pcpu_devices to percpu
      s390: Move CIF flags to struct pcpu
      s390/alternatives: Remove noaltinstr option
      s390/alternatives: Allow early alternative patching in decompressor
      s390: Add infrastructure to patch lowcore accesses
      s390/head64: Make startup code ready for lowcore relocation
      s390/entry: Make __sie64a() ready for lowcore relocation
      s390/entry: Add base register to MBEAR macro
      s390/entry: Add base register to SIEEXIT macro
      s390/entry: Add base register to CHECK_VMAP_STACK/CHECK_STACK macro
      s390/entry: Make pgm_check_handler() ready for lowcore relocation
      s390/entry: Make int handlers ready for lowcore relocation
      s390/entry: Make mchk_int_handler() ready for lowcore relocation
      s390/entry: Make restart_int_handler() ready for lowcore relocation
      s390/entry: Make __switch_to() ready for lowcore relocation
      s390/entry: Make ret_from_fork() ready for lowcore relocation
      s390/entry: Make system_call() ready for lowcore relocation
      s390/kdump: Make kdump ready for lowcore relocation
      s390/boot: Add cmdline option to relocate lowcore

Thomas Richter (1):
      s390/cpum_cf: Fix endless loop in CF_DIAG event stop

Vasily Gorbik (1):
      s390/setup: Fix __pa/__va for modules under non-GPL licenses

 Documentation/admin-guide/kernel-parameters.txt |   3 -
 arch/s390/Kconfig                               |  11 --
 arch/s390/boot/Makefile                         |   3 +-
 arch/s390/boot/alternative.c                    |   3 +
 arch/s390/boot/boot.h                           |   4 +
 arch/s390/boot/ipl_parm.c                       |   3 +
 arch/s390/boot/startup.c                        |  14 +-
 arch/s390/boot/uv.c                             |   8 -
 arch/s390/boot/uv.h                             |  13 --
 arch/s390/boot/vmem.c                           |  11 +-
 arch/s390/configs/debug_defconfig               |   1 -
 arch/s390/configs/defconfig                     |   1 -
 arch/s390/include/asm/abs_lowcore.h             |   8 +
 arch/s390/include/asm/alternative-asm.h         |  57 ------
 arch/s390/include/asm/alternative.h             | 154 +++++++++++++--
 arch/s390/include/asm/atomic_ops.h              |   3 +-
 arch/s390/include/asm/facility.h                |   1 -
 arch/s390/include/asm/kmsan.h                   |   6 +-
 arch/s390/include/asm/lowcore.h                 |  32 ++-
 arch/s390/include/asm/nospec-branch.h           |   9 +
 arch/s390/include/asm/page.h                    |   2 -
 arch/s390/include/asm/processor.h               |  30 ++-
 arch/s390/include/asm/runtime-const.h           |  77 ++++++++
 arch/s390/include/asm/smp.h                     |   1 -
 arch/s390/include/asm/spinlock.h                |   2 +-
 arch/s390/include/asm/thread_info.h             |   1 +
 arch/s390/include/asm/uaccess.h                 |   9 +-
 arch/s390/include/asm/uv.h                      |  32 ---
 arch/s390/kernel/Makefile                       |   3 +-
 arch/s390/kernel/abs_lowcore.c                  |   1 +
 arch/s390/kernel/alternative.c                  |  75 +++----
 arch/s390/kernel/alternative.h                  |   0
 arch/s390/kernel/asm-offsets.c                  |   5 +-
 arch/s390/kernel/early.c                        |   9 +-
 arch/s390/kernel/entry.S                        | 251 +++++++++++++-----------
 arch/s390/kernel/head64.S                       |   8 +-
 arch/s390/kernel/ipl.c                          |   2 +-
 arch/s390/kernel/machine_kexec.c                |   2 +-
 arch/s390/kernel/nospec-branch.c                |  16 +-
 arch/s390/kernel/nospec-sysfs.c                 |   2 +-
 arch/s390/kernel/perf_cpum_cf.c                 |  14 +-
 arch/s390/kernel/processor.c                    |  20 +-
 arch/s390/kernel/reipl.S                        |  26 ++-
 arch/s390/kernel/setup.c                        |   7 +-
 arch/s390/kernel/smp.c                          | 141 ++++++-------
 arch/s390/kernel/uv.c                           |  35 ++--
 arch/s390/kernel/vmlinux.lds.S                  |   5 +
 arch/s390/lib/spinlock.c                        |   4 +-
 arch/s390/mm/dump_pagetables.c                  |  30 +++
 arch/s390/mm/maccess.c                          |   4 +-
 arch/s390/pci/pci_irq.c                         | 110 +++++++----
 drivers/s390/char/Kconfig                       |   2 +-
 52 files changed, 746 insertions(+), 525 deletions(-)
 create mode 100644 arch/s390/boot/alternative.c
 delete mode 100644 arch/s390/include/asm/alternative-asm.h
 create mode 100644 arch/s390/include/asm/runtime-const.h
 create mode 100644 arch/s390/kernel/alternative.h

.
Date: Fri, 26 Jul 2024 16:42:11 +0200
From: Ilya Dryomov <idryomov@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: ceph-devel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] Ceph fixes for 6.11-rc1

Hi Linus,

The following changes since commit 0c3836482481200ead7b416ca80c68a29cfdaabd:

  Linux 6.10 (2024-07-14 15:43:32 -0700)

are available in the Git repository at:

  https://github.com/ceph/ceph-client.git tags/ceph-for-6.11-rc1

for you to fetch changes up to 3ceccb14f5576e02b81cc8b105ab81f224bd87f6:

  rbd: don't assume rbd_is_lock_owner() for exclusive mappings (2024-07-25 12:18:29 +0200)

----------------------------------------------------------------
A small patchset to address bogus I/O errors and ultimately an
assertion failure in the face of watch errors with -o exclusive
mappings in RBD marked for stable and some assorted CephFS fixes.

----------------------------------------------------------------
Chen Ni (1):
      ceph: convert comma to semicolon in __ceph_dentry_dir_lease_touch()

Ilya Dryomov (3):
      rbd: rename RBD_LOCK_STATE_RELEASING and releasing_wait
      rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings
      rbd: don't assume rbd_is_lock_owner() for exclusive mappings

Max Kellermann (1):
      ceph: use cap_wait_list only if debugfs is enabled

Xiubo Li (1):
      ceph: periodically flush the cap releases

ethanwu (1):
      ceph: fix incorrect kmalloc size of pagevec mempool

 drivers/block/rbd.c  | 35 +++++++++++++++--------------------
 fs/ceph/caps.c       |  6 ++++++
 fs/ceph/dir.c        |  2 +-
 fs/ceph/mds_client.c |  4 ++++
 fs/ceph/mds_client.h |  6 ++++++
 fs/ceph/super.c      |  3 ++-
 6 files changed, 34 insertions(+), 22 deletions(-)

.
Date: Fri, 26 Jul 2024 19:38:16 +0100
From: Mark Brown <broonie@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Mark Brown <broonie@kernel.org>
Subject: [GIT PULL] regmap fixes for v6.11-merge-window

The following changes since commit c2bb8198fee88a428513f8d023c627ecd13aa694:

  regmap: kunit: Add test cases for regmap_multi_reg_(read,write}() (2024-07-11 12:45:55 +0100)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git tags/regmap-fix-v6.11-merge-window

for you to fetch changes up to 542440fd7b30983cae23e32bd22f69a076ec7ef4:

  regmap: maple: work around gcc-14.1 false-positive warning (2024-07-22 13:04:04 +0100)

----------------------------------------------------------------
regmap: Fix for v6.11

Arnd sent a workaround for a false positive warning which was showing up
with GCC 14.1.

----------------------------------------------------------------
Arnd Bergmann (1):
      regmap: maple: work around gcc-14.1 false-positive warning

 drivers/base/regmap/regcache-maple.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

.
Date: Fri, 26 Jul 2024 19:38:35 +0100
From: Mark Brown <broonie@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>, linux-kernel@vger.kernel.org, Mark Brown <broonie@kernel.org>
Subject: [GIT PULL] regulator fixes for v6.11-merge-window

The following changes since commit ef0b29e744965e8abc14260503a559366219035c:

  regulator: dt-bindings: pca9450: Make interrupt optional (2024-07-08 12:50:21 +0100)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git tags/regulator-fix-v6.11-merge-window

for you to fetch changes up to e975d955c07cbc2cd6a83a5d8235d8373441fdb9:

  regulator: Further restrict RZG2L USB VBCTRL regulator dependencies (2024-07-26 15:11:25 +0100)

----------------------------------------------------------------
regulator: Fixes for v6.11

These two commits clean up the excessively loose dependencies for the
RZG2L USB VBCTRL regulator driver, ensuring it shouldn't prompt for
people who can't use it.

----------------------------------------------------------------
Biju Das (1):
      regulator: renesas-usb-vbus-regulator: Update the default

Mark Brown (1):
      regulator: Further restrict RZG2L USB VBCTRL regulator dependencies

 drivers/regulator/Kconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

.
Date: Fri, 26 Jul 2024 19:38:48 +0100
From: Mark Brown <broonie@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Mark Brown <broonie@kernel.org>
Subject: [GIT PULL] SPI fixes for v6.11-merge-window

The following changes since commit 3048dc8ba46b7ba11581f2a7e06849af0df13136:

  spi: dt-bindings: at91: Add sama7d65 compatible string (2024-07-12 00:18:43 +0100)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git tags/spi-fix-v6.11-merge-window

for you to fetch changes up to fc28d1c1fe3b3e2fbc50834c8f73dda72f6af9fc:

  spi: spidev: add correct compatible for Rohm BH2228FV (2024-07-18 11:17:09 +0100)

----------------------------------------------------------------
spi: Fixes for v6.11

The bulk of this is a series of fixes for the microchip-core driver
mostly originating from one of their customers, I also applied an
additional patch adding support for controlling the word size which came
along with it since it's still the merge window and clearly had a bunch
of fairly thorough testing.

We also have a fix for the compatible used to bind spidev to the
BH2228FV.

----------------------------------------------------------------
Conor Dooley (2):
      dt-bindings: trivial-devices: fix Rohm BH2228FV compatible string
      spi: spidev: add correct compatible for Rohm BH2228FV

Naga Sureshkumar Relli (1):
      spi: microchip-core: fix the issues in the isr

Steve Wilkins (5):
      spi: microchip-core: defer asserting chip select until just before write to TX FIFO
      spi: microchip-core: only disable SPI controller when register value change requires it
      spi: microchip-core: fix init function not setting the master and motorola modes
      spi: microchip-core: ensure TX and RX FIFOs are empty at start of a transfer
      spi: microchip-core: add support for word sizes of 1 to 32 bits

 .../devicetree/bindings/trivial-devices.yaml       |   4 +-
 drivers/spi/spi-microchip-core.c                   | 190 ++++++++++++---------
 drivers/spi/spidev.c                               |   1 +
 3 files changed, 114 insertions(+), 81 deletions(-)

.
Date: Fri, 26 Jul 2024 11:57:14 -0700
From: Stephen Boyd <sboyd@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Michael Turquette <mturquette@baylibre.com>,
	linux-clk@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] clk fixes for the merge window

The following changes since commit 589eb11498fbf7de7a1bc8ff1f4b7592687dfd46:

  Merge branches 'clk-qcom', 'clk-rockchip', 'clk-sophgo' and 'clk-thead' into clk-next (2024-07-16 11:24:25 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git tags/clk-for-linus

for you to fetch changes up to f99b3feb3b0e9fca2257c90fc8317be8ee44c19a:

  clk: samsung: fix getting Exynos4 fin_pll rate from external clocks (2024-07-23 11:29:23 -0700)

----------------------------------------------------------------
A few clk driver fixes for the merge window to fix the build and boot on
some SoCs.

 - Initialize struct clk_init_data in the TI da8xx-cfgchip driver so
   that stack contents aren't used for things like clk flags leading to
   unexpected behavior

 - Don't leak stack contents in a debug print in the new Sophgo clk
   driver

 - Disable the new T-Head clk driver on 32-bit targets to fix the build
   due to a division

 - Fix Samsung Exynos4 fin_pll wreckage from the clkdev rework done last
   cycle by using a struct clk_hw directly instead of a struct clk
   consumer

----------------------------------------------------------------
Bastien Curutchet (1):
      clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use

Dan Carpenter (1):
      clk: sophgo: clk-sg2042-pll: Fix uninitialized variable in debug output

Krzysztof Kozlowski (1):
      clk: samsung: fix getting Exynos4 fin_pll rate from external clocks

Palmer Dabbelt (1):
      clk: T-Head: Disable on 32-bit Targets

 drivers/clk/davinci/da8xx-cfgchip.c |  4 ++--
 drivers/clk/samsung/clk-exynos4.c   | 13 +++++++------
 drivers/clk/sophgo/clk-sg2042-pll.c |  2 +-
 drivers/clk/thead/Kconfig           |  1 +
 4 files changed, 11 insertions(+), 9 deletions(-)

-- 
https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/
https://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git

.
Date: Fri, 26 Jul 2024 14:15:58 -0500
From: Rob Herring <robh@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Saravana Kannan <saravanak@google.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org
Subject: [GIT PULL] Devicetree updates for v6.11, part 2

Linus,

Please pull 2nd batch of DT updates for 6.11. Most of it is a treewide 
change to of_property_for_each_u32() which was small enough to do in one 
go before rc1 and avoids the need to create 
of_property_for_each_u32_some_new_name().

Rob


The following changes since commit c33ffdb70cc6df4105160f991288e7d2567d7ffa:

  Merge tag 'phy-for-6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy (2024-07-24 13:11:28 -0700)

are available in the Git repository at:

  ssh://git@gitolite.kernel.org/pub/scm/linux/kernel/git/robh/linux.git tags/devicetree-fixes-for-6.11-1

for you to fetch changes up to 6dc55268f64b780eb8774de3705f791b689853bb:

  dt-bindings: iio: adc: ad7192: Fix 'single-channel' constraints (2024-07-26 13:53:20 -0500)

----------------------------------------------------------------
Devicetree fixes for 6.11, part 1

- Treewide conversion of of_property_for_each_u32() to drop internal
  arguments making struct property opaque

- Add binding for Amlogic A4 SoC watchdog

- Fix constraints for AD7192 'single-channel' property

----------------------------------------------------------------
Huqiang Qin (1):
      dt-bindings: watchdog: add support for Amlogic A4 SoCs

Luca Ceresoli (1):
      of: remove internal arguments from of_property_for_each_u32()

Rob Herring (Arm) (1):
      dt-bindings: iio: adc: ad7192: Fix 'single-channel' constraints

 .../devicetree/bindings/iio/adc/adi,ad7192.yaml    |  5 +--
 .../bindings/watchdog/amlogic,meson-gxbb-wdt.yaml  |  1 +
 arch/powerpc/sysdev/xive/native.c                  |  4 +-
 arch/powerpc/sysdev/xive/spapr.c                   |  3 +-
 drivers/bus/ti-sysc.c                              |  4 +-
 drivers/clk/clk-conf.c                             |  4 +-
 drivers/clk/clk-si5351.c                           | 43 +++++++++++++---------
 drivers/clk/clk.c                                  | 12 +++---
 drivers/clk/qcom/common.c                          |  4 +-
 drivers/clk/sunxi/clk-simple-gates.c               |  4 +-
 drivers/clk/sunxi/clk-sun8i-bus-gates.c            |  4 +-
 drivers/clocksource/samsung_pwm_timer.c            |  4 +-
 drivers/gpio/gpio-brcmstb.c                        |  5 +--
 drivers/iio/adc/ti_am335x_adc.c                    |  4 +-
 drivers/irqchip/irq-atmel-aic-common.c             |  4 +-
 drivers/irqchip/irq-pic32-evic.c                   |  4 +-
 drivers/mfd/ti_am335x_tscadc.c                     |  4 +-
 drivers/pinctrl/nxp/pinctrl-s32cc.c                |  4 +-
 drivers/pinctrl/pinctrl-k210.c                     |  4 +-
 drivers/pwm/pwm-samsung.c                          |  4 +-
 drivers/tty/sysrq.c                                |  4 +-
 drivers/usb/misc/usb251xb.c                        |  4 +-
 include/linux/of.h                                 | 15 ++++----
 sound/soc/codecs/arizona.c                         | 12 +++---
 24 files changed, 64 insertions(+), 96 deletions(-)

.
Date: Fri, 26 Jul 2024 22:58:34 +0200 (CEST)
From: Richard Weinberger <richard@nod.at>
To: torvalds <torvalds@linux-foundation.org>
Cc: linux-mtd <linux-mtd@lists.infradead.org>, 
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] UBI and UBIFS updates for v6.11-rc1

Linus,

The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git tags/ubifs-for-linus-6.11-rc1

for you to fetch changes up to 054fd15984454f031611d6c63675fc578aad0cb1:

  ubifs: add check for crypto_shash_tfm_digest (2024-07-12 22:01:09 +0200)

----------------------------------------------------------------
This pull request contains updates (actually, just fixes) for UBI and UBIFS:

- Many fixes for power-cut issues by Zhihao Cheng
- Another ubiblock error path fix
- Misc fixes all over the place

----------------------------------------------------------------
Arnd Bergmann (1):
      mtd: ubi: avoid expensive do_div() on 32-bit machines

Ben Hutchings (1):
      mtd: ubi: Restore missing cleanup on ubi_init() failure path

Chen Ni (1):
      ubifs: add check for crypto_shash_tfm_digest

Fedor Pchelkin (1):
      ubi: eba: properly rollback inside self_check_eba

Jeff Johnson (1):
      ubifs: fix kernel-doc warnings

Li Nan (1):
      ubi: block: fix null-pointer-dereference in ubiblock_create()

Ricardo B. Marliere (1):
      mtd: ubi: make ubi_class constant

ZhaoLong Wang (1):
      ubifs: correct UBIFS_DFS_DIR_LEN macro definition and improve code clarity

Zhihao Cheng (10):
      ubifs: Fix unattached xattr inode if powercut happens after deleting
      ubifs: Don't add xattr inode into orphan area
      Revert "ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path"
      ubifs: Remove insert_dead_orphan from replaying orphan process
      ubifs: Fix adding orphan entry twice for the same inode
      ubifs: Move ui->data initialization after initializing security
      ubifs: Fix space leak when powercut happens in linking tmpfile
      ubifs: Fix unattached inode when powercut happens in creating
      ubifs: dbg_orphan_check: Fix missed key type checking
      ubifs: Fix inconsistent inode size when powercut happens during appendant writing

 drivers/mtd/ubi/block.c |   7 ++-
 drivers/mtd/ubi/build.c |   7 ++-
 drivers/mtd/ubi/debug.c |   4 +-
 drivers/mtd/ubi/eba.c   |   3 +-
 drivers/mtd/ubi/nvmem.c |   6 +-
 drivers/mtd/ubi/ubi.h   |   4 +-
 fs/ubifs/compress.c     |   2 +
 fs/ubifs/debug.c        |   4 +-
 fs/ubifs/debug.h        |   7 ++-
 fs/ubifs/dir.c          |  91 ++++++++++++++++------------
 fs/ubifs/file.c         |   2 +-
 fs/ubifs/find.c         |   8 +--
 fs/ubifs/journal.c      |  16 +++--
 fs/ubifs/lprops.c       |   2 +-
 fs/ubifs/lpt.c          |   1 +
 fs/ubifs/master.c       |   5 +-
 fs/ubifs/orphan.c       | 155 ++++++++----------------------------------------
 fs/ubifs/replay.c       |   1 +
 fs/ubifs/sysfs.c        |   6 +-
 fs/ubifs/ubifs.h        |  14 +----
 fs/ubifs/xattr.c        |   2 +-
 21 files changed, 134 insertions(+), 213 deletions(-)

.
Date: Fri, 26 Jul 2024 14:36:15 -0700
From: Andrew Morton <akpm@linux-foundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-mm@kvack.org, mm-commits@vger.kernel.org,
 linux-kernel@vger.kernel.org
Subject: [GIT PULL] hotfixes for 6.11-rc1


Linus, please merge this batch of hotfixes, thanks.

The following changes since commit 1722389b0d863056d78287a120a1d6cadb8d4f7b:

  Merge tag 'net-6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net (2024-07-25 13:32:25 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-hotfixes-stable-2024-07-26-14-33

for you to fetch changes up to 4811f7af6090e8f5a398fbdd766f903ef6c0d787:

  nilfs2: handle inconsistent state in nilfs_btnode_create_block() (2024-07-26 14:33:10 -0700)

----------------------------------------------------------------
11 hotfixes, 7 of which are cc:stable.  7 are MM, 4 are other.

----------------------------------------------------------------
Dev Jain (1):
      selftests/mm: skip test for non-LPA2 and non-LVA systems

Gavin Shan (1):
      mm/huge_memory: avoid PMD-size page cache if needed

James Clark (2):
      MAINTAINERS: mailmap: update James Clark's email address
      dt-bindings: arm: update James Clark's email address

Li Zhijian (1):
      mm/page_alloc: fix pcp->count race between drain_pages_zone() vs __rmqueue_pcplist()

Ram Tummala (1):
      mm: fix old/young bit handling in the faulting path

Roman Gushchin (1):
      mm: memcg: add cacheline padding after lruvec in mem_cgroup_per_node

Ross Lagerwall (1):
      decompress_bunzip2: fix rare decompression failure

Ryusuke Konishi (1):
      nilfs2: handle inconsistent state in nilfs_btnode_create_block()

Suren Baghdasaryan (1):
      alloc_tag: outline and export free_reserved_page()

Yang Shi (1):
      mm: huge_memory: use !CONFIG_64BIT to relax huge page alignment on 32 bit machines

 .mailmap                                           |  1 +
 .../bindings/arm/arm,coresight-dummy-sink.yaml     |  2 +-
 .../bindings/arm/arm,coresight-dummy-source.yaml   |  2 +-
 MAINTAINERS                                        |  4 +--
 fs/nilfs2/btnode.c                                 | 25 ++++++++++++----
 fs/nilfs2/btree.c                                  |  4 +--
 include/linux/huge_mm.h                            | 12 ++++++--
 include/linux/memcontrol.h                         |  1 +
 include/linux/mm.h                                 | 16 +---------
 lib/decompress_bunzip2.c                           |  3 +-
 mm/huge_memory.c                                   | 14 +++++++--
 mm/memory.c                                        |  2 +-
 mm/page_alloc.c                                    | 35 +++++++++++++++++-----
 tools/testing/selftests/mm/va_high_addr_switch.c   | 16 +++++++++-
 14 files changed, 95 insertions(+), 42 deletions(-)


.
