AI Trajectory


Trajectory: (Expand/Collapse All)
Seq Timestamp Type Name Duration
0/0 2026/07/30 07:15 flow patch-triage
1m Args:
null

Results:
{
  "EnableConfigs": [
    "STMMAC_ETH",
    "STMMAC_PCI"
  ],
  "FocusSymbols": [
    "stmmac_set_mm",
    "stmmac_fpe_configure_tx",
    "stmmac_fpe_configure_pmac",
    "stmmac_fpe_init"
  ],
  "Reasoning": "The patch modifies the MAC Merge (802.3br) configuration logic in the stmmac driver. It adds validation in `stmmac_set_mm` (reachable via ethtool netlink commands), moves register writes between FPE configuration callbacks, and updates the FPE initialization logic. These are functional changes to reachable driver code.",
  "WorthFuzzing": true
}

1/1 2026/07/30 07:15 action read-patch-diff
0m Args:
null

Results:
{
  "PatchDiff": "commit 33737e2a6595416aff9777156aca65449e73e52d\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate:   Thu Jul 30 07:15:39 2026 +0000\n\n    syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c\nindex 92585d27ab883..8ebdd249e5c8f 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c\n@@ -1064,6 +1064,13 @@ static int stmmac_set_mm(struct net_device *ndev, struct ethtool_mm_cfg *cfg,\n \tif (err)\n \t\treturn err;\n \n+\tif (!priv-\u003edma_cap.fpesel)\n+\t\treturn -EOPNOTSUPP;\n+\n+\t/* DWMAC always have preemptible MAC enabled */\n+\tif (!cfg-\u003epmac_enabled)\n+\t\treturn -EINVAL;\n+\n \tstmmac_fpe_set_add_frag_size(priv, frag_size);\n \tethtool_mmsv_set_mm(\u0026priv-\u003efpe_cfg.mmsv, cfg);\n \ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c\nindex c54c702243517..27e500edc8ac2 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c\n@@ -47,20 +47,13 @@ static void stmmac_fpe_configure_tx(struct ethtool_mmsv *mmsv, bool tx_enable)\n \tstruct stmmac_fpe_cfg *cfg = container_of(mmsv, struct stmmac_fpe_cfg, mmsv);\n \tstruct stmmac_priv *priv = container_of(cfg, struct stmmac_priv, fpe_cfg);\n \tconst struct stmmac_fpe_reg *reg = cfg-\u003ereg;\n-\tu32 num_rxq = priv-\u003eplat-\u003erx_queues_to_use;\n \tvoid __iomem *ioaddr = priv-\u003eioaddr;\n-\tu32 value;\n \n-\tif (tx_enable) {\n+\tif (tx_enable)\n \t\tcfg-\u003efpe_csr = STMMAC_MAC_FPE_CTRL_STS_EFPE;\n-\t\tvalue = readl(ioaddr + reg-\u003erxq_ctrl1_reg);\n-\t\tvalue \u0026= ~reg-\u003efprq_mask;\n-\t\t/* Keep this SHIFT, FIELD_PREP() expects a constant mask :-/ */\n-\t\tvalue |= (num_rxq - 1) \u003c\u003c __ffs(reg-\u003efprq_mask);\n-\t\twritel(value, ioaddr + reg-\u003erxq_ctrl1_reg);\n-\t} else {\n+\telse\n \t\tcfg-\u003efpe_csr = 0;\n-\t}\n+\n \twritel(cfg-\u003efpe_csr, ioaddr + reg-\u003emac_fpe_reg);\n }\n \n@@ -68,6 +61,7 @@ static void stmmac_fpe_configure_pmac(struct ethtool_mmsv *mmsv, bool pmac_enabl\n {\n \tstruct stmmac_fpe_cfg *cfg = container_of(mmsv, struct stmmac_fpe_cfg, mmsv);\n \tstruct stmmac_priv *priv = container_of(cfg, struct stmmac_priv, fpe_cfg);\n+\tu32 num_rxq = priv-\u003eplat-\u003erx_queues_to_use;\n \tconst struct stmmac_fpe_reg *reg = cfg-\u003ereg;\n \tvoid __iomem *ioaddr = priv-\u003eioaddr;\n \tunsigned long flags;\n@@ -83,6 +77,12 @@ static void stmmac_fpe_configure_pmac(struct ethtool_mmsv *mmsv, bool pmac_enabl\n \n \t\t\tvalue |= reg-\u003eint_en_bit;\n \t\t}\n+\t\t/* Frame Preemption Residue Queue is the Rx Queue to which\n+\t\t * residual preemptive mPackets must be forwarded from the pmac.\n+\t\t */\n+\t\twritel(u32_replace_bits(readl(ioaddr + reg-\u003erxq_ctrl1_reg),\n+\t\t\t\t\tnum_rxq - 1, reg-\u003efprq_mask),\n+\t\t       ioaddr + reg-\u003erxq_ctrl1_reg);\n \t} else {\n \t\tvalue \u0026= ~reg-\u003eint_en_bit;\n \t}\n@@ -174,8 +174,15 @@ void stmmac_fpe_init(struct stmmac_priv *priv)\n \t\t\t  \u0026stmmac_mmsv_ops);\n \n \tif ((!priv-\u003efpe_cfg.reg || !priv-\u003ehw-\u003emac-\u003efpe_map_preemption_class) \u0026\u0026\n-\t    priv-\u003edma_cap.fpesel)\n+\t    priv-\u003edma_cap.fpesel) {\n \t\tdev_info(priv-\u003edevice, \"FPE is not supported by driver.\\n\");\n+\t\treturn;\n+\t}\n+\n+\t/* The preemptive MAC in DWMAC is always enabled, so initialize\n+\t * pmac_enabled to true to reflect the hardware state.\n+\t */\n+\tpriv-\u003efpe_cfg.mmsv.pmac_enabled = true;\n }\n \n int stmmac_fpe_get_add_frag_size(struct stmmac_priv *priv)\n"
}

2/1 2026/07/30 07:15 agent patch-evaluator
1m Model:
best-expensive

Args:
null

Results:
{
  "EnableConfigs": [
    "STMMAC_ETH",
    "STMMAC_PCI"
  ],
  "FocusSymbols": [
    "stmmac_set_mm",
    "stmmac_fpe_configure_tx",
    "stmmac_fpe_configure_pmac",
    "stmmac_fpe_init"
  ],
  "Reasoning": "The patch modifies the MAC Merge (802.3br) configuration logic in the stmmac driver. It adds validation in `stmmac_set_mm` (reachable via ethtool netlink commands), moves register writes between FPE configuration callbacks, and updates the FPE initialization logic. These are functional changes to reachable driver code.",
  "WorthFuzzing": true
}

Instruction:
You are an expert Linux kernel maintainer.
Your job is to review a provided patch series and determine
if it makes functional changes to the kernel that should be fuzzed.

IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in
your workspace. Do NOT rely on your internal knowledge of the kernel. You must actively
use your code access tools to examine the actual source code and confirm any assumptions.

Return WorthFuzzing=false if the patch only contains:
- Modifications to Documentation/, Kconfig files, or code comments.
- Purely decorative changes, such as logging (e.g., pr_err, printk) or tracepoints.
- Changes to numeric constants or macros that do not functionally alter execution flow.
- Code paths that are impossible to reach in virtualized environments like GCE or QEMU,
  even when utilizing software-emulated hardware (e.g., usb gadget, mac80211_hwsim).
- Code in vendor-specific PCIe switch, SmartNIC, or GPU drivers (e.g., mlxsw, pds_core, qed,
  ionic, amdgpu) that require physical PCIe hardware cards not emulated in standard QEMU.
- Driver .remove, .shutdown, or pci_unregister_driver teardown callbacks (e.g., igb_remove)
  that are executed only during PCI hot-unplug or sysfs driver unbind operations.

If it modifies reachable core kernel logic, drivers, or architectures, use your code search
tools to verify the code can be executed, then return WorthFuzzing=true.

When returning WorthFuzzing=true, you MUST ALSO:
1. Extract any specific kernel functions that should be heavily fuzzed into FocusSymbols.
   Avoid listing generic hot-path functions to prevent skewed test distributions.
   Prefer non-static, non-inlined API entrypoint functions over internal static helper functions
   (which are inlined by the compiler and do not have distinct symbol addresses).
2. Identify any specific CONFIG_ options required to properly test this new/modified feature.
   Go and look into the Kconfig files and check for ifdefs around the code, do not make assumptions.
   Also check "depends on" lines in Kconfig to include any non-standard parent subsystem configs
   needed for Kbuild to compile the code statically into vmlinux. List them in the EnableConfigs
   output array, and DO NOT add a 'CONFIG_' prefix (e.g., return "NET_IPV4" instead of "CONFIG_NET_IPV4").
Prefer calling several tools at the same time to save round-trips.


Use set-results tool to provide results of the analysis.
It must be called exactly once before the final reply.
Ignore results of this tool.

Prompt:
For your convenience, here is the diff of the changes:
commit 33737e2a6595416aff9777156aca65449e73e52d
Author: syz-cluster <triage@syzkaller.com>
Date:   Thu Jul 30 07:15:39 2026 +0000

    syz-cluster: applied patch under review

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index 92585d27ab883..8ebdd249e5c8f 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -1064,6 +1064,13 @@ static int stmmac_set_mm(struct net_device *ndev, struct ethtool_mm_cfg *cfg,
 	if (err)
 		return err;
 
+	if (!priv->dma_cap.fpesel)
+		return -EOPNOTSUPP;
+
+	/* DWMAC always have preemptible MAC enabled */
+	if (!cfg->pmac_enabled)
+		return -EINVAL;
+
 	stmmac_fpe_set_add_frag_size(priv, frag_size);
 	ethtool_mmsv_set_mm(&priv->fpe_cfg.mmsv, cfg);
 
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c
index c54c702243517..27e500edc8ac2 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c
@@ -47,20 +47,13 @@ static void stmmac_fpe_configure_tx(struct ethtool_mmsv *mmsv, bool tx_enable)
 	struct stmmac_fpe_cfg *cfg = container_of(mmsv, struct stmmac_fpe_cfg, mmsv);
 	struct stmmac_priv *priv = container_of(cfg, struct stmmac_priv, fpe_cfg);
 	const struct stmmac_fpe_reg *reg = cfg->reg;
-	u32 num_rxq = priv->plat->rx_queues_to_use;
 	void __iomem *ioaddr = priv->ioaddr;
-	u32 value;
 
-	if (tx_enable) {
+	if (tx_enable)
 		cfg->fpe_csr = STMMAC_MAC_FPE_CTRL_STS_EFPE;
-		value = readl(ioaddr + reg->rxq_ctrl1_reg);
-		value &= ~reg->fprq_mask;
-		/* Keep this SHIFT, FIELD_PREP() expects a constant mask :-/ */
-		value |= (num_rxq - 1) << __ffs(reg->fprq_mask);
-		writel(value, ioaddr + reg->rxq_ctrl1_reg);
-	} else {
+	else
 		cfg->fpe_csr = 0;
-	}
+
 	writel(cfg->fpe_csr, ioaddr + reg->mac_fpe_reg);
 }
 
@@ -68,6 +61,7 @@ static void stmmac_fpe_configure_pmac(struct ethtool_mmsv *mmsv, bool pmac_enabl
 {
 	struct stmmac_fpe_cfg *cfg = container_of(mmsv, struct stmmac_fpe_cfg, mmsv);
 	struct stmmac_priv *priv = container_of(cfg, struct stmmac_priv, fpe_cfg);
+	u32 num_rxq = priv->plat->rx_queues_to_use;
 	const struct stmmac_fpe_reg *reg = cfg->reg;
 	void __iomem *ioaddr = priv->ioaddr;
 	unsigned long flags;
@@ -83,6 +77,12 @@ static void stmmac_fpe_configure_pmac(struct ethtool_mmsv *mmsv, bool pmac_enabl
 
 			value |= reg->int_en_bit;
 		}
+		/* Frame Preemption Residue Queue is the Rx Queue to which
+		 * residual preemptive mPackets must be forwarded from the pmac.
+		 */
+		writel(u32_replace_bits(readl(ioaddr + reg->rxq_ctrl1_reg),
+					num_rxq - 1, reg->fprq_mask),
+		       ioaddr + reg->rxq_ctrl1_reg);
 	} else {
 		value &= ~reg->int_en_bit;
 	}
@@ -174,8 +174,15 @@ void stmmac_fpe_init(struct stmmac_priv *priv)
 			  &stmmac_mmsv_ops);
 
 	if ((!priv->fpe_cfg.reg || !priv->hw->mac->fpe_map_preemption_class) &&
-	    priv->dma_cap.fpesel)
+	    priv->dma_cap.fpesel) {
 		dev_info(priv->device, "FPE is not supported by driver.\n");
+		return;
+	}
+
+	/* The preemptive MAC in DWMAC is always enabled, so initialize
+	 * pmac_enabled to true to reflect the hardware state.
+	 */
+	priv->fpe_cfg.mmsv.pmac_enabled = true;
 }
 
 int stmmac_fpe_get_add_frag_size(struct stmmac_priv *priv)

3/2 2026/07/30 07:15 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 3304
							output: 20
							thoughts: 283
						

Thoughts:
**Investigating the Testability of a STMicroelectronics Ethernet Driver**

Okay, so I'm looking at these patches that touch `stmmac_ethtool.c` and `stmmac_fpe.c` within the stmmac driver. That's the driver for STMicroelectronics' 10/100/1000/EQOS Ethernet MACs. My first thought is: can I test this thing in QEMU? That's the ideal scenario, I always prefer virtualized testing.

Hmm, stmmac is used across a range of SoCs, which means it might or might not be emulated in QEMU. Gotta check if QEMU provides any emulation support specifically for stmmac. I can either use `grep` or see if it's a PCI device. Hold on... there's `stmmac_pci.c`, so it *can* be a PCI device. That's good news!

Now, the question becomes: does QEMU emulate the PCI stmmac, or can I somehow get it to a state where fuzzing is possible? Syzkaller already fuzzes stmmac if it's a PCI device or if it's instantiated in other ways. But wait, is it actually a vendor-specific hardware driver? Does it require some specialized physical hardware to actually function? Gotta double-check the `stmmac_pci.c` source code to be sure.



4/2 2026/07/30 07:15 tool grepper
0m Args:
{
  "Expression": "stmmac_pci"
}

Results:
{
  "Output": "Documentation/networking/device_drivers/ethernet/stmicro/stmmac.rst=107=syntax (e.g. for PCI module)::\nDocumentation/networking/device_drivers/ethernet/stmicro/stmmac.rst-108-\nDocumentation/networking/device_drivers/ethernet/stmicro/stmmac.rst:109:    modprobe stmmac_pci [\u003coption\u003e=\u003cVAL1\u003e,\u003cVAL2\u003e,...]\nDocumentation/networking/device_drivers/ethernet/stmicro/stmmac.rst-110-\n--\ndrivers/net/ethernet/stmicro/stmmac/Makefile=53=obj-$(CONFIG_DWMAC_MOTORCOMM)\t+= dwmac-motorcomm.o\ndrivers/net/ethernet/stmicro/stmmac/Makefile:54:stmmac-pci-objs:= stmmac_pci.o\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=25=struct intel_priv_data {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-39- */\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:40:struct stmmac_pci_func_data {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-41-\tunsigned int func;\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-44-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:45:struct stmmac_pci_dmi_data {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:46:\tconst struct stmmac_pci_func_data *func;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-47-\tsize_t nfuncs;\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-49-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:50:struct stmmac_pci_info {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-51-\tint (*setup)(struct pci_dev *pdev, struct plat_stmmacenet_data *plat);\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=91=static const int adln_tsn_lane_regs[] = {6};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-92-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:93:static int stmmac_pci_find_phy_addr(struct pci_dev *pdev,\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-94-\t\t\t\t    const struct dmi_system_id *dmi_list)\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-95-{\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:96:\tconst struct stmmac_pci_func_data *func_data;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:97:\tconst struct stmmac_pci_dmi_data *dmi_data;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-98-\tconst struct dmi_system_id *dmi_id;\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=786=static int ehl_sgmii_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-805-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:806:static struct stmmac_pci_info ehl_sgmii1g_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-807-\t.setup = ehl_sgmii_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=810=static int ehl_rgmii_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-820-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:821:static struct stmmac_pci_info ehl_rgmii1g_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-822-\t.setup = ehl_rgmii_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=841=static int ehl_pse0_rgmii1g_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-847-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:848:static struct stmmac_pci_info ehl_pse0_rgmii1g_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-849-\t.setup = ehl_pse0_rgmii1g_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=852=static int ehl_pse0_sgmii1g_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-869-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:870:static struct stmmac_pci_info ehl_pse0_sgmii1g_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-871-\t.setup = ehl_pse0_sgmii1g_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=890=static int ehl_pse1_rgmii1g_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-896-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:897:static struct stmmac_pci_info ehl_pse1_rgmii1g_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-898-\t.setup = ehl_pse1_rgmii1g_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=901=static int ehl_pse1_sgmii1g_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-918-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:919:static struct stmmac_pci_info ehl_pse1_sgmii1g_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-920-\t.setup = ehl_pse1_sgmii1g_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=944=static int tgl_sgmii_phy0_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-952-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:953:static struct stmmac_pci_info tgl_sgmii1g_phy0_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-954-\t.setup = tgl_sgmii_phy0_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=957=static int tgl_sgmii_phy1_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-965-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:966:static struct stmmac_pci_info tgl_sgmii1g_phy1_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-967-\t.setup = tgl_sgmii_phy1_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=970=static int adls_sgmii_phy0_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-979-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:980:static struct stmmac_pci_info adls_sgmii1g_phy0_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-981-\t.setup = adls_sgmii_phy0_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=984=static int adls_sgmii_phy1_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-993-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:994:static struct stmmac_pci_info adls_sgmii1g_phy1_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-995-\t.setup = adls_sgmii_phy1_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=1023=static int adln_sgmii_phy0_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1041-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1042:static struct stmmac_pci_info adln_sgmii1g_phy0_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1043-\t.setup = adln_sgmii_phy0_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1045-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1046:static const struct stmmac_pci_func_data galileo_stmmac_func_data[] = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1047-\t{\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1052-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1053:static const struct stmmac_pci_dmi_data galileo_stmmac_dmi_data = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1054-\t.func = galileo_stmmac_func_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1057-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1058:static const struct stmmac_pci_func_data iot2040_stmmac_func_data[] = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1059-\t{\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1068-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1069:static const struct stmmac_pci_dmi_data iot2040_stmmac_dmi_data = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1070-\t.func = iot2040_stmmac_func_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=1109=static int quark_default_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1119-\t */\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1120:\tret = stmmac_pci_find_phy_addr(pdev, quark_pci_dmi);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1121-\tif (ret \u003c 0) {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1144-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1145:static const struct stmmac_pci_info quark_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1146-\t.setup = quark_default_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=1263=static int intel_eth_pci_probe(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1265-{\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1266:\tstruct stmmac_pci_info *info = (struct stmmac_pci_info *)id-\u003edriver_data;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1267-\tstruct intel_priv_data *intel_priv;\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c=76=struct loongson_data {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-81-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:82:struct stmmac_pci_info {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-83-\tint (*setup)(struct pci_dev *pdev, struct plat_stmmacenet_data *plat);\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c=132=static int loongson_gmac_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-141-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:142:static struct stmmac_pci_info loongson_gmac_pci_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-143-\t.setup = loongson_gmac_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c=165=static int loongson_gnet_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-176-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:177:static struct stmmac_pci_info loongson_gnet_pci_info = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-178-\t.setup = loongson_gnet_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c=498=static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id *id)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-501-\tstruct stmmac_resources res = {};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:502:\tstruct stmmac_pci_info *info;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-503-\tstruct loongson_data *ld;\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-537-\tplat-\u003efix_soc_reset = loongson_dwmac_fix_reset;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:538:\tplat-\u003esuspend = stmmac_pci_plat_suspend;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:539:\tplat-\u003eresume = stmmac_pci_plat_resume;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-540-\tld-\u003edev = \u0026pdev-\u003edev;\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-542-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:543:\tinfo = (struct stmmac_pci_info *)id-\u003edriver_data;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-544-\tret = info-\u003esetup(pdev, plat);\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c=188=static int motorcomm_resume(struct device *dev, void *bsp_priv)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-192-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c:193:\tret = stmmac_pci_plat_resume(dev, bsp_priv);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-194-\tif (ret)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c=208=motorcomm_default_plat_data(struct pci_dev *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-248-\tplat-\u003ecore_type\t\t= DWMAC_CORE_GMAC4;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c:249:\tplat-\u003esuspend\t\t= stmmac_pci_plat_suspend;\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-250-\tplat-\u003eresume\t\t= motorcomm_resume;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c-11-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c:12:int stmmac_pci_plat_suspend(struct device *dev, void *bsp_priv)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c-13-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c-25-}\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c:26:EXPORT_SYMBOL_GPL(stmmac_pci_plat_suspend);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c-27-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c:28:int stmmac_pci_plat_resume(struct device *dev, void *bsp_priv)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c-29-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c-43-}\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c:44:EXPORT_SYMBOL_GPL(stmmac_pci_plat_resume);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.c-45-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.h-8-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.h:9:int stmmac_pci_plat_suspend(struct device *dev, void *bsp_priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.h:10:int stmmac_pci_plat_resume(struct device *dev, void *bsp_priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_libpci.h-11-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-18-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:19:struct stmmac_pci_info {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-20-\tint (*setup)(struct pci_dev *pdev, struct plat_stmmacenet_data *plat);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c=33=static int stmmac_default_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-49-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:50:static const struct stmmac_pci_info stmmac_pci_info = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-51-\t.setup = stmmac_default_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c=54=static int snps_gmac5_default_data(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-101-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:102:static const struct stmmac_pci_info snps_gmac5_pci_info = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-103-\t.setup = snps_gmac5_default_data,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-106-/**\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:107: * stmmac_pci_probe\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-108- *\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-117- */\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:118:static int stmmac_pci_probe(struct pci_dev *pdev,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-119-\t\t\t    const struct pci_device_id *id)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-120-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:121:\tstruct stmmac_pci_info *info = (struct stmmac_pci_info *)id-\u003edriver_data;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-122-\tstruct plat_stmmacenet_data *plat;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-179-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:180:\tplat-\u003esuspend = stmmac_pci_plat_suspend;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:181:\tplat-\u003eresume = stmmac_pci_plat_resume;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-182-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-186-/**\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:187: * stmmac_pci_remove\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-188- *\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-191- */\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:192:static void stmmac_pci_remove(struct pci_dev *pdev)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-193-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c=203=static const struct pci_device_id stmmac_id_table[] = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:204:\t{ PCI_DEVICE_DATA(STMMAC, STMMAC, \u0026stmmac_pci_info) },\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:205:\t{ PCI_DEVICE_DATA(STMICRO, MAC, \u0026stmmac_pci_info) },\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-206-\t{ PCI_DEVICE_DATA(SYNOPSYS, GMAC5_ID, \u0026snps_gmac5_pci_info) },\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c=210=MODULE_DEVICE_TABLE(pci, stmmac_id_table);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-211-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:212:static struct pci_driver stmmac_pci_driver = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-213-\t.name = STMMAC_RESOURCE_NAME,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-214-\t.id_table = stmmac_id_table,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:215:\t.probe = stmmac_pci_probe,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:216:\t.remove = stmmac_pci_remove,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-217-\t.driver         = {\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-221-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c:222:module_pci_driver(stmmac_pci_driver);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-223-\n"
}

5/2 2026/07/30 07:15 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 11276
							output: 16
							thoughts: 1262
						

Thoughts:
**Assessing the Testability of the stmmac Driver in Syzkaller**

Okay, so I'm looking at this patch and trying to figure out if it's fuzzable in Syzkaller.  The driver in question is `stmmac_pci.c`, so it's a PCI driver. My immediate thought is, can Syzkaller's virtual PCI emulation get to this? Syzkaller uses `syz_pci_device` and QEMU for PCI drivers, and I know QEMU emulates *some* PCI devices.  But does it emulate *this* specific one, STMMAC?

Let me quickly check what QEMU *does* emulate in terms of network interfaces - I see a list of things like `igb.c`, `e1000e.c`, `rtl8139.c`, etc., but nothing immediately screaming "STMMAC". Alright, I need to see if there are even any pseudo-syscalls defined for stmmac in syzkaller.  Also, does Syzkaller test ethtool commands with `ioctl(fd, SIOCETHTOOL, ...)`? That could be a good avenue if the driver is loaded and the device exists. If not, `stmmac_set_mm` won't be reachable.

So, is `stmmac` testable with syzkaller?  I'll see if it is in some virtual device, or if instantiated via platform devices, such as those that appear in emulated ARM boards. Syzkaller primarily runs on x86_64, but also on ARM64.  On ARM64, QEMU might emulate a board with stmmac. Also, I know Syzkaller has `vhci` for USB, `mac80211_hwsim` for wifi, `netdevsim` for net. It's a question of whether `stmmac` has something similar.

Now, let's dive into the patch itself.  It touches `stmmac_set_mm` in `stmmac_ethtool.c`, and then also `stmmac_fpe_configure_tx`, `stmmac_fpe_configure_pmac`, and `stmmac_fpe_init` in `stmmac_fpe.c`.  Okay, it adds a couple of checks: one to ensure `priv->dma_cap.fpesel` is set and another to see if `cfg->pmac_enabled` is set. Then in `stmmac_fpe.c` it makes some code changes that move a write to `rxq_ctrl1_reg` to `stmmac_fpe_configure_pmac`.

Can I even get to this code path in Syzkaller?  If Syzkaller is running on QEMU, the emulated machine needs to *have* `stmmac`, like maybe with `qemu-system-arm -machine virt`? No, `virt` uses `virtio-net`. Now wait, Syzkaller is mostly x86_64 and uses `qemu-system-x86_64`.  Does *that* have stmmac?  Probably not, unless it's a PCI device that can be instantiated with `syz_pci_device`. But even then, `syz_pci_device` doesn't do full device emulation; it just handles PCI config space and BARs. The driver might probe, but will it *register* a netdev?

Typically, if the driver is expecting particular hardware responses from BAR reads/writes, it will fail to probe with `syz_pci_device`, unless those responses are fuzzed. And even *if* it probes, will it register the netdev? That's the key. If the driver isn't fully emulated, it's very hard to reach ethtool ops because the netdev might not be registered, or it might not be up.

But here's a crucial thing to consider: the instructions say to return WorthFuzzing=false if the patch involves "vendor-specific PCIe switch, SmartNIC, or GPU drivers (e.g., mlxsw, pds_core, qed, ionic, amdgpu) that require physical PCIe hardware cards not emulated in standard QEMU."  Is `stmmac` one of those? No. It's a standard Ethernet MAC, a Synopsys DesignWare MAC, found in many SoCs.

So, is it emulated in standard QEMU?  I need to see if QEMU emulates something like `dwmac` or `stmmac`. I see QEMU has


6/2 2026/07/30 07:16 tool grepper
0m Args:
{
  "Expression": "designware"
}

Results:
{
  "Output": "\nFull output is too long, showing 500 out of 1306 lines.\nUse more precise expression if possible.\n\nDocumentation/arch/arc/arc.rst=10=ARC processors and relevant open source projects.\n--\nDocumentation/arch/arc/arc.rst-23-- `Official Synopsys ARC Processors website\nDocumentation/arch/arc/arc.rst:24:  \u003chttps://www.synopsys.com/designware-ip/processor-solutions.html\u003e`_ -\nDocumentation/arch/arc/arc.rst-25-  location, with access to some IP documentation (`Programmer's Reference\n--\nDocumentation/devicetree/bindings/dma/k3dma.txt=32=For example, i2c0 read channel request line is 18, while write channel use 19\n--\nDocumentation/devicetree/bindings/dma/k3dma.txt-34-\t\ti2c0: i2c@fcb08000 {\nDocumentation/devicetree/bindings/dma/k3dma.txt:35:\t\t\tcompatible = \"snps,designware-i2c\";\nDocumentation/devicetree/bindings/dma/k3dma.txt-36-\t\t\tdmas =\t\u003c\u0026dma0 18          /* read channel */\n--\nDocumentation/devicetree/bindings/dma/k3dma.txt-41-\t\ti2c1: i2c@fcb09000 {\nDocumentation/devicetree/bindings/dma/k3dma.txt:42:\t\t\tcompatible = \"snps,designware-i2c\";\nDocumentation/devicetree/bindings/dma/k3dma.txt-43-\t\t\tdmas =\t\u003c\u0026dma0 20          /* read channel */\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-3----\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:4:$id: http://devicetree.org/schemas/i2c/snps,designware-i2c.yaml#\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml=25=properties:\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-28-      - description: Generic Synopsys DesignWare I2C controller\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:29:        const: snps,designware-i2c\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-30-      - description: Renesas RZ/N1D I2C controller\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-33-          - const: renesas,rzn1-i2c       # RZ/N1\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:34:          - const: snps,designware-i2c\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-35-      - description: Mobileye EyeQ DesignWare I2C controller\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-39-          - const: mobileye,eyeq6lplus-i2c\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:40:          - const: snps,designware-i2c\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-41-      - items:\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-46-              - thead,th1520-i2c\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:47:          - const: snps,designware-i2c\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-48-\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml=131=examples:\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-133-    i2c@f0000 {\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:134:      compatible = \"snps,designware-i2c\";\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-135-      reg = \u003c0xf0000 0x1000\u003e;\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-140-    i2c@1120000 {\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:141:      compatible = \"snps,designware-i2c\";\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-142-      reg = \u003c0x1120000 0x1000\u003e;\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-152-    i2c@2000 {\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:153:      compatible = \"snps,designware-i2c\";\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-154-      reg = \u003c0x2000 0x100\u003e;\n--\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-167-    i2c@100400 {\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml:168:      compatible = \"mscc,ocelot-i2c\", \"snps,designware-i2c\";\nDocumentation/devicetree/bindings/i2c/snps,designware-i2c.yaml-169-      reg = \u003c0x100400 0x100\u003e, \u003c0x198 0x8\u003e;\n--\nDocumentation/devicetree/bindings/mmc/bluefield-dw-mshc.txt=4=Read synopsys-dw-mshc.txt for more details\nDocumentation/devicetree/bindings/mmc/bluefield-dw-mshc.txt-5-\nDocumentation/devicetree/bindings/mmc/bluefield-dw-mshc.txt:6:The Synopsys designware mobile storage host controller is used to interface\nDocumentation/devicetree/bindings/mmc/bluefield-dw-mshc.txt-7-a SoC with storage medium such as eMMC or SD/MMC cards. This file documents\n--\nDocumentation/devicetree/bindings/mmc/hisilicon,hi3660-dw-mshc.yaml=12=description:\nDocumentation/devicetree/bindings/mmc/hisilicon,hi3660-dw-mshc.yaml:13:  The Synopsys designware mobile storage host controller is used to interface\nDocumentation/devicetree/bindings/mmc/hisilicon,hi3660-dw-mshc.yaml-14-  a SoC with storage medium such as eMMC or SD/MMC cards. This file documents\n--\nDocumentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml=5=$schema: http://devicetree.org/meta-schemas/core.yaml#\nDocumentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml-6-\nDocumentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml:7:title: Rockchip designware mobile storage host controller\nDocumentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml-8-\nDocumentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml=9=description:\nDocumentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml:10:  Rockchip uses the Synopsys designware mobile storage host controller\nDocumentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml-11-  to interface a SoC with storage medium such as eMMC or SD/MMC cards.\n--\nDocumentation/devicetree/bindings/mmc/starfive,jh7110-mmc.yaml=9=description:\nDocumentation/devicetree/bindings/mmc/starfive,jh7110-mmc.yaml:10:  StarFive uses the Synopsys designware mobile storage host controller\nDocumentation/devicetree/bindings/mmc/starfive,jh7110-mmc.yaml-11-  to interface a SoC with storage medium such as eMMC or SD/MMC cards.\n--\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-3----\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml:4:$id: http://devicetree.org/schemas/sound/snps,designware-i2s.yaml#\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml=12=properties:\n--\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-16-          - const: canaan,k210-i2s\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml:17:          - const: snps,designware-i2s\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-18-      - enum:\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml:19:          - snps,designware-i2s\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-20-          - starfive,jh7110-i2stx0\n--\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml=89=allOf:\n--\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-107-          contains:\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml:108:            const: snps,designware-i2s\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-109-    then:\n--\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml=187=examples:\n--\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-189-    soc_i2s: i2s@7ff90000 {\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml:190:      compatible = \"snps,designware-i2s\";\nDocumentation/devicetree/bindings/sound/snps,designware-i2s.yaml-191-      reg = \u003c0x7ff90000 0x1000\u003e;\n--\nDocumentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml=37=properties:\n--\nDocumentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml-134-      rxd input signal occurs. The \"rx_sample_delay\" is an optional feature\nDocumentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml:135:      of the designware controller, and the upper limit is also subject to\nDocumentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml-136-      controller configuration.\n--\nMAINTAINERS=20789=F:\tDocumentation/devicetree/bindings/pci/snps,dw-pcie.yaml\nMAINTAINERS:20790:F:\tdrivers/pci/controller/dwc/*designware*\nMAINTAINERS-20791-F:\tinclude/linux/pcie-dwc.h\n--\nMAINTAINERS=26273=S:\tSupported\nMAINTAINERS:26274:F:\tdrivers/i2c/busses/i2c-designware-*\nMAINTAINERS-26275-\n--\nMAINTAINERS=26280=S:\tMaintained\nMAINTAINERS:26281:F:\tdrivers/i2c/busses/i2c-designware-amdisp.c\nMAINTAINERS-26282-F:\tinclude/linux/soc/amd/isp4_misc.h\n--\narch/arc/boot/dts/abilis_tb10x.dtsi=123=\t\ti2c0: i2c@ff120000 {\n--\narch/arc/boot/dts/abilis_tb10x.dtsi-125-\t\t\t#size-cells = \u003c0\u003e;\narch/arc/boot/dts/abilis_tb10x.dtsi:126:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arc/boot/dts/abilis_tb10x.dtsi-127-\t\t\treg = \u003c0xff120000 0x1000\u003e;\n--\narch/arc/boot/dts/abilis_tb10x.dtsi=132=\t\ti2c1: i2c@ff121000 {\n--\narch/arc/boot/dts/abilis_tb10x.dtsi-134-\t\t\t#size-cells = \u003c0\u003e;\narch/arc/boot/dts/abilis_tb10x.dtsi:135:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arc/boot/dts/abilis_tb10x.dtsi-136-\t\t\treg = \u003c0xff121000 0x1000\u003e;\n--\narch/arc/boot/dts/abilis_tb10x.dtsi=141=\t\ti2c2: i2c@ff122000 {\n--\narch/arc/boot/dts/abilis_tb10x.dtsi-143-\t\t\t#size-cells = \u003c0\u003e;\narch/arc/boot/dts/abilis_tb10x.dtsi:144:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arc/boot/dts/abilis_tb10x.dtsi-145-\t\t\treg = \u003c0xff122000 0x1000\u003e;\n--\narch/arc/boot/dts/abilis_tb10x.dtsi=150=\t\ti2c3: i2c@ff123000 {\n--\narch/arc/boot/dts/abilis_tb10x.dtsi-152-\t\t\t#size-cells = \u003c0\u003e;\narch/arc/boot/dts/abilis_tb10x.dtsi:153:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arc/boot/dts/abilis_tb10x.dtsi-154-\t\t\treg = \u003c0xff123000 0x1000\u003e;\n--\narch/arc/boot/dts/abilis_tb10x.dtsi=159=\t\ti2c4: i2c@ff124000 {\n--\narch/arc/boot/dts/abilis_tb10x.dtsi-161-\t\t\t#size-cells = \u003c0\u003e;\narch/arc/boot/dts/abilis_tb10x.dtsi:162:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arc/boot/dts/abilis_tb10x.dtsi-163-\t\t\treg = \u003c0xff124000 0x1000\u003e;\n--\narch/arc/boot/dts/axs10x_mb.dtsi=162=\t\ti2c@1d000 {\narch/arc/boot/dts/axs10x_mb.dtsi:163:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arc/boot/dts/axs10x_mb.dtsi-164-\t\t\treg = \u003c0x1d000 0x100\u003e;\n--\narch/arc/boot/dts/axs10x_mb.dtsi=170=\t\ti2s: i2s@1e000 {\narch/arc/boot/dts/axs10x_mb.dtsi:171:\t\t\tcompatible = \"snps,designware-i2s\";\narch/arc/boot/dts/axs10x_mb.dtsi-172-\t\t\treg = \u003c0x1e000 0x100\u003e;\n--\narch/arc/boot/dts/axs10x_mb.dtsi=179=\t\ti2c@1f000 {\narch/arc/boot/dts/axs10x_mb.dtsi:180:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arc/boot/dts/axs10x_mb.dtsi-181-\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi=669=\t\ti2c0: i2c@ffc04000 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-671-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi:672:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-673-\t\t\treg = \u003c0xffc04000 0x1000\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi=680=\t\ti2c1: i2c@ffc05000 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-682-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi:683:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-684-\t\t\treg = \u003c0xffc05000 0x1000\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi=691=\t\ti2c2: i2c@ffc06000 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-693-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi:694:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-695-\t\t\treg = \u003c0xffc06000 0x1000\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi=702=\t\ti2c3: i2c@ffc07000 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-704-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi:705:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga.dtsi-706-\t\t\treg = \u003c0xffc07000 0x1000\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi=556=\t\ti2c0: i2c@ffc02200 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-558-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi:559:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-560-\t\t\treg = \u003c0xffc02200 0x100\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi=567=\t\ti2c1: i2c@ffc02300 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-569-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi:570:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-571-\t\t\treg = \u003c0xffc02300 0x100\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi=578=\t\ti2c2: i2c@ffc02400 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-580-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi:581:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-582-\t\t\treg = \u003c0xffc02400 0x100\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi=589=\t\ti2c3: i2c@ffc02500 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-591-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi:592:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-593-\t\t\treg = \u003c0xffc02500 0x100\u003e;\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi=600=\t\ti2c4: i2c@ffc02600 {\n--\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-602-\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi:603:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/intel/socfpga/socfpga_arria10.dtsi-604-\t\t\treg = \u003c0xffc02600 0x100\u003e;\n--\narch/arm/boot/dts/nspire/nspire-cx.dts=151=\t\t\ti2c@90050000 {\narch/arm/boot/dts/nspire/nspire-cx.dts:152:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/nspire/nspire-cx.dts-153-\t\t\t\treg = \u003c0x90050000 0x1000\u003e;\n--\narch/arm/boot/dts/renesas/r9a06g032.dtsi=318=\t\ti2c1: i2c@40063000 {\narch/arm/boot/dts/renesas/r9a06g032.dtsi:319:\t\t\tcompatible = \"renesas,r9a06g032-i2c\", \"renesas,rzn1-i2c\", \"snps,designware-i2c\";\narch/arm/boot/dts/renesas/r9a06g032.dtsi-320-\t\t\treg = \u003c0x40063000 0x100\u003e;\n--\narch/arm/boot/dts/renesas/r9a06g032.dtsi=329=\t\ti2c2: i2c@40064000 {\narch/arm/boot/dts/renesas/r9a06g032.dtsi:330:\t\t\tcompatible = \"renesas,r9a06g032-i2c\", \"renesas,rzn1-i2c\", \"snps,designware-i2c\";\narch/arm/boot/dts/renesas/r9a06g032.dtsi-331-\t\t\treg = \u003c0x40064000 0x100\u003e;\n--\narch/arm/boot/dts/st/spear1310.dtsi=174=\t\t\ti2c1: i2c@5cd00000 {\n--\narch/arm/boot/dts/st/spear1310.dtsi-176-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1310.dtsi:177:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1310.dtsi-178-\t\t\t\treg = \u003c0x5cd00000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear1310.dtsi=183=\t\t\ti2c2: i2c@5ce00000 {\n--\narch/arm/boot/dts/st/spear1310.dtsi-185-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1310.dtsi:186:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1310.dtsi-187-\t\t\t\treg = \u003c0x5ce00000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear1310.dtsi=192=\t\t\ti2c3: i2c@5cf00000 {\n--\narch/arm/boot/dts/st/spear1310.dtsi-194-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1310.dtsi:195:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1310.dtsi-196-\t\t\t\treg = \u003c0x5cf00000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear1310.dtsi=201=\t\t\ti2c4: i2c@5d000000 {\n--\narch/arm/boot/dts/st/spear1310.dtsi-203-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1310.dtsi:204:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1310.dtsi-205-\t\t\t\treg = \u003c0x5d000000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear1310.dtsi=210=\t\t\ti2c5: i2c@5d100000 {\n--\narch/arm/boot/dts/st/spear1310.dtsi-212-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1310.dtsi:213:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1310.dtsi-214-\t\t\t\treg = \u003c0x5d100000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear1310.dtsi=219=\t\t\ti2c6: i2c@5d200000 {\n--\narch/arm/boot/dts/st/spear1310.dtsi-221-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1310.dtsi:222:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1310.dtsi-223-\t\t\t\treg = \u003c0x5d200000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear1310.dtsi=228=\t\t\ti2c7: i2c@5d300000 {\n--\narch/arm/boot/dts/st/spear1310.dtsi-230-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1310.dtsi:231:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1310.dtsi-232-\t\t\t\treg = \u003c0x5d300000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear1340.dtsi=62=\t\ti2s-play@b2400000 {\narch/arm/boot/dts/st/spear1340.dtsi:63:\t\t\tcompatible = \"snps,designware-i2s\";\narch/arm/boot/dts/st/spear1340.dtsi-64-\t\t\treg = \u003c0xb2400000 0x10000\u003e;\n--\narch/arm/boot/dts/st/spear1340.dtsi=73=\t\ti2s-rec@b2000000 {\narch/arm/boot/dts/st/spear1340.dtsi:74:\t\t\tcompatible = \"snps,designware-i2s\";\narch/arm/boot/dts/st/spear1340.dtsi-75-\t\t\treg = \u003c0xb2000000 0x10000\u003e;\n--\narch/arm/boot/dts/st/spear1340.dtsi=122=\t\t\ti2c1: i2c@b4000000 {\n--\narch/arm/boot/dts/st/spear1340.dtsi-124-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear1340.dtsi:125:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear1340.dtsi-126-\t\t\t\treg = \u003c0xb4000000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear13xx.dtsi=253=\t\t\ti2c0: i2c@e0280000 {\n--\narch/arm/boot/dts/st/spear13xx.dtsi-255-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear13xx.dtsi:256:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear13xx.dtsi-257-\t\t\t\treg = \u003c0xe0280000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear13xx.dtsi=262=\t\t\ti2s@e0180000 {\narch/arm/boot/dts/st/spear13xx.dtsi:263:\t\t\t\tcompatible = \"st,designware-i2s\";\narch/arm/boot/dts/st/spear13xx.dtsi-264-\t\t\t\treg = \u003c0xe0180000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear13xx.dtsi=271=\t\t\ti2s@e0200000 {\narch/arm/boot/dts/st/spear13xx.dtsi:272:\t\t\t\tcompatible = \"st,designware-i2s\";\narch/arm/boot/dts/st/spear13xx.dtsi-273-\t\t\t\treg = \u003c0xe0200000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear320.dtsi=94=\t\t\ti2c1: i2c@a7000000 {\n--\narch/arm/boot/dts/st/spear320.dtsi-96-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear320.dtsi:97:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear320.dtsi-98-\t\t\t\treg = \u003c0xa7000000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear3xx.dtsi=114=\t\t\ti2c0: i2c@d0180000 {\n--\narch/arm/boot/dts/st/spear3xx.dtsi-116-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear3xx.dtsi:117:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear3xx.dtsi-118-\t\t\t\treg = \u003c0xd0180000 0x1000\u003e;\n--\narch/arm/boot/dts/st/spear600.dtsi=178=\t\t\ti2c: i2c@d0200000 {\n--\narch/arm/boot/dts/st/spear600.dtsi-180-\t\t\t\t#size-cells = \u003c0\u003e;\narch/arm/boot/dts/st/spear600.dtsi:181:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/st/spear600.dtsi-182-\t\t\t\treg = \u003c0xd0200000 0x1000\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2cd.dtsi=246=\t\t\ti2c0: i2c@1400 {\narch/arm/boot/dts/synaptics/berlin2cd.dtsi:247:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2cd.dtsi-248-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2cd.dtsi=256=\t\t\ti2c1: i2c@1800 {\narch/arm/boot/dts/synaptics/berlin2cd.dtsi:257:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2cd.dtsi-258-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2cd.dtsi=491=\t\t\ti2c2: i2c@7000 {\narch/arm/boot/dts/synaptics/berlin2cd.dtsi:492:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2cd.dtsi-493-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2cd.dtsi=501=\t\t\ti2c3: i2c@8000 {\narch/arm/boot/dts/synaptics/berlin2cd.dtsi:502:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2cd.dtsi-503-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2q.dtsi=317=\t\t\ti2c0: i2c@1400 {\narch/arm/boot/dts/synaptics/berlin2q.dtsi:318:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2q.dtsi-319-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2q.dtsi=329=\t\t\ti2c1: i2c@1800 {\narch/arm/boot/dts/synaptics/berlin2q.dtsi:330:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2q.dtsi-331-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2q.dtsi=560=\t\t\ti2c2: i2c@7000 {\narch/arm/boot/dts/synaptics/berlin2q.dtsi:561:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2q.dtsi-562-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm/boot/dts/synaptics/berlin2q.dtsi=572=\t\t\ti2c3: i2c@8000 {\narch/arm/boot/dts/synaptics/berlin2q.dtsi:573:\t\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm/boot/dts/synaptics/berlin2q.dtsi-574-\t\t\t\t#address-cells = \u003c1\u003e;\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi=268=\t\ti2c0: i2c@ffc02800 {\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-270-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi:271:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-272-\t\t\treg = \u003c0xffc02800 0x100\u003e;\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi=279=\t\ti2c1: i2c@ffc02900 {\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-281-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi:282:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-283-\t\t\treg = \u003c0xffc02900 0x100\u003e;\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi=290=\t\ti2c2: i2c@ffc02a00 {\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-292-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi:293:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-294-\t\t\treg = \u003c0xffc02a00 0x100\u003e;\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi=301=\t\ti2c3: i2c@ffc02b00 {\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-303-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi:304:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-305-\t\t\treg = \u003c0xffc02b00 0x100\u003e;\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi=312=\t\ti2c4: i2c@ffc02c00 {\n--\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-314-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi:315:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/altera/socfpga_stratix10.dtsi-316-\t\t\treg = \u003c0xffc02c00 0x100\u003e;\n--\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi=96=\t\ti2c0: i2c@e1000000 {\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi-97-\t\t\tstatus = \"disabled\";\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi:98:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi-99-\t\t\treg = \u003c0 0xe1000000 0 0x1000\u003e;\n--\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi=104=\t\ti2c1: i2c@e0050000 {\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi-105-\t\t\tstatus = \"disabled\";\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi:106:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/amd/amd-seattle-soc.dtsi-107-\t\t\treg = \u003c0 0xe0050000 0 0x1000\u003e;\n--\narch/arm64/boot/dts/amd/elba.dtsi=62=\t\ti2c0: i2c@400 {\narch/arm64/boot/dts/amd/elba.dtsi:63:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/amd/elba.dtsi-64-\t\t\treg = \u003c0x0 0x400 0x0 0x100\u003e;\n--\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi=797=\t\ti2c1: i2c@10511000 {\n--\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi-799-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi:800:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi-801-\t\t\treg = \u003c0x0 0x10511000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi=806=\t\ti2c4: i2c@10640000 {\n--\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi-808-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi:809:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/apm/apm-shadowcat.dtsi-810-\t\t\treg = \u003c0x0 0x10640000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/apm/apm-storm.dtsi=844=\t\ti2c0: i2c@10512000 {\n--\narch/arm64/boot/dts/apm/apm-storm.dtsi-847-\t\t\t#size-cells = \u003c0\u003e;\narch/arm64/boot/dts/apm/apm-storm.dtsi:848:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/apm/apm-storm.dtsi-849-\t\t\treg = \u003c0x0 0x10512000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/arm/juno-base.dtsi=905=\ti2c@7ffa0000 {\narch/arm64/boot/dts/arm/juno-base.dtsi:906:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/arm/juno-base.dtsi-907-\t\treg = \u003c0x0 0x7ffa0000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi=155=\t\ti2c0: i2c@4f0000 {\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi:156:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi-157-\t\t\treg = \u003c0x4f0000 0x1000\u003e;\n--\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi=166=\t\ti2c1: i2c@500000 {\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi:167:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi-168-\t\t\treg = \u003c0x500000 0x1000\u003e;\n--\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi=177=\t\ti2c2: i2c@510000 {\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi:178:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi-179-\t\t\treg = \u003c0x510000 0x1000\u003e;\n--\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi=188=\t\ti2c3: i2c@520000 {\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi:189:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi-190-\t\t\treg = \u003c0x520000 0x1000\u003e;\n--\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi=199=\t\ti2c4: i2c@530000 {\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi:200:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi-201-\t\t\treg = \u003c0x530000 0x1000\u003e;\n--\narch/arm64/boot/dts/broadcom/rp1-common.dtsi=29=\trp1_i2c0: i2c@40070000 {\narch/arm64/boot/dts/broadcom/rp1-common.dtsi:30:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/broadcom/rp1-common.dtsi-31-\t\treg = \u003c0x0 0x40070000  0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/broadcom/rp1-common.dtsi=40=\trp1_i2c1: i2c@40074000 {\narch/arm64/boot/dts/broadcom/rp1-common.dtsi:41:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/broadcom/rp1-common.dtsi-42-\t\treg = \u003c0x0 0x40074000  0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/broadcom/rp1-common.dtsi=51=\trp1_i2c2: i2c@40078000 {\narch/arm64/boot/dts/broadcom/rp1-common.dtsi:52:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/broadcom/rp1-common.dtsi-53-\t\treg = \u003c0x0 0x40078000  0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/broadcom/rp1-common.dtsi=62=\trp1_i2c3: i2c@4007c000 {\narch/arm64/boot/dts/broadcom/rp1-common.dtsi:63:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/broadcom/rp1-common.dtsi-64-\t\treg = \u003c0x0 0x4007c000  0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/broadcom/rp1-common.dtsi=73=\trp1_i2c4: i2c@40080000 {\narch/arm64/boot/dts/broadcom/rp1-common.dtsi:74:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/broadcom/rp1-common.dtsi-75-\t\treg = \u003c0x0 0x40080000  0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/broadcom/rp1-common.dtsi=84=\trp1_i2c5: i2c@40084000 {\narch/arm64/boot/dts/broadcom/rp1-common.dtsi:85:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/broadcom/rp1-common.dtsi-86-\t\treg = \u003c0x0 0x40084000  0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/broadcom/rp1-common.dtsi=95=\trp1_i2c6: i2c@40088000 {\narch/arm64/boot/dts/broadcom/rp1-common.dtsi:96:\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/broadcom/rp1-common.dtsi-97-\t\treg = \u003c0x0 0x40088000  0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3660.dtsi=413=\t\ti2c0: i2c@ffd71000 {\narch/arm64/boot/dts/hisilicon/hi3660.dtsi:414:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3660.dtsi-415-\t\t\treg = \u003c0x0 0xffd71000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3660.dtsi=427=\t\ti2c1: i2c@ffd72000 {\narch/arm64/boot/dts/hisilicon/hi3660.dtsi:428:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3660.dtsi-429-\t\t\treg = \u003c0x0 0xffd72000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3660.dtsi=441=\t\ti2c3: i2c@fdf0c000 {\narch/arm64/boot/dts/hisilicon/hi3660.dtsi:442:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3660.dtsi-443-\t\t\treg = \u003c0x0 0xfdf0c000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3660.dtsi=455=\t\ti2c7: i2c@fdf0b000 {\narch/arm64/boot/dts/hisilicon/hi3660.dtsi:456:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3660.dtsi-457-\t\t\treg = \u003c0x0 0xfdf0b000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3670.dtsi=719=\t\ti2c0: i2c@ffd71000 {\narch/arm64/boot/dts/hisilicon/hi3670.dtsi:720:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3670.dtsi-721-\t\t\treg = \u003c0x0 0xffd71000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3670.dtsi=733=\t\ti2c1: i2c@ffd72000 {\narch/arm64/boot/dts/hisilicon/hi3670.dtsi:734:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3670.dtsi-735-\t\t\treg = \u003c0x0 0xffd72000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3670.dtsi=747=\t\ti2c2: i2c@ffd73000 {\narch/arm64/boot/dts/hisilicon/hi3670.dtsi:748:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3670.dtsi-749-\t\t\treg = \u003c0x0 0xffd73000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3670.dtsi=761=\t\ti2c3: i2c@fdf0c000 {\narch/arm64/boot/dts/hisilicon/hi3670.dtsi:762:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3670.dtsi-763-\t\t\treg = \u003c0x0 0xfdf0c000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi3670.dtsi=775=\t\ti2c4: i2c@fdf0d000 {\narch/arm64/boot/dts/hisilicon/hi3670.dtsi:776:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi3670.dtsi-777-\t\t\treg = \u003c0x0 0xfdf0d000 0x0 0x1000\u003e;\n--\narch/arm64/boot/dts/hisilicon/hi6220.dtsi=739=\t\ti2c0: i2c@f7100000 {\narch/arm64/boot/dts/hisilicon/hi6220.dtsi:740:\t\t\tcompatible = \"snps,designware-i2c\";\narch/arm64/boot/dts/hisilicon/hi6220.dtsi-741-\t\t\treg = \u003c0x0 0xf7100000 0x0 0x1000\u003e;\n\n"
}

7/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 29123
							output: 16
							thoughts: 38
						

Thoughts:
Okay, here's my interpretation of those thoughts, summarized from my perspective as a specialist in this domain:

**My Mental Inventory Check**

Right, so I'm thinking about designware and how it's utilized. Immediately my mind jumps to all the common protocols and interfaces where I've seen it implemented – I2C, PCIe, MMC, I2S, SPI, the usual suspects. I'm taking mental inventory of its applications.

But then, as I go through the list, the question *dwmac* pops into my head. I need to make sure I haven't forgotten the common use cases and applications. I'm wondering if I've considered that use case. I need to refresh my knowledge.



8/2 2026/07/30 07:16 tool grepper
0m Args:
{
  "Expression": "dwmac"
}

Results:
{
  "Output": "\nFull output is too long, showing 500 out of 8130 lines.\nUse more precise expression if possible.\n\nDocumentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.yaml=9=allOf:\nDocumentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.yaml:10:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.yaml-11-\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml=9=maintainers:\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-12-\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:13:# We need a select here so we don't match all nodes with 'snps,dwmac'\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-14-select:\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml=28=properties:\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-45-          - const: allwinner,sun55i-a523-gmac200\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:46:          - const: snps,dwmac-4.20a\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-47-\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml=92=allOf:\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:93:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-94-  - if:\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml=255=examples:\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-274-            #size-cells = \u003c0\u003e;\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:275:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-276-        };\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-325-            #size-cells = \u003c0\u003e;\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:326:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-327-        };\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-374-        mdio {\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:375:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-376-            #address-cells = \u003c1\u003e;\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-387-        compatible = \"allwinner,sun55i-a523-gmac200\",\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:388:                     \"snps,dwmac-4.20a\";\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-389-        reg = \u003c0x04510000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-405-        mdio {\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml:406:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml-407-            #address-cells = \u003c1\u003e;\n--\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml=12=description:\n--\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-16-  # TODO: Determine how to handle the Arria10 reset-name, stmmaceth-ocp, that\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:17:  # does not validate against net/snps,dwmac.yaml.\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-18-\n--\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml=31=properties:\n--\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-35-          - const: altr,socfpga-stmmac\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:36:          - const: snps,dwmac-3.70a\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:37:          - const: snps,dwmac\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-38-      - items:\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-39-          - const: altr,socfpga-stmmac-a10-s10\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:40:          - const: snps,dwmac-3.72a\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:41:          - const: snps,dwmac\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-42-      - items:\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-43-          - const: altr,socfpga-stmmac-a10-s10\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:44:          - const: snps,dwmac-3.74a\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:45:          - const: snps,dwmac\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-46-      - items:\n--\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml=153=allOf:\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:154:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-155-\n--\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml=158=examples:\n--\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-166-        ethernet@ff700000 {\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:167:            compatible = \"altr,socfpga-stmmac\", \"snps,dwmac-3.70a\",\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml:168:            \"snps,dwmac\";\nDocumentation/devicetree/bindings/net/altr,socfpga-stmmac.yaml-169-            altr,sysmgr-syscon = \u003c\u0026sysmgr 0x60 0\u003e;\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-4----\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:5:$id: http://devicetree.org/schemas/net/amlogic,meson-dwmac.yaml#\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-6-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml=10=maintainers:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-13-\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:14:# We need a select here so we don't match all nodes with 'snps,dwmac'\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-15-select:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-19-        enum:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:20:          - amlogic,meson6-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:21:          - amlogic,meson8b-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:22:          - amlogic,meson8m2-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:23:          - amlogic,meson-gxbb-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:24:          - amlogic,meson-axg-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:25:          - amlogic,meson-g12a-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-26-  required:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml=29=allOf:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:30:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-31-  - if:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-35-            enum:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:36:              - amlogic,meson8b-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:37:              - amlogic,meson8m2-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:38:              - amlogic,meson-gxbb-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:39:              - amlogic,meson-axg-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:40:              - amlogic,meson-g12a-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-41-\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-91-            enum:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:92:              - amlogic,meson8b-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:93:              - amlogic,meson8m2-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:94:              - amlogic,meson-gxbb-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:95:              - amlogic,meson-axg-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-96-    then:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-107-            enum:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:108:              - amlogic,meson-g12a-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-109-    then:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml=130=properties:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-135-      - enum:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:136:          - amlogic,meson6-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:137:          - amlogic,meson8b-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:138:          - amlogic,meson8m2-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:139:          - amlogic,meson-gxbb-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:140:          - amlogic,meson-axg-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:141:          - amlogic,meson-g12a-dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-142-    contains:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-143-      enum:\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:144:        - snps,dwmac-3.70a\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:145:        - snps,dwmac\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-146-\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml=172=examples:\n--\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-174-    ethmac: ethernet@c9410000 {\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml:175:        compatible = \"amlogic,meson-gxbb-dwmac\", \"snps,dwmac\";\nDocumentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml-176-        reg = \u003c0xc9410000 0x10000\u003e, \u003c0xc8834540 0x8\u003e;\n--\nDocumentation/devicetree/bindings/net/anarion-gmac.txt=6=Required properties:\nDocumentation/devicetree/bindings/net/anarion-gmac.txt:7: - compatible:  Should be \"adaptrum,anarion-gmac\", \"snps,dwmac\"\nDocumentation/devicetree/bindings/net/anarion-gmac.txt-8- - phy-mode:    Should be \"rgmii\". Other modes are not currently supported.\n--\nDocumentation/devicetree/bindings/net/anarion-gmac.txt=11=Examples:\n--\nDocumentation/devicetree/bindings/net/anarion-gmac.txt-13-\tgmac1: ethernet@f2014000 {\nDocumentation/devicetree/bindings/net/anarion-gmac.txt:14:\t\tcompatible = \"adaptrum,anarion-gmac\", \"snps,dwmac\";\nDocumentation/devicetree/bindings/net/anarion-gmac.txt-15-\t\treg = \u003c0xf2014000 0x4000\u003e, \u003c0xf2018100 8\u003e;\n--\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml=27=allOf:\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml:28:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml-29-  - if:\n--\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml=48=properties:\n--\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml-53-          - eswin,eic7700-qos-eth-clk-inversion\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml:54:      - const: snps,dwmac-5.20\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml-55-\n--\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml=137=examples:\n--\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml-139-    ethernet@50400000 {\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml:140:        compatible = \"eswin,eic7700-qos-eth\", \"snps,dwmac-5.20\";\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml-141-        reg = \u003c0x50400000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml-165-    ethernet@50410000 {\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml:166:        compatible = \"eswin,eic7700-qos-eth-clk-inversion\", \"snps,dwmac-5.20\";\nDocumentation/devicetree/bindings/net/eswin,eic7700-eth.yaml-167-        reg = \u003c0x50410000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-3----\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml:4:$id: http://devicetree.org/schemas/net/intel,dwmac-plat.yaml#\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml=12=select:\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-16-        enum:\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml:17:          - intel,keembay-dwmac\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-18-  required:\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml=21=allOf:\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml:22:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-23-\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml=24=properties:\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-28-          - enum:\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml:29:              - intel,keembay-dwmac\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml:30:          - const: snps,dwmac-4.10a\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-31-\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml=57=examples:\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-106-    gmac0: ethernet@3a000000 {\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml:107:        compatible = \"intel,keembay-dwmac\", \"snps,dwmac-4.10a\";\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-108-        interrupts = \u003cGIC_SPI 119 IRQ_TYPE_LEVEL_HIGH\u003e;\n--\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-128-            #size-cells = \u003c0\u003e;\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml:129:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/intel,dwmac-plat.yaml-130-\n--\nDocumentation/devicetree/bindings/net/ipq806x-dwmac.txt-2-\nDocumentation/devicetree/bindings/net/ipq806x-dwmac.txt:3:The device inherits all the properties of the dwmac/stmmac devices\nDocumentation/devicetree/bindings/net/ipq806x-dwmac.txt-4-described in the file net/stmmac.txt with the following changes.\n--\nDocumentation/devicetree/bindings/net/ipq806x-dwmac.txt=6=Required properties:\nDocumentation/devicetree/bindings/net/ipq806x-dwmac.txt-7-\nDocumentation/devicetree/bindings/net/ipq806x-dwmac.txt:8:- compatible: should be \"qcom,ipq806x-gmac\" along with \"snps,dwmac\"\nDocumentation/devicetree/bindings/net/ipq806x-dwmac.txt-9-\t      and any applicable more detailed version number\n--\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml=34=properties:\n--\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml-38-          - loongson,ls1b-gmac\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml:39:      - const: snps,dwmac-3.50a\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml-40-\n--\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml=78=allOf:\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml:79:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml-80-\n--\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml=83=examples:\n--\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml-88-    gmac0: ethernet@1fe10000 {\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml:89:        compatible = \"loongson,ls1b-gmac\", \"snps,dwmac-3.50a\";\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml-90-        reg = \u003c0x1fe10000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml-107-            #size-cells = \u003c0\u003e;\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml:108:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/loongson,ls1b-gmac.yaml-109-\n--\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml=33=properties:\n--\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml-37-          - loongson,ls1c-emac\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml:38:      - const: snps,dwmac-3.50a\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml-39-\n--\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml=77=allOf:\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml:78:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml-79-\n--\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml=82=examples:\n--\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml-87-    emac: ethernet@1fe10000 {\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml:88:        compatible = \"loongson,ls1c-emac\", \"snps,dwmac-3.50a\";\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml-89-        reg = \u003c0x1fe10000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml-106-            #size-cells = \u003c0\u003e;\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml:107:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/loongson,ls1c-emac.yaml-108-\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-3----\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml:4:$id: http://devicetree.org/schemas/net/mediatek-dwmac.yaml#\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml=12=description:\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-14-\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml:15:# We need a select here so we don't match all nodes with 'snps,dwmac'\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-16-select:\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml=27=allOf:\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml:28:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-29-\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml=30=properties:\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-35-              - mediatek,mt2712-gmac\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml:36:          - const: snps,dwmac-4.20a\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-37-      - items:\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-39-              - mediatek,mt8195-gmac\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml:40:          - const: snps,dwmac-5.10a\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-41-      - items:\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-44-          - const: mediatek,mt8195-gmac\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml:45:          - const: snps,dwmac-5.10a\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-46-\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml=152=examples:\n--\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-160-    eth: ethernet@1101c000 {\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml:161:        compatible = \"mediatek,mt2712-gmac\", \"snps,dwmac-4.20a\";\nDocumentation/devicetree/bindings/net/mediatek-dwmac.yaml-162-        reg = \u003c0x1101c000 0x1300\u003e;\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-3----\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml:4:$id: http://devicetree.org/schemas/net/nuvoton,ma35d1-dwmac.yaml#\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml=16=select:\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-20-        enum:\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml:21:          - nuvoton,ma35d1-dwmac\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-22-  required:\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml=25=allOf:\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml:26:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-27-\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml=28=properties:\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-30-    items:\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml:31:      - const: nuvoton,ma35d1-dwmac\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml:32:      - const: snps,dwmac-3.70a\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-33-\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml=108=examples:\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-113-    ethernet@40120000 {\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml:114:        compatible = \"nuvoton,ma35d1-dwmac\", \"snps,dwmac-3.70a\";\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-115-        reg = \u003c0x40120000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-131-        mdio {\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml:132:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml-133-            #address-cells = \u003c1\u003e;\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-3----\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:4:$id: http://devicetree.org/schemas/net/nxp,dwmac-imx.yaml#\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml=9=maintainers:\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-13-\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:14:# We need a select here so we don't match all nodes with 'snps,dwmac'\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-15-select:\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-19-        enum:\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:20:          - nxp,imx8mp-dwmac-eqos\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:21:          - nxp,imx8dxl-dwmac-eqos\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:22:          - nxp,imx93-dwmac-eqos\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-23-  required:\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml=26=allOf:\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:27:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-28-\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml=29=properties:\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-33-          - enum:\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:34:              - nxp,imx8mp-dwmac-eqos\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:35:              - nxp,imx8dxl-dwmac-eqos\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:36:              - nxp,imx93-dwmac-eqos\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:37:          - const: snps,dwmac-5.10a\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-38-\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml=93=examples:\n--\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-99-    eqos: ethernet@30bf0000 {\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml:100:            compatible = \"nxp,imx8mp-dwmac-eqos\",\"snps,dwmac-5.10a\";\nDocumentation/devicetree/bindings/net/nxp,dwmac-imx.yaml-101-            reg = \u003c0x30bf0000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-3----\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:4:$id: http://devicetree.org/schemas/net/nxp,lpc1850-dwmac.yaml#\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml=9=maintainers:\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-11-\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:12:# We need a select here so we don't match all nodes with 'snps,dwmac'\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-13-select:\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-17-        enum:\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:18:          - nxp,lpc1850-dwmac\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-19-  required:\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml=22=properties:\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-25-      - enum:\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:26:          - nxp,lpc1850-dwmac\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:27:      - const: snps,dwmac-3.611\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:28:      - const: snps,dwmac\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-29-\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml=62=allOf:\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:63:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-64-\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml=67=examples:\n--\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-71-    ethernet@40010000 {\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml:72:        compatible = \"nxp,lpc1850-dwmac\", \"snps,dwmac-3.611\", \"snps,dwmac\";\nDocumentation/devicetree/bindings/net/nxp,lpc1850-dwmac.yaml-73-        reg = \u003c0x40010000 0x2000\u003e;\n--\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-4----\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:5:$id: http://devicetree.org/schemas/net/nxp,s32-dwmac.yaml#\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-6-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml=22=properties:\n--\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-24-    oneOf:\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:25:      - const: nxp,s32g2-dwmac\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-26-      - items:\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-27-          - enum:\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:28:              - nxp,s32g3-dwmac\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:29:              - nxp,s32r45-dwmac\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:30:          - const: nxp,s32g2-dwmac\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-31-\n--\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml=88=allOf:\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:89:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-90-\n--\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml=93=examples:\n--\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-102-      ethernet@4033c000 {\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:103:        compatible = \"nxp,s32g2-dwmac\";\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-104-        reg = \u003c0x0 0x4033c000 0x0 0x2000\u003e, /* gmac IP */\n--\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-147-          #size-cells = \u003c0\u003e;\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml:148:          compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/nxp,s32-dwmac.yaml-149-\n--\nDocumentation/devicetree/bindings/net/qcom,ethqos.yaml=17=allOf:\nDocumentation/devicetree/bindings/net/qcom,ethqos.yaml:18:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/qcom,ethqos.yaml-19-\n--\nDocumentation/devicetree/bindings/net/qcom,ethqos.yaml=97=examples:\n--\nDocumentation/devicetree/bindings/net/qcom,ethqos.yaml-134-\nDocumentation/devicetree/bindings/net/qcom,ethqos.yaml:135:        compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/qcom,ethqos.yaml-136-        phy1: phy@4 {\n--\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml=22=allOf:\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml:23:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml-24-\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml=25=properties:\n--\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml-30-      - const: renesas,rzn1-gmac\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml:31:      - const: snps,dwmac\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml-32-\n--\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml=52=examples:\n--\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml-57-    ethernet@44000000 {\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml:58:      compatible = \"renesas,r9a06g032-gmac\", \"renesas,rzn1-gmac\", \"snps,dwmac\";\nDocumentation/devicetree/bindings/net/renesas,rzn1-gmac.yaml-59-      reg = \u003c0x44000000 0x2000\u003e;\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml=26=properties:\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-30-          - const: renesas,r9a08g046-gbeth # RZ/G3L\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml:31:          - const: snps,dwmac-5.30a\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-32-      - items:\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-37-          - const: renesas,rzv2h-gbeth\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml:38:          - const: snps,dwmac-5.20\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-39-      - items:\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-40-          - const: renesas,r9a09g077-gbeth # RZ/T2H\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml:41:          - const: snps,dwmac-5.20\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-42-      - items:\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-44-          - const: renesas,r9a09g077-gbeth\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml:45:          - const: snps,dwmac-5.20\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-46-\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml=166=allOf:\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml:167:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-168-\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml=249=examples:\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-254-    ethernet@15c30000 {\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml:255:        compatible = \"renesas,r9a09g057-gbeth\", \"renesas,rzv2h-gbeth\", \"snps,dwmac-5.20\";\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-256-        reg = \u003c0x15c30000 0x10000\u003e;\n--\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-355-            #size-cells = \u003c0\u003e;\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml:356:            compatible = \"snps,dwmac-mdio\";\nDocumentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml-357-\n--\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml-3----\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml:4:$id: http://devicetree.org/schemas/net/rockchip-dwmac.yaml#\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml=9=maintainers:\n--\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml-11-\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml:12:# We need a select here so we don't match all nodes with 'snps,dwmac'\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml-13-select:\n--\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml=37=properties:\n--\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml-59-              - rockchip,rv1126-gmac\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml:60:          - const: snps,dwmac-4.20a\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml-61-\n--\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml=132=allOf:\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml:133:  - $ref: snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/rockchip-dwmac.yaml-134-\n--\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml-3----\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:4:$id: http://devicetree.org/schemas/net/snps,dwmac.yaml#\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml-5-$schema: http://devicetree.org/meta-schemas/core.yaml#\n--\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml=18=select:\n--\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml-22-        enum:\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:23:          - snps,dwmac\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:24:          - snps,dwmac-3.40a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:25:          - snps,dwmac-3.50a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:26:          - snps,dwmac-3.610\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:27:          - snps,dwmac-3.70a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:28:          - snps,dwmac-3.710\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:29:          - snps,dwmac-3.72a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:30:          - snps,dwmac-4.00\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:31:          - snps,dwmac-4.10a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:32:          - snps,dwmac-4.20a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:33:          - snps,dwmac-5.00a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:34:          - snps,dwmac-5.10a\nDocumentation/devicetree/bindings/net/snps,dwmac.yaml:35:          - snps,dwmac-5.20\n\n"
}

9/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 43496
							output: 21
							thoughts: 203
						

Thoughts:
**Analyzing the DesignWare MAC in QEMU**

Okay, so I'm thinking about the DesignWare MAC, or `dwmac`. I need to figure out how it's emulated in QEMU. My first instinct would be to dive into the QEMU source, specifically `hw/net/designware.c`, but I don't have direct access right now. However, I *know* that QEMU does emulate the Synopsys DesignWare MAC using that file. And, based on my experience, the `stmmac` driver is the key driver for the DesignWare MAC.

Now, I recall seeing some patches related to this recently, probably modifying something related to the MAC Merge layer. I think those patches are in `stmmac_ethtool.c` and `stmmac_fpe.c`. I need to zero in on this. I bet it modifies `stmmac_set_mm`. That rings a bell as an ethtool callback, likely used for MAC Merge (802.3br).

The real question is, is `stmmac_set_mm` actually being called? I have to confirm that it's reachable. To do that, I'm going to check how `stmmac_set_mm` is registered. I'll need to go back and check the `stmmac_ethtool.c` source code and see if I can find it there. I need to trace this back.



10/2 2026/07/30 07:16 tool grepper
0m Args:
{
  "Expression": "stmmac_set_mm"
}

Results:
{
  "Output": "drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c=1037=static int stmmac_get_mm(struct net_device *ndev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1054-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:1055:static int stmmac_set_mm(struct net_device *ndev, struct ethtool_mm_cfg *cfg,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1056-\t\t\t struct netlink_ext_ack *extack)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c=1099=static const struct ethtool_ops stmmac_ethtool_ops = {\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1135-\t.get_mm = stmmac_get_mm,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:1136:\t.set_mm = stmmac_set_mm,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1137-\t.get_mm_stats = stmmac_get_mm_stats,\n"
}

11/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 44420
							output: 25
							thoughts: 325
						

Thoughts:
**Analyzing the STMMAC FPE Patch**

Okay, so I'm looking at this patch related to the STMMAC driver and its FPE (Frame Preemption Engine) functionality. First, it's good to see that the new code is integrated with the existing `stmmac_ethtool_ops` structure. That confirms it's hooked into the relevant control and configuration path.

Now, let's break down the actual additions. There's a check that essentially disables the functionality if the hardware doesn't support FPE - a sensible first step. Furthermore, it also adds a check that ensures `pmac_enabled` is set; the code seems to assume that the hardware always has preemptible MAC enabled. Makes sense, assuming the hardware design.

Digging into `stmmac_fpe.c`, I see the conditional block that sets `cfg->fpe_csr`. Originally, this block included an assignment to `rxq_ctrl1_reg` and some bit manipulation involving `fprq_mask` and `num_rxq`. The code appears to be configuring the receive queue control register based on whether transmission is enabled or not. The `tx_enable` logic has been altered. Now the FPE is enabled or disabled. This is where I'm noticing a significant change: the register write to `rxq_ctrl1_reg` has been *moved*. It's now happening within `stmmac_fpe_configure_pmac`.

Aha! So, I need to understand where `stmmac_fpe_configure_pmac` is called from. That's the key. Where does this new configuration occur in the broader STMMAC flow? I need to trace back the call stack to see when and how this configuration is being applied. That will tell me where the system actually sets the receive queue configuration, and also if there is a race condition.



12/2 2026/07/30 07:16 tool grepper
0m Args:
{
  "Expression": "stmmac_fpe_configure_pmac"
}

Results:
{
  "Output": "drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c=45=static void stmmac_fpe_configure_tx(struct ethtool_mmsv *mmsv, bool tx_enable)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-59-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:60:static void stmmac_fpe_configure_pmac(struct ethtool_mmsv *mmsv, bool pmac_enable)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-61-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c=111=static const struct ethtool_mmsv_ops stmmac_mmsv_ops = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-112-\t.configure_tx = stmmac_fpe_configure_tx,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:113:\t.configure_pmac = stmmac_fpe_configure_pmac,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-114-\t.send_mpacket = stmmac_fpe_send_mpacket,\n"
}

13/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 45553
							output: 20
							thoughts: 607
						

Thoughts:
**Analyzing the Fuzzing Potential of an `stmmac` Patch**

Okay, so I'm looking at this patch and thinking about how well syzkaller could cover it. The key is that `stmmac_fpe_configure_pmac` is part of `stmmac_mmsv_ops`. The question is, can syzkaller reach this code? I know it can fuzz ethtool commands via `ioctl(SIOCETHTOOL)`, specifically the `ETHTOOL_SMM` command, which is for Set MAC Merge. Wait, shoot, `ETHTOOL_SMM` isn't an ioctl, it's netlink.

I need to quickly check, does syzkaller support netlink ethtool commands? Yep, looks like it does, either through `syz_genetlink` or standard netlink sockets, so that's good. Now, the `stmmac` driver is common on ARM, but syzkaller mostly tests on x86_64. However, on x86_64, `stmmac` can be used as a PCI device via `stmmac_pci.c`. The next question is whether `stmmac_pci` successfully registers a netdev in a syzkaller context.

Syzkaller's `syz_pci_device` can instantiate PCI devices by matching vendor/device IDs, so this should be possible. Let's see, `stmmac_pci` uses this PCI ID table:

```c
static const struct pci_device_id stmmac_id_table[] = {
	{ PCI_DEVICE_DATA(STMMAC, STMMAC, &stmmac_pci_info) },
	{ PCI_DEVICE_DATA(STMICRO, MAC, &stmmac_pci_info) },
	{ PCI_DEVICE_DATA(SYNOPSYS, GMAC5_ID, &snps_gmac5_pci_info) },
```

If it probes, it'll try to map BARs and read/write registers. But, since `syz_pci_device` doesn't emulate hardware registers, the driver might fail to probe, or even crash, if it expects specific register values. Still, syzkaller already has a good amount of coverage in the `stmmac` driver because it fuzzes it.

I can't directly check syzbot for `stmmac` bugs right now, but I can assume that if it's a PCI driver, syzkaller will try to fuzz it. So, is this patch worth fuzzing? Yes, it modifies functional logic within a network driver's ethtool ops and FPE configuration. The changes include `stmmac_set_mm`, `stmmac_fpe_configure_tx`, `stmmac_fpe_configure_pmac`, and `stmmac_fpe_init`. I need to figure out the required configs to best set this up for fuzzing.



14/2 2026/07/30 07:16 tool grepper
0m Args:
{
  "Expression": "config STMMAC_ETH"
}

Results:
{
  "Output": "drivers/net/ethernet/stmicro/stmmac/Kconfig-1-# SPDX-License-Identifier: GPL-2.0-only\ndrivers/net/ethernet/stmicro/stmmac/Kconfig:2:config STMMAC_ETH\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-3-\ttristate \"STMicroelectronics Multi-Gigabit Ethernet driver\"\n"
}

15/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 46948
							output: 42
							thoughts: 25
						

Thoughts:
Okay, let's dive into this. Here's my thought process on what I'd be doing:

**Investigating STMMAC Driver Dependencies**

Right, I need to see what's going on with the STMMAC Ethernet driver. My first port of call will be the Kconfig file for that driver. Specifically, I'm going straight to `drivers/net/ethernet/stmicro/stmmac/Kconfig`. I'm going to look at that file because it’s where all the configuration options and dependencies for the driver will be defined. I expect to find out what options need to be enabled and what other components the STMMAC driver relies on in the build process. From there, I can figure out how to configure it correctly within my own setup, which is something I deal with on a regular basis.



16/2 2026/07/30 07:16 tool read-file
0m Args:
{
  "File": "drivers/net/ethernet/stmicro/stmmac/Kconfig",
  "FirstLine": 1,
  "LineCount": 50
}

Results:
{
  "Contents": "   1:\t# SPDX-License-Identifier: GPL-2.0-only\n   2:\tconfig STMMAC_ETH\n   3:\t\ttristate \"STMicroelectronics Multi-Gigabit Ethernet driver\"\n   4:\t\tdepends on HAS_IOMEM \u0026\u0026 HAS_DMA\n   5:\t\tdepends on PTP_1588_CLOCK_OPTIONAL\n   6:\t\tdepends on ETHTOOL_NETLINK\n   7:\t\tselect MII\n   8:\t\tselect PCS_XPCS\n   9:\t\tselect PAGE_POOL\n  10:\t\tselect PHYLINK\n  11:\t\tselect CRC32\n  12:\t\tselect RESET_CONTROLLER\n  13:\t\tselect NET_DEVLINK\n  14:\t\thelp\n  15:\t\t  This is the driver for the Ethernet IPs built around a\n  16:\t\t  Synopsys IP Core.\n  17:\t\n  18:\tif STMMAC_ETH\n  19:\t\n  20:\tconfig STMMAC_SELFTESTS\n  21:\t\tbool \"Support for STMMAC Selftests\"\n  22:\t\tdepends on INET\n  23:\t\tdefault n\n  24:\t\thelp\n  25:\t\t  This adds support for STMMAC Selftests using ethtool. Enable this\n  26:\t\t  feature if you are facing problems with your HW and submit the test\n  27:\t\t  results to the netdev Mailing List.\n  28:\t\n  29:\tconfig STMMAC_PLATFORM\n  30:\t\ttristate \"STMMAC Platform bus support\"\n  31:\t\tselect MFD_SYSCON\n  32:\t\tdefault y\n  33:\t\thelp\n  34:\t\t  This selects the platform specific bus support for the stmmac driver.\n  35:\t\t  This is the driver used on several SoCs:\n  36:\t\t  STi, Allwinner, Amlogic Meson, Altera SOCFPGA.\n  37:\t\n  38:\t\t  If you have a controller with this interface, say Y or M here.\n  39:\t\n  40:\t\t  If unsure, say N.\n  41:\t\n  42:\tif STMMAC_PLATFORM\n  43:\t\n  44:\tconfig DWMAC_DWC_QOS_ETH\n  45:\t\ttristate \"Support for snps,dwc-qos-ethernet.txt DT binding.\"\n  46:\t\tselect CRC32\n  47:\t\tselect MII\n  48:\t\tdepends on OF \u0026\u0026 HAS_DMA\n  49:\t\thelp\n  50:\t\t  Support for chips using the snps,dwc-qos-ethernet.txt DT binding.\n"
}

17/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 47857
							output: 20
							thoughts: 42
						

Thoughts:
**Checking PCI Availability for x86_64 Testing**

Okay, so we're diving into testing this on x86_64. My immediate thought is, we'll need both `STMMAC_ETH` and `STMMAC_PCI` enabled to make this a comprehensive test. First things first, though: I need to verify that `STMMAC_PCI` is actually available on this system. It's a fundamental requirement, so let's check for its existence before we go any further down this path.



18/2 2026/07/30 07:16 tool grepper
0m Args:
{
  "Expression": "config STMMAC_PCI"
}

Results:
{
  "Output": "drivers/net/ethernet/stmicro/stmmac/Kconfig=398=config DWMAC_MOTORCOMM\n--\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-406-\ndrivers/net/ethernet/stmicro/stmmac/Kconfig:407:config STMMAC_PCI\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-408-\ttristate \"STMMAC PCI bus support\"\n"
}

19/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 48161
							output: 44
							thoughts: 13
						

Thoughts:
Here's my take on those thoughts, tailored for an expert audience:

**Analyzing STMMAC_PCI Dependencies**

Alright, let's dive in. My immediate thought is to drill down into the dependencies of `STMMAC_PCI`. This means understanding what modules, drivers, or even specific hardware resources this likely depends on. I'm thinking beyond the obvious; it's crucial to consider the broader ecosystem. Are we talking about a simple PCIe-to-Ethernet bridge, or something more complex with DMA engines, descriptor rings, and interrupt handling all tightly integrated?

I need to quickly establish the potential scope of this module. Is it part of the core network stack, or a more isolated driver? Knowing this will influence the approach I take to dependency analysis. My mind is already running through the potential headers, configuration files (`Kconfig`, `Makefile`), and kernel modules I'll need to examine. I'll likely start with a `grep` or `find` to get a preliminary list. The goal is to rapidly build a mental map of what `STMMAC_PCI` touches and, in turn, what touches it. This isn't just about identifying what's *required*, but also what's *affected* by changes to this module. Performance impacts? Potential conflicts? Memory mapping considerations? It's all interconnected.



20/2 2026/07/30 07:16 tool read-file
0m Args:
{
  "File": "drivers/net/ethernet/stmicro/stmmac/Kconfig",
  "FirstLine": 400,
  "LineCount": 20
}

Results:
{
  "Contents": " 400:\t\tdepends on PCI\n 401:\t\tselect MOTORCOMM_PHY\n 402:\t\tselect STMMAC_LIBPCI\n 403:\t\thelp\n 404:\t\t  This enables glue driver for Motorcomm DWMAC-based PCI Ethernet\n 405:\t\t  controllers. Currently only YT6801 is supported.\n 406:\t\n 407:\tconfig STMMAC_PCI\n 408:\t\ttristate \"STMMAC PCI bus support\"\n 409:\t\tdepends on PCI\n 410:\t\tdepends on COMMON_CLK\n 411:\t\tselect STMMAC_LIBPCI\n 412:\t\thelp\n 413:\t\t  This selects the platform specific bus support for the stmmac driver.\n 414:\t\t  This driver was tested on XLINX XC2V3000 FF1152AMT0221\n 415:\t\t  D1215994A VIRTEX FPGA board and SNPS QoS IPK Prototyping Kit.\n 416:\t\n 417:\t\t  If you have a controller with this interface, say Y or M here.\n 418:\t\n 419:\t\t  If unsure, say N.\n"
}

21/2 2026/07/30 07:16 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 48820
							output: 20
							thoughts: 71
						

Thoughts:
**Analyzing the STMMAC Configuration Requirements**

Okay, so I'm looking at this and it's clear we're dealing with `STMMAC_ETH` and `STMMAC_PCI`. But there's a modification to `stmmac_set_mm` in this patch, which immediately screams MAC Merge support. Hmm, interesting. I need to figure out what, if any, specific configuration options there are for MAC Merge or even FPE. Best to double-check `stmmac_fpe.c`, and likely the relevant `Makefile`, to make sure I haven't missed anything obvious. Let's see what we can dig up there.



22/2 2026/07/30 07:17 tool grepper
0m Args:
{
  "Expression": "stmmac_fpe"
}

Results:
{
  "Output": "drivers/net/ethernet/stmicro/stmmac/Makefile=3=stmmac-objs:= stmmac_main.o stmmac_ethtool.o stmmac_mdio.o ring_mode.o\t\\\n--\ndrivers/net/ethernet/stmicro/stmmac/Makefile-8-\t      stmmac_tc.o dwxgmac2_core.o dwxgmac2_dma.o dwxgmac2_descs.o \\\ndrivers/net/ethernet/stmicro/stmmac/Makefile:9:\t      stmmac_xdp.o stmmac_est.o stmmac_fpe.o stmmac_vlan.o \\\ndrivers/net/ethernet/stmicro/stmmac/Makefile-10-\t      stmmac_pcs.o $(stmmac-y)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac4_core.c-18-#include \"stmmac.h\"\ndrivers/net/ethernet/stmicro/stmmac/dwmac4_core.c:19:#include \"stmmac_fpe.h\"\ndrivers/net/ethernet/stmicro/stmmac/dwmac4_core.c-20-#include \"stmmac_pcs.h\"\n--\ndrivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c-10-#include \"stmmac.h\"\ndrivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:11:#include \"stmmac_fpe.h\"\ndrivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c-12-#include \"stmmac_ptp.h\"\n--\ndrivers/net/ethernet/stmicro/stmmac/hwif.c-8-#include \"stmmac.h\"\ndrivers/net/ethernet/stmicro/stmmac/hwif.c:9:#include \"stmmac_fpe.h\"\ndrivers/net/ethernet/stmicro/stmmac/hwif.c-10-#include \"stmmac_ptp.h\"\n--\ndrivers/net/ethernet/stmicro/stmmac/hwif.h=31=struct stmmac_safety_stats;\ndrivers/net/ethernet/stmicro/stmmac/hwif.h:32:struct stmmac_fpe_cfg;\ndrivers/net/ethernet/stmicro/stmmac/hwif.h-33-enum stmmac_mpacket_type;\n--\ndrivers/net/ethernet/stmicro/stmmac/hwif.h=311=struct stmmac_ops {\n--\ndrivers/net/ethernet/stmicro/stmmac/hwif.h-495-\tstmmac_do_void_callback(__priv, mac, set_arp_offload, __args)\ndrivers/net/ethernet/stmicro/stmmac/hwif.h:496:#define stmmac_fpe_map_preemption_class(__priv, __args...) \\\ndrivers/net/ethernet/stmicro/stmmac/hwif.h-497-\tstmmac_do_void_callback(__priv, mac, fpe_map_preemption_class, __args)\n--\ndrivers/net/ethernet/stmicro/stmmac/hwif.h=666=struct stmmac_regs_off {\ndrivers/net/ethernet/stmicro/stmmac/hwif.h:667:\tconst struct stmmac_fpe_reg *fpe_reg;\ndrivers/net/ethernet/stmicro/stmmac/hwif.h-668-\tu32 ptp_off;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h=141=struct stmmac_channel {\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h-149-\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h:150:struct stmmac_fpe_cfg {\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h-151-\tstruct ethtool_mmsv mmsv;\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h:152:\tconst struct stmmac_fpe_reg *reg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h-153-\tu32 fpe_csr;\t/* MAC_FPE_CTRL_STS reg cache */\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h=261=struct stmmac_priv {\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h-361-\t/* Frame Preemption feature (FPE) */\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h:362:\tstruct stmmac_fpe_cfg fpe_cfg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac.h-363-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-19-#include \"stmmac.h\"\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:20:#include \"stmmac_fpe.h\"\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-21-#include \"dwmac_dma.h\"\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c=1037=static int stmmac_get_mm(struct net_device *ndev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1042-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:1043:\tif (!stmmac_fpe_supported(priv))\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1044-\t\treturn -EOPNOTSUPP;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1046-\tstate-\u003erx_min_frag_size = ETH_ZLEN;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:1047:\tfrag_size = stmmac_fpe_get_add_frag_size(priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1048-\tstate-\u003etx_min_frag_size = ethtool_mm_frag_size_add_to_min(frag_size);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c=1055=static int stmmac_set_mm(struct net_device *ndev, struct ethtool_mm_cfg *cfg,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1073-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:1074:\tstmmac_fpe_set_add_frag_size(priv, frag_size);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1075-\tethtool_mmsv_set_mm(\u0026priv-\u003efpe_cfg.mmsv, cfg);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-6-#include \"stmmac.h\"\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:7:#include \"stmmac_fpe.h\"\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-8-#include \"dwmac4.h\"\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-29-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:30:struct stmmac_fpe_reg {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-31-\tconst u32 mac_fpe_reg;\t\t/* offset of MAC_FPE_CTRL_STS */\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-38-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:39:bool stmmac_fpe_supported(struct stmmac_priv *priv)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-40-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-44-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:45:static void stmmac_fpe_configure_tx(struct ethtool_mmsv *mmsv, bool tx_enable)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-46-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:47:\tstruct stmmac_fpe_cfg *cfg = container_of(mmsv, struct stmmac_fpe_cfg, mmsv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-48-\tstruct stmmac_priv *priv = container_of(cfg, struct stmmac_priv, fpe_cfg);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:49:\tconst struct stmmac_fpe_reg *reg = cfg-\u003ereg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-50-\tvoid __iomem *ioaddr = priv-\u003eioaddr;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-59-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:60:static void stmmac_fpe_configure_pmac(struct ethtool_mmsv *mmsv, bool pmac_enable)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-61-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:62:\tstruct stmmac_fpe_cfg *cfg = container_of(mmsv, struct stmmac_fpe_cfg, mmsv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-63-\tstruct stmmac_priv *priv = container_of(cfg, struct stmmac_priv, fpe_cfg);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-64-\tu32 num_rxq = priv-\u003eplat-\u003erx_queues_to_use;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:65:\tconst struct stmmac_fpe_reg *reg = cfg-\u003ereg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-66-\tvoid __iomem *ioaddr = priv-\u003eioaddr;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-93-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:94:static void stmmac_fpe_send_mpacket(struct ethtool_mmsv *mmsv,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-95-\t\t\t\t    enum ethtool_mpacket type)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-96-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:97:\tstruct stmmac_fpe_cfg *cfg = container_of(mmsv, struct stmmac_fpe_cfg, mmsv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-98-\tstruct stmmac_priv *priv = container_of(cfg, struct stmmac_priv, fpe_cfg);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:99:\tconst struct stmmac_fpe_reg *reg = cfg-\u003ereg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-100-\tvoid __iomem *ioaddr = priv-\u003eioaddr;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c=111=static const struct ethtool_mmsv_ops stmmac_mmsv_ops = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:112:\t.configure_tx = stmmac_fpe_configure_tx,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:113:\t.configure_pmac = stmmac_fpe_configure_pmac,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:114:\t.send_mpacket = stmmac_fpe_send_mpacket,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-115-};\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-116-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:117:static void stmmac_fpe_event_status(struct stmmac_priv *priv, int status)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-118-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:119:\tstruct stmmac_fpe_cfg *fpe_cfg = \u0026priv-\u003efpe_cfg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-120-\tstruct ethtool_mmsv *mmsv = \u0026fpe_cfg-\u003emmsv;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-134-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:135:void stmmac_fpe_irq_status(struct stmmac_priv *priv)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-136-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:137:\tconst struct stmmac_fpe_reg *reg = priv-\u003efpe_cfg.reg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-138-\tvoid __iomem *ioaddr = priv-\u003eioaddr;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-167-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:168:\tstmmac_fpe_event_status(priv, status);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-169-}\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-170-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:171:void stmmac_fpe_init(struct stmmac_priv *priv)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-172-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-187-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:188:int stmmac_fpe_get_add_frag_size(struct stmmac_priv *priv)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-189-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:190:\tconst struct stmmac_fpe_reg *reg = priv-\u003efpe_cfg.reg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-191-\tvoid __iomem *ioaddr = priv-\u003eioaddr;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-195-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:196:void stmmac_fpe_set_add_frag_size(struct stmmac_priv *priv, u32 add_frag_size)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-197-{\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:198:\tconst struct stmmac_fpe_reg *reg = priv-\u003efpe_cfg.reg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-199-\tvoid __iomem *ioaddr = priv-\u003eioaddr;\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c=262=int dwxgmac3_fpe_map_preemption_class(struct net_device *ndev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-304-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:305:const struct stmmac_fpe_reg dwmac5_fpe_reg = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-306-\t.mac_fpe_reg = GMAC5_MAC_FPE_CTRL_STS,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-313-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:314:const struct stmmac_fpe_reg dwxgmac3_fpe_reg = {\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-315-\t.mac_fpe_reg = XGMAC_MAC_FPE_CTRL_STS,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h=12=struct stmmac_priv;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h-13-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:14:bool stmmac_fpe_supported(struct stmmac_priv *priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:15:void stmmac_fpe_init(struct stmmac_priv *priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:16:void stmmac_fpe_irq_status(struct stmmac_priv *priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:17:int stmmac_fpe_get_add_frag_size(struct stmmac_priv *priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:18:void stmmac_fpe_set_add_frag_size(struct stmmac_priv *priv, u32 add_frag_size);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h-19-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h=22=int dwxgmac3_fpe_map_preemption_class(struct net_device *ndev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h-24-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:25:extern const struct stmmac_fpe_reg dwmac5_fpe_reg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:26:extern const struct stmmac_fpe_reg dwxgmac3_fpe_reg;\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h-27-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-48-#include \"stmmac_ptp.h\"\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:49:#include \"stmmac_fpe.h\"\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-50-#include \"stmmac.h\"\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c=1056=static void stmmac_mac_link_down(struct phylink_config *config,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-1064-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1065:\tif (stmmac_fpe_supported(priv))\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-1066-\t\tethtool_mmsv_link_state_handle(\u0026priv-\u003efpe_cfg.mmsv, false);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c=1069=static void stmmac_mac_link_up(struct phylink_config *config,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-1164-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1165:\tif (stmmac_fpe_supported(priv))\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-1166-\t\tethtool_mmsv_link_state_handle(\u0026priv-\u003efpe_cfg.mmsv, true);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c=4224=static void __stmmac_release(struct net_device *dev)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-4249-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:4250:\tif (stmmac_fpe_supported(priv))\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-4251-\t\tethtool_mmsv_stop(\u0026priv-\u003efpe_cfg.mmsv);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c=6205=static void stmmac_common_interrupt(struct stmmac_priv *priv)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-6222-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:6223:\tif (stmmac_fpe_supported(priv))\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:6224:\t\tstmmac_fpe_irq_status(priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-6225-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c=7772=static int __stmmac_dvr_probe(struct device *device,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-8003-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:8004:\tstmmac_fpe_init(priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-8005-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c=8152=int stmmac_suspend(struct device *dev)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-8194-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:8195:\tif (stmmac_fpe_supported(priv))\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-8196-\t\tethtool_mmsv_stop(\u0026priv-\u003efpe_cfg.mmsv);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c=966=static int tc_taprio_configure(struct stmmac_priv *priv,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1100-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c:1101:\tret = stmmac_fpe_map_preemption_class(priv, priv-\u003edev, extack,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1102-\t\t\t\t\t      qopt-\u003emqprio.preemptible_tcs);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1122-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c:1123:\tstmmac_fpe_map_preemption_class(priv, priv-\u003edev, extack, 0);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1124-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c=1240=static void stmmac_reset_tc_mqprio(struct net_device *ndev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1246-\tnetif_set_real_num_tx_queues(ndev, priv-\u003eplat-\u003etx_queues_to_use);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c:1247:\tstmmac_fpe_map_preemption_class(priv, ndev, extack, 0);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1248-}\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c=1250=static int tc_setup_dwmac510_mqprio(struct stmmac_priv *priv,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1282-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c:1283:\terr = stmmac_fpe_map_preemption_class(priv, ndev, extack,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_tc.c-1284-\t\t\t\t\t      mqprio-\u003epreemptible_tcs);\n"
}

23/2 2026/07/30 07:17 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 56262
							output: 21
							thoughts: 522
						

Thoughts:
**Fuzzing Strategy for STMMAC FPE Functionality**

Okay, so I'm thinking about how to approach fuzzing the `stmmac_fpe` functionality. It's built unconditionally when `STMMAC_ETH` is enabled, making it a good target. The patch modifies functional logic related to ethtool configuration and FPE initialization, so there's potential for interesting behavior here.

My initial thought was to focus on a few key functions: `stmmac_set_mm`, `stmmac_fpe_configure_tx`, `stmmac_fpe_configure_pmac`, `stmmac_fpe_init`, and `stmmac_fpe_get_add_frag_size`. But then I paused and remembered to check if those functions are static.

And bingo, `stmmac_fpe_configure_tx` and `stmmac_fpe_configure_pmac` *are* static. The instructions explicitly recommend prioritizing non-static, non-inlined entry points. So, even though they're called as function pointers in `stmmac_mmsv_ops`, that means they might have distinct addresses, and I can't be sure they aren't inlined.

The best strategy is to list `stmmac_set_mm` and `stmmac_fpe_init` in `FocusSymbols`. Wait, I need to double-check `stmmac_set_mm`. I'll open up the code to see if it's static in `stmmac_ethtool.c`. This is where I can start my fuzzing.



24/2 2026/07/30 07:17 tool grepper
0m Args:
{
  "Expression": "stmmac_set_mm"
}

Results:
{
  "Output": "drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c=1037=static int stmmac_get_mm(struct net_device *ndev,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1054-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:1055:static int stmmac_set_mm(struct net_device *ndev, struct ethtool_mm_cfg *cfg,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1056-\t\t\t struct netlink_ext_ack *extack)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c=1099=static const struct ethtool_ops stmmac_ethtool_ops = {\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1135-\t.get_mm = stmmac_get_mm,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:1136:\t.set_mm = stmmac_set_mm,\ndrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c-1137-\t.get_mm_stats = stmmac_get_mm_stats,\n"
}

25/2 2026/07/30 07:17 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 57544
							output: 22
							thoughts: 39
						

Thoughts:
Okay, here's my interpretation of those thoughts, framed as my own:

**Digging into the STMMAC Driver**

Right, so I'm thinking about this `stmmac` driver and the implications of its code structure. I've already confirmed that `stmmac_set_mm` is declared as static as well. I need to make sure I am thinking about ethtool ops. It makes sense, given its role, but I want to be certain I have all the pieces. I wonder about `stmmac_fpe_init`. That's another interesting function... I need to investigate what it's doing and how it might impact the overall flow. Is it critical to initialization? Is it a performance optimization? I have a feeling I'm missing something important by not understanding that function's purpose thoroughly.



26/2 2026/07/30 07:17 tool grepper
0m Args:
{
  "Expression": "stmmac_fpe_init"
}

Results:
{
  "Output": "drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c=135=void stmmac_fpe_irq_status(struct stmmac_priv *priv)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-170-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c:171:void stmmac_fpe_init(struct stmmac_priv *priv)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c-172-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h=14=bool stmmac_fpe_supported(struct stmmac_priv *priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h:15:void stmmac_fpe_init(struct stmmac_priv *priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_fpe.h-16-void stmmac_fpe_irq_status(struct stmmac_priv *priv);\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c=7772=static int __stmmac_dvr_probe(struct device *device,\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-8003-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c:8004:\tstmmac_fpe_init(priv);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_main.c-8005-\n"
}

27/2 2026/07/30 07:17 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 58238
							output: 165
							thoughts: 1945
						

Thoughts:
**Fuzzing Candidate Determination: STMMAC FPE Configuration**

Okay, let's break this down. My goal is to determine if this patch introduces any interesting attack surface, particularly regarding the STMMAC driver's Frame Preemption Engine (FPE) and its ethtool interface. Since `stmmac_fpe_init` is *not* static, I can list it along with `stmmac_set_mm`, which is the entry point for the ethtool command, and the configuration functions: `stmmac_fpe_configure_tx` and `stmmac_fpe_configure_pmac`.  I'm not concerned about inlining here because their addresses are being taken.

Now, what dependencies do I need to keep in mind?  `STMMAC_ETH` and `STMMAC_PCI` seem to be the main ones.  `PCI` and `COMMON_CLK` are usually enabled by default and are dependencies of STMMAC_PCI.  `ETHTOOL_NETLINK` is usually also enabled. So `STMMAC_ETH` and `STMMAC_PCI` are sufficient. The patch includes the necessary configuration checks. Let's double check.

```
config STMMAC_PCI
	tristate "STMMAC PCI bus support"
	depends on PCI
	depends on COMMON_CLK
	select STMMAC_LIBPCI
```

Yep, `STMMAC_ETH` and `STMMAC_PCI` are sufficient for the configuration.

Alright, let's re-examine the patch itself. It modifies `stmmac_ethtool.c` (ethtool command), and `stmmac_fpe.c` which contains the driver's FPE configuration code. Specifically, the patch is changing:

1.  A check is added in `stmmac_set_mm` to see if the device supports FPE. There is also a check to ensure `pmac_enabled` is set. If not, it returns -EINVAL.

2.  The `stmmac_fpe_configure_tx` and `stmmac_fpe_configure_pmac` functions are being updated. In particular, the configuration of the Frame Preemption Residue Queue has moved into `stmmac_fpe_configure_pmac`.

3.  In `stmmac_fpe_init`, a message is added when the FPE is not supported. Also, the `pmac_enabled` is initialized to true.

Given these changes, this is worth fuzzing. The patch is touching functional code that's reachable through ethtool netlink commands, making it a good target. I'll flag it as `WorthFuzzing=true`. The key symbols to keep an eye on are `stmmac_set_mm`, `stmmac_fpe_configure_tx`, `stmmac_fpe_configure_pmac`, and `stmmac_fpe_init`.



28/2 2026/07/30 07:17 tool set-results
0m Args:
{
  "EnableConfigs": [
    "STMMAC_ETH",
    "STMMAC_PCI"
  ],
  "FocusSymbols": [
    "stmmac_set_mm",
    "stmmac_fpe_configure_tx",
    "stmmac_fpe_configure_pmac",
    "stmmac_fpe_init"
  ],
  "Reasoning": "The patch modifies the MAC Merge (802.3br) configuration logic in the stmmac driver. It adds validation in `stmmac_set_mm` (reachable via ethtool netlink commands), moves register writes between FPE configuration callbacks, and updates the FPE initialization logic. These are functional changes to reachable driver code.",
  "WorthFuzzing": true
}

Results:
{
  "EnableConfigs": [
    "STMMAC_ETH",
    "STMMAC_PCI"
  ],
  "FocusSymbols": [
    "stmmac_set_mm",
    "stmmac_fpe_configure_tx",
    "stmmac_fpe_configure_pmac",
    "stmmac_fpe_init"
  ],
  "Reasoning": "The patch modifies the MAC Merge (802.3br) configuration logic in the stmmac driver. It adds validation in `stmmac_set_mm` (reachable via ethtool netlink commands), moves register writes between FPE configuration callbacks, and updates the FPE initialization logic. These are functional changes to reachable driver code.",
  "WorthFuzzing": true
}

LLM Calls Summary:
Total Calls Total Tokens Avg Tokens Total Duration (Seconds) Avg Duration (Seconds)
Tool Calls Summary:
Total Calls Total Duration (Seconds) Avg Duration (Seconds)