public inbox for patches@lists.linux.dev
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Christoph Hellwig <hch@lst.de>,
	Rui Feng <rui_feng@realsil.com.cn>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.10 124/147] mmc: core: Initial support for SD express card/host
Date: Sat, 28 Feb 2026 13:17:12 -0500	[thread overview]
Message-ID: <20260228181736.1605592-124-sashal@kernel.org> (raw)
In-Reply-To: <20260228181736.1605592-1-sashal@kernel.org>

From: Ulf Hansson <ulf.hansson@linaro.org>

[ Upstream commit ead49373d2916080509f51fc6a4ee8f9bc021b9b ]

In the SD specification v7.10 the SD express card has been added. This new
type of removable SD card, can be managed via a PCIe/NVMe based interface,
while also allowing backwards compatibility towards the legacy SD
interface.

To keep the backwards compatibility, it's required to start the
initialization through the legacy SD interface. If it turns out that the
mmc host and the SD card, both supports the PCIe/NVMe interface, then a
switch should be allowed.

Therefore, let's introduce some basic support for this type of SD cards to
the mmc core. The mmc host, should set MMC_CAP2_SD_EXP if it supports this
interface and MMC_CAP2_SD_EXP_1_2V, if also 1.2V is supported, as to inform
the core about it.

To deal with the switch to the PCIe/NVMe interface, the mmc host is
required to implement a new host ops, ->init_sd_express(). Based on the
initial communication between the host and the card, host->ios.timing is
set to either MMC_TIMING_SD_EXP or MMC_TIMING_SD_EXP_1_2V, depending on if
1.2V is supported or not. In this way, the mmc host can check these values
in its ->init_sd_express() ops, to know how to proceed with the handover.

Note that, to manage card insert/removal, the mmc core sticks with using
the ->get_cd() callback, which means it's the host's responsibility to make
sure it provides valid data, even if the card may be managed by PCIe/NVMe
at the moment. As long as the card seems to be present, the mmc core keeps
the card powered on.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Rui Feng <rui_feng@realsil.com.cn>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/1603936636-3126-1-git-send-email-rui_feng@realsil.com.cn
Stable-dep-of: aced969e9bf3 ("mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mmc/core/core.c   | 15 ++++++++++--
 drivers/mmc/core/host.h   |  6 +++++
 drivers/mmc/core/sd_ops.c | 49 +++++++++++++++++++++++++++++++++++++--
 drivers/mmc/core/sd_ops.h |  1 +
 include/linux/mmc/host.h  |  7 ++++++
 5 files changed, 74 insertions(+), 4 deletions(-)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 0f73ee841574a..d8169c8c3f405 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -2166,8 +2166,12 @@ static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq)
 
 	mmc_go_idle(host);
 
-	if (!(host->caps2 & MMC_CAP2_NO_SD))
-		mmc_send_if_cond(host, host->ocr_avail);
+	if (!(host->caps2 & MMC_CAP2_NO_SD)) {
+		if (mmc_send_if_cond_pcie(host, host->ocr_avail))
+			goto out;
+		if (mmc_card_sd_express(host))
+			return 0;
+	}
 
 	/* Order's important: probe SDIO, then SD, then MMC */
 	if (!(host->caps2 & MMC_CAP2_NO_SDIO))
@@ -2182,6 +2186,7 @@ static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq)
 		if (!mmc_attach_mmc(host))
 			return 0;
 
+out:
 	mmc_power_off(host);
 	return -EIO;
 }
@@ -2309,6 +2314,12 @@ void mmc_rescan(struct work_struct *work)
 		goto out;
 	}
 
+	/* If an SD express card is present, then leave it as is. */
+	if (mmc_card_sd_express(host)) {
+		mmc_release_host(host);
+		goto out;
+	}
+
 	for (i = 0; i < ARRAY_SIZE(freqs); i++) {
 		unsigned int freq = freqs[i];
 		if (freq > host->f_max) {
diff --git a/drivers/mmc/core/host.h b/drivers/mmc/core/host.h
index 5e3b9534ffb23..ba407617ed23a 100644
--- a/drivers/mmc/core/host.h
+++ b/drivers/mmc/core/host.h
@@ -77,5 +77,11 @@ static inline bool mmc_card_hs400es(struct mmc_card *card)
 	return card->host->ios.enhanced_strobe;
 }
 
+static inline bool mmc_card_sd_express(struct mmc_host *host)
+{
+	return host->ios.timing == MMC_TIMING_SD_EXP ||
+		host->ios.timing == MMC_TIMING_SD_EXP_1_2V;
+}
+
 #endif
 
diff --git a/drivers/mmc/core/sd_ops.c b/drivers/mmc/core/sd_ops.c
index 22bf528294b90..d61ff811218ce 100644
--- a/drivers/mmc/core/sd_ops.c
+++ b/drivers/mmc/core/sd_ops.c
@@ -158,7 +158,8 @@ int mmc_send_app_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr)
 	return err;
 }
 
-int mmc_send_if_cond(struct mmc_host *host, u32 ocr)
+static int __mmc_send_if_cond(struct mmc_host *host, u32 ocr, u8 pcie_bits,
+			      u32 *resp)
 {
 	struct mmc_command cmd = {};
 	int err;
@@ -171,7 +172,7 @@ int mmc_send_if_cond(struct mmc_host *host, u32 ocr)
 	 * SD 1.0 cards.
 	 */
 	cmd.opcode = SD_SEND_IF_COND;
-	cmd.arg = ((ocr & 0xFF8000) != 0) << 8 | test_pattern;
+	cmd.arg = ((ocr & 0xFF8000) != 0) << 8 | pcie_bits << 8 | test_pattern;
 	cmd.flags = MMC_RSP_SPI_R7 | MMC_RSP_R7 | MMC_CMD_BCR;
 
 	err = mmc_wait_for_cmd(host, &cmd, 0);
@@ -186,6 +187,50 @@ int mmc_send_if_cond(struct mmc_host *host, u32 ocr)
 	if (result_pattern != test_pattern)
 		return -EIO;
 
+	if (resp)
+		*resp = cmd.resp[0];
+
+	return 0;
+}
+
+int mmc_send_if_cond(struct mmc_host *host, u32 ocr)
+{
+	return __mmc_send_if_cond(host, ocr, 0, NULL);
+}
+
+int mmc_send_if_cond_pcie(struct mmc_host *host, u32 ocr)
+{
+	u32 resp = 0;
+	u8 pcie_bits = 0;
+	int ret;
+
+	if (host->caps2 & MMC_CAP2_SD_EXP) {
+		/* Probe card for SD express support via PCIe. */
+		pcie_bits = 0x10;
+		if (host->caps2 & MMC_CAP2_SD_EXP_1_2V)
+			/* Probe also for 1.2V support. */
+			pcie_bits = 0x30;
+	}
+
+	ret = __mmc_send_if_cond(host, ocr, pcie_bits, &resp);
+	if (ret)
+		return 0;
+
+	/* Continue with the SD express init, if the card supports it. */
+	resp &= 0x3000;
+	if (pcie_bits && resp) {
+		if (resp == 0x3000)
+			host->ios.timing = MMC_TIMING_SD_EXP_1_2V;
+		else
+			host->ios.timing = MMC_TIMING_SD_EXP;
+
+		/*
+		 * According to the spec the clock shall also be gated, but
+		 * let's leave this to the host driver for more flexibility.
+		 */
+		return host->ops->init_sd_express(host, &host->ios);
+	}
+
 	return 0;
 }
 
diff --git a/drivers/mmc/core/sd_ops.h b/drivers/mmc/core/sd_ops.h
index 2194cabfcfc57..3ba7b3cf46520 100644
--- a/drivers/mmc/core/sd_ops.h
+++ b/drivers/mmc/core/sd_ops.h
@@ -16,6 +16,7 @@ struct mmc_host;
 int mmc_app_set_bus_width(struct mmc_card *card, int width);
 int mmc_send_app_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr);
 int mmc_send_if_cond(struct mmc_host *host, u32 ocr);
+int mmc_send_if_cond_pcie(struct mmc_host *host, u32 ocr);
 int mmc_send_relative_addr(struct mmc_host *host, unsigned int *rca);
 int mmc_app_send_scr(struct mmc_card *card);
 int mmc_sd_switch(struct mmc_card *card, int mode, int group,
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index fb08b86acdbf3..dd3492f377d00 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -60,6 +60,8 @@ struct mmc_ios {
 #define MMC_TIMING_MMC_DDR52	8
 #define MMC_TIMING_MMC_HS200	9
 #define MMC_TIMING_MMC_HS400	10
+#define MMC_TIMING_SD_EXP	11
+#define MMC_TIMING_SD_EXP_1_2V	12
 
 	unsigned char	signal_voltage;		/* signalling voltage (1.8V or 3.3V) */
 
@@ -173,6 +175,9 @@ struct mmc_host_ops {
 	 */
 	int	(*multi_io_quirk)(struct mmc_card *card,
 				  unsigned int direction, int blk_size);
+
+	/* Initialize an SD express card, mandatory for MMC_CAP2_SD_EXP. */
+	int	(*init_sd_express)(struct mmc_host *host, struct mmc_ios *ios);
 };
 
 struct mmc_cqe_ops {
@@ -355,6 +360,8 @@ struct mmc_host {
 #define MMC_CAP2_HS200_1_2V_SDR	(1 << 6)        /* can support */
 #define MMC_CAP2_HS200		(MMC_CAP2_HS200_1_8V_SDR | \
 				 MMC_CAP2_HS200_1_2V_SDR)
+#define MMC_CAP2_SD_EXP		(1 << 7)	/* SD express via PCIe */
+#define MMC_CAP2_SD_EXP_1_2V	(1 << 8)	/* SD express 1.2V */
 #define MMC_CAP2_CD_ACTIVE_HIGH	(1 << 10)	/* Card-detect signal active high */
 #define MMC_CAP2_RO_ACTIVE_HIGH	(1 << 11)	/* Write-protect signal active high */
 #define MMC_CAP2_NO_PRESCAN_POWERUP (1 << 14)	/* Don't power up before scan */
-- 
2.51.0


  parent reply	other threads:[~2026-02-28 18:19 UTC|newest]

Thread overview: 152+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-28 18:15 [PATCH 5.10 001/147] RDMA/siw: Fix potential NULL pointer dereference in header processing Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 002/147] RDMA/umad: Reject negative data_len in ib_umad_write Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 003/147] auxdisplay: arm-charlcd: fix release_mem_region() size Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 004/147] hfsplus: return error when node already exists in hfs_bnode_create Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 005/147] i3c: remove i2c board info from i2c_dev_desc Sasha Levin
2026-03-17 13:13   ` Ben Hutchings
2026-02-28 18:15 ` [PATCH 5.10 006/147] i3c: Move device name assignment after i3c_bus_init Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 007/147] fs: add <linux/init_task.h> for 'init_fs' Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 008/147] gfs2: Add new gfs2_iomap_get helper Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 009/147] gfs2: Turn gfs2_extent_map into gfs2_{get,alloc}_extent Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 010/147] gfs2: Replace gfs2_lblk_to_dblk with gfs2_get_extent Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 011/147] gfs2: Add wrapper for iomap_file_buffered_write Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 012/147] gfs2: Move the inode glock locking to gfs2_file_buffered_write Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 013/147] gfs2: Add metapath_dibh helper Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 014/147] gfs2: Fix use-after-free in iomap inline data write path Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 015/147] tpm: tpm_i2c_infineon: Fix locality leak on get_burstcount() failure Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 016/147] tpm: st33zp24: Fix missing cleanup on get_burstcount() error Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 017/147] btrfs: qgroup: return correct error when deleting qgroup relation item Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 018/147] md/raid10: fix any_working flag handling in raid10_sync_request Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 019/147] iomap: fix submission side handling of completion side errors Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 020/147] PM: wakeup: Handle empty list in wakeup_sources_walk_start() Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 021/147] PM: sleep: wakeirq: harden dev_pm_clear_wake_irq() against races Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 022/147] s390/cio: Fix device lifecycle handling in css_alloc_subchannel() Sasha Levin
2026-03-17 14:16   ` Ben Hutchings
2026-02-28 18:15 ` [PATCH 5.10 023/147] ARM: VDSO: Patch out __vdso_clock_getres() if unavailable Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 024/147] crypto: cavium - fix dma_free_coherent() size Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 025/147] crypto: octeontx " Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 026/147] hrtimer: Fix trace oddity Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 027/147] EDAC/altera: Remove IRQF_ONESHOT Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 028/147] mfd: wm8350-core: Use IRQF_ONESHOT Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 029/147] sched/rt: Skip currently executing CPU in rto_next_cpu() Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 030/147] pstore/ram: fix buffer overflow in persistent_ram_save_old() Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 031/147] EDAC/i5000: Fix snprintf() size calculation in calculate_dimm_size() Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 032/147] EDAC/i5400: Fix snprintf() limit " Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 033/147] clk: qcom: Return correct error code in qcom_cc_probe_by_index() Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 034/147] arm64: dts: qcom: sdm630: Add qfprom subnodes Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 035/147] arm64: dts: qcom: sdm630: correct QFPROM byte offsets Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 036/147] arm64: dts: qcom: sdm630: fix gpu_speed_bin size Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 037/147] ARM: dts: allwinner: sun5i-a13-utoo-p66: delete "power-gpios" property Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 038/147] soc: qcom: cmd-db: Use devm_memremap() to fix memory leak in cmd_db_dev_probe Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 039/147] powerpc/eeh: fix recursive pci_lock_rescan_remove locking in EEH event handling Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 040/147] ARM: dts: lpc32xx: Set motor PWM #pwm-cells property value to 3 cells Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 041/147] arm: dts: lpc32xx: add clocks property to Motor Control PWM device tree node Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 042/147] arm64: dts: amlogic: axg: assign the MMC signal clocks Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 043/147] arm64: dts: amlogic: gx: " Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 044/147] arm64: dts: amlogic: g12: assign the MMC B and C " Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 045/147] arm64: dts: amlogic: g12: assign the MMC A signal clock Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 046/147] arm64: dts: qcom: sdm845-db845c: specify power for WiFi CH1 Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 047/147] smack: /smack/doi must be > 0 Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 048/147] smack: /smack/doi: accept previously used values Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 049/147] drm/amdgpu: Use explicit VCN instance 0 in SR-IOV init Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 050/147] regulator: core: Respect off_on_delay at startup Sasha Levin
2026-02-28 18:15 ` [PATCH 5.10 051/147] regulator: core: Fix off_on_delay handling Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 052/147] regulator: Flag uncontrollable regulators as always_on Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 053/147] regulator: core: Fix off-on-delay-us for always-on/boot-on regulators Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 054/147] regulator: core: Use ktime_get_boottime() to determine how long a regulator was off Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 055/147] regulator: core: Shorten off-on-delay-us for always-on/boot-on by time since booted Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 056/147] regulator: core: move supply check earlier in set_machine_constraints() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 057/147] platform/chrome: cros_ec_lightbar: Fix response size initialization Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 058/147] spi: tools: Add include folder to .gitignore Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 059/147] Revert "hwmon: (ibmpex) fix use-after-free in high/low store" Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 060/147] PCI: mediatek: Fix IRQ domain leak when MSI allocation fails Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 061/147] PCI: Do not attempt to set ExtTag for VFs Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 062/147] PCI/portdrv: Fix potential resource leak Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 063/147] wifi: cfg80211: stop NAN and P2P in cfg80211_leave Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 064/147] netfilter: nf_conncount: make nf_conncount_gc_list() to disable BH Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 065/147] netfilter: nf_conncount: increase the connection clean up limit to 64 Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 066/147] netfilter: nf_conncount: fix tracking of connections from localhost Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 067/147] PCI: Mark 3ware-9650SA Root Port Extended Tags as broken Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 068/147] iommu/vt-d: Flush cache for PASID table before using it Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 069/147] nfsd: never defer requests during idmap lookup Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 070/147] fat: avoid parent link count underflow in rmdir Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 071/147] tcp: tcp_tx_timestamp() must look at the rtx queue Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 072/147] wifi: ath10k: sdio: add missing lock protection in ath10k_sdio_fw_crashed_dump() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 073/147] PCI: Initialize RCB from pci_configure_device() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 074/147] ucount: check for CAP_SYS_RESOURCE using ns_capable_noaudit() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 075/147] octeontx2-af: Fix PF driver crash with kexec kernel booting Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 076/147] bonding: only set speed/duplex to unknown, if getting speed failed Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 077/147] netfilter: nft_set_hash: fix get operation on big endian Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 078/147] netfilter: nft_set_rbtree: check for partial overlaps in anonymous sets Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 079/147] procfs: fix missing RCU protection when reading real_parent in do_task_stat() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 080/147] net: atm: fix crash due to unvalidated vcc pointer in sigd_send() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 081/147] serial: caif: fix use-after-free in caif_serial ldisc_close() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 082/147] ionic: Rate limit unknown xcvr type messages Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 083/147] RDMA/rtrs: server: remove dead code Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 084/147] power: supply: act8945a: Fix use-after-free in power_supply_changed() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 085/147] power: supply: bq25980: " Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 086/147] power: supply: cpcap-battery: " Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 087/147] power: supply: goldfish: " Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 088/147] power: supply: rt9455: " Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 089/147] power: supply: sbs-battery: " Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 090/147] power: reset: nvmem-reboot-mode: respect cell size for nvmem_cell_write Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 091/147] power: supply: bq27xxx: fix wrong errno when bus ops are unsupported Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 092/147] power: supply: wm97xx_battery: Convert to GPIO descriptor Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 093/147] power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 094/147] RDMA/rxe: Fix double free in rxe_srq_from_init Sasha Levin
2026-03-23 12:37   ` Ben Hutchings
2026-03-23 18:15     ` Yanjun.Zhu
2026-02-28 18:16 ` [PATCH 5.10 095/147] mtd: rawnand: cadence: Fix return type of CDMA send-and-wait helper Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 096/147] PM: core: Redefine pm_ptr() macro Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 097/147] PM: core: Add new *_PM_OPS macros, deprecate old ones Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 098/147] crypto: ccp - Add an S4 restore flow Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 099/147] RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 100/147] svcrdma: Add a batch Receive posting mechanism Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 101/147] svcrdma: Use svc_rdma_refresh_recvs() in wc_receive Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 102/147] svcrdma: Maintain a Receive water mark Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 103/147] RDMA/core: Fix a couple of obvious typos in comments Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 104/147] svcrdma: Remove queue-shortening warnings Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 105/147] svcrdma: Clean up comment in svc_rdma_accept() Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 106/147] svcrdma: Increase the per-transport rw_ctx count Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 107/147] svcrdma: Reduce the number of rdma_rw contexts per-QP Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 108/147] RDMA/core: add rdma_rw_max_sge() helper for SQ sizing Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 109/147] RDMA/uverbs: Add __GFP_NOWARN to ib_uverbs_unmarshall_recv() kmalloc Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 110/147] pNFS: fix a missing wake up while waiting on NFS_LAYOUT_DRAIN Sasha Levin
2026-02-28 18:16 ` [PATCH 5.10 111/147] scsi: csiostor: Fix dereference of null pointer rn Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 112/147] nvdimm: virtio_pmem: serialize flush requests Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 113/147] tracing: Remove duplicate ENABLE_EVENT_STR and DISABLE_EVENT_STR macros Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 114/147] fbdev: au1200fb: Fix a memory leak in au1200fb_drv_probe() Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 115/147] clk: meson: gxbb: Limit the HDMI PLL OD to /4 on GXL/GXM SoCs Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 116/147] clk: Move clk_{save,restore}_context() to COMMON_CLK section Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 117/147] clk: qcom: dispcc-sdm845: convert to parent data Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 118/147] clk: qcom: dispcc-sdm845: Enable parents for pixel clocks Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 119/147] dmaengine: mediatek: uart-apdma: Fix above 4G addressing TX/RX Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 120/147] dma: dma-axi-dmac: fix SW cyclic transfers Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 121/147] staging: greybus: lights: avoid NULL deref Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 122/147] serial: imx: change SERIAL_IMX_CONSOLE to bool Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 123/147] serial: SH_SCI: improve "DMA support" prompt Sasha Levin
2026-02-28 18:17 ` Sasha Levin [this message]
2026-02-28 18:17 ` [PATCH 5.10 125/147] misc: rtsx: Add SD Express mode support for RTS5261 Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 126/147] mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 127/147] coresight: etm3x: Fix cpulocked warning on cpuhp Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 128/147] Revert "mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms" Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 129/147] mfd: arizona: Fix regulator resource leak on wm5102_clear_write_sequencer() failure Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 130/147] drivers: iio: mpu3050: use dev_err_probe for regulator request Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 131/147] usb: bdc: fix sleep during atomic Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 132/147] pinctrl: equilibrium: Fix device node reference leak in pinbank_init() Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 133/147] ovl: Fix uninit-value in ovl_fill_real Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 134/147] iio: sca3000: Fix a resource leak in sca3000_probe() Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 135/147] pinctrl: single: fix refcount leak in pcs_add_gpio_func() Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 136/147] cpuidle: Skip governor when only one idle state is available Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 137/147] selftests: mlxsw: tc_restrictions: Fix test failure with new iproute2 Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 138/147] usbb: catc: use correct API for MAC addresses Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 139/147] net: usb: catc: enable basic endpoint checking Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 140/147] xen-netback: reject zero-queue configuration from guest Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 141/147] net/rds: rds_sendmsg should not discard payload_len Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 142/147] selftests: forwarding: vxlan_bridge_1d: fix test failure with br_netfilter enabled Sasha Levin
2026-03-23 18:48   ` Ben Hutchings
2026-02-28 18:17 ` [PATCH 5.10 143/147] netfilter: nf_conntrack_h323: don't pass uninitialised l3num value Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 144/147] ipv6: fix a race in ip6_sock_set_v6only() Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 145/147] selftests: forwarding: tc_actions: cleanup temporary files when test is aborted Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 146/147] selftests: forwarding: tc_actions: Use ncat instead of nc Sasha Levin
2026-02-28 18:17 ` [PATCH 5.10 147/147] Linux 5.10.252-rc1 Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260228181736.1605592-124-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=arnd@arndb.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@lst.de \
    --cc=patches@lists.linux.dev \
    --cc=rui_feng@realsil.com.cn \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox