| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/09/10 13:34 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch updates devicetree documentation and the Allwinner sun55i/sun60i GMAC ethernet glue driver (dwmac-sun55i.c). This driver targets specific ARM/Allwinner SoC hardware (sun55i-a523 and sun60i-a733) via DeviceTree and cannot be probed or executed in standard virtualized amd64 QEMU/GCE fuzzing environments. Therefore, the modified code is structurally unreachable.",
"WorthFuzzing": false
} |
| 1/1 | 2026/09/10 13:34 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit a22ec5c60a6737c440f9aa928160523acb972a7e\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Thu Sep 10 13:34:16 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml\nindex 323a669fa9823..fec42f46378ac 100644\n--- a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml\n+++ b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml\n@@ -22,6 +22,7 @@ select:\n - allwinner,sun8i-v3s-emac\n - allwinner,sun50i-a64-emac\n - allwinner,sun55i-a523-gmac200\n+ - allwinner,sun60i-a733-gmac210\n required:\n - compatible\n \n@@ -44,25 +45,38 @@ properties:\n - items:\n - const: allwinner,sun55i-a523-gmac200\n - const: snps,dwmac-4.20a\n+ - items:\n+ - const: allwinner,sun60i-a733-gmac210\n+ - const: snps,dwmac-5.20\n \n reg:\n- maxItems: 1\n+ minItems: 1\n+ items:\n+ - description: MAC controller registers\n+ - description: Glue configuration registers\n \n interrupts:\n- maxItems: 1\n+ minItems: 1\n+ maxItems: 4\n \n interrupt-names:\n- const: macirq\n+ minItems: 1\n+ items:\n+ - const: macirq\n+ - const: eth_lpi\n+ - const: tx-queue-0\n+ - const: rx-queue-0\n \n clocks:\n minItems: 1\n- maxItems: 2\n+ maxItems: 3\n \n clock-names:\n minItems: 1\n items:\n - const: stmmaceth\n - const: mbus\n+ - const: ptp_ref\n \n phy-supply:\n description: PHY regulator\n@@ -87,7 +101,6 @@ required:\n - reset-names\n - phy-handle\n - phy-mode\n- - syscon\n \n allOf:\n - $ref: snps,dwmac.yaml#\n@@ -219,36 +232,94 @@ allOf:\n properties:\n compatible:\n contains:\n- const: allwinner,sun55i-a523-gmac200\n+ enum:\n+ - allwinner,sun55i-a523-gmac200\n+ - allwinner,sun60i-a733-gmac210\n then:\n properties:\n- clocks:\n- minItems: 2\n- clock-names:\n- minItems: 2\n tx-internal-delay-ps:\n default: 0\n minimum: 0\n- maximum: 700\n multipleOf: 100\n description:\n- External RGMII PHY TX clock delay chain value in ps.\n+ Internal RGMII PHY TX clock delay chain value in ps.\n rx-internal-delay-ps:\n default: 0\n minimum: 0\n maximum: 3100\n multipleOf: 100\n description:\n- External RGMII PHY TX clock delay chain value in ps.\n- required:\n- - power-domains\n+ Internal RGMII PHY RX clock delay chain value in ps.\n else:\n properties:\n+ reg:\n+ maxItems: 1\n+ interrupts:\n+ maxItems: 1\n+ interrupt-names:\n+ maxItems: 1\n clocks:\n maxItems: 1\n clock-names:\n maxItems: 1\n power-domains: false\n+ required:\n+ - syscon\n+\n+ - if:\n+ properties:\n+ compatible:\n+ contains:\n+ const: allwinner,sun55i-a523-gmac200\n+ then:\n+ properties:\n+ reg:\n+ maxItems: 1\n+ interrupts:\n+ maxItems: 1\n+ interrupt-names:\n+ maxItems: 1\n+ clocks:\n+ minItems: 2\n+ maxItems: 2\n+ clock-names:\n+ minItems: 2\n+ maxItems: 2\n+ resets:\n+ maxItems: 1\n+ reset-names:\n+ maxItems: 1\n+ tx-internal-delay-ps:\n+ maximum: 700\n+ required:\n+ - power-domains\n+ - syscon\n+\n+ - if:\n+ properties:\n+ compatible:\n+ contains:\n+ const: allwinner,sun60i-a733-gmac210\n+ then:\n+ properties:\n+ reg:\n+ minItems: 2\n+ interrupts:\n+ minItems: 4\n+ interrupt-names:\n+ minItems: 4\n+ clocks:\n+ minItems: 3\n+ clock-names:\n+ minItems: 3\n+ resets:\n+ minItems: 2\n+ reset-names:\n+ minItems: 2\n+ tx-internal-delay-ps:\n+ maximum: 3100\n+ syscon: false\n+ power-domains: false\n \n unevaluatedProperties: false\n \n@@ -412,4 +483,33 @@ examples:\n };\n };\n };\n+\n+ - |\n+ ethernet@4510000 {\n+ compatible = \"allwinner,sun60i-a733-gmac210\",\n+ \"snps,dwmac-5.20\";\n+ reg = \u003c0x04510000 0x8000\u003e,\n+ \u003c0x04518000 0x1000\u003e;\n+ clocks = \u003c\u0026ccu 58\u003e, \u003c\u0026ccu 59\u003e, \u003c\u0026ccu 60\u003e;\n+ clock-names = \"stmmaceth\", \"mbus\", \"ptp_ref\";\n+ resets = \u003c\u0026ccu 30\u003e, \u003c\u0026ccu 31\u003e;\n+ reset-names = \"stmmaceth\", \"ahb\";\n+ interrupts = \u003c0 175 4\u003e, \u003c0 179 4\u003e, \u003c0 176 4\u003e, \u003c0 177 4\u003e;\n+ interrupt-names = \"macirq\", \"eth_lpi\", \"tx-queue-0\", \"rx-queue-0\";\n+ pinctrl-names = \"default\";\n+ pinctrl-0 = \u003c\u0026rgmii1_pins\u003e;\n+ phy-handle = \u003c\u0026ext_rgmii_phy_2\u003e;\n+ phy-mode = \"rgmii-id\";\n+ snps,fixed-burst;\n+\n+ mdio {\n+ compatible = \"snps,dwmac-mdio\";\n+ #address-cells = \u003c1\u003e;\n+ #size-cells = \u003c0\u003e;\n+\n+ ext_rgmii_phy_2: ethernet-phy@1 {\n+ reg = \u003c1\u003e;\n+ };\n+ };\n+ };\n ...\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c\nindex 862df173d963f..3d434a52fb02d 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c\n@@ -10,21 +10,22 @@\n */\n \n #include \u003clinux/bitfield.h\u003e\n+#include \u003clinux/bitops.h\u003e\n #include \u003clinux/bits.h\u003e\n #include \u003clinux/mfd/syscon.h\u003e\n #include \u003clinux/module.h\u003e\n #include \u003clinux/of.h\u003e\n #include \u003clinux/phy.h\u003e\n #include \u003clinux/platform_device.h\u003e\n+#include \u003clinux/property.h\u003e\n #include \u003clinux/regmap.h\u003e\n #include \u003clinux/regulator/consumer.h\u003e\n+#include \u003clinux/reset.h\u003e\n #include \u003clinux/stmmac.h\u003e\n \n #include \"stmmac.h\"\n #include \"stmmac_platform.h\"\n \n-#define SYSCON_REG\t\t0x34\n-\n /* RMII specific bits */\n #define SYSCON_RMII_EN\t\tBIT(13) /* 1: enable RMII (overrides EPIT) */\n /* Generic system control EMAC_CLK bits */\n@@ -37,17 +38,99 @@\n #define SYSCON_ETCS_EXT_GMII\t0x1\n #define SYSCON_ETCS_INT_GMII\t0x2\n \n-static int sun55i_gmac200_set_syscon(struct device *dev,\n-\t\t\t\t struct plat_stmmacenet_data *plat)\n+struct sun55i_gmac_data {\n+\tstruct regmap *(*get_regmap)(struct platform_device *pdev,\n+\t\t\t\t struct plat_stmmacenet_data *plat);\n+\tunsigned int flags;\n+\tu32 etxdc_ext_mask;\n+\tu32 offset;\n+};\n+\n+static struct regmap *sun55i_gmac200_get_regmap(struct platform_device *pdev,\n+\t\t\t\t\t\tstruct plat_stmmacenet_data *plat)\n+{\n+\tstruct regmap *map =\n+\t\tsyscon_regmap_lookup_by_phandle(pdev-\u003edev.of_node, \"syscon\");\n+\n+\tif (IS_ERR(map))\n+\t\tdev_err_probe(\u0026pdev-\u003edev, PTR_ERR(map), \"Unable to map syscon\\n\");\n+\n+\treturn map;\n+}\n+\n+static const struct regmap_config sun60i_a733_regmap_cfg = {\n+\t.reg_bits = 32,\n+\t.val_bits = 32,\n+\t.reg_stride = 4,\n+};\n+\n+static void sun60i_gmac210_reset_assert(void *data)\n {\n-\tstruct device_node *node = dev-\u003eof_node;\n+\tstruct reset_control *rst = data;\n+\n+\treset_control_assert(rst);\n+}\n+\n+static struct regmap *sun60i_gmac210_get_regmap(struct platform_device *pdev,\n+\t\t\t\t\t\tstruct plat_stmmacenet_data *plat)\n+{\n+\tstruct device *dev = \u0026pdev-\u003edev;\n+\tvoid __iomem *base;\n+\tint ret;\n+\n+\tbase = devm_platform_ioremap_resource(pdev, 1);\n+\tif (IS_ERR(base)) {\n+\t\tdev_err_probe(dev, PTR_ERR(base), \"unable to get glue memory region\\n\");\n+\t\treturn ERR_CAST(base);\n+\t}\n+\n+\tif (!plat-\u003estmmac_rst || !plat-\u003estmmac_ahb_rst) {\n+\t\tdev_err(dev, \"missing required reset controls\\n\");\n+\t\treturn ERR_PTR(-EINVAL);\n+\t}\n+\n+\t/*\n+\t * The configuration registers are inside the controller\n+\t * reset domain, so the reset must happen before any write to them\n+\t * and should not be done again by stmmac or the configuration will\n+\t * be lost.\n+\t */\n+\tret = reset_control_assert(plat-\u003estmmac_rst);\n+\tif (!ret)\n+\t\tret = reset_control_deassert(plat-\u003estmmac_rst);\n+\n+\tif (ret) {\n+\t\tdev_err_probe(dev, ret, \"device reset failed\\n\");\n+\t\treturn ERR_PTR(ret);\n+\t}\n+\n+\tret = devm_add_action_or_reset(dev, sun60i_gmac210_reset_assert,\n+\t\t\t\t plat-\u003estmmac_rst);\n+\tif (ret)\n+\t\treturn ERR_PTR(ret);\n+\n+\tplat-\u003estmmac_rst = NULL;\n+\n+\treturn devm_regmap_init_mmio(\u0026pdev-\u003edev, base, \u0026sun60i_a733_regmap_cfg);\n+}\n+\n+static int sun55i_gmac200_setup(struct platform_device *pdev,\n+\t\t\t\tstruct plat_stmmacenet_data *plat,\n+\t\t\t\tconst struct sun55i_gmac_data *data)\n+{\n+\tunsigned int lo_bits = hweight32(SYSCON_ETXDC_MASK);\n+\tstruct device_node *node = pdev-\u003edev.of_node;\n+\tstruct device *dev = \u0026pdev-\u003edev;\n \tstruct regmap *regmap;\n \tu32 val, reg = 0;\n+\tu32 max_delay;\n \tint ret;\n \n-\tregmap = syscon_regmap_lookup_by_phandle(node, \"syscon\");\n+\tmax_delay = (1U \u003c\u003c (lo_bits + hweight32(data-\u003eetxdc_ext_mask))) - 1;\n+\n+\tregmap = data-\u003eget_regmap(pdev, plat);\n \tif (IS_ERR(regmap))\n-\t\treturn dev_err_probe(dev, PTR_ERR(regmap), \"Unable to map syscon\\n\");\n+\t\treturn PTR_ERR(regmap);\n \n \tif (!of_property_read_u32(node, \"tx-internal-delay-ps\", \u0026val)) {\n \t\tif (val % 100)\n@@ -55,12 +138,15 @@ static int sun55i_gmac200_set_syscon(struct device *dev,\n \t\t\t\t\t \"tx-delay must be a multiple of 100ps\\n\");\n \t\tval /= 100;\n \t\tdev_dbg(dev, \"set tx-delay to %x\\n\", val);\n-\t\tif (!FIELD_FIT(SYSCON_ETXDC_MASK, val))\n+\t\tif (val \u003e max_delay)\n \t\t\treturn dev_err_probe(dev, -EINVAL,\n-\t\t\t\t\t \"TX clock delay exceeds maximum (%u00ps \u003e %lu00ps)\\n\",\n-\t\t\t\t\t val, FIELD_MAX(SYSCON_ETXDC_MASK));\n+\t\t\t\t\t \"TX clock delay exceeds maximum (%u00ps \u003e %u00ps)\\n\",\n+\t\t\t\t\t val, max_delay);\n \n-\t\treg |= FIELD_PREP(SYSCON_ETXDC_MASK, val);\n+\t\treg |= field_prep(SYSCON_ETXDC_MASK, val);\n+\t\tif (data-\u003eetxdc_ext_mask)\n+\t\t\treg |= field_prep(data-\u003eetxdc_ext_mask,\n+\t\t\t\t\t val \u003e\u003e lo_bits);\n \t}\n \n \tif (!of_property_read_u32(node, \"rx-internal-delay-ps\", \u0026val)) {\n@@ -95,21 +181,29 @@ static int sun55i_gmac200_set_syscon(struct device *dev,\n \t\t\t\t phy_modes(plat-\u003ephy_interface));\n \t}\n \n-\tret = regmap_write(regmap, SYSCON_REG, reg);\n+\tret = regmap_write(regmap, data-\u003eoffset, reg);\n \tif (ret \u003c 0)\n \t\treturn dev_err_probe(dev, ret, \"Failed to write to syscon\\n\");\n \n+\tplat-\u003eflags |= data-\u003eflags;\n+\tplat-\u003ehost_dma_width = 32;\n+\n \treturn 0;\n }\n \n static int sun55i_gmac200_probe(struct platform_device *pdev)\n {\n \tstruct plat_stmmacenet_data *plat_dat;\n+\tconst struct sun55i_gmac_data *data;\n \tstruct stmmac_resources stmmac_res;\n \tstruct device *dev = \u0026pdev-\u003edev;\n \tstruct clk *clk;\n \tint ret;\n \n+\tdata = device_get_match_data(dev);\n+\tif (!data)\n+\t\treturn -EINVAL;\n+\n \tret = stmmac_get_platform_resources(pdev, \u0026stmmac_res);\n \tif (ret)\n \t\treturn ret;\n@@ -118,11 +212,7 @@ static int sun55i_gmac200_probe(struct platform_device *pdev)\n \tif (IS_ERR(plat_dat))\n \t\treturn PTR_ERR(plat_dat);\n \n-\t/* BSP disables it */\n-\tplat_dat-\u003eflags |= STMMAC_FLAG_SPH_DISABLE;\n-\tplat_dat-\u003ehost_dma_width = 32;\n-\n-\tret = sun55i_gmac200_set_syscon(dev, plat_dat);\n+\tret = sun55i_gmac200_setup(pdev, plat_dat, data);\n \tif (ret)\n \t\treturn ret;\n \n@@ -138,8 +228,27 @@ static int sun55i_gmac200_probe(struct platform_device *pdev)\n \treturn devm_stmmac_pltfr_probe(pdev, plat_dat, \u0026stmmac_res);\n }\n \n+static const struct sun55i_gmac_data sun55i_a523_gmac200_data = {\n+\t.get_regmap = sun55i_gmac200_get_regmap,\n+\t.flags = STMMAC_FLAG_SPH_DISABLE,\n+\t.offset = 0x34,\n+\t.etxdc_ext_mask = 0,\n+};\n+\n+static const struct sun55i_gmac_data sun60i_a733_gmac210_data = {\n+\t.get_regmap = sun60i_gmac210_get_regmap,\n+\t.flags = (STMMAC_FLAG_SPH_DISABLE |\n+\t\t STMMAC_FLAG_MULTI_MSI_EN |\n+\t\t STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP),\n+\t.offset = 0x0,\n+\t.etxdc_ext_mask = GENMASK(17, 16),\n+};\n+\n static const struct of_device_id sun55i_gmac200_match[] = {\n-\t{ .compatible = \"allwinner,sun55i-a523-gmac200\" },\n+\t{ .compatible = \"allwinner,sun55i-a523-gmac200\",\n+\t .data = \u0026sun55i_a523_gmac200_data },\n+\t{ .compatible = \"allwinner,sun60i-a733-gmac210\",\n+\t .data = \u0026sun60i_a733_gmac210_data },\n \t{ }\n };\n MODULE_DEVICE_TABLE(of, sun55i_gmac200_match);\n"
} |
| 2/1 | 2026/09/10 13:34 | agent | patch-evaluator |
0mModel:core Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch updates devicetree documentation and the Allwinner sun55i/sun60i GMAC ethernet glue driver (dwmac-sun55i.c). This driver targets specific ARM/Allwinner SoC hardware (sun55i-a523 and sun60i-a733) via DeviceTree and cannot be probed or executed in standard virtualized amd64 QEMU/GCE fuzzing environments. Therefore, the modified code is structurally unreachable.",
"WorthFuzzing": false
}Instruction: You are an expert Linux kernel maintainer and security engineer.
Your job is to review a provided patch series and evaluate whether it warrants fuzzing with syzkaller.
IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in
your workspace. Do NOT rely on internal assumptions. You must actively use your code access
tools to inspect the actual source code, callers, and surrounding context.
================================================================================
1. CORE TRIAGE PHILOSOPHY
================================================================================
The goal of patch fuzzing is to discover crashes, regressions, exposed latent bugs,
and newly triggered assertions introduced by the patch series.
- REACHABILITY IS THE PRIMARY GATE:
Fuzzing can only discover bugs in code that can actually execute in standard virtualized
environments (GCE or QEMU, utilizing software-emulated devices like USB gadgets, netdev, tun/tap).
If the modified code is structurally unreachable (see Section 2), it MUST NOT be fuzzed,
regardless of whether it adds assertions or complex logic.
- DO NOT BLINDLY TRUST "NO FUNCTIONAL CHANGE" (NFCI) OR "REFACTORING" CLAIMS:
Patch authors routinely label changes as "cleanups", "refactorings", or state
"No functional change intended". Do NOT take these claims at face value.
Code refactorings that rearrange logic, introduce helper functions, or alter state management
in core subsystems frequently introduce subtle semantic shifts or uncover latent kernel bugs.
If reachable executable code is modified or refactored, it MUST be fuzzed.
- NEW OR MODIFIED ASSERTIONS IN REACHABLE CODE MUST BE FUZZED:
When a patch introduces or modifies runtime checks or assertions (e.g., WARN_ON*, VM_WARN_ON*,
BUG_ON*, lockdep_assert*) in reachable code paths, it enforces new or stricter invariants.
Even if the author believes the invariant always holds, fuzzing is essential to verify whether
an unusual sequence of operations can violate it.
================================================================================
2. WHEN TO RETURN WorthFuzzing=false (NEGATIVE CRITERIA)
================================================================================
Return WorthFuzzing=false ONLY IF all modified code falls strictly into one or more of these categories:
- Non-kernel and non-executable changes:
* Modifications to Documentation/, comments, or spelling fixes.
* User-space directories, self-tests, samples, or scripts (e.g., tools/, samples/, scripts/, usr/)
that do not affect the compiled kernel image (vmlinux) or kernel modules.
* Purely decorative logging (e.g., message strings in pr_err, printk, dev_info) or tracepoints
that do not alter control flow or data structures.
* Build system or Kconfig changes that do not alter compiled C logic.
- Structurally unreachable hardware:
* Vendor-specific PCIe switches, SmartNICs, or GPU drivers (e.g., mlxsw, pds_core, qed,
ionic, amdgpu) requiring physical ASIC/PCIe cards not emulated in standard QEMU.
- Unreachable execution paths:
* Driver teardown callbacks (.remove, .shutdown, pci_unregister_driver) executed only during
physical PCI hot-unplug or manual sysfs driver unbinding.
* Code paths exclusive to architectures other than the target architecture.
================================================================================
3. WHEN TO RETURN WorthFuzzing=true (POSITIVE CRITERIA)
================================================================================
Return WorthFuzzing=true whenever the patch touches reachable executable code, including:
- Core Subsystems:
* Any logic modifications in memory management (mm/), synchronization/locking (kernel/locking/),
BPF, scheduler, core networking, VFS, or syscall handling.
- Refactorings and Code Cleanups:
* Any restructuring of reachable data structures, helper abstractions, or algorithm flows.
- Runtime Assertions and Defensive Checks:
* Any introduction or alteration of assertions (WARN_ON*, VM_WARN_ON*, BUG_ON*, etc.) in reachable paths.
- Reachable Drivers and Protocols:
* Drivers accessible via virtual buses (virtio, USB gadget, loopback, netlink, binder, sockets, etc.).
================================================================================
4. EXTRACTING FocusSymbols (PREVENTING DILUTION)
================================================================================
When WorthFuzzing=true, you must extract specific kernel functions into FocusSymbols to guide the fuzzer:
- AVOID UBIQUITOUS LIFECYCLE HOT-PATHS:
Do NOT list generic, ubiquitous functions called by almost every program in the corpus
(including, but not limited to: general memory allocators and deallocators, page fault
and trap handlers, or core synchronization primitives; this is not an exhaustive list).
Listing ubiquitous functions causes the fuzzer to classify thousands of unrelated tests as "focused",
which severely dilutes fuzzing effort away from the actual changes.
- TARGET SPECIFIC FEATURE LOGIC AND ENTRYPOINTS:
List functions that specifically implement the logic being added or altered, or direct API entrypoints
for the subsystem feature under review.
- HANDLING STATIC INLINE FUNCTIONS IN HEADERS (.h):
Compiler-inlined static functions (such as static inlines in mm/*.h or include/linux/*.h) lack
distinct symbol addresses in vmlinux and cannot be targeted directly by symbol coverage filters.
If the changes are primarily in static inline helpers, identify non-static, feature-specific caller
functions in .c files that exercise them (avoiding ubiquitous lifecycle wrappers).
================================================================================
5. IDENTIFYING EnableConfigs
================================================================================
Identify any specific CONFIG_ options required to properly compile and reach the modified code:
- Inspect Kconfig files and #ifdef guards; do not make assumptions.
- Check "depends on" lines in Kconfig to include any non-standard parent subsystem configs needed.
- Strip any '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: Target architecture: amd64
For your convenience, here is the diff of the changes:
commit a22ec5c60a6737c440f9aa928160523acb972a7e
Author: syz-cluster <triage@syzkaller.com>
Date: Thu Sep 10 13:34:16 2026 +0000
syz-cluster: applied patch under review
diff --git a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
index 323a669fa9823..fec42f46378ac 100644
--- a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
+++ b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
@@ -22,6 +22,7 @@ select:
- allwinner,sun8i-v3s-emac
- allwinner,sun50i-a64-emac
- allwinner,sun55i-a523-gmac200
+ - allwinner,sun60i-a733-gmac210
required:
- compatible
@@ -44,25 +45,38 @@ properties:
- items:
- const: allwinner,sun55i-a523-gmac200
- const: snps,dwmac-4.20a
+ - items:
+ - const: allwinner,sun60i-a733-gmac210
+ - const: snps,dwmac-5.20
reg:
- maxItems: 1
+ minItems: 1
+ items:
+ - description: MAC controller registers
+ - description: Glue configuration registers
interrupts:
- maxItems: 1
+ minItems: 1
+ maxItems: 4
interrupt-names:
- const: macirq
+ minItems: 1
+ items:
+ - const: macirq
+ - const: eth_lpi
+ - const: tx-queue-0
+ - const: rx-queue-0
clocks:
minItems: 1
- maxItems: 2
+ maxItems: 3
clock-names:
minItems: 1
items:
- const: stmmaceth
- const: mbus
+ - const: ptp_ref
phy-supply:
description: PHY regulator
@@ -87,7 +101,6 @@ required:
- reset-names
- phy-handle
- phy-mode
- - syscon
allOf:
- $ref: snps,dwmac.yaml#
@@ -219,36 +232,94 @@ allOf:
properties:
compatible:
contains:
- const: allwinner,sun55i-a523-gmac200
+ enum:
+ - allwinner,sun55i-a523-gmac200
+ - allwinner,sun60i-a733-gmac210
then:
properties:
- clocks:
- minItems: 2
- clock-names:
- minItems: 2
tx-internal-delay-ps:
default: 0
minimum: 0
- maximum: 700
multipleOf: 100
description:
- External RGMII PHY TX clock delay chain value in ps.
+ Internal RGMII PHY TX clock delay chain value in ps.
rx-internal-delay-ps:
default: 0
minimum: 0
maximum: 3100
multipleOf: 100
description:
- External RGMII PHY TX clock delay chain value in ps.
- required:
- - power-domains
+ Internal RGMII PHY RX clock delay chain value in ps.
else:
properties:
+ reg:
+ maxItems: 1
+ interrupts:
+ maxItems: 1
+ interrupt-names:
+ maxItems: 1
clocks:
maxItems: 1
clock-names:
maxItems: 1
power-domains: false
+ required:
+ - syscon
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: allwinner,sun55i-a523-gmac200
+ then:
+ properties:
+ reg:
+ maxItems: 1
+ interrupts:
+ maxItems: 1
+ interrupt-names:
+ maxItems: 1
+ clocks:
+ minItems: 2
+ maxItems: 2
+ clock-names:
+ minItems: 2
+ maxItems: 2
+ resets:
+ maxItems: 1
+ reset-names:
+ maxItems: 1
+ tx-internal-delay-ps:
+ maximum: 700
+ required:
+ - power-domains
+ - syscon
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: allwinner,sun60i-a733-gmac210
+ then:
+ properties:
+ reg:
+ minItems: 2
+ interrupts:
+ minItems: 4
+ interrupt-names:
+ minItems: 4
+ clocks:
+ minItems: 3
+ clock-names:
+ minItems: 3
+ resets:
+ minItems: 2
+ reset-names:
+ minItems: 2
+ tx-internal-delay-ps:
+ maximum: 3100
+ syscon: false
+ power-domains: false
unevaluatedProperties: false
@@ -412,4 +483,33 @@ examples:
};
};
};
+
+ - |
+ ethernet@4510000 {
+ compatible = "allwinner,sun60i-a733-gmac210",
+ "snps,dwmac-5.20";
+ reg = <0x04510000 0x8000>,
+ <0x04518000 0x1000>;
+ clocks = <&ccu 58>, <&ccu 59>, <&ccu 60>;
+ clock-names = "stmmaceth", "mbus", "ptp_ref";
+ resets = <&ccu 30>, <&ccu 31>;
+ reset-names = "stmmaceth", "ahb";
+ interrupts = <0 175 4>, <0 179 4>, <0 176 4>, <0 177 4>;
+ interrupt-names = "macirq", "eth_lpi", "tx-queue-0", "rx-queue-0";
+ pinctrl-names = "default";
+ pinctrl-0 = <&rgmii1_pins>;
+ phy-handle = <&ext_rgmii_phy_2>;
+ phy-mode = "rgmii-id";
+ snps,fixed-burst;
+
+ mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ext_rgmii_phy_2: ethernet-phy@1 {
+ reg = <1>;
+ };
+ };
+ };
...
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c
index 862df173d963f..3d434a52fb02d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c
@@ -10,21 +10,22 @@
*/
#include <linux/bitfield.h>
+#include <linux/bitops.h>
#include <linux/bits.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/phy.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
+#include <linux/reset.h>
#include <linux/stmmac.h>
#include "stmmac.h"
#include "stmmac_platform.h"
-#define SYSCON_REG 0x34
-
/* RMII specific bits */
#define SYSCON_RMII_EN BIT(13) /* 1: enable RMII (overrides EPIT) */
/* Generic system control EMAC_CLK bits */
@@ -37,17 +38,99 @@
#define SYSCON_ETCS_EXT_GMII 0x1
#define SYSCON_ETCS_INT_GMII 0x2
-static int sun55i_gmac200_set_syscon(struct device *dev,
- struct plat_stmmacenet_data *plat)
+struct sun55i_gmac_data {
+ struct regmap *(*get_regmap)(struct platform_device *pdev,
+ struct plat_stmmacenet_data *plat);
+ unsigned int flags;
+ u32 etxdc_ext_mask;
+ u32 offset;
+};
+
+static struct regmap *sun55i_gmac200_get_regmap(struct platform_device *pdev,
+ struct plat_stmmacenet_data *plat)
+{
+ struct regmap *map =
+ syscon_regmap_lookup_by_phandle(pdev->dev.of_node, "syscon");
+
+ if (IS_ERR(map))
+ dev_err_probe(&pdev->dev, PTR_ERR(map), "Unable to map syscon\n");
+
+ return map;
+}
+
+static const struct regmap_config sun60i_a733_regmap_cfg = {
+ .reg_bits = 32,
+ .val_bits = 32,
+ .reg_stride = 4,
+};
+
+static void sun60i_gmac210_reset_assert(void *data)
{
- struct device_node *node = dev->of_node;
+ struct reset_control *rst = data;
+
+ reset_control_assert(rst);
+}
+
+static struct regmap *sun60i_gmac210_get_regmap(struct platform_device *pdev,
+ struct plat_stmmacenet_data *plat)
+{
+ struct device *dev = &pdev->dev;
+ void __iomem *base;
+ int ret;
+
+ base = devm_platform_ioremap_resource(pdev, 1);
+ if (IS_ERR(base)) {
+ dev_err_probe(dev, PTR_ERR(base), "unable to get glue memory region\n");
+ return ERR_CAST(base);
+ }
+
+ if (!plat->stmmac_rst || !plat->stmmac_ahb_rst) {
+ dev_err(dev, "missing required reset controls\n");
+ return ERR_PTR(-EINVAL);
+ }
+
+ /*
+ * The configuration registers are inside the controller
+ * reset domain, so the reset must happen before any write to them
+ * and should not be done again by stmmac or the configuration will
+ * be lost.
+ */
+ ret = reset_control_assert(plat->stmmac_rst);
+ if (!ret)
+ ret = reset_control_deassert(plat->stmmac_rst);
+
+ if (ret) {
+ dev_err_probe(dev, ret, "device reset failed\n");
+ return ERR_PTR(ret);
+ }
+
+ ret = devm_add_action_or_reset(dev, sun60i_gmac210_reset_assert,
+ plat->stmmac_rst);
+ if (ret)
+ return ERR_PTR(ret);
+
+ plat->stmmac_rst = NULL;
+
+ return devm_regmap_init_mmio(&pdev->dev, base, &sun60i_a733_regmap_cfg);
+}
+
+static int sun55i_gmac200_setup(struct platform_device *pdev,
+ struct plat_stmmacenet_data *plat,
+ const struct sun55i_gmac_data *data)
+{
+ unsigned int lo_bits = hweight32(SYSCON_ETXDC_MASK);
+ struct device_node *node = pdev->dev.of_node;
+ struct device *dev = &pdev->dev;
struct regmap *regmap;
u32 val, reg = 0;
+ u32 max_delay;
int ret;
- regmap = syscon_regmap_lookup_by_phandle(node, "syscon");
+ max_delay = (1U << (lo_bits + hweight32(data->etxdc_ext_mask))) - 1;
+
+ regmap = data->get_regmap(pdev, plat);
if (IS_ERR(regmap))
- return dev_err_probe(dev, PTR_ERR(regmap), "Unable to map syscon\n");
+ return PTR_ERR(regmap);
if (!of_property_read_u32(node, "tx-internal-delay-ps", &val)) {
if (val % 100)
@@ -55,12 +138,15 @@ static int sun55i_gmac200_set_syscon(struct device *dev,
"tx-delay must be a multiple of 100ps\n");
val /= 100;
dev_dbg(dev, "set tx-delay to %x\n", val);
- if (!FIELD_FIT(SYSCON_ETXDC_MASK, val))
+ if (val > max_delay)
return dev_err_probe(dev, -EINVAL,
- "TX clock delay exceeds maximum (%u00ps > %lu00ps)\n",
- val, FIELD_MAX(SYSCON_ETXDC_MASK));
+ "TX clock delay exceeds maximum (%u00ps > %u00ps)\n",
+ val, max_delay);
- reg |= FIELD_PREP(SYSCON_ETXDC_MASK, val);
+ reg |= field_prep(SYSCON_ETXDC_MASK, val);
+ if (data->etxdc_ext_mask)
+ reg |= field_prep(data->etxdc_ext_mask,
+ val >> lo_bits);
}
if (!of_property_read_u32(node, "rx-internal-delay-ps", &val)) {
@@ -95,21 +181,29 @@ static int sun55i_gmac200_set_syscon(struct device *dev,
phy_modes(plat->phy_interface));
}
- ret = regmap_write(regmap, SYSCON_REG, reg);
+ ret = regmap_write(regmap, data->offset, reg);
if (ret < 0)
return dev_err_probe(dev, ret, "Failed to write to syscon\n");
+ plat->flags |= data->flags;
+ plat->host_dma_width = 32;
+
return 0;
}
static int sun55i_gmac200_probe(struct platform_device *pdev)
{
struct plat_stmmacenet_data *plat_dat;
+ const struct sun55i_gmac_data *data;
struct stmmac_resources stmmac_res;
struct device *dev = &pdev->dev;
struct clk *clk;
int ret;
+ data = device_get_match_data(dev);
+ if (!data)
+ return -EINVAL;
+
ret = stmmac_get_platform_resources(pdev, &stmmac_res);
if (ret)
return ret;
@@ -118,11 +212,7 @@ static int sun55i_gmac200_probe(struct platform_device *pdev)
if (IS_ERR(plat_dat))
return PTR_ERR(plat_dat);
- /* BSP disables it */
- plat_dat->flags |= STMMAC_FLAG_SPH_DISABLE;
- plat_dat->host_dma_width = 32;
-
- ret = sun55i_gmac200_set_syscon(dev, plat_dat);
+ ret = sun55i_gmac200_setup(pdev, plat_dat, data);
if (ret)
return ret;
@@ -138,8 +228,27 @@ static int sun55i_gmac200_probe(struct platform_device *pdev)
return devm_stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res);
}
+static const struct sun55i_gmac_data sun55i_a523_gmac200_data = {
+ .get_regmap = sun55i_gmac200_get_regmap,
+ .flags = STMMAC_FLAG_SPH_DISABLE,
+ .offset = 0x34,
+ .etxdc_ext_mask = 0,
+};
+
+static const struct sun55i_gmac_data sun60i_a733_gmac210_data = {
+ .get_regmap = sun60i_gmac210_get_regmap,
+ .flags = (STMMAC_FLAG_SPH_DISABLE |
+ STMMAC_FLAG_MULTI_MSI_EN |
+ STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP),
+ .offset = 0x0,
+ .etxdc_ext_mask = GENMASK(17, 16),
+};
+
static const struct of_device_id sun55i_gmac200_match[] = {
- { .compatible = "allwinner,sun55i-a523-gmac200" },
+ { .compatible = "allwinner,sun55i-a523-gmac200",
+ .data = &sun55i_a523_gmac200_data },
+ { .compatible = "allwinner,sun60i-a733-gmac210",
+ .data = &sun60i_a733_gmac210_data },
{ }
};
MODULE_DEVICE_TABLE(of, sun55i_gmac200_match);
|
| 3/2 | 2026/09/10 13:34 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 7654 output: 42 thoughts: 164 Thoughts: **Analyzing the Patch for Fuzzing Potential** Okay, let's dive into this patch and see if it's a good candidate for fuzzing, applying our standard guidelines, of course. First, I need to understand what's actually being changed. The patch touches two files: `Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml` and `drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c`. The YAML file likely deals with device tree bindings, so we'll need to remember that later. My primary focus right now is on that C file, `dwmac-sun55i.c`. Hmm, right, it's an Allwinner SoC ethernet glue driver. It's an stmmac platform glue driver specifically for Allwinner sun55i and sun60i ARM SoCs. Okay, that gives us a good starting point. Now I need to check the Kconfig. I want to see how this driver is built and configured. What dependencies does it have? Is it a module? What build options do we have to work with when attempting fuzzing? This will all inform how we approach it. This information is crucial for us to identify potential entry points and how we can best target the code for fuzzing. |
| 4/2 | 2026/09/10 13:34 | tool | grepper |
0mArgs:{
"Expression": "DWMAC_SUN55I",
"PathPrefix": "drivers/net/ethernet/stmicro/stmmac/"
}Results: {
"Output": "drivers/net/ethernet/stmicro/stmmac/Kconfig=288=config DWMAC_SUN8I\n--\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-299-\ndrivers/net/ethernet/stmicro/stmmac/Kconfig:300:config DWMAC_SUN55I\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-301-\ttristate \"Allwinner sun55i GMAC200 support\"\n--\ndrivers/net/ethernet/stmicro/stmmac/Makefile=36=obj-$(CONFIG_DWMAC_SUN8I)\t+= dwmac-sun8i.o\ndrivers/net/ethernet/stmicro/stmmac/Makefile:37:obj-$(CONFIG_DWMAC_SUN55I)\t+= dwmac-sun55i.o\ndrivers/net/ethernet/stmicro/stmmac/Makefile-38-obj-$(CONFIG_DWMAC_THEAD)\t+= dwmac-thead.o\n"
} |
| 5/2 | 2026/09/10 13:34 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 8416 output: 44 thoughts: 17 Thoughts: Here's my take on the process, framed as a thought process: **Diving into the DWMAC_SUN55I Kconfig** Okay, time to dig into the `Kconfig` for `DWMAC_SUN55I`. My gut tells me this will be key to understanding how the driver's features are configured and exposed at compile time. I'm expecting to see a lot of dependencies and configuration options related to the specific hardware on the Sun55i platform. Let's see... I'll be looking for things like: * **Chip-specific defines:** I bet there are checks for the specific Sun55i SoC variant. This likely governs register offsets, clock configurations, and interrupt assignments. * **Feature flags:** Are there any options to enable or disable specific MAC features? Things like checksum offloading, VLAN support, DMA settings – these are all fair game. I will be on the lookout for ways to toggle power management capabilities. * **Dependency checks:** I need to understand what other Kconfig options need to be enabled before `DWMAC_SUN55I` becomes available. This will show the interdependencies with other hardware components and drivers. * **Help text:** I hope the comments are clear and detailed. Good `Kconfig` files are well-documented, explaining what each option does and its impact. This will save a lot of debugging time. * **Default values:** It will be good to see the default configuration, as it gives an immediate sense of the intended use case. This will help determine the impact of new changes and ensure that everything is in proper working order. Right, let's start reading and see what insights we can uncover. Time to become one with the `Kconfig`... |
| 6/2 | 2026/09/10 13:34 | tool | read-file |
0mArgs:{
"File": "drivers/net/ethernet/stmicro/stmmac/Kconfig",
"FirstLine": 295,
"LineCount": 20
}Results: {
"Contents": " 295:\t\n 296:\t\t This selects Allwinner SoC glue layer support for the\n 297:\t\t stmmac device driver. This driver is used for H3/A83T/A64\n 298:\t\t EMAC ethernet controller.\n 299:\t\n 300:\tconfig DWMAC_SUN55I\n 301:\t\ttristate \"Allwinner sun55i GMAC200 support\"\n 302:\t\tdefault ARCH_SUNXI\n 303:\t\tdepends on OF \u0026\u0026 (ARCH_SUNXI || COMPILE_TEST)\n 304:\t\tselect MDIO_BUS_MUX\n 305:\t\thelp\n 306:\t\t Support for Allwinner A523/T527 GMAC200 ethernet controllers.\n 307:\t\n 308:\t\t This selects Allwinner SoC glue layer support for the\n 309:\t\t stmmac device driver. This driver is used for A523/T527\n 310:\t\t GMAC200 ethernet controller.\n 311:\t\n 312:\tconfig DWMAC_THEAD\n 313:\t\ttristate \"T-HEAD dwmac support\"\n 314:\t\tdepends on OF \u0026\u0026 (ARCH_THEAD || COMPILE_TEST)\n"
} |
| 7/2 | 2026/09/10 13:34 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 9195 output: 51 thoughts: 356 Thoughts: **Reachability Analysis: My Thoughts** Okay, let's break down this reachability question using the triage philosophy outlined in Sections 1 and 2. My target architecture is amd64, so let's check the criteria outlined in Section 2 for things that might *not* be reachable. First, we need to eliminate non-kernel and non-executable changes, which is a given, so we're looking at things that are structurally unreachable. This instantly brings to mind those hardware dependencies. I'm thinking of: * Vendor-specific PCIe switches, SmartNICs, or GPU drivers. They need those physical ASIC/PCIe cards that aren't emulated in standard QEMU. That list reminds me, for example, of things like `mlxsw`, `pds_core`, `qed`, `ionic`, and `amdgpu`. * Platform drivers for specific ARM/vendor SoCs are also in the unreachable category. Things like Allwinner/Sunxi SoC GMAC ethernet controllers stick out. These are platform devices specific to those SoCs, and, specifically for `ARCH_SUNXI`, `sun55i`, and `sun60i`, they require physical SoC hardware or specific DT board configs on ARM SoCs. In standard amd64 QEMU/GCE syzkaller fuzzing environments, there's no way to instantiate them. That platform device/driver can't be probed because it relies on those OF device tree nodes like `allwinner,sun55i-a523-gmac200` or `allwinner,sun60i-a733-gmac210` on Sunxi SoCs, and we don't have those in this setup. Wait, hold on a second. I need to quickly check if there is *any* possibility of virtual bus or userspace reachability for something like `dwmac-sun55i` on amd64. Let's see... it's a platform driver, registered with `module_platform_driver(sun55i_gmac200_driver)`, and it has that OF match table, `sun55i_gmac200_match`. Let me take a look at the code, in `dwmac-sun55i.c`, and see if there's any clever trickery or indirect access I might be missing. |
| 8/2 | 2026/09/10 13:34 | tool | read-file |
0mArgs:{
"File": "drivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c",
"FirstLine": 240,
"LineCount": 30
}Results: {
"Contents": " 240:\t\t.flags = (STMMAC_FLAG_SPH_DISABLE |\n 241:\t\t\t STMMAC_FLAG_MULTI_MSI_EN |\n 242:\t\t\t STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP),\n 243:\t\t.offset = 0x0,\n 244:\t\t.etxdc_ext_mask = GENMASK(17, 16),\n 245:\t};\n 246:\t\n 247:\tstatic const struct of_device_id sun55i_gmac200_match[] = {\n 248:\t\t{ .compatible = \"allwinner,sun55i-a523-gmac200\",\n 249:\t\t .data = \u0026sun55i_a523_gmac200_data },\n 250:\t\t{ .compatible = \"allwinner,sun60i-a733-gmac210\",\n 251:\t\t .data = \u0026sun60i_a733_gmac210_data },\n 252:\t\t{ }\n 253:\t};\n 254:\tMODULE_DEVICE_TABLE(of, sun55i_gmac200_match);\n 255:\t\n 256:\tstatic struct platform_driver sun55i_gmac200_driver = {\n 257:\t\t.probe = sun55i_gmac200_probe,\n 258:\t\t.driver = {\n 259:\t\t\t.name = \"dwmac-sun55i\",\n 260:\t\t\t.pm\t\t= \u0026stmmac_pltfr_pm_ops,\n 261:\t\t\t.of_match_table = sun55i_gmac200_match,\n 262:\t\t},\n 263:\t};\n 264:\tmodule_platform_driver(sun55i_gmac200_driver);\n 265:\t\n 266:\tMODULE_AUTHOR(\"Chen-Yu Tsai \u003cwens@csie.org\u003e\");\n 267:\tMODULE_DESCRIPTION(\"Allwinner sun55i GMAC200 specific glue layer\");\n 268:\tMODULE_LICENSE(\"GPL\");\n"
} |
| 9/2 | 2026/09/10 13:34 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 10698 output: 134 thoughts: 578 Thoughts: **Analysis of the Target Code and Fuzzing Suitability** Okay, let's break this down. My initial assessment is that this code change isn't a good candidate for fuzzing, given the target environment. First, I need to confirm this is an Allwinner sunxi SoC platform driver. The code's looking for those specific OF compatible strings: `"allwinner,sun55i-a523-gmac200"` and `"allwinner,sun60i-a733-gmac210"`, plus specific device tree properties and hardware resources. Yep, that's what I thought. Clocks, resets, MMIO, the works. Second, I see this only runs on Allwinner sun55i/sun60i SoCs. And it requires a specific architecture – this is ARM/ARM64. The target architecture is amd64. `ARCH_SUNXI` isn't even enabled on amd64, meaning the compiler can only *compile* the code, not actually run and probe it. I know from experience that there won't be any of these platform devices probed in my standard x86_64 or amd64 virtual machines like QEMU or GCE. Let me double check those details real quick. I'm seeing changes in both the documentation (devicetree bindings) and the `dwmac-sun55i.c` driver, which is a platform glue driver for Allwinner sunxi SoC ethernet controllers. This is dependent on the SoC's device tree and requires direct access to memory-mapped hardware registers, resets, and clocks. This code is unreachable on my amd64 virtualized fuzzing test environments. Okay, so the verdict: **WorthFuzzing should be false.** Now to prepare the parameters for `set-results`: * **WorthFuzzing: false** * **EnableConfigs: \[ ]** (an empty array) because there's nothing to enable on this architecture * **FocusSymbols: \[ ]** (another empty array) since we're not focusing on any particular part of this code. * **Reasoning:** The patch is modifying devicetree bindings and the `dwmac-sun55i` platform glue driver, specifically for Allwinner sun55i/sun60i ARM SoCs with the devices defined by the compatible strings (`sun55i-a523-gmac200`, `sun60i-a733-gmac210`). The code is hardware-specific and requires a device tree/physical SoC which is structurally unreachable in standard amd64 virtualized fuzzing environments. Time to call `set-results`. |
| 10/2 | 2026/09/10 13:35 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch updates devicetree documentation and the Allwinner sun55i/sun60i GMAC ethernet glue driver (dwmac-sun55i.c). This driver targets specific ARM/Allwinner SoC hardware (sun55i-a523 and sun60i-a733) via DeviceTree and cannot be probed or executed in standard virtualized amd64 QEMU/GCE fuzzing environments. Therefore, the modified code is structurally unreachable.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch updates devicetree documentation and the Allwinner sun55i/sun60i GMAC ethernet glue driver (dwmac-sun55i.c). This driver targets specific ARM/Allwinner SoC hardware (sun55i-a523 and sun60i-a733) via DeviceTree and cannot be probed or executed in standard virtualized amd64 QEMU/GCE fuzzing environments. Therefore, the modified code is structurally unreachable.",
"WorthFuzzing": false
} |
| 11/1 | 2026/09/10 13:35 | 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) |
|---|