diff --git a/Patchlist.changelog b/Patchlist.changelog index 67c807649..7158ba7f8 100644 --- a/Patchlist.changelog +++ b/Patchlist.changelog @@ -1,3 +1,51 @@ +https://gitlab.com/cki-project/kernel-ark/-/commit/180930ed9274fe54b614d47d428a7066872cbfbc + 180930ed9274fe54b614d47d428a7066872cbfbc drm/i915/psr: Compute psr_entry_setup_frames into intel_crtc_state + +https://gitlab.com/cki-project/kernel-ark/-/commit/8bd7222346771c0c2d1370e1241844da12e64f04 + 8bd7222346771c0c2d1370e1241844da12e64f04 drm/i915/psr: Disable PSR on update_m_n and update_lrr + +https://gitlab.com/cki-project/kernel-ark/-/commit/b65eebb41f006cfa73428450c8ca3d3b13a2dc00 + b65eebb41f006cfa73428450c8ca3d3b13a2dc00 drm/i915/psr: Fix for Panel Replay X granularity DPCD register handling + +https://gitlab.com/cki-project/kernel-ark/-/commit/de2a12e6e66f83f16be9aae9047521dbedccf367 + de2a12e6e66f83f16be9aae9047521dbedccf367 drm/dp: Add definition for Panel Replay full-line granularity + +https://gitlab.com/cki-project/kernel-ark/-/commit/b2811c6f72c7698d253de0a510e4ed4c560e4eac + b2811c6f72c7698d253de0a510e4ed4c560e4eac drm/i915/display: Allow async flip when Selective Fetch is enabled + +https://gitlab.com/cki-project/kernel-ark/-/commit/68317f9eed3e078deba4c477e440f994339efaf0 + 68317f9eed3e078deba4c477e440f994339efaf0 drm/i915/psr: Perform full frame update on async flip + +https://gitlab.com/cki-project/kernel-ark/-/commit/016d23c5b94014ee369bcf98cd45634186bad241 + 016d23c5b94014ee369bcf98cd45634186bad241 drm/i915/psr: Set plane id bit in crtc_state->async_flip_planes for PSR + +https://gitlab.com/cki-project/kernel-ark/-/commit/1b8dff6a6f9a0c0e72d3daa24d2ec303e7cd388d + 1b8dff6a6f9a0c0e72d3daa24d2ec303e7cd388d drm/i915/psr: Move sink_sync_latency to intel_connector + +https://gitlab.com/cki-project/kernel-ark/-/commit/5e0436964801e08c9766f4157ee0c194d81b8e34 + 5e0436964801e08c9766f4157ee0c194d81b8e34 drm/i915/psr: Move sink PSR and Panel Replay booleans to intel_connector + +https://gitlab.com/cki-project/kernel-ark/-/commit/062c5ae887d2840faad6b1f1e667c2e20bcd6b34 + 062c5ae887d2840faad6b1f1e667c2e20bcd6b34 drm/i915/psr: Move Panel Replay DSC sink support data to intel_connector + +https://gitlab.com/cki-project/kernel-ark/-/commit/8c762b324298183f5a0ce6347e83e94e91353aec + 8c762b324298183f5a0ce6347e83e94e91353aec drm/i915/psr: Clear pr_dpcd as well on disconnect + +https://gitlab.com/cki-project/kernel-ark/-/commit/cb1e5f63019fa6dbd8089b54bb1b0394ccaa5963 + cb1e5f63019fa6dbd8089b54bb1b0394ccaa5963 drm/i915/psr: Move pr_dpcd and psr_dpcd to intel_connector + +https://gitlab.com/cki-project/kernel-ark/-/commit/41f8283c9818f1619978d886469c7945ad6c1439 + 41f8283c9818f1619978d886469c7945ad6c1439 drm/i915/psr: Compute Panel Replay/Adaptive Sync coexistence behavior + +https://gitlab.com/cki-project/kernel-ark/-/commit/49b90d24a3977900cec844e9dcc505eeee3e9125 + 49b90d24a3977900cec844e9dcc505eeee3e9125 drm/i915/psr: Use SU granularity information available in intel_connector + +https://gitlab.com/cki-project/kernel-ark/-/commit/56be8088ce2890370f06ae0a2377803684e548db + 56be8088ce2890370f06ae0a2377803684e548db drm/i915/psr: Add panel granularity information into intel_connector + +https://gitlab.com/cki-project/kernel-ark/-/commit/4c1ef504e039f646fdc6039019c6e909523c8698 + 4c1ef504e039f646fdc6039019c6e909523c8698 iommu: Fix mapping check for 0x0 to avoid re-mapping it + https://gitlab.com/cki-project/kernel-ark/-/commit/338f45a28efdfb7b01659662434fe7e4a21db681 338f45a28efdfb7b01659662434fe7e4a21db681 net: macb: Fix tx/rx malfunction after phy link down and up diff --git a/kernel-aarch64-16k-debug-fedora.config b/kernel-aarch64-16k-debug-fedora.config index 6d9052d1f..5de661c90 100644 --- a/kernel-aarch64-16k-debug-fedora.config +++ b/kernel-aarch64-16k-debug-fedora.config @@ -3009,7 +3009,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-aarch64-16k-fedora.config b/kernel-aarch64-16k-fedora.config index 196e904b9..2a1d8bb62 100644 --- a/kernel-aarch64-16k-fedora.config +++ b/kernel-aarch64-16k-fedora.config @@ -2991,7 +2991,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-aarch64-debug-fedora.config b/kernel-aarch64-debug-fedora.config index 8abf70c7c..3800bf22b 100644 --- a/kernel-aarch64-debug-fedora.config +++ b/kernel-aarch64-debug-fedora.config @@ -3009,7 +3009,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-aarch64-fedora.config b/kernel-aarch64-fedora.config index f64a70512..abea4cb2c 100644 --- a/kernel-aarch64-fedora.config +++ b/kernel-aarch64-fedora.config @@ -2991,7 +2991,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-aarch64-rt-64k-debug-fedora.config b/kernel-aarch64-rt-64k-debug-fedora.config index df9d8a540..822a58c9e 100644 --- a/kernel-aarch64-rt-64k-debug-fedora.config +++ b/kernel-aarch64-rt-64k-debug-fedora.config @@ -3016,7 +3016,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-aarch64-rt-64k-fedora.config b/kernel-aarch64-rt-64k-fedora.config index 2cdf1e1d1..ee91a6641 100644 --- a/kernel-aarch64-rt-64k-fedora.config +++ b/kernel-aarch64-rt-64k-fedora.config @@ -2998,7 +2998,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-aarch64-rt-debug-fedora.config b/kernel-aarch64-rt-debug-fedora.config index 9aecb9990..8fe001956 100644 --- a/kernel-aarch64-rt-debug-fedora.config +++ b/kernel-aarch64-rt-debug-fedora.config @@ -3013,7 +3013,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-aarch64-rt-fedora.config b/kernel-aarch64-rt-fedora.config index bff469dd9..1c45be6f8 100644 --- a/kernel-aarch64-rt-fedora.config +++ b/kernel-aarch64-rt-fedora.config @@ -2995,7 +2995,19 @@ CONFIG_GOOGLE_COREBOOT_TABLE=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-ppc64le-debug-fedora.config b/kernel-ppc64le-debug-fedora.config index eedd48dac..7b82c787c 100644 --- a/kernel-ppc64le-debug-fedora.config +++ b/kernel-ppc64le-debug-fedora.config @@ -2329,7 +2329,19 @@ CONFIG_GNSS_USB=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-ppc64le-fedora.config b/kernel-ppc64le-fedora.config index 1c373f39b..b8b9c6489 100644 --- a/kernel-ppc64le-fedora.config +++ b/kernel-ppc64le-fedora.config @@ -2310,7 +2310,19 @@ CONFIG_GNSS_USB=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-riscv64-debug-fedora.config b/kernel-riscv64-debug-fedora.config index 13112f701..7b0846ff6 100644 --- a/kernel-riscv64-debug-fedora.config +++ b/kernel-riscv64-debug-fedora.config @@ -2382,7 +2382,19 @@ CONFIG_GOLDFISH=y # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-riscv64-fedora.config b/kernel-riscv64-fedora.config index 3deb9a1fb..8eaf5753d 100644 --- a/kernel-riscv64-fedora.config +++ b/kernel-riscv64-fedora.config @@ -2363,7 +2363,19 @@ CONFIG_GOLDFISH=y # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-riscv64-rt-debug-fedora.config b/kernel-riscv64-rt-debug-fedora.config index e37efe1f0..1bde022ec 100644 --- a/kernel-riscv64-rt-debug-fedora.config +++ b/kernel-riscv64-rt-debug-fedora.config @@ -2386,7 +2386,19 @@ CONFIG_GOLDFISH=y # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-riscv64-rt-fedora.config b/kernel-riscv64-rt-fedora.config index cb62ad2c6..8c900934f 100644 --- a/kernel-riscv64-rt-fedora.config +++ b/kernel-riscv64-rt-fedora.config @@ -2367,7 +2367,19 @@ CONFIG_GOLDFISH=y # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ADNP is not set diff --git a/kernel-s390x-debug-fedora.config b/kernel-s390x-debug-fedora.config index 8c3eba6f8..597c4079a 100644 --- a/kernel-s390x-debug-fedora.config +++ b/kernel-s390x-debug-fedora.config @@ -2327,7 +2327,19 @@ CONFIG_GNSS_USB=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_ADNP is not set CONFIG_GPIO_ADP5585=m diff --git a/kernel-s390x-fedora.config b/kernel-s390x-fedora.config index 65f4dc07b..3602af25a 100644 --- a/kernel-s390x-fedora.config +++ b/kernel-s390x-fedora.config @@ -2308,7 +2308,19 @@ CONFIG_GNSS_USB=m # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_ADNP is not set CONFIG_GPIO_ADP5585=m diff --git a/kernel-x86_64-debug-fedora.config b/kernel-x86_64-debug-fedora.config index 608bba3bf..7c14b3eb7 100644 --- a/kernel-x86_64-debug-fedora.config +++ b/kernel-x86_64-debug-fedora.config @@ -2554,7 +2554,19 @@ CONFIG_GNSS_USB=m CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set CONFIG_GPD_POCKET_FAN=m -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_ADNP is not set CONFIG_GPIO_ADP5585=m diff --git a/kernel-x86_64-fedora.config b/kernel-x86_64-fedora.config index b17d977b7..83c61e127 100644 --- a/kernel-x86_64-fedora.config +++ b/kernel-x86_64-fedora.config @@ -2535,7 +2535,19 @@ CONFIG_GNSS_USB=m CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set CONFIG_GPD_POCKET_FAN=m -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_ADNP is not set CONFIG_GPIO_ADP5585=m diff --git a/kernel-x86_64-rt-debug-fedora.config b/kernel-x86_64-rt-debug-fedora.config index 23bd00b2b..2c4c6706a 100644 --- a/kernel-x86_64-rt-debug-fedora.config +++ b/kernel-x86_64-rt-debug-fedora.config @@ -2558,7 +2558,19 @@ CONFIG_GNSS_USB=m CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set CONFIG_GPD_POCKET_FAN=m -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_ADNP is not set CONFIG_GPIO_ADP5585=m diff --git a/kernel-x86_64-rt-fedora.config b/kernel-x86_64-rt-fedora.config index b73bfc8ac..9787cc898 100644 --- a/kernel-x86_64-rt-fedora.config +++ b/kernel-x86_64-rt-fedora.config @@ -2539,7 +2539,19 @@ CONFIG_GNSS_USB=m CONFIG_GP2AP002=m # CONFIG_GP2AP020A00F is not set CONFIG_GPD_POCKET_FAN=m -# CONFIG_GPIB is not set +CONFIG_GPIB_AGILENT_82350B=m +CONFIG_GPIB_AGILENT_82357A=m +CONFIG_GPIB_CB7210=m +CONFIG_GPIB_CEC_PCI=m +CONFIG_GPIB_COMMON=m +CONFIG_GPIB_FLUKE=m +CONFIG_GPIB_FMH=m +CONFIG_GPIB_GPIO=m +CONFIG_GPIB_INES=m +CONFIG_GPIB_LPVO=m +CONFIG_GPIB=m +CONFIG_GPIB_NI_PCI_ISA=m +CONFIG_GPIB_NI_USB=m # CONFIG_GPIO_74X164 is not set # CONFIG_GPIO_ADNP is not set CONFIG_GPIO_ADP5585=m diff --git a/kernel.changelog b/kernel.changelog index 48765bfd9..1c7d59cec 100644 --- a/kernel.changelog +++ b/kernel.changelog @@ -1,3 +1,28 @@ +* Thu Mar 12 2026 Justin M. Forbes [6.19.7-0] +- Add some BugsFixed by 6.19.7 (Justin M. Forbes) +- drm/i915/psr: Compute psr_entry_setup_frames into intel_crtc_state (Jouni Högander) +- drm/i915/psr: Disable PSR on update_m_n and update_lrr (Jouni Högander) +- Turn on GPIB for Fedora (Justin M. Forbes) +- drm/i915/psr: Fix for Panel Replay X granularity DPCD register handling (Jouni Högander) +- drm/dp: Add definition for Panel Replay full-line granularity (Jouni Högander) +- drm/i915/display: Allow async flip when Selective Fetch is enabled (Jouni Högander) +- drm/i915/psr: Perform full frame update on async flip (Jouni Högander) +- drm/i915/psr: Set plane id bit in crtc_state->async_flip_planes for PSR (Jouni Högander) +- drm/i915/psr: Move sink_sync_latency to intel_connector (Jouni Högander) +- drm/i915/psr: Move sink PSR and Panel Replay booleans to intel_connector (Jouni Högander) +- drm/i915/psr: Move Panel Replay DSC sink support data to intel_connector (Jouni Högander) +- drm/i915/psr: Clear pr_dpcd as well on disconnect (Jouni Högander) +- drm/i915/psr: Move pr_dpcd and psr_dpcd to intel_connector (Jouni Högander) +- drm/i915/psr: Compute Panel Replay/Adaptive Sync coexistence behavior (Jouni Högander) +- drm/i915/psr: Use SU granularity information available in intel_connector (Jouni Högander) +- drm/i915/psr: Add panel granularity information into intel_connector (Jouni Högander) +- Work around binutils update in s390x perf (Justin M. Forbes) +- iommu: Fix mapping check for 0x0 to avoid re-mapping it (Antheas Kapenekakis) +- Revert the UKI dtbloader for F42 (Justin M. Forbes) +- Turn on release_targets for F43/F42 (Justin M. Forbes) +- Linux v6.19.7 +Resolves: + * Wed Mar 04 2026 Justin M. Forbes [6.19.6-0] - net: macb: Fix tx/rx malfunction after phy link down and up (Kevin Hao) - net: macb: Replace open-coded device config retrieval with of_device_get_match_data() (Kevin Hao) diff --git a/kernel.spec b/kernel.spec index 189ea81e1..50bf3dee5 100644 --- a/kernel.spec +++ b/kernel.spec @@ -184,18 +184,18 @@ Summary: The Linux kernel # the --with-release option overrides this setting.) %define debugbuildsenabled 1 # define buildid .local -%define specrpmversion 6.19.6 -%define specversion 6.19.6 +%define specrpmversion 6.19.7 +%define specversion 6.19.7 %define patchversion 6.19 %define pkgrelease 200 %define kversion 6 -%define tarfile_release 6.19.6 +%define tarfile_release 6.19.7 # This is needed to do merge window version magic %define patchlevel 19 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 200%{?buildid}%{?dist} # This defines the kabi tarball version -%define kabiversion 6.19.6 +%define kabiversion 6.19.7 # If this variable is set to 1, a bpf selftests build failure will cause a # fatal kernel package build error @@ -3334,8 +3334,11 @@ fi %ifarch aarch64 %global perf_build_extra_opts CORESIGHT=1 %endif +%ifarch s390x +%global perf_build_extra_ldflags -Wl,-z,notext +%endif %global perf_make \ - %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags} -Wl,-E" %{?cross_opts} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 LIBTRACEEVENT_DYNAMIC=1 %{?perf_build_extra_opts} prefix=%{_prefix} PYTHON=%{__python3} + %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags} -Wl,-E %{?perf_build_extra_ldflags}" %{?cross_opts} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 LIBTRACEEVENT_DYNAMIC=1 %{?perf_build_extra_opts} prefix=%{_prefix} PYTHON=%{__python3} %if %{with_perf} %{log_msg "Build perf"} # perf @@ -4811,8 +4814,29 @@ fi\ # # %changelog -* Wed Mar 04 2026 Justin M. Forbes [6.19.6-200] +* Thu Mar 12 2026 Justin M. Forbes [6.19.7-0] +- Add some BugsFixed by 6.19.7 (Justin M. Forbes) +- drm/i915/psr: Compute psr_entry_setup_frames into intel_crtc_state (Jouni Högander) +- drm/i915/psr: Disable PSR on update_m_n and update_lrr (Jouni Högander) +- Turn on GPIB for Fedora (Justin M. Forbes) +- drm/i915/psr: Fix for Panel Replay X granularity DPCD register handling (Jouni Högander) +- drm/dp: Add definition for Panel Replay full-line granularity (Jouni Högander) +- drm/i915/display: Allow async flip when Selective Fetch is enabled (Jouni Högander) +- drm/i915/psr: Perform full frame update on async flip (Jouni Högander) +- drm/i915/psr: Set plane id bit in crtc_state->async_flip_planes for PSR (Jouni Högander) +- drm/i915/psr: Move sink_sync_latency to intel_connector (Jouni Högander) +- drm/i915/psr: Move sink PSR and Panel Replay booleans to intel_connector (Jouni Högander) +- drm/i915/psr: Move Panel Replay DSC sink support data to intel_connector (Jouni Högander) +- drm/i915/psr: Clear pr_dpcd as well on disconnect (Jouni Högander) +- drm/i915/psr: Move pr_dpcd and psr_dpcd to intel_connector (Jouni Högander) +- drm/i915/psr: Compute Panel Replay/Adaptive Sync coexistence behavior (Jouni Högander) +- drm/i915/psr: Use SU granularity information available in intel_connector (Jouni Högander) +- drm/i915/psr: Add panel granularity information into intel_connector (Jouni Högander) +- Work around binutils update in s390x perf (Justin M. Forbes) +- iommu: Fix mapping check for 0x0 to avoid re-mapping it (Antheas Kapenekakis) +- Revert the UKI dtbloader for F42 (Justin M. Forbes) - Turn on release_targets for F43/F42 (Justin M. Forbes) +- Linux v6.19.7 * Wed Mar 04 2026 Justin M. Forbes [6.19.6-0] - net: macb: Fix tx/rx malfunction after phy link down and up (Kevin Hao) diff --git a/patch-6.19-redhat.patch b/patch-6.19-redhat.patch index aa85aa675..478cb69f9 100644 --- a/patch-6.19-redhat.patch +++ b/patch-6.19-redhat.patch @@ -1,52 +1,60 @@ - Makefile | 30 +++++ + Makefile | 30 ++ arch/arm/Kconfig | 4 +- arch/arm64/Kconfig | 2 +- - arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 15 +++ - arch/arm64/kernel/setup.c | 27 +++++ + arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 15 + + arch/arm64/kernel/setup.c | 27 ++ arch/s390/include/asm/ipl.h | 1 + arch/s390/kernel/ipl.c | 5 + arch/s390/kernel/setup.c | 4 + - arch/x86/kernel/setup.c | 22 ++-- + arch/x86/kernel/setup.c | 22 +- crypto/akcipher.c | 3 +- - crypto/dh.c | 25 +++++ - crypto/seqiv.c | 15 ++- + crypto/dh.c | 25 ++ + crypto/seqiv.c | 15 +- crypto/sig.c | 3 +- crypto/testmgr.c | 6 +- - drivers/acpi/apei/hest.c | 8 ++ - drivers/acpi/irq.c | 17 ++- - drivers/acpi/scan.c | 9 ++ - drivers/ata/libahci.c | 18 +++ + drivers/acpi/apei/hest.c | 8 + + drivers/acpi/irq.c | 17 +- + drivers/acpi/scan.c | 9 + + drivers/ata/libahci.c | 18 ++ drivers/firmware/efi/Makefile | 1 + - drivers/firmware/efi/efi.c | 124 +++++++++++++++------ + drivers/firmware/efi/efi.c | 124 ++++++-- drivers/firmware/efi/libstub/fdt.c | 5 + - drivers/firmware/efi/libstub/secureboot.c | 14 ++- - drivers/firmware/efi/secureboot.c | 38 +++++++ - drivers/hid/hid-rmi.c | 66 ----------- - drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 ++++ - drivers/input/rmi4/rmi_driver.c | 124 ++++++++++++--------- - drivers/iommu/iommu.c | 22 ++++ - drivers/media/pci/intel/ipu-bridge.c | 14 +++ - drivers/net/ethernet/cadence/macb_main.c | 29 ++--- - drivers/pci/quirks.c | 24 ++++ - drivers/scsi/sd.c | 10 ++ - drivers/usb/core/hub.c | 7 ++ + drivers/firmware/efi/libstub/secureboot.c | 14 +- + drivers/firmware/efi/secureboot.c | 38 +++ + drivers/gpu/drm/i915/display/intel_alpm.c | 6 +- + drivers/gpu/drm/i915/display/intel_display.c | 8 - + drivers/gpu/drm/i915/display/intel_display_types.h | 46 ++- + drivers/gpu/drm/i915/display/intel_dp.c | 17 +- + drivers/gpu/drm/i915/display/intel_plane.c | 10 +- + drivers/gpu/drm/i915/display/intel_psr.c | 317 +++++++++++---------- + drivers/gpu/drm/i915/display/intel_psr.h | 2 +- + drivers/hid/hid-rmi.c | 66 ----- + drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 ++ + drivers/input/rmi4/rmi_driver.c | 124 ++++---- + drivers/iommu/iommu.c | 28 +- + drivers/media/pci/intel/ipu-bridge.c | 14 + + drivers/net/ethernet/cadence/macb_main.c | 29 +- + drivers/pci/quirks.c | 24 ++ + drivers/scsi/sd.c | 10 + + drivers/usb/core/hub.c | 7 + + include/drm/display/drm_dp.h | 2 + include/linux/crypto.h | 2 + - include/linux/efi.h | 22 ++-- + include/linux/efi.h | 22 +- include/linux/lsm_hook_defs.h | 1 + include/linux/rmi.h | 1 + - include/linux/security.h | 9 ++ + include/linux/security.h | 9 + kernel/module/signing.c | 9 +- scripts/Makefile.lib | 3 + scripts/tags.sh | 2 + security/integrity/platform_certs/load_uefi.c | 6 +- - security/lockdown/Kconfig | 13 +++ - security/lockdown/lockdown.c | 11 ++ + security/lockdown/Kconfig | 13 + + security/lockdown/lockdown.c | 11 + tools/testing/selftests/bpf/Makefile | 2 +- - tools/testing/selftests/bpf/prog_tests/ksyms_btf.c | 31 ------ - 45 files changed, 590 insertions(+), 233 deletions(-) + tools/testing/selftests/bpf/prog_tests/ksyms_btf.c | 31 -- + 53 files changed, 823 insertions(+), 414 deletions(-) diff --git a/Makefile b/Makefile -index 67f26d8b29343..d1f4007b07369 100644 +index eb431129c7ab..c5dcc804f7af 100644 --- a/Makefile +++ b/Makefile @@ -355,6 +355,17 @@ ifneq ($(filter install,$(MAKECMDGOALS)),) @@ -101,7 +109,7 @@ index 67f26d8b29343..d1f4007b07369 100644 @: diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index fa83c040ee2d4..96c9bcf9e7b17 100644 +index fa83c040ee2d..96c9bcf9e7b1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1212,9 +1212,9 @@ config HIGHMEM @@ -117,7 +125,7 @@ index fa83c040ee2d4..96c9bcf9e7b17 100644 The VM uses one page of physical memory for each page table. For systems with a lot of processes, this can use a lot of diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 93173f0a09c7d..8f992962ccd35 100644 +index 93173f0a09c7..8f992962ccd3 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1433,7 +1433,7 @@ endchoice @@ -130,7 +138,7 @@ index 93173f0a09c7d..8f992962ccd35 100644 For systems with 52-bit userspace VAs enabled, the kernel will attempt to maintain compatibility with older software by providing 48-bit VAs diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi -index 205b87f557d6d..d57a9b1bff70c 100644 +index 205b87f557d6..d57a9b1bff70 100644 --- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi +++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi @@ -250,6 +250,15 @@ uart10: serial@7d001000 { @@ -163,7 +171,7 @@ index 205b87f557d6d..d57a9b1bff70c 100644 compatible = "brcm,bcm7271-l2-intc"; reg = <0x7d517000 0x10>; diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c -index 23c05dc7a8f2a..d7b7b2f39e169 100644 +index 23c05dc7a8f2..d7b7b2f39e16 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -32,6 +32,8 @@ @@ -215,7 +223,7 @@ index 23c05dc7a8f2a..d7b7b2f39e169 100644 arm64_memblock_init(); diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h -index b0d00032479d6..afb9544fb0074 100644 +index b0d00032479d..afb9544fb007 100644 --- a/arch/s390/include/asm/ipl.h +++ b/arch/s390/include/asm/ipl.h @@ -139,6 +139,7 @@ int ipl_report_add_component(struct ipl_report *report, struct kexec_buf *kbuf, @@ -227,7 +235,7 @@ index b0d00032479d6..afb9544fb0074 100644 /* * DIAG 308 support diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c -index dcdc7e2748486..6b2fc225fa184 100644 +index 049c557c452f..4c9fffbe6261 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c @@ -2521,3 +2521,8 @@ int ipl_report_free(struct ipl_report *report) @@ -240,7 +248,7 @@ index dcdc7e2748486..6b2fc225fa184 100644 + return !!ipl_secure_flag; +} diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c -index c1fe0b53c5ac5..8e17bfe788cb9 100644 +index c1fe0b53c5ac..8e17bfe788cb 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c @@ -47,6 +47,7 @@ @@ -262,7 +270,7 @@ index c1fe0b53c5ac5..8e17bfe788cb9 100644 /* boot_command_line has been already set up in early.c */ *cmdline_p = boot_command_line; diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index 383d4a4784f5b..45f428436e2d9 100644 +index 383d4a4784f5..45f428436e2d 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -21,6 +21,7 @@ @@ -309,7 +317,7 @@ index 383d4a4784f5b..45f428436e2d9 100644 reserve_initrd(); diff --git a/crypto/akcipher.c b/crypto/akcipher.c -index a36f50c838278..f4f421e6cff20 100644 +index a36f50c83827..f4f421e6cff2 100644 --- a/crypto/akcipher.c +++ b/crypto/akcipher.c @@ -142,8 +142,7 @@ int crypto_register_akcipher(struct akcipher_alg *alg) @@ -323,7 +331,7 @@ index a36f50c838278..f4f421e6cff20 100644 alg->set_priv_key = akcipher_default_set_key; diff --git a/crypto/dh.c b/crypto/dh.c -index 8250eeeebd0fe..01f0f3963a740 100644 +index 8250eeeebd0f..01f0f3963a74 100644 --- a/crypto/dh.c +++ b/crypto/dh.c @@ -227,10 +227,35 @@ static int dh_compute_value(struct kpp_request *req) @@ -363,7 +371,7 @@ index 8250eeeebd0fe..01f0f3963a740 100644 } diff --git a/crypto/seqiv.c b/crypto/seqiv.c -index 678bb4145d783..fcc059e7d3db5 100644 +index 678bb4145d78..fcc059e7d3db 100644 --- a/crypto/seqiv.c +++ b/crypto/seqiv.c @@ -123,6 +123,19 @@ static int seqiv_aead_decrypt(struct aead_request *req) @@ -396,7 +404,7 @@ index 678bb4145d783..fcc059e7d3db5 100644 inst->alg.base.cra_ctxsize = sizeof(struct aead_geniv_ctx); diff --git a/crypto/sig.c b/crypto/sig.c -index beba745b64057..fd41f6d3abf9a 100644 +index beba745b6405..fd41f6d3abf9 100644 --- a/crypto/sig.c +++ b/crypto/sig.c @@ -112,8 +112,7 @@ static int sig_prepare_alg(struct sig_alg *alg) @@ -410,7 +418,7 @@ index beba745b64057..fd41f6d3abf9a 100644 alg->verify = sig_default_verify; if (!alg->set_priv_key) diff --git a/crypto/testmgr.c b/crypto/testmgr.c -index a302be53896d3..ade6307dbf899 100644 +index a302be53896d..ade6307dbf89 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -3843,7 +3843,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm, @@ -447,7 +455,7 @@ index a302be53896d3..ade6307dbf899 100644 .kpp = __VECS(ecdh_p384_tv_template) } diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c -index 20d757687e3d9..90a13f20f052b 100644 +index 20d757687e3d..90a13f20f052 100644 --- a/drivers/acpi/apei/hest.c +++ b/drivers/acpi/apei/hest.c @@ -142,6 +142,14 @@ static int apei_hest_parse(apei_hest_func_t func, void *data) @@ -466,7 +474,7 @@ index 20d757687e3d9..90a13f20f052b 100644 for (i = 0; i < hest_tab->error_source_count; i++) { len = hest_esrc_len(hest_hdr); diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c -index d1595156c86a4..9485212f1a6d6 100644 +index d1595156c86a..9485212f1a6d 100644 --- a/drivers/acpi/irq.c +++ b/drivers/acpi/irq.c @@ -143,6 +143,7 @@ struct acpi_irq_parse_one_ctx { @@ -509,7 +517,7 @@ index d1595156c86a4..9485212f1a6d6 100644 return ctx.rc; } diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c -index b78f6be2f9468..8bf534f6f8933 100644 +index b78f6be2f946..8bf534f6f893 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1803,6 +1803,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) @@ -529,7 +537,7 @@ index b78f6be2f9468..8bf534f6f8933 100644 acpi_dev_get_resources(device, &resource_list, acpi_check_serial_bus_slave, diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c -index c79abdfcd7a9b..e23bfb7f94c72 100644 +index c79abdfcd7a9..e23bfb7f94c7 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -731,6 +731,24 @@ int ahci_stop_engine(struct ata_port *ap) @@ -558,7 +566,7 @@ index c79abdfcd7a9b..e23bfb7f94c72 100644 tmp = ata_wait_register(ap, port_mmio + PORT_CMD, PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500); diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile -index 8efbcf699e4ff..96d5a1ca981df 100644 +index 8efbcf699e4f..96d5a1ca981d 100644 --- a/drivers/firmware/efi/Makefile +++ b/drivers/firmware/efi/Makefile @@ -25,6 +25,7 @@ subdir-$(CONFIG_EFI_STUB) += libstub @@ -570,7 +578,7 @@ index 8efbcf699e4ff..96d5a1ca981df 100644 obj-$(CONFIG_EFI_RCI2_TABLE) += rci2-table.o obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE) += embedded-firmware.o diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index 92e91c3eb4690..aa4845ea0acb3 100644 +index 92e91c3eb469..aa4845ea0acb 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -33,6 +33,7 @@ @@ -715,7 +723,7 @@ index 92e91c3eb4690..aa4845ea0acb3 100644 EXPORT_SYMBOL_GPL(efi_status_to_err); diff --git a/drivers/firmware/efi/libstub/fdt.c b/drivers/firmware/efi/libstub/fdt.c -index 6a337f1f8787b..89244e0d9fa86 100644 +index 6a337f1f8787..89244e0d9fa8 100644 --- a/drivers/firmware/efi/libstub/fdt.c +++ b/drivers/firmware/efi/libstub/fdt.c @@ -132,6 +132,11 @@ static efi_status_t update_fdt(void *orig_fdt, unsigned long orig_fdt_size, @@ -731,7 +739,7 @@ index 6a337f1f8787b..89244e0d9fa86 100644 fdt_pack(fdt); diff --git a/drivers/firmware/efi/libstub/secureboot.c b/drivers/firmware/efi/libstub/secureboot.c -index 516f4f0069bd2..380354755108b 100644 +index 516f4f0069bd..380354755108 100644 --- a/drivers/firmware/efi/libstub/secureboot.c +++ b/drivers/firmware/efi/libstub/secureboot.c @@ -29,10 +29,13 @@ enum efi_secureboot_mode efi_get_secureboot(void) @@ -768,7 +776,7 @@ index 516f4f0069bd2..380354755108b 100644 } diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c new file mode 100644 -index 0000000000000..de0a3714a5d44 +index 000000000000..de0a3714a5d4 --- /dev/null +++ b/drivers/firmware/efi/secureboot.c @@ -0,0 +1,38 @@ @@ -810,8 +818,942 @@ index 0000000000000..de0a3714a5d44 + } + } +} +diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c +index 6372f533f65b..7ce8c674bb03 100644 +--- a/drivers/gpu/drm/i915/display/intel_alpm.c ++++ b/drivers/gpu/drm/i915/display/intel_alpm.c +@@ -326,11 +326,9 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp, + if (intel_dp->as_sdp_supported) { + u32 pr_alpm_ctl = PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1; + +- if (intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)] & +- DP_PANEL_REPLAY_LINK_OFF_SUPPORTED_IN_PR_AFTER_ADAPTIVE_SYNC_SDP) ++ if (crtc_state->link_off_after_as_sdp_when_pr_active) + pr_alpm_ctl |= PR_ALPM_CTL_ALLOW_LINK_OFF_BETWEEN_AS_SDP_AND_SU; +- if (!(intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)] & +- DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR)) ++ if (crtc_state->disable_as_sdp_when_pr_active) + pr_alpm_ctl |= PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE; + + intel_de_write(display, PR_ALPM_CTL(display, cpu_transcoder), +diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c +index 095a319f8bc9..808ac34c1914 100644 +--- a/drivers/gpu/drm/i915/display/intel_display.c ++++ b/drivers/gpu/drm/i915/display/intel_display.c +@@ -6032,14 +6032,6 @@ static int intel_async_flip_check_uapi(struct intel_atomic_state *state, + return -EINVAL; + } + +- /* FIXME: selective fetch should be disabled for async flips */ +- if (new_crtc_state->enable_psr2_sel_fetch) { +- drm_dbg_kms(display->drm, +- "[CRTC:%d:%s] async flip disallowed with PSR2 selective fetch\n", +- crtc->base.base.id, crtc->base.name); +- return -EINVAL; +- } +- + for_each_oldnew_intel_plane_in_state(state, plane, old_plane_state, + new_plane_state, i) { + if (plane->pipe != crtc->pipe) +diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h +index 6e26751e8d0e..a83620b8618f 100644 +--- a/drivers/gpu/drm/i915/display/intel_display_types.h ++++ b/drivers/gpu/drm/i915/display/intel_display_types.h +@@ -510,6 +510,12 @@ struct intel_hdcp { + bool force_hdcp14; + }; + ++enum intel_panel_replay_dsc_support { ++ INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED, ++ INTEL_DP_PANEL_REPLAY_DSC_FULL_FRAME_ONLY, ++ INTEL_DP_PANEL_REPLAY_DSC_SELECTIVE_UPDATE, ++}; ++ + struct intel_connector { + struct drm_connector base; + /* +@@ -562,6 +568,30 @@ struct intel_connector { + } overall_throughput; + int max_line_width; + } dsc_branch_caps; ++ ++ struct { ++ u8 dpcd[DP_PANEL_REPLAY_CAP_SIZE]; ++#define INTEL_PR_DPCD_INDEX(pr_dpcd_register) ((pr_dpcd_register) - DP_PANEL_REPLAY_CAP_SUPPORT) ++ ++ bool support; ++ bool su_support; ++ enum intel_panel_replay_dsc_support dsc_support; ++ ++ u16 su_w_granularity; ++ u16 su_y_granularity; ++ } panel_replay_caps; ++ ++ struct { ++ u8 dpcd[EDP_PSR_RECEIVER_CAP_SIZE]; ++ ++ bool support; ++ bool su_support; ++ ++ u16 su_w_granularity; ++ u16 su_y_granularity; ++ ++ u8 sync_latency; ++ } psr_caps; + } dp; + + struct { +@@ -956,12 +986,6 @@ struct intel_csc_matrix { + u16 postoff[3]; + }; + +-enum intel_panel_replay_dsc_support { +- INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED, +- INTEL_DP_PANEL_REPLAY_DSC_FULL_FRAME_ONLY, +- INTEL_DP_PANEL_REPLAY_DSC_SELECTIVE_UPDATE, +-}; +- + struct scaler_filter_coeff { + u16 sign; + u16 exp; +@@ -1153,6 +1177,8 @@ struct intel_crtc_state { + bool enable_psr2_su_region_et; + bool req_psr2_sdp_prior_scanline; + bool has_panel_replay; ++ bool link_off_after_as_sdp_when_pr_active; ++ bool disable_as_sdp_when_pr_active; + bool wm_level_disabled; + bool pkg_c_latency_used; + /* Only used for state verification. */ +@@ -1160,6 +1186,7 @@ struct intel_crtc_state { + u32 dc3co_exitline; + u16 su_y_granularity; + u8 active_non_psr_pipes; ++ u8 entry_setup_frames; + const char *no_psr_reason; + + /* +@@ -1717,14 +1744,12 @@ struct intel_psr { + bool active; + struct work_struct work; + unsigned int busy_frontbuffer_bits; +- bool sink_psr2_support; + bool link_standby; + bool sel_update_enabled; + bool psr2_sel_fetch_enabled; + bool psr2_sel_fetch_cff_enabled; + bool su_region_et_enabled; + bool req_psr2_sdp_prior_scanline; +- u8 sink_sync_latency; + ktime_t last_entry_attempt; + ktime_t last_exit; + bool sink_not_reliable; +@@ -1733,8 +1758,6 @@ struct intel_psr { + u16 su_y_granularity; + bool source_panel_replay_support; + bool sink_panel_replay_support; +- bool sink_panel_replay_su_support; +- enum intel_panel_replay_dsc_support sink_panel_replay_dsc_support; + bool panel_replay_enabled; + u32 dc3co_exitline; + u32 dc3co_exit_delay; +@@ -1761,9 +1784,6 @@ struct intel_dp { + bool needs_modeset_retry; + bool use_max_params; + u8 dpcd[DP_RECEIVER_CAP_SIZE]; +- u8 psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE]; +- u8 pr_dpcd[DP_PANEL_REPLAY_CAP_SIZE]; +-#define INTEL_PR_DPCD_INDEX(pr_dpcd_register) ((pr_dpcd_register) - DP_PANEL_REPLAY_CAP_SUPPORT) + + u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; + u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE]; +diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c +index ee258df439a7..d818d2cde2af 100644 +--- a/drivers/gpu/drm/i915/display/intel_dp.c ++++ b/drivers/gpu/drm/i915/display/intel_dp.c +@@ -4590,7 +4590,7 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector + * This has to be called after intel_dp->edp_dpcd is filled, PSR checks + * for SET_POWER_CAPABLE bit in intel_dp->edp_dpcd[1] + */ +- intel_psr_init_dpcd(intel_dp); ++ intel_psr_init_dpcd(intel_dp, connector); + + intel_edp_set_sink_rates(intel_dp); + intel_dp_set_max_sink_lane_count(intel_dp); +@@ -6077,10 +6077,19 @@ intel_dp_detect(struct drm_connector *_connector, + + if (status == connector_status_disconnected) { + intel_dp_test_reset(intel_dp); ++ /* ++ * FIXME: Resetting these caps here cause ++ * state computation fail if the connector need to be ++ * modeset after sink disconnect. Move resetting them ++ * to where new sink is connected. ++ */ + memset(connector->dp.dsc_dpcd, 0, sizeof(connector->dp.dsc_dpcd)); ++ memset(connector->dp.panel_replay_caps.dpcd, 0, ++ sizeof(connector->dp.panel_replay_caps.dpcd)); + intel_dp->psr.sink_panel_replay_support = false; +- intel_dp->psr.sink_panel_replay_su_support = false; +- intel_dp->psr.sink_panel_replay_dsc_support = ++ connector->dp.panel_replay_caps.support = false; ++ connector->dp.panel_replay_caps.su_support = false; ++ connector->dp.panel_replay_caps.dsc_support = + INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED; + + intel_dp_mst_disconnect(intel_dp); +@@ -6103,7 +6112,7 @@ intel_dp_detect(struct drm_connector *_connector, + connector->base.epoch_counter++; + + if (!intel_dp_is_edp(intel_dp)) +- intel_psr_init_dpcd(intel_dp); ++ intel_psr_init_dpcd(intel_dp, connector); + + intel_dp_detect_dsc_caps(intel_dp, connector); + +diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c +index ab6a58530b39..707670ff71ec 100644 +--- a/drivers/gpu/drm/i915/display/intel_plane.c ++++ b/drivers/gpu/drm/i915/display/intel_plane.c +@@ -651,11 +651,10 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr + ilk_must_disable_cxsr(new_crtc_state, old_plane_state, new_plane_state)) + new_crtc_state->disable_cxsr = true; + +- if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state)) { ++ if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state)) + new_crtc_state->do_async_flip = true; +- new_crtc_state->async_flip_planes |= BIT(plane->id); +- } else if (plane->need_async_flip_toggle_wa && +- new_crtc_state->uapi.async_flip) { ++ ++ if (new_crtc_state->uapi.async_flip) { + /* + * On platforms with double buffered async flip bit we + * set the bit already one frame early during the sync +@@ -663,6 +662,9 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr + * hardware will therefore be ready to perform a real + * async flip during the next commit, without having + * to wait yet another frame for the bit to latch. ++ * ++ * async_flip_planes bitmask is also used by selective ++ * fetch calculation to choose full frame update. + */ + new_crtc_state->async_flip_planes |= BIT(plane->id); + } +diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c +index 44063b578354..fa351a973e27 100644 +--- a/drivers/gpu/drm/i915/display/intel_psr.c ++++ b/drivers/gpu/drm/i915/display/intel_psr.c +@@ -494,82 +494,37 @@ static u8 intel_dp_get_sink_sync_latency(struct intel_dp *intel_dp) + return val; + } + +-static u8 intel_dp_get_su_capability(struct intel_dp *intel_dp) +-{ +- u8 su_capability = 0; +- +- if (intel_dp->psr.sink_panel_replay_su_support) { +- if (drm_dp_dpcd_read_byte(&intel_dp->aux, +- DP_PANEL_REPLAY_CAP_CAPABILITY, +- &su_capability) < 0) +- return 0; +- } else { +- su_capability = intel_dp->psr_dpcd[1]; +- } +- +- return su_capability; +-} +- +-static unsigned int +-intel_dp_get_su_x_granularity_offset(struct intel_dp *intel_dp) +-{ +- return intel_dp->psr.sink_panel_replay_su_support ? +- DP_PANEL_REPLAY_CAP_X_GRANULARITY : +- DP_PSR2_SU_X_GRANULARITY; +-} +- +-static unsigned int +-intel_dp_get_su_y_granularity_offset(struct intel_dp *intel_dp) +-{ +- return intel_dp->psr.sink_panel_replay_su_support ? +- DP_PANEL_REPLAY_CAP_Y_GRANULARITY : +- DP_PSR2_SU_Y_GRANULARITY; +-} +- +-/* +- * Note: Bits related to granularity are same in panel replay and psr +- * registers. Rely on PSR definitions on these "common" bits. +- */ +-static void intel_dp_get_su_granularity(struct intel_dp *intel_dp) ++static void _psr_compute_su_granularity(struct intel_dp *intel_dp, ++ struct intel_connector *connector) + { + struct intel_display *display = to_intel_display(intel_dp); + ssize_t r; +- u16 w; ++ __le16 w; + u8 y; + +- /* +- * TODO: Do we need to take into account panel supporting both PSR and +- * Panel replay? +- */ +- + /* + * If sink don't have specific granularity requirements set legacy + * ones. + */ +- if (!(intel_dp_get_su_capability(intel_dp) & +- DP_PSR2_SU_GRANULARITY_REQUIRED)) { ++ if (!(connector->dp.psr_caps.dpcd[1] & DP_PSR2_SU_GRANULARITY_REQUIRED)) { + /* As PSR2 HW sends full lines, we do not care about x granularity */ +- w = 4; ++ w = cpu_to_le16(4); + y = 4; + goto exit; + } + +- r = drm_dp_dpcd_read(&intel_dp->aux, +- intel_dp_get_su_x_granularity_offset(intel_dp), +- &w, 2); +- if (r != 2) ++ r = drm_dp_dpcd_read(&intel_dp->aux, DP_PSR2_SU_X_GRANULARITY, &w, sizeof(w)); ++ if (r != sizeof(w)) + drm_dbg_kms(display->drm, + "Unable to read selective update x granularity\n"); + /* + * Spec says that if the value read is 0 the default granularity should + * be used instead. + */ +- if (r != 2 || w == 0) +- w = 4; ++ if (r != sizeof(w) || w == 0) ++ w = cpu_to_le16(4); + +- r = drm_dp_dpcd_read(&intel_dp->aux, +- intel_dp_get_su_y_granularity_offset(intel_dp), +- &y, 1); ++ r = drm_dp_dpcd_read(&intel_dp->aux, DP_PSR2_SU_Y_GRANULARITY, &y, 1); + if (r != 1) { + drm_dbg_kms(display->drm, + "Unable to read selective update y granularity\n"); +@@ -579,17 +534,17 @@ static void intel_dp_get_su_granularity(struct intel_dp *intel_dp) + y = 1; + + exit: +- intel_dp->psr.su_w_granularity = w; +- intel_dp->psr.su_y_granularity = y; ++ connector->dp.psr_caps.su_w_granularity = le16_to_cpu(w); ++ connector->dp.psr_caps.su_y_granularity = y; + } + + static enum intel_panel_replay_dsc_support +-compute_pr_dsc_support(struct intel_dp *intel_dp) ++compute_pr_dsc_support(struct intel_connector *connector) + { + u8 pr_dsc_mode; + u8 val; + +- val = intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)]; ++ val = connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)]; + pr_dsc_mode = REG_FIELD_GET8(DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_MASK, val); + + switch (pr_dsc_mode) { +@@ -621,7 +576,31 @@ static const char *panel_replay_dsc_support_str(enum intel_panel_replay_dsc_supp + }; + } + +-static void _panel_replay_init_dpcd(struct intel_dp *intel_dp) ++static void _panel_replay_compute_su_granularity(struct intel_connector *connector) ++{ ++ u16 w; ++ u8 y; ++ ++ if (!(connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)] & ++ DP_PANEL_REPLAY_SU_GRANULARITY_REQUIRED)) { ++ w = 4; ++ y = 4; ++ goto exit; ++ } ++ ++ /* ++ * Spec says that if the value read is 0 the default granularity should ++ * be used instead. ++ */ ++ w = le16_to_cpu(*(__le16 *)&connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_X_GRANULARITY)]) ? : 4; ++ y = connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_Y_GRANULARITY)] ? : 1; ++ ++exit: ++ connector->dp.panel_replay_caps.su_w_granularity = w; ++ connector->dp.panel_replay_caps.su_y_granularity = y; ++} ++ ++static void _panel_replay_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector) + { + struct intel_display *display = to_intel_display(intel_dp); + int ret; +@@ -631,11 +610,12 @@ static void _panel_replay_init_dpcd(struct intel_dp *intel_dp) + return; + + ret = drm_dp_dpcd_read_data(&intel_dp->aux, DP_PANEL_REPLAY_CAP_SUPPORT, +- &intel_dp->pr_dpcd, sizeof(intel_dp->pr_dpcd)); ++ &connector->dp.panel_replay_caps.dpcd, ++ sizeof(connector->dp.panel_replay_caps.dpcd)); + if (ret < 0) + return; + +- if (!(intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & ++ if (!(connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & + DP_PANEL_REPLAY_SUPPORT)) + return; + +@@ -646,7 +626,7 @@ static void _panel_replay_init_dpcd(struct intel_dp *intel_dp) + return; + } + +- if (!(intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & ++ if (!(connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & + DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT)) { + drm_dbg_kms(display->drm, + "Panel doesn't support early transport, eDP Panel Replay not possible\n"); +@@ -654,36 +634,40 @@ static void _panel_replay_init_dpcd(struct intel_dp *intel_dp) + } + } + ++ connector->dp.panel_replay_caps.support = true; + intel_dp->psr.sink_panel_replay_support = true; + +- if (intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & +- DP_PANEL_REPLAY_SU_SUPPORT) +- intel_dp->psr.sink_panel_replay_su_support = true; ++ if (connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & ++ DP_PANEL_REPLAY_SU_SUPPORT) { ++ connector->dp.panel_replay_caps.su_support = true; + +- intel_dp->psr.sink_panel_replay_dsc_support = compute_pr_dsc_support(intel_dp); ++ _panel_replay_compute_su_granularity(connector); ++ } ++ ++ connector->dp.panel_replay_caps.dsc_support = compute_pr_dsc_support(connector); + + drm_dbg_kms(display->drm, + "Panel replay %sis supported by panel (in DSC mode: %s)\n", +- intel_dp->psr.sink_panel_replay_su_support ? ++ connector->dp.panel_replay_caps.su_support ? + "selective_update " : "", +- panel_replay_dsc_support_str(intel_dp->psr.sink_panel_replay_dsc_support)); ++ panel_replay_dsc_support_str(connector->dp.panel_replay_caps.dsc_support)); + } + +-static void _psr_init_dpcd(struct intel_dp *intel_dp) ++static void _psr_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector) + { + struct intel_display *display = to_intel_display(intel_dp); + int ret; + +- ret = drm_dp_dpcd_read_data(&intel_dp->aux, DP_PSR_SUPPORT, intel_dp->psr_dpcd, +- sizeof(intel_dp->psr_dpcd)); ++ ret = drm_dp_dpcd_read_data(&intel_dp->aux, DP_PSR_SUPPORT, connector->dp.psr_caps.dpcd, ++ sizeof(connector->dp.psr_caps.dpcd)); + if (ret < 0) + return; + +- if (!intel_dp->psr_dpcd[0]) ++ if (!connector->dp.psr_caps.dpcd[0]) + return; + + drm_dbg_kms(display->drm, "eDP panel supports PSR version %x\n", +- intel_dp->psr_dpcd[0]); ++ connector->dp.psr_caps.dpcd[0]); + + if (drm_dp_has_quirk(&intel_dp->desc, DP_DPCD_QUIRK_NO_PSR)) { + drm_dbg_kms(display->drm, +@@ -697,13 +681,14 @@ static void _psr_init_dpcd(struct intel_dp *intel_dp) + return; + } + ++ connector->dp.psr_caps.support = true; + intel_dp->psr.sink_support = true; +- intel_dp->psr.sink_sync_latency = +- intel_dp_get_sink_sync_latency(intel_dp); ++ ++ connector->dp.psr_caps.sync_latency = intel_dp_get_sink_sync_latency(intel_dp); + + if (DISPLAY_VER(display) >= 9 && +- intel_dp->psr_dpcd[0] >= DP_PSR2_WITH_Y_COORD_IS_SUPPORTED) { +- bool y_req = intel_dp->psr_dpcd[1] & ++ connector->dp.psr_caps.dpcd[0] >= DP_PSR2_WITH_Y_COORD_IS_SUPPORTED) { ++ bool y_req = connector->dp.psr_caps.dpcd[1] & + DP_PSR2_SU_Y_COORDINATE_REQUIRED; + + /* +@@ -717,22 +702,21 @@ static void _psr_init_dpcd(struct intel_dp *intel_dp) + * Y-coordinate requirement panels we would need to enable + * GTC first. + */ +- intel_dp->psr.sink_psr2_support = y_req && ++ connector->dp.psr_caps.su_support = y_req && + intel_alpm_aux_wake_supported(intel_dp); + drm_dbg_kms(display->drm, "PSR2 %ssupported\n", +- intel_dp->psr.sink_psr2_support ? "" : "not "); ++ connector->dp.psr_caps.su_support ? "" : "not "); + } ++ ++ if (connector->dp.psr_caps.su_support) ++ _psr_compute_su_granularity(intel_dp, connector); + } + +-void intel_psr_init_dpcd(struct intel_dp *intel_dp) ++void intel_psr_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector) + { +- _psr_init_dpcd(intel_dp); ++ _psr_init_dpcd(intel_dp, connector); + +- _panel_replay_init_dpcd(intel_dp); +- +- if (intel_dp->psr.sink_psr2_support || +- intel_dp->psr.sink_panel_replay_su_support) +- intel_dp_get_su_granularity(intel_dp); ++ _panel_replay_init_dpcd(intel_dp, connector); + } + + static void hsw_psr_setup_aux(struct intel_dp *intel_dp) +@@ -772,8 +756,9 @@ static void hsw_psr_setup_aux(struct intel_dp *intel_dp) + aux_ctl); + } + +-static bool psr2_su_region_et_valid(struct intel_dp *intel_dp, bool panel_replay) ++static bool psr2_su_region_et_valid(struct intel_connector *connector, bool panel_replay) + { ++ struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_display *display = to_intel_display(intel_dp); + + if (DISPLAY_VER(display) < 20 || !intel_dp_is_edp(intel_dp) || +@@ -781,9 +766,9 @@ static bool psr2_su_region_et_valid(struct intel_dp *intel_dp, bool panel_replay + return false; + + return panel_replay ? +- intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & ++ connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & + DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT : +- intel_dp->psr_dpcd[0] == DP_PSR2_WITH_Y_COORD_ET_SUPPORTED; ++ connector->dp.psr_caps.dpcd[0] == DP_PSR2_WITH_Y_COORD_ET_SUPPORTED; + } + + static void _panel_replay_enable_sink(struct intel_dp *intel_dp, +@@ -929,7 +914,7 @@ static u8 psr_compute_idle_frames(struct intel_dp *intel_dp) + * off-by-one issue that HW has in some cases. + */ + idle_frames = max(6, connector->panel.vbt.psr.idle_frames); +- idle_frames = max(idle_frames, intel_dp->psr.sink_sync_latency + 1); ++ idle_frames = max(idle_frames, connector->dp.psr_caps.sync_latency + 1); + + if (drm_WARN_ON(display->drm, idle_frames > 0xf)) + idle_frames = 0xf; +@@ -1024,10 +1009,11 @@ static int psr2_block_count(struct intel_dp *intel_dp) + + static u8 frames_before_su_entry(struct intel_dp *intel_dp) + { ++ struct intel_connector *connector = intel_dp->attached_connector; + u8 frames_before_su_entry; + + frames_before_su_entry = max_t(u8, +- intel_dp->psr.sink_sync_latency + 1, ++ connector->dp.psr_caps.sync_latency + 1, + 2); + + /* Entry setup frames must be at least 1 less than frames before SU entry */ +@@ -1309,25 +1295,37 @@ static bool intel_psr2_sel_fetch_config_valid(struct intel_dp *intel_dp, + return crtc_state->enable_psr2_sel_fetch = true; + } + +-static bool psr2_granularity_check(struct intel_dp *intel_dp, +- struct intel_crtc_state *crtc_state) ++static bool psr2_granularity_check(struct intel_crtc_state *crtc_state, ++ struct intel_connector *connector) + { ++ struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_display *display = to_intel_display(intel_dp); + const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; + const int crtc_hdisplay = crtc_state->hw.adjusted_mode.crtc_hdisplay; + const int crtc_vdisplay = crtc_state->hw.adjusted_mode.crtc_vdisplay; + u16 y_granularity = 0; ++ u16 sink_y_granularity = crtc_state->has_panel_replay ? ++ connector->dp.panel_replay_caps.su_y_granularity : ++ connector->dp.psr_caps.su_y_granularity; ++ u16 sink_w_granularity; ++ ++ if (crtc_state->has_panel_replay) ++ sink_w_granularity = connector->dp.panel_replay_caps.su_w_granularity == ++ DP_PANEL_REPLAY_FULL_LINE_GRANULARITY ? ++ crtc_hdisplay : connector->dp.panel_replay_caps.su_w_granularity; ++ else ++ sink_w_granularity = connector->dp.psr_caps.su_w_granularity; + + /* PSR2 HW only send full lines so we only need to validate the width */ +- if (crtc_hdisplay % intel_dp->psr.su_w_granularity) ++ if (crtc_hdisplay % sink_w_granularity) + return false; + +- if (crtc_vdisplay % intel_dp->psr.su_y_granularity) ++ if (crtc_vdisplay % sink_y_granularity) + return false; + + /* HW tracking is only aligned to 4 lines */ + if (!crtc_state->enable_psr2_sel_fetch) +- return intel_dp->psr.su_y_granularity == 4; ++ return sink_y_granularity == 4; + + /* + * adl_p and mtl platforms have 1 line granularity. +@@ -1335,11 +1333,11 @@ static bool psr2_granularity_check(struct intel_dp *intel_dp, + * to match sink requirement if multiple of 4. + */ + if (display->platform.alderlake_p || DISPLAY_VER(display) >= 14) +- y_granularity = intel_dp->psr.su_y_granularity; +- else if (intel_dp->psr.su_y_granularity <= 2) ++ y_granularity = sink_y_granularity; ++ else if (sink_y_granularity <= 2) + y_granularity = 4; +- else if ((intel_dp->psr.su_y_granularity % 4) == 0) +- y_granularity = intel_dp->psr.su_y_granularity; ++ else if ((sink_y_granularity % 4) == 0) ++ y_granularity = sink_y_granularity; + + if (y_granularity == 0 || crtc_vdisplay % y_granularity) + return false; +@@ -1377,16 +1375,18 @@ static bool _compute_psr2_sdp_prior_scanline_indication(struct intel_dp *intel_d + } + + static int intel_psr_entry_setup_frames(struct intel_dp *intel_dp, ++ struct drm_connector_state *conn_state, + const struct drm_display_mode *adjusted_mode) + { + struct intel_display *display = to_intel_display(intel_dp); +- int psr_setup_time = drm_dp_psr_setup_time(intel_dp->psr_dpcd); ++ struct intel_connector *connector = to_intel_connector(conn_state->connector); ++ int psr_setup_time = drm_dp_psr_setup_time(connector->dp.psr_caps.dpcd); + int entry_setup_frames = 0; + + if (psr_setup_time < 0) { + drm_dbg_kms(display->drm, + "PSR condition failed: Invalid PSR setup time (0x%02x)\n", +- intel_dp->psr_dpcd[1]); ++ connector->dp.psr_caps.dpcd[1]); + return -ETIME; + } + +@@ -1527,14 +1527,16 @@ static bool alpm_config_valid(struct intel_dp *intel_dp, + } + + static bool intel_psr2_config_valid(struct intel_dp *intel_dp, +- struct intel_crtc_state *crtc_state) ++ struct intel_crtc_state *crtc_state, ++ struct drm_connector_state *conn_state) + { + struct intel_display *display = to_intel_display(intel_dp); ++ struct intel_connector *connector = to_intel_connector(conn_state->connector); + int crtc_hdisplay = crtc_state->hw.adjusted_mode.crtc_hdisplay; + int crtc_vdisplay = crtc_state->hw.adjusted_mode.crtc_vdisplay; + int psr_max_h = 0, psr_max_v = 0, max_bpp = 0; + +- if (!intel_dp->psr.sink_psr2_support || display->params.enable_psr == 1) ++ if (!connector->dp.psr_caps.su_support || display->params.enable_psr == 1) + return false; + + /* JSL and EHL only supports eDP 1.3 */ +@@ -1626,9 +1628,11 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp, + return true; + } + +-static bool intel_sel_update_config_valid(struct intel_dp *intel_dp, +- struct intel_crtc_state *crtc_state) ++static bool intel_sel_update_config_valid(struct intel_crtc_state *crtc_state, ++ struct drm_connector_state *conn_state) + { ++ struct intel_connector *connector = to_intel_connector(conn_state->connector); ++ struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_display *display = to_intel_display(intel_dp); + + if (HAS_PSR2_SEL_FETCH(display) && +@@ -1645,7 +1649,8 @@ static bool intel_sel_update_config_valid(struct intel_dp *intel_dp, + goto unsupported; + } + +- if (!crtc_state->has_panel_replay && !intel_psr2_config_valid(intel_dp, crtc_state)) ++ if (!crtc_state->has_panel_replay && !intel_psr2_config_valid(intel_dp, crtc_state, ++ conn_state)) + goto unsupported; + + if (!_compute_psr2_sdp_prior_scanline_indication(intel_dp, crtc_state)) { +@@ -1658,11 +1663,11 @@ static bool intel_sel_update_config_valid(struct intel_dp *intel_dp, + if (DISPLAY_VER(display) < 14) + goto unsupported; + +- if (!intel_dp->psr.sink_panel_replay_su_support) ++ if (!connector->dp.panel_replay_caps.su_support) + goto unsupported; + + if (intel_dsc_enabled_on_link(crtc_state) && +- intel_dp->psr.sink_panel_replay_dsc_support != ++ connector->dp.panel_replay_caps.dsc_support != + INTEL_DP_PANEL_REPLAY_DSC_SELECTIVE_UPDATE) { + drm_dbg_kms(display->drm, + "Selective update with Panel Replay not enabled because it's not supported with DSC\n"); +@@ -1676,14 +1681,14 @@ static bool intel_sel_update_config_valid(struct intel_dp *intel_dp, + goto unsupported; + } + +- if (!psr2_granularity_check(intel_dp, crtc_state)) { ++ if (!psr2_granularity_check(crtc_state, connector)) { + drm_dbg_kms(display->drm, + "Selective update not enabled, SU granularity not compatible\n"); + goto unsupported; + } + +- crtc_state->enable_psr2_su_region_et = +- psr2_su_region_et_valid(intel_dp, crtc_state->has_panel_replay); ++ crtc_state->enable_psr2_su_region_et = psr2_su_region_et_valid(connector, ++ crtc_state->has_panel_replay); + + return true; + +@@ -1693,7 +1698,8 @@ static bool intel_sel_update_config_valid(struct intel_dp *intel_dp, + } + + static bool _psr_compute_config(struct intel_dp *intel_dp, +- struct intel_crtc_state *crtc_state) ++ struct intel_crtc_state *crtc_state, ++ struct drm_connector_state *conn_state) + { + struct intel_display *display = to_intel_display(intel_dp); + const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; +@@ -1708,10 +1714,10 @@ static bool _psr_compute_config(struct intel_dp *intel_dp, + if (crtc_state->vrr.enable) + return false; + +- entry_setup_frames = intel_psr_entry_setup_frames(intel_dp, adjusted_mode); ++ entry_setup_frames = intel_psr_entry_setup_frames(intel_dp, conn_state, adjusted_mode); + + if (entry_setup_frames >= 0) { +- intel_dp->psr.entry_setup_frames = entry_setup_frames; ++ crtc_state->entry_setup_frames = entry_setup_frames; + } else { + crtc_state->no_psr_reason = "PSR setup timing not met"; + drm_dbg_kms(display->drm, +@@ -1722,19 +1728,33 @@ static bool _psr_compute_config(struct intel_dp *intel_dp, + return true; + } + +-static bool +-_panel_replay_compute_config(struct intel_dp *intel_dp, +- struct intel_crtc_state *crtc_state, +- const struct drm_connector_state *conn_state) ++static inline bool compute_link_off_after_as_sdp_when_pr_active(struct intel_connector *connector) ++{ ++ return (connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)] & ++ DP_PANEL_REPLAY_LINK_OFF_SUPPORTED_IN_PR_AFTER_ADAPTIVE_SYNC_SDP); ++} ++ ++static inline bool compute_disable_as_sdp_when_pr_active(struct intel_connector *connector) ++{ ++ return !(connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)] & ++ DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR); ++} ++ ++static bool _panel_replay_compute_config(struct intel_crtc_state *crtc_state, ++ const struct drm_connector_state *conn_state) + { +- struct intel_display *display = to_intel_display(intel_dp); + struct intel_connector *connector = + to_intel_connector(conn_state->connector); ++ struct intel_dp *intel_dp = intel_attached_dp(connector); ++ struct intel_display *display = to_intel_display(intel_dp); + struct intel_hdcp *hdcp = &connector->hdcp; + + if (!CAN_PANEL_REPLAY(intel_dp)) + return false; + ++ if (!connector->dp.panel_replay_caps.support) ++ return false; ++ + if (!panel_replay_global_enabled(intel_dp)) { + drm_dbg_kms(display->drm, "Panel Replay disabled by flag\n"); + return false; +@@ -1747,13 +1767,16 @@ _panel_replay_compute_config(struct intel_dp *intel_dp, + } + + if (intel_dsc_enabled_on_link(crtc_state) && +- intel_dp->psr.sink_panel_replay_dsc_support == ++ connector->dp.panel_replay_caps.dsc_support == + INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED) { + drm_dbg_kms(display->drm, + "Panel Replay not enabled because it's not supported with DSC\n"); + return false; + } + ++ crtc_state->link_off_after_as_sdp_when_pr_active = compute_link_off_after_as_sdp_when_pr_active(connector); ++ crtc_state->disable_as_sdp_when_pr_active = compute_disable_as_sdp_when_pr_active(connector); ++ + if (!intel_dp_is_edp(intel_dp)) + return true; + +@@ -1792,7 +1815,7 @@ static bool intel_psr_needs_wa_18037818876(struct intel_dp *intel_dp, + { + struct intel_display *display = to_intel_display(intel_dp); + +- return (DISPLAY_VER(display) == 20 && intel_dp->psr.entry_setup_frames > 0 && ++ return (DISPLAY_VER(display) == 20 && crtc_state->entry_setup_frames > 0 && + !crtc_state->has_sel_update); + } + +@@ -1829,6 +1852,7 @@ void intel_psr_compute_config(struct intel_dp *intel_dp, + struct drm_connector_state *conn_state) + { + struct intel_display *display = to_intel_display(intel_dp); ++ struct intel_connector *connector = to_intel_connector(conn_state->connector); + const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; + + if (!psr_global_enabled(intel_dp)) { +@@ -1860,18 +1884,16 @@ void intel_psr_compute_config(struct intel_dp *intel_dp, + } + + /* Only used for state verification. */ +- crtc_state->panel_replay_dsc_support = intel_dp->psr.sink_panel_replay_dsc_support; +- crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp, +- crtc_state, +- conn_state); ++ crtc_state->panel_replay_dsc_support = connector->dp.panel_replay_caps.dsc_support; ++ crtc_state->has_panel_replay = _panel_replay_compute_config(crtc_state, conn_state); + + crtc_state->has_psr = crtc_state->has_panel_replay ? true : +- _psr_compute_config(intel_dp, crtc_state); ++ _psr_compute_config(intel_dp, crtc_state, conn_state); + + if (!crtc_state->has_psr) + return; + +- crtc_state->has_sel_update = intel_sel_update_config_valid(intel_dp, crtc_state); ++ crtc_state->has_sel_update = intel_sel_update_config_valid(crtc_state, conn_state); + } + + void intel_psr_get_config(struct intel_encoder *encoder, +@@ -2167,6 +2189,7 @@ static void intel_psr_enable_locked(struct intel_dp *intel_dp, + intel_dp->psr.pkg_c_latency_used = crtc_state->pkg_c_latency_used; + intel_dp->psr.io_wake_lines = crtc_state->alpm_state.io_wake_lines; + intel_dp->psr.fast_wake_lines = crtc_state->alpm_state.fast_wake_lines; ++ intel_dp->psr.entry_setup_frames = crtc_state->entry_setup_frames; + + if (!psr_interrupt_error_check(intel_dp)) + return; +@@ -2754,7 +2777,8 @@ static bool psr2_sel_fetch_plane_state_supported(const struct intel_plane_state + */ + static bool psr2_sel_fetch_pipe_state_supported(const struct intel_crtc_state *crtc_state) + { +- if (crtc_state->scaler_state.scaler_id >= 0) ++ if (crtc_state->scaler_state.scaler_id >= 0 || ++ crtc_state->async_flip_planes) + return false; + + return true; +@@ -3050,6 +3074,8 @@ void intel_psr_pre_plane_update(struct intel_atomic_state *state, + * - Display WA #1136: skl, bxt + */ + if (intel_crtc_needs_modeset(new_crtc_state) || ++ new_crtc_state->update_m_n || ++ new_crtc_state->update_lrr || + !new_crtc_state->has_psr || + !new_crtc_state->active_planes || + new_crtc_state->has_sel_update != psr->sel_update_enabled || +@@ -4114,24 +4140,22 @@ psr_source_status(struct intel_dp *intel_dp, struct seq_file *m) + seq_printf(m, "Source PSR/PanelReplay status: %s [0x%08x]\n", status, val); + } + +-static void intel_psr_sink_capability(struct intel_dp *intel_dp, ++static void intel_psr_sink_capability(struct intel_connector *connector, + struct seq_file *m) + { +- struct intel_psr *psr = &intel_dp->psr; +- + seq_printf(m, "Sink support: PSR = %s", +- str_yes_no(psr->sink_support)); ++ str_yes_no(connector->dp.psr_caps.support)); + +- if (psr->sink_support) +- seq_printf(m, " [0x%02x]", intel_dp->psr_dpcd[0]); +- if (intel_dp->psr_dpcd[0] == DP_PSR2_WITH_Y_COORD_ET_SUPPORTED) ++ if (connector->dp.psr_caps.support) ++ seq_printf(m, " [0x%02x]", connector->dp.psr_caps.dpcd[0]); ++ if (connector->dp.psr_caps.dpcd[0] == DP_PSR2_WITH_Y_COORD_ET_SUPPORTED) + seq_printf(m, " (Early Transport)"); +- seq_printf(m, ", Panel Replay = %s", str_yes_no(psr->sink_panel_replay_support)); ++ seq_printf(m, ", Panel Replay = %s", str_yes_no(connector->dp.panel_replay_caps.support)); + seq_printf(m, ", Panel Replay Selective Update = %s", +- str_yes_no(psr->sink_panel_replay_su_support)); ++ str_yes_no(connector->dp.panel_replay_caps.su_support)); + seq_printf(m, ", Panel Replay DSC support = %s", +- panel_replay_dsc_support_str(psr->sink_panel_replay_dsc_support)); +- if (intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & ++ panel_replay_dsc_support_str(connector->dp.panel_replay_caps.dsc_support)); ++ if (connector->dp.panel_replay_caps.dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] & + DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT) + seq_printf(m, " (Early Transport)"); + seq_printf(m, "\n"); +@@ -4169,7 +4193,8 @@ static void intel_psr_print_mode(struct intel_dp *intel_dp, + seq_printf(m, " %s\n", psr->no_psr_reason); + } + +-static int intel_psr_status(struct seq_file *m, struct intel_dp *intel_dp) ++static int intel_psr_status(struct seq_file *m, struct intel_dp *intel_dp, ++ struct intel_connector *connector) + { + struct intel_display *display = to_intel_display(intel_dp); + enum transcoder cpu_transcoder = intel_dp->psr.transcoder; +@@ -4178,9 +4203,9 @@ static int intel_psr_status(struct seq_file *m, struct intel_dp *intel_dp) + bool enabled; + u32 val, psr2_ctl; + +- intel_psr_sink_capability(intel_dp, m); ++ intel_psr_sink_capability(connector, m); + +- if (!(psr->sink_support || psr->sink_panel_replay_support)) ++ if (!(connector->dp.psr_caps.support || connector->dp.panel_replay_caps.support)) + return 0; + + wakeref = intel_display_rpm_get(display); +@@ -4294,7 +4319,7 @@ static int i915_edp_psr_status_show(struct seq_file *m, void *data) + if (!intel_dp) + return -ENODEV; + +- return intel_psr_status(m, intel_dp); ++ return intel_psr_status(m, intel_dp, intel_dp->attached_connector); + } + DEFINE_SHOW_ATTRIBUTE(i915_edp_psr_status); + +@@ -4428,7 +4453,7 @@ static int i915_psr_status_show(struct seq_file *m, void *data) + struct intel_connector *connector = m->private; + struct intel_dp *intel_dp = intel_attached_dp(connector); + +- return intel_psr_status(m, intel_dp); ++ return intel_psr_status(m, intel_dp, connector); + } + DEFINE_SHOW_ATTRIBUTE(i915_psr_status); + +diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h +index 620b35928832..688ca3e73cdd 100644 +--- a/drivers/gpu/drm/i915/display/intel_psr.h ++++ b/drivers/gpu/drm/i915/display/intel_psr.h +@@ -28,7 +28,7 @@ struct intel_plane_state; + bool intel_encoder_can_psr(struct intel_encoder *encoder); + bool intel_psr_needs_aux_io_power(struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state); +-void intel_psr_init_dpcd(struct intel_dp *intel_dp); ++void intel_psr_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector); + void intel_psr_panel_replay_enable_sink(struct intel_dp *intel_dp); + void intel_psr_pre_plane_update(struct intel_atomic_state *state, + struct intel_crtc *crtc); diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c -index d4af17fdba467..154f0403cbf4c 100644 +index d4af17fdba46..154f0403cbf4 100644 --- a/drivers/hid/hid-rmi.c +++ b/drivers/hid/hid-rmi.c @@ -321,21 +321,12 @@ static int rmi_input_event(struct hid_device *hdev, u8 *data, int size) @@ -913,7 +1855,7 @@ index d4af17fdba467..154f0403cbf4c 100644 data->xport.ops = &hid_rmi_ops; diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c -index 560975b70474c..995bf2da877ce 100644 +index 560975b70474..995bf2da877c 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c @@ -12,6 +12,7 @@ @@ -964,7 +1906,7 @@ index 560975b70474c..995bf2da877ce 100644 platform_driver_unregister(&etm4_platform_driver); etm4_pm_clear(); diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c -index ccd9338a44dbe..5c54e522e8a47 100644 +index ccd9338a44db..5c54e522e8a4 100644 --- a/drivers/input/rmi4/rmi_driver.c +++ b/drivers/input/rmi4/rmi_driver.c @@ -183,34 +183,47 @@ void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status, @@ -1156,7 +2098,7 @@ index ccd9338a44dbe..5c54e522e8a47 100644 if (data->f01_container->dev.driver) { /* Driver already bound, so enable ATTN now. */ diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c -index 2ca990dfbb884..b9175e0d497c9 100644 +index 2ca990dfbb88..24c31555fb69 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -8,6 +8,7 @@ @@ -1167,7 +2109,20 @@ index 2ca990dfbb884..b9175e0d497c9 100644 #include #include #include -@@ -2985,6 +2986,27 @@ int iommu_fwspec_add_ids(struct device *dev, const u32 *ids, int num_ids) +@@ -1207,7 +1208,11 @@ static int iommu_create_device_direct_mappings(struct iommu_domain *domain, + if (addr == end) + goto map_end; + +- phys_addr = iommu_iova_to_phys(domain, addr); ++ /* ++ * Return address by iommu_iova_to_phys for 0 is ++ * ambiguous. Offset to address 1 if addr is 0. ++ */ ++ phys_addr = iommu_iova_to_phys(domain, addr ? addr : 1); + if (!phys_addr) { + map_size += pg_size; + continue; +@@ -2985,6 +2990,27 @@ int iommu_fwspec_add_ids(struct device *dev, const u32 *ids, int num_ids) } EXPORT_SYMBOL_GPL(iommu_fwspec_add_ids); @@ -1196,7 +2151,7 @@ index 2ca990dfbb884..b9175e0d497c9 100644 * iommu_setup_default_domain - Set the default_domain for the group * @group: Group to change diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c -index b2b710094914c..fd3c46aa0350e 100644 +index b2b710094914..fd3c46aa0350 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -104,6 +104,13 @@ static const struct ipu_sensor_config ipu_supported_sensors[] = { @@ -1228,7 +2183,7 @@ index b2b710094914c..fd3c46aa0350e 100644 .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c -index 4ebb40adfab37..43cd013bb70e6 100644 +index 4ebb40adfab3..43cd013bb70e 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -3849,6 +3849,13 @@ static int gem_get_all_flow_entries(struct net_device *netdev, @@ -1304,7 +2259,7 @@ index 4ebb40adfab37..43cd013bb70e6 100644 err = macb_config->clk_init(pdev, &pclk, &hclk, &tx_clk, &rx_clk, &tsu_clk); if (err) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c -index fd86f72f54aef..34dbf67c104b0 100644 +index fd86f72f54ae..34dbf67c104b 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4481,6 +4481,30 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000, @@ -1339,7 +2294,7 @@ index fd86f72f54aef..34dbf67c104b0 100644 * Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero) * class code. Fix it. diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c -index f50b92e632018..f1ca4960fc592 100644 +index f50b92e63201..f1ca4960fc59 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -121,6 +121,14 @@ static const char *sd_cache_types[] = { @@ -1367,7 +2322,7 @@ index f50b92e632018..f1ca4960fc592 100644 if (err) goto err_out_driver; diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index be50d03034a96..9ce9b6518acd5 100644 +index be50d03034a9..9ce9b6518acd 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5894,6 +5894,13 @@ static void hub_event(struct work_struct *work) @@ -1384,8 +2339,21 @@ index be50d03034a96..9ce9b6518acd5 100644 /* Lock the device, then check to see if we were * disconnected while waiting for the lock to succeed. */ usb_lock_device(hdev); +diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h +index e4eebabab975..8b15d3eeb716 100644 +--- a/include/drm/display/drm_dp.h ++++ b/include/drm/display/drm_dp.h +@@ -571,6 +571,8 @@ + # define DP_PANEL_REPLAY_LINK_OFF_SUPPORTED_IN_PR_AFTER_ADAPTIVE_SYNC_SDP (1 << 7) + + #define DP_PANEL_REPLAY_CAP_X_GRANULARITY 0xb2 ++# define DP_PANEL_REPLAY_FULL_LINE_GRANULARITY 0xffff ++ + #define DP_PANEL_REPLAY_CAP_Y_GRANULARITY 0xb4 + + /* Link Configuration */ diff --git a/include/linux/crypto.h b/include/linux/crypto.h -index a2137e19be7d8..79ccb6fabc108 100644 +index a2137e19be7d..79ccb6fabc10 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h @@ -152,6 +152,8 @@ @@ -1398,7 +2366,7 @@ index a2137e19be7d8..79ccb6fabc108 100644 * Miscellaneous stuff. */ diff --git a/include/linux/efi.h b/include/linux/efi.h -index 2a43094e23f70..4fcf05f8232c6 100644 +index 2a43094e23f7..4fcf05f8232c 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -45,6 +45,8 @@ struct screen_info; @@ -1466,7 +2434,7 @@ index 2a43094e23f70..4fcf05f8232c6 100644 enum efi_secureboot_mode efi_get_secureboot_mode(efi_get_variable_t *get_var) { diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h -index 8c42b4bde09c0..694ce5c5bcd43 100644 +index 8c42b4bde09c..694ce5c5bcd4 100644 --- a/include/linux/lsm_hook_defs.h +++ b/include/linux/lsm_hook_defs.h @@ -446,6 +446,7 @@ LSM_HOOK(int, 0, bpf_token_capable, const struct bpf_token *token, int cap) @@ -1478,7 +2446,7 @@ index 8c42b4bde09c0..694ce5c5bcd43 100644 LSM_HOOK(int, 0, perf_event_open, int type) LSM_HOOK(int, 0, perf_event_alloc, struct perf_event *event) diff --git a/include/linux/rmi.h b/include/linux/rmi.h -index ab7eea01ab427..fff7c5f737fc8 100644 +index ab7eea01ab42..fff7c5f737fc 100644 --- a/include/linux/rmi.h +++ b/include/linux/rmi.h @@ -364,6 +364,7 @@ struct rmi_driver_data { @@ -1490,7 +2458,7 @@ index ab7eea01ab427..fff7c5f737fc8 100644 int rmi_register_transport_device(struct rmi_transport_dev *xport); diff --git a/include/linux/security.h b/include/linux/security.h -index 83a646d72f6f8..65b72854a0465 100644 +index 83a646d72f6f..65b72854a046 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -2404,4 +2404,13 @@ static inline void security_initramfs_populated(void) @@ -1508,7 +2476,7 @@ index 83a646d72f6f8..65b72854a0465 100644 + #endif /* ! __LINUX_SECURITY_H */ diff --git a/kernel/module/signing.c b/kernel/module/signing.c -index a2ff4242e623d..f0d2be1ee4f1c 100644 +index a2ff4242e623..f0d2be1ee4f1 100644 --- a/kernel/module/signing.c +++ b/kernel/module/signing.c @@ -61,10 +61,17 @@ int mod_verify_sig(const void *mod, struct load_info *info) @@ -1531,7 +2499,7 @@ index a2ff4242e623d..f0d2be1ee4f1c 100644 int module_sig_check(struct load_info *info, int flags) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index 28a1c08e3b221..3126a6fa63282 100644 +index 28a1c08e3b22..3126a6fa6328 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -191,7 +191,10 @@ objtool-args-$(CONFIG_HAVE_STATIC_CALL_INLINE) += --static-call @@ -1546,7 +2514,7 @@ index 28a1c08e3b221..3126a6fa63282 100644 objtool-args = $(objtool-args-y) \ $(if $(delay-objtool), --link) \ diff --git a/scripts/tags.sh b/scripts/tags.sh -index 99ce427d9a69d..f191cd9d7ee6e 100755 +index 99ce427d9a69..f191cd9d7ee6 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh @@ -16,6 +16,8 @@ fi @@ -1559,7 +2527,7 @@ index 99ce427d9a69d..f191cd9d7ee6e 100755 # ignore arbitrary directories if [ -n "${IGNORE_DIRS}" ]; then diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c -index d1fdd113450a6..182e8090cfe85 100644 +index d1fdd113450a..182e8090cfe8 100644 --- a/security/integrity/platform_certs/load_uefi.c +++ b/security/integrity/platform_certs/load_uefi.c @@ -74,7 +74,8 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid, @@ -1583,7 +2551,7 @@ index d1fdd113450a6..182e8090cfe85 100644 } diff --git a/security/lockdown/Kconfig b/security/lockdown/Kconfig -index e84ddf4840101..d0501353a4b95 100644 +index e84ddf484010..d0501353a4b9 100644 --- a/security/lockdown/Kconfig +++ b/security/lockdown/Kconfig @@ -16,6 +16,19 @@ config SECURITY_LOCKDOWN_LSM_EARLY @@ -1607,7 +2575,7 @@ index e84ddf4840101..d0501353a4b95 100644 prompt "Kernel default lockdown mode" default LOCK_DOWN_KERNEL_FORCE_NONE diff --git a/security/lockdown/lockdown.c b/security/lockdown/lockdown.c -index 8d46886d2cca0..14a9cdff942b9 100644 +index 8d46886d2cca..14a9cdff942b 100644 --- a/security/lockdown/lockdown.c +++ b/security/lockdown/lockdown.c @@ -72,6 +72,17 @@ static int lockdown_is_locked_down(enum lockdown_reason what) @@ -1629,7 +2597,7 @@ index 8d46886d2cca0..14a9cdff942b9 100644 LSM_HOOK_INIT(locked_down, lockdown_is_locked_down), }; diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile -index 4aa60e83ff191..eaceb09e40290 100644 +index 4aa60e83ff19..eaceb09e4029 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -492,7 +492,7 @@ LSKELS := fexit_sleep.c trace_printk.c trace_vprintk.c map_ptr_kern.c \ @@ -1642,7 +2610,7 @@ index 4aa60e83ff191..eaceb09e40290 100644 SKEL_BLACKLIST += $$(LSKELS) $$(LSKELS_SIGNED) diff --git a/tools/testing/selftests/bpf/prog_tests/ksyms_btf.c b/tools/testing/selftests/bpf/prog_tests/ksyms_btf.c -index 1d7a2f1e07317..b22f3a9cb8b80 100644 +index 1d7a2f1e0731..b22f3a9cb8b8 100644 --- a/tools/testing/selftests/bpf/prog_tests/ksyms_btf.c +++ b/tools/testing/selftests/bpf/prog_tests/ksyms_btf.c @@ -7,7 +7,6 @@ diff --git a/sources b/sources index 4665ae8db..f49ef1247 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (linux-6.19.6.tar.xz) = 93f896fe12f5155aa2cc1deea73dee0eebf09657b1a5b195cd960b4012ad0002c8620925e6869124edf80dfa50423b5731f0e9c037f8744b5ca8267949fa4d7b -SHA512 (kernel-abi-stablelists-6.19.6.tar.xz) = e647b43ac0f417030e29f786d16ec42a0f42d96cbfa0a2d28c75bd32f7a92d076ce8cf7a8cc31951d459ae5e24db661ad84756ee630fef1e441e319a84e6749a -SHA512 (kernel-kabi-dw-6.19.6.tar.xz) = dd6ebbc436e8807fc4eca067e773de2db1ca0d31f1862a899271222df66ff099c1ead0627562049a687e331c576bf87845c292aa6534f7b8e7672789caccf7a3 +SHA512 (linux-6.19.7.tar.xz) = 9a1b7e2d5a3f90f0aaad4285ffe2ec51a88c75818f02e4e7ea0013fb3cd838db7446a6714f6ef03b115c29ce31ed402303f6d7f3bdf6253c475e9df6ccad9a1e +SHA512 (kernel-abi-stablelists-6.19.7.tar.xz) = 35e321bcb9fd1ee684fa3fef1d855b938e4220c3d73b8dcf914343e1985f0eff723480c6ce19b1f7936ebae22ca4700c9011821ae7d8e9ae9dc45d8d0ff70395 +SHA512 (kernel-kabi-dw-6.19.7.tar.xz) = f0b64b1e7637f3b2bece647a49017a11d430013a6bf202fa11ca1ba069df0ec2a9d693eec6970f03036f7ad548943062de2d4b13d48a4e6a30e8fa6ed1ef90a2