| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/17 08:10 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch modifies the device tree and probe function of a vendor-specific platform ethernet driver (Altera SOCFPGA DWMAC) to support multiple IRQs. This driver requires specific hardware/device-tree nodes that are not present in standard virtualized environments (like QEMU 'virt' or 'q35' machines) used for fuzzing. Therefore, the modified code is unreachable during standard fuzzing.",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/17 08:10 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit db293820354f4936d2d2e35ae9e0d6531cf22464\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Mon Aug 17 08:10:08 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi b/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi\nindex b06c6d5d60eed..213e4aa4e9628 100644\n--- a/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi\n+++ b/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi\n@@ -557,8 +557,40 @@ gmac0: ethernet@10810000 {\n \t\t\tcompatible = \"altr,socfpga-stmmac-agilex5\",\n \t\t\t\t \"snps,dwxgmac-2.10\";\n \t\t\treg = \u003c0x10810000 0x3500\u003e;\n-\t\t\tinterrupts = \u003cGIC_SPI 190 IRQ_TYPE_LEVEL_HIGH\u003e;\n-\t\t\tinterrupt-names = \"macirq\";\n+\t\t\tinterrupts = \u003cGIC_SPI 190 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 191 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 192 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 193 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 194 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 195 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 196 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 197 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 198 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 199 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 200 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 201 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 202 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 203 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 204 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 205 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 206 IRQ_TYPE_LEVEL_HIGH\u003e;\n+\t\t\tinterrupt-names = \"macirq\",\n+\t\t\t\t\t \"tx-queue-0\",\n+\t\t\t\t\t \"tx-queue-1\",\n+\t\t\t\t\t \"tx-queue-2\",\n+\t\t\t\t\t \"tx-queue-3\",\n+\t\t\t\t\t \"tx-queue-4\",\n+\t\t\t\t\t \"tx-queue-5\",\n+\t\t\t\t\t \"tx-queue-6\",\n+\t\t\t\t\t \"tx-queue-7\",\n+\t\t\t\t\t \"rx-queue-0\",\n+\t\t\t\t\t \"rx-queue-1\",\n+\t\t\t\t\t \"rx-queue-2\",\n+\t\t\t\t\t \"rx-queue-3\",\n+\t\t\t\t\t \"rx-queue-4\",\n+\t\t\t\t\t \"rx-queue-5\",\n+\t\t\t\t\t \"rx-queue-6\",\n+\t\t\t\t\t \"rx-queue-7\";\n \t\t\tresets = \u003c\u0026rst EMAC0_RESET\u003e, \u003c\u0026rst EMAC0_OCP_RESET\u003e;\n \t\t\treset-names = \"stmmaceth\", \"ahb\";\n \t\t\tclocks = \u003c\u0026clkmgr AGILEX5_EMAC0_CLK\u003e,\n@@ -670,8 +702,40 @@ gmac1: ethernet@10820000 {\n \t\t\tcompatible = \"altr,socfpga-stmmac-agilex5\",\n \t\t\t\t \"snps,dwxgmac-2.10\";\n \t\t\treg = \u003c0x10820000 0x3500\u003e;\n-\t\t\tinterrupts = \u003cGIC_SPI 207 IRQ_TYPE_LEVEL_HIGH\u003e;\n-\t\t\tinterrupt-names = \"macirq\";\n+\t\t\tinterrupts = \u003cGIC_SPI 207 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 208 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 209 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 210 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 211 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 212 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 213 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 214 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 215 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 216 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 217 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 218 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 219 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 220 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 221 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 222 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 223 IRQ_TYPE_LEVEL_HIGH\u003e;\n+\t\t\tinterrupt-names = \"macirq\",\n+\t\t\t\t\t \"tx-queue-0\",\n+\t\t\t\t\t \"tx-queue-1\",\n+\t\t\t\t\t \"tx-queue-2\",\n+\t\t\t\t\t \"tx-queue-3\",\n+\t\t\t\t\t \"tx-queue-4\",\n+\t\t\t\t\t \"tx-queue-5\",\n+\t\t\t\t\t \"tx-queue-6\",\n+\t\t\t\t\t \"tx-queue-7\",\n+\t\t\t\t\t \"rx-queue-0\",\n+\t\t\t\t\t \"rx-queue-1\",\n+\t\t\t\t\t \"rx-queue-2\",\n+\t\t\t\t\t \"rx-queue-3\",\n+\t\t\t\t\t \"rx-queue-4\",\n+\t\t\t\t\t \"rx-queue-5\",\n+\t\t\t\t\t \"rx-queue-6\",\n+\t\t\t\t\t \"rx-queue-7\";\n \t\t\tresets = \u003c\u0026rst EMAC1_RESET\u003e, \u003c\u0026rst EMAC1_OCP_RESET\u003e;\n \t\t\treset-names = \"stmmaceth\", \"ahb\";\n \t\t\tclocks = \u003c\u0026clkmgr AGILEX5_EMAC1_CLK\u003e,\n@@ -783,8 +847,40 @@ gmac2: ethernet@10830000 {\n \t\t\tcompatible = \"altr,socfpga-stmmac-agilex5\",\n \t\t\t\t \"snps,dwxgmac-2.10\";\n \t\t\treg = \u003c0x10830000 0x3500\u003e;\n-\t\t\tinterrupts = \u003cGIC_SPI 224 IRQ_TYPE_LEVEL_HIGH\u003e;\n-\t\t\tinterrupt-names = \"macirq\";\n+\t\t\tinterrupts = \u003cGIC_SPI 224 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 225 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 226 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 227 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 228 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 229 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 230 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 231 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 232 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 233 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 234 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 235 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 236 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 237 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 238 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 239 IRQ_TYPE_LEVEL_HIGH\u003e,\n+\t\t\t\t \u003cGIC_SPI 240 IRQ_TYPE_LEVEL_HIGH\u003e;\n+\t\t\tinterrupt-names = \"macirq\",\n+\t\t\t\t\t \"tx-queue-0\",\n+\t\t\t\t\t \"tx-queue-1\",\n+\t\t\t\t\t \"tx-queue-2\",\n+\t\t\t\t\t \"tx-queue-3\",\n+\t\t\t\t\t \"tx-queue-4\",\n+\t\t\t\t\t \"tx-queue-5\",\n+\t\t\t\t\t \"tx-queue-6\",\n+\t\t\t\t\t \"tx-queue-7\",\n+\t\t\t\t\t \"rx-queue-0\",\n+\t\t\t\t\t \"rx-queue-1\",\n+\t\t\t\t\t \"rx-queue-2\",\n+\t\t\t\t\t \"rx-queue-3\",\n+\t\t\t\t\t \"rx-queue-4\",\n+\t\t\t\t\t \"rx-queue-5\",\n+\t\t\t\t\t \"rx-queue-6\",\n+\t\t\t\t\t \"rx-queue-7\";\n \t\t\tresets = \u003c\u0026rst EMAC2_RESET\u003e, \u003c\u0026rst EMAC2_OCP_RESET\u003e;\n \t\t\treset-names = \"stmmaceth\", \"ahb\";\n \t\t\tclocks = \u003c\u0026clkmgr AGILEX5_EMAC2_CLK\u003e,\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c\nindex 1d7f0a57d2889..0e02f80aafeef 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c\n@@ -593,6 +593,35 @@ static void socfpga_agilex5_setup_plat_dat(struct socfpga_dwmac *dwmac)\n \tplat_dat-\u003ecrosststamp = smtg_crosststamp;\n }\n \n+static void socfpga_dwmac_setup_multi_irq(struct device *dev,\n+\t\t\t\t\t struct plat_stmmacenet_data *plat,\n+\t\t\t\t\t struct stmmac_resources *res)\n+{\n+\tint i;\n+\n+\tfor (i = 0; i \u003c plat-\u003erx_queues_to_use; i++) {\n+\t\tif (res-\u003erx_irq[i] \u003c= 0) {\n+\t\t\tdev_dbg(dev, \"Missing RX queue %d interrupt\\n\", i);\n+\t\t\tgoto mac_irq_mode;\n+\t\t}\n+\t}\n+\n+\tfor (i = 0; i \u003c plat-\u003etx_queues_to_use; i++) {\n+\t\tif (res-\u003etx_irq[i] \u003c= 0) {\n+\t\t\tdev_dbg(dev, \"Missing TX queue %d interrupt\\n\", i);\n+\t\t\tgoto mac_irq_mode;\n+\t\t}\n+\t}\n+\n+\tplat-\u003eflags |= STMMAC_FLAG_MULTI_MSI_EN;\n+\tdev_info(dev, \"Multi-IRQ mode (per queue IRQs) selected\\n\");\n+\treturn;\n+\n+mac_irq_mode:\n+\tplat-\u003eflags \u0026= ~STMMAC_FLAG_MULTI_MSI_EN;\n+\tdev_dbg(dev, \"MAC IRQ mode selected\\n\");\n+}\n+\n static int socfpga_dwmac_probe(struct platform_device *pdev)\n {\n \tstruct plat_stmmacenet_data *plat_dat;\n@@ -652,6 +681,8 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)\n \n \tops-\u003esetup_plat_dat(dwmac);\n \n+\tsocfpga_dwmac_setup_multi_irq(dev, plat_dat, \u0026stmmac_res);\n+\n \treturn devm_stmmac_pltfr_probe(pdev, plat_dat, \u0026stmmac_res);\n }\n \n"
} |
| 2/1 | 2026/08/17 08:10 | agent | patch-evaluator |
0mModel:best-expensive Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the device tree and probe function of a vendor-specific platform ethernet driver (Altera SOCFPGA DWMAC) to support multiple IRQs. This driver requires specific hardware/device-tree nodes that are not present in standard virtualized environments (like QEMU 'virt' or 'q35' machines) used for fuzzing. Therefore, the modified code is unreachable during standard fuzzing.",
"WorthFuzzing": false
}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 db293820354f4936d2d2e35ae9e0d6531cf22464
Author: syz-cluster <triage@syzkaller.com>
Date: Mon Aug 17 08:10:08 2026 +0000
syz-cluster: applied patch under review
diff --git a/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi b/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi
index b06c6d5d60eed..213e4aa4e9628 100644
--- a/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi
+++ b/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi
@@ -557,8 +557,40 @@ gmac0: ethernet@10810000 {
compatible = "altr,socfpga-stmmac-agilex5",
"snps,dwxgmac-2.10";
reg = <0x10810000 0x3500>;
- interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "macirq";
+ interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq",
+ "tx-queue-0",
+ "tx-queue-1",
+ "tx-queue-2",
+ "tx-queue-3",
+ "tx-queue-4",
+ "tx-queue-5",
+ "tx-queue-6",
+ "tx-queue-7",
+ "rx-queue-0",
+ "rx-queue-1",
+ "rx-queue-2",
+ "rx-queue-3",
+ "rx-queue-4",
+ "rx-queue-5",
+ "rx-queue-6",
+ "rx-queue-7";
resets = <&rst EMAC0_RESET>, <&rst EMAC0_OCP_RESET>;
reset-names = "stmmaceth", "ahb";
clocks = <&clkmgr AGILEX5_EMAC0_CLK>,
@@ -670,8 +702,40 @@ gmac1: ethernet@10820000 {
compatible = "altr,socfpga-stmmac-agilex5",
"snps,dwxgmac-2.10";
reg = <0x10820000 0x3500>;
- interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "macirq";
+ interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq",
+ "tx-queue-0",
+ "tx-queue-1",
+ "tx-queue-2",
+ "tx-queue-3",
+ "tx-queue-4",
+ "tx-queue-5",
+ "tx-queue-6",
+ "tx-queue-7",
+ "rx-queue-0",
+ "rx-queue-1",
+ "rx-queue-2",
+ "rx-queue-3",
+ "rx-queue-4",
+ "rx-queue-5",
+ "rx-queue-6",
+ "rx-queue-7";
resets = <&rst EMAC1_RESET>, <&rst EMAC1_OCP_RESET>;
reset-names = "stmmaceth", "ahb";
clocks = <&clkmgr AGILEX5_EMAC1_CLK>,
@@ -783,8 +847,40 @@ gmac2: ethernet@10830000 {
compatible = "altr,socfpga-stmmac-agilex5",
"snps,dwxgmac-2.10";
reg = <0x10830000 0x3500>;
- interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "macirq";
+ interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 236 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 237 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq",
+ "tx-queue-0",
+ "tx-queue-1",
+ "tx-queue-2",
+ "tx-queue-3",
+ "tx-queue-4",
+ "tx-queue-5",
+ "tx-queue-6",
+ "tx-queue-7",
+ "rx-queue-0",
+ "rx-queue-1",
+ "rx-queue-2",
+ "rx-queue-3",
+ "rx-queue-4",
+ "rx-queue-5",
+ "rx-queue-6",
+ "rx-queue-7";
resets = <&rst EMAC2_RESET>, <&rst EMAC2_OCP_RESET>;
reset-names = "stmmaceth", "ahb";
clocks = <&clkmgr AGILEX5_EMAC2_CLK>,
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
index 1d7f0a57d2889..0e02f80aafeef 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
@@ -593,6 +593,35 @@ static void socfpga_agilex5_setup_plat_dat(struct socfpga_dwmac *dwmac)
plat_dat->crosststamp = smtg_crosststamp;
}
+static void socfpga_dwmac_setup_multi_irq(struct device *dev,
+ struct plat_stmmacenet_data *plat,
+ struct stmmac_resources *res)
+{
+ int i;
+
+ for (i = 0; i < plat->rx_queues_to_use; i++) {
+ if (res->rx_irq[i] <= 0) {
+ dev_dbg(dev, "Missing RX queue %d interrupt\n", i);
+ goto mac_irq_mode;
+ }
+ }
+
+ for (i = 0; i < plat->tx_queues_to_use; i++) {
+ if (res->tx_irq[i] <= 0) {
+ dev_dbg(dev, "Missing TX queue %d interrupt\n", i);
+ goto mac_irq_mode;
+ }
+ }
+
+ plat->flags |= STMMAC_FLAG_MULTI_MSI_EN;
+ dev_info(dev, "Multi-IRQ mode (per queue IRQs) selected\n");
+ return;
+
+mac_irq_mode:
+ plat->flags &= ~STMMAC_FLAG_MULTI_MSI_EN;
+ dev_dbg(dev, "MAC IRQ mode selected\n");
+}
+
static int socfpga_dwmac_probe(struct platform_device *pdev)
{
struct plat_stmmacenet_data *plat_dat;
@@ -652,6 +681,8 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)
ops->setup_plat_dat(dwmac);
+ socfpga_dwmac_setup_multi_irq(dev, plat_dat, &stmmac_res);
+
return devm_stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res);
}
|
| 3/2 | 2026/08/17 08:10 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 4907 output: 22 thoughts: 495 Thoughts: **Analyzing the SOCFPGA DWMAC Interrupt Patch**
Okay, so this patch is adding multiple interrupt support for the GMAC interfaces (`gmac0`, `gmac1`, `gmac2`) on the Agilex5 SOCFPGA platform. Specifically, it's modifying the device tree (`.dtsi`) to define these new interrupts (tx and rx queues) and then updating the `dwmac-socfpga.c` driver to handle them. The driver now includes a `socfpga_dwmac_setup_multi_irq()` function to check if the new interrupts are present, and if so, enable the `STMMAC_FLAG_MULTI_MSI_EN` flag.
My primary concern, though, is how testable this is. This is a platform-specific driver (`dwmac-socfpga.c`), targeting Altera (now Intel) SOCFPGA hardware. Can I even reach this code in a typical virtualization setup like QEMU? I doubt that standard QEMU instances emulate the Altera SOCFPGA DWMAC specifically. It's a platform driver, so the probe relies on device tree compatible strings ("altr,socfpga-stmmac", etc.). Unless I can inject platform devices or manipulate the device tree within QEMU, this driver won't probe unless a specific machine type is used that has this device.
Could syzkaller potentially help? Maybe. It can sometimes inject platform devices using `syz_dev_create` or something similar, but that usually requires a specific syzkaller description, and it's not a given that it'll work for arbitrary hardware. I'd have to check if there is a syzkaller description for this.
Really, the patch is just enabling a flag if the interrupts are present, so the main question is, can I reach `dwmac-socfpga.c` at all? I need to verify that `socfpga_dwmac_probe` is reachable. I should use `grepper` to see if the probe is reachable and/or if there are any syzkaller descriptions for the driver. That's the first step.
|
| 4/2 | 2026/08/17 08:10 | tool | grepper |
0mArgs:{
"Expression": "socfpga_dwmac_probe"
}Results: {
"Output": "drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c=596=static void socfpga_dwmac_setup_multi_irq(struct device *dev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c-624-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c:625:static int socfpga_dwmac_probe(struct platform_device *pdev)\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c-626-{\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c=712=static struct platform_driver socfpga_dwmac_driver = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c:713:\t.probe = socfpga_dwmac_probe,\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c-714-\t.driver = {\n"
} |
| 5/2 | 2026/08/17 08:10 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 6168 output: 116 thoughts: 472 Thoughts: **My Assessment: Not Worth Fuzzing** Okay, let's break this down. I see we're looking at a patch related to the `socfpga_dwmac_driver`, which is a platform driver. The core question is: can this code path even be reached within a standard fuzzing setup, particularly with something like syzkaller running in QEMU? Platform drivers are typically probed when a matching platform device is present. However, this specific driver relies on resources defined in the device tree: clocks, resets, memory-mapped I/O, interrupts, the usual suspects. If syzkaller doesn't have a way to instantiate the right device tree configuration for this Altera SOCFPGA DWMAC driver, the code will never execute. And what's the change? It's just setting a flag, `STMMAC_FLAG_MULTI_MSI_EN`, if the device tree defines multiple IRQs. The flag itself is actually part of `stmmac`, the generic Ethernet driver, which adds some interesting context... I should probably confirm if that adds some functional impact worth investigating. Now, considering the provided context, the prompt specifically calls out situations where a patch *shouldn't* be considered worth fuzzing. It mentions code paths inaccessible in virtualized environments or vendor-specific drivers needing physical hardware not emulated in QEMU. This, my friends, screams "that's me!". We're talking about a vendor-specific Ethernet driver for Altera's SOCFPGA platform. It requires specific hardware (or device tree nodes) that are *not* typically emulated in a standard QEMU environment, especially when syzkaller is running on a 'virt' machine (or a 'q35' machine). Wait a minute... does QEMU even support `socfpga`? It does have *some* support for `xilinx` and `socfpga` machines. But syzkaller usually uses `virt` or `q35`. Even *if* a `socfpga` machine is emulated, this patch is just setting a flag based on DT interrupts. Realistically, given the prompt and the typical fuzzing environment, this code path is not worth the effort. Therefore, I'm going with `WorthFuzzing=false`. It's a vendor-specific platform driver change, and it's highly unlikely to be reached in the standard virtualized environments used for fuzzing. |
| 6/2 | 2026/08/17 08:10 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch modifies the device tree and probe function of a vendor-specific platform ethernet driver (Altera SOCFPGA DWMAC) to support multiple IRQs. This driver requires specific hardware/device-tree nodes that are not present in standard virtualized environments (like QEMU 'virt' or 'q35' machines) used for fuzzing. Therefore, the modified code is unreachable during standard fuzzing.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the device tree and probe function of a vendor-specific platform ethernet driver (Altera SOCFPGA DWMAC) to support multiple IRQs. This driver requires specific hardware/device-tree nodes that are not present in standard virtualized environments (like QEMU 'virt' or 'q35' machines) used for fuzzing. Therefore, the modified code is unreachable during standard fuzzing.",
"WorthFuzzing": false
} |
| 7/1 | 2026/08/17 08:10 | action | If |
0mArgs:{
"WorthFuzzing": false
}Results: null |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|