From: Greg Kroah-Hartman Date: Mon, 22 Sep 2025 05:52:05 +0000 (+0200) Subject: 6.12-stable patches X-Git-Tag: v6.1.154~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=70c4b3f8b37c8ae62229f5ab202b1e3a54cf2779;p=thirdparty%2Fkernel%2Fstable-queue.git 6.12-stable patches added patches: rtc-pcf2127-fix-spi-command-byte-for-pcf2131-backport.patch x86-sev-guard-sev_evict_cache-with-config_amd_mem_encrypt.patch --- diff --git a/queue-6.12/rtc-pcf2127-fix-spi-command-byte-for-pcf2131-backport.patch b/queue-6.12/rtc-pcf2127-fix-spi-command-byte-for-pcf2131-backport.patch new file mode 100644 index 0000000000..1c3e4c1d23 --- /dev/null +++ b/queue-6.12/rtc-pcf2127-fix-spi-command-byte-for-pcf2131-backport.patch @@ -0,0 +1,58 @@ +From bruno.thomsen@gmail.com Sun Sep 21 19:35:33 2025 +From: Bruno Thomsen +Date: Wed, 20 Aug 2025 21:30:16 +0200 +Subject: rtc: pcf2127: fix SPI command byte for PCF2131 backport +To: linux-rtc@vger.kernel.org +Cc: bruno.thomsen@gmail.com, stable@vger.kernel.org, Alexandre Belloni , Elena Popa , Hugo Villeneuve +Message-ID: <20250820193016.7987-1-bruno.thomsen@gmail.com> + +From: Bruno Thomsen + +When commit fa78e9b606a472495ef5b6b3d8b45c37f7727f9d upstream was +backported to LTS branches linux-6.12.y and linux-6.6.y, the SPI regmap +config fix got applied to the I2C regmap config. Most likely due to a new +RTC get/set parm feature introduced in 6.14 causing regmap config sections +in the buttom of the driver to move. LTS branch linux-6.1.y and earlier +does not have PCF2131 device support. + +Issue can be seen in buttom of this diff in stable/linux.git tree: +git diff master..linux-6.12.y -- drivers/rtc/rtc-pcf2127.c + +Fixes: ee61aec8529e ("rtc: pcf2127: fix SPI command byte for PCF2131") +Fixes: 5cdd1f73401d ("rtc: pcf2127: fix SPI command byte for PCF2131") +Cc: stable@vger.kernel.org +Cc: Alexandre Belloni +Cc: Elena Popa +Cc: Hugo Villeneuve +Signed-off-by: Bruno Thomsen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/rtc/rtc-pcf2127.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/rtc/rtc-pcf2127.c ++++ b/drivers/rtc/rtc-pcf2127.c +@@ -1383,11 +1383,6 @@ static int pcf2127_i2c_probe(struct i2c_ + variant = &pcf21xx_cfg[type]; + } + +- if (variant->type == PCF2131) { +- config.read_flag_mask = 0x0; +- config.write_flag_mask = 0x0; +- } +- + config.max_register = variant->max_register, + + regmap = devm_regmap_init(&client->dev, &pcf2127_i2c_regmap, +@@ -1461,6 +1456,11 @@ static int pcf2127_spi_probe(struct spi_ + variant = &pcf21xx_cfg[type]; + } + ++ if (variant->type == PCF2131) { ++ config.read_flag_mask = 0x0; ++ config.write_flag_mask = 0x0; ++ } ++ + config.max_register = variant->max_register; + + regmap = devm_regmap_init_spi(spi, &config); diff --git a/queue-6.12/series b/queue-6.12/series index 1614d3d23f..d3e54130d6 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -95,3 +95,5 @@ usb-xhci-introduce-macro-for-ring-segment-list-iteration.patch usb-xhci-remove-option-to-change-a-default-ring-s-trb-cycle-bit.patch xhci-dbc-decouple-endpoint-allocation-from-initialization.patch xhci-dbc-fix-full-dbc-transfer-ring-after-several-reconnects.patch +rtc-pcf2127-fix-spi-command-byte-for-pcf2131-backport.patch +x86-sev-guard-sev_evict_cache-with-config_amd_mem_encrypt.patch diff --git a/queue-6.12/x86-sev-guard-sev_evict_cache-with-config_amd_mem_encrypt.patch b/queue-6.12/x86-sev-guard-sev_evict_cache-with-config_amd_mem_encrypt.patch new file mode 100644 index 0000000000..c56724efe2 --- /dev/null +++ b/queue-6.12/x86-sev-guard-sev_evict_cache-with-config_amd_mem_encrypt.patch @@ -0,0 +1,95 @@ +From stable+bounces-180849-greg=kroah.com@vger.kernel.org Mon Sep 22 01:18:07 2025 +From: Sasha Levin +Date: Sun, 21 Sep 2025 19:17:59 -0400 +Subject: x86/sev: Guard sev_evict_cache() with CONFIG_AMD_MEM_ENCRYPT +To: stable@vger.kernel.org +Cc: Tom Lendacky , "Borislav Petkov (AMD)" , stable@kernel.org, Sasha Levin +Message-ID: <20250921231759.3033314-1-sashal@kernel.org> + +From: Tom Lendacky + +[ Upstream commit 7f830e126dc357fc086905ce9730140fd4528d66 ] + +The sev_evict_cache() is guest-related code and should be guarded by +CONFIG_AMD_MEM_ENCRYPT, not CONFIG_KVM_AMD_SEV. + +CONFIG_AMD_MEM_ENCRYPT=y is required for a guest to run properly as an SEV-SNP +guest, but a guest kernel built with CONFIG_KVM_AMD_SEV=n would get the stub +function of sev_evict_cache() instead of the version that performs the actual +eviction. Move the function declarations under the appropriate #ifdef. + +Fixes: 7b306dfa326f ("x86/sev: Evict cache lines during SNP memory validation") +Signed-off-by: Tom Lendacky +Signed-off-by: Borislav Petkov (AMD) +Cc: stable@kernel.org # 6.16.x +Link: https://lore.kernel.org/r/70e38f2c4a549063de54052c9f64929705313526.1757708959.git.thomas.lendacky@amd.com +[ Move sev_evict_cache() out of shared.c ] +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/coco/sev/shared.c | 18 ------------------ + arch/x86/include/asm/sev.h | 19 +++++++++++++++++++ + 2 files changed, 19 insertions(+), 18 deletions(-) + +--- a/arch/x86/coco/sev/shared.c ++++ b/arch/x86/coco/sev/shared.c +@@ -1243,24 +1243,6 @@ static void svsm_pval_terminate(struct s + __pval_terminate(pfn, action, page_size, ret, svsm_ret); + } + +-static inline void sev_evict_cache(void *va, int npages) +-{ +- volatile u8 val __always_unused; +- u8 *bytes = va; +- int page_idx; +- +- /* +- * For SEV guests, a read from the first/last cache-lines of a 4K page +- * using the guest key is sufficient to cause a flush of all cache-lines +- * associated with that 4K page without incurring all the overhead of a +- * full CLFLUSH sequence. +- */ +- for (page_idx = 0; page_idx < npages; page_idx++) { +- val = bytes[page_idx * PAGE_SIZE]; +- val = bytes[page_idx * PAGE_SIZE + PAGE_SIZE - 1]; +- } +-} +- + static void svsm_pval_4k_page(unsigned long paddr, bool validate) + { + struct svsm_pvalidate_call *pc; +--- a/arch/x86/include/asm/sev.h ++++ b/arch/x86/include/asm/sev.h +@@ -400,6 +400,24 @@ u64 sev_get_status(void); + void sev_show_status(void); + void snp_update_svsm_ca(void); + ++static inline void sev_evict_cache(void *va, int npages) ++{ ++ volatile u8 val __always_unused; ++ u8 *bytes = va; ++ int page_idx; ++ ++ /* ++ * For SEV guests, a read from the first/last cache-lines of a 4K page ++ * using the guest key is sufficient to cause a flush of all cache-lines ++ * associated with that 4K page without incurring all the overhead of a ++ * full CLFLUSH sequence. ++ */ ++ for (page_idx = 0; page_idx < npages; page_idx++) { ++ val = bytes[page_idx * PAGE_SIZE]; ++ val = bytes[page_idx * PAGE_SIZE + PAGE_SIZE - 1]; ++ } ++} ++ + #else /* !CONFIG_AMD_MEM_ENCRYPT */ + + #define snp_vmpl 0 +@@ -435,6 +453,7 @@ static inline u64 snp_get_unsupported_fe + static inline u64 sev_get_status(void) { return 0; } + static inline void sev_show_status(void) { } + static inline void snp_update_svsm_ca(void) { } ++static inline void sev_evict_cache(void *va, int npages) {} + + #endif /* CONFIG_AMD_MEM_ENCRYPT */ +