| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/29 10:08 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch modifies the STMicroelectronics / Synopsys DesignWare Ethernet MAC (stmmac) driver to re-apply taprio EST offloading upon interface up and time adjustments. This driver targets physical SoC/PCI hardware and is not available in standard virtualized fuzzing environments (QEMU/GCE).",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/29 10:08 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 32722a22a7f740027fe22fb1d4e7bf050afcca65\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Sat Aug 29 10:08:26 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c\nindex afc516059b897..bbebd33c8a883 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c\n@@ -80,6 +80,39 @@ static int est_configure(struct stmmac_priv *priv, struct stmmac_est *cfg,\n \treturn 0;\n }\n \n+int stmmac_setup_est(struct stmmac_priv *priv)\n+{\n+\tstruct timespec64 current_time, time;\n+\tktime_t current_time_ns, basetime;\n+\tu64 cycle_time;\n+\tint err;\n+\n+\tmutex_lock(\u0026priv-\u003eest_lock);\n+\n+\tpriv-\u003eptp_clock_ops.gettime64(\u0026priv-\u003eptp_clock_ops, \u0026current_time);\n+\tcurrent_time_ns = timespec64_to_ktime(current_time);\n+\n+\ttime.tv_nsec = priv-\u003eest-\u003ebtr_reserve[0];\n+\ttime.tv_sec = priv-\u003eest-\u003ebtr_reserve[1];\n+\tbasetime = timespec64_to_ktime(time);\n+\n+\tcycle_time = (u64)priv-\u003eest-\u003ectr[1] * NSEC_PER_SEC + priv-\u003eest-\u003ectr[0];\n+\n+\ttime = stmmac_calc_tas_basetime(basetime, current_time_ns, cycle_time);\n+\tpriv-\u003eest-\u003ebtr[0] = (u32)time.tv_nsec;\n+\tpriv-\u003eest-\u003ebtr[1] = (u32)time.tv_sec;\n+\n+\terr = stmmac_est_configure(priv, priv, priv-\u003eest,\n+\t\t\t\t priv-\u003eplat-\u003eclk_ptp_rate);\n+\n+\tmutex_unlock(\u0026priv-\u003eest_lock);\n+\n+\tif (err)\n+\t\tnetdev_err(priv-\u003edev, \"failed to re-configure EST\\n\");\n+\n+\treturn err;\n+}\n+\n static void est_irq_status(struct stmmac_priv *priv, struct net_device *dev,\n \t\t\t struct stmmac_extra_stats *x, u32 txqcnt)\n {\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h\nindex f70221c9c84af..f620d3331c2cc 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h\n@@ -65,3 +65,5 @@\n #define EST_GCL_DATA\t\t\t0x00000034\n \n extern const struct stmmac_est_ops dwmac510_est_ops;\n+\n+int stmmac_setup_est(struct stmmac_priv *priv);\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c\nindex d576059c04df9..b30036428188c 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c\n@@ -48,6 +48,7 @@\n #include \"stmmac_ptp.h\"\n #include \"stmmac_fpe.h\"\n #include \"stmmac.h\"\n+#include \"stmmac_est.h\"\n #include \"stmmac_pcs.h\"\n #include \"stmmac_xdp.h\"\n #include \u003clinux/reset.h\u003e\n@@ -4153,11 +4154,22 @@ static int __stmmac_open(struct net_device *dev,\n \tret = stmmac_hw_setup(dev);\n \tif (ret \u003c 0) {\n \t\tnetdev_err(priv-\u003edev, \"%s: Hw setup failed\\n\", __func__);\n-\t\tgoto init_error;\n+\t\treturn ret;\n \t}\n \n \tstmmac_setup_ptp(priv);\n \n+\t/* The core soft reset in stmmac_hw_setup() clears the MTL_EST\n+\t * registers, so re-apply the taprio offload after PTP is up.\n+\t */\n+\tif (priv-\u003eest \u0026\u0026 priv-\u003eest-\u003eenable) {\n+\t\tret = stmmac_setup_est(priv);\n+\t\tif (ret \u003c 0) {\n+\t\t\tpriv-\u003eest-\u003eenable = false;\n+\t\t\treturn ret;\n+\t\t}\n+\t}\n+\n \tstmmac_init_coalesce(priv);\n \n \tphylink_start(priv-\u003ephylink);\n@@ -4181,7 +4193,7 @@ static int __stmmac_open(struct net_device *dev,\n \t\thrtimer_cancel(\u0026priv-\u003edma_conf.tx_queue[chan].txtimer);\n \n \tstmmac_release_ptp(priv);\n-init_error:\n+\n \treturn ret;\n }\n \ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c\nindex 960249960004c..917ef7ddcae61 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c\n@@ -8,6 +8,7 @@\n Author: Rayagond Kokatanur \u003crayagond@vayavyalabs.com\u003e\n *******************************************************************************/\n #include \"stmmac.h\"\n+#include \"stmmac_est.h\"\n #include \"stmmac_ptp.h\"\n \n #define PTP_SAFE_TIME_OFFSET_NS\t500000\n@@ -55,7 +56,6 @@ static int stmmac_adjust_time(struct ptp_clock_info *ptp, s64 delta)\n \tu32 quotient, reminder;\n \tint neg_adj = 0;\n \tbool xmac, est_rst = false;\n-\tint ret;\n \n \txmac = dwmac_is_xmac(priv-\u003eplat-\u003ecore_type);\n \n@@ -84,30 +84,8 @@ static int stmmac_adjust_time(struct ptp_clock_info *ptp, s64 delta)\n \n \t/* Calculate new basetime and re-configured EST after PTP time adjust. */\n \tif (est_rst) {\n-\t\tstruct timespec64 current_time, time;\n-\t\tktime_t current_time_ns, basetime;\n-\t\tu64 cycle_time;\n-\n-\t\tmutex_lock(\u0026priv-\u003eest_lock);\n-\t\tpriv-\u003eptp_clock_ops.gettime64(\u0026priv-\u003eptp_clock_ops, \u0026current_time);\n-\t\tcurrent_time_ns = timespec64_to_ktime(current_time);\n-\t\ttime.tv_nsec = priv-\u003eest-\u003ebtr_reserve[0];\n-\t\ttime.tv_sec = priv-\u003eest-\u003ebtr_reserve[1];\n-\t\tbasetime = timespec64_to_ktime(time);\n-\t\tcycle_time = (u64)priv-\u003eest-\u003ectr[1] * NSEC_PER_SEC +\n-\t\t\t priv-\u003eest-\u003ectr[0];\n-\t\ttime = stmmac_calc_tas_basetime(basetime,\n-\t\t\t\t\t\tcurrent_time_ns,\n-\t\t\t\t\t\tcycle_time);\n-\n-\t\tpriv-\u003eest-\u003ebtr[0] = (u32)time.tv_nsec;\n-\t\tpriv-\u003eest-\u003ebtr[1] = (u32)time.tv_sec;\n \t\tpriv-\u003eest-\u003eenable = true;\n-\t\tret = stmmac_est_configure(priv, priv, priv-\u003eest,\n-\t\t\t\t\t priv-\u003eplat-\u003eclk_ptp_rate);\n-\t\tmutex_unlock(\u0026priv-\u003eest_lock);\n-\t\tif (ret)\n-\t\t\tnetdev_err(priv-\u003edev, \"failed to configure EST\\n\");\n+\t\tstmmac_setup_est(priv);\n \t}\n \n \treturn 0;\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c\nindex 14cabe76e53ec..b41df317d73cc 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c\n@@ -10,6 +10,7 @@\n #include \"dwmac4.h\"\n #include \"dwmac5.h\"\n #include \"stmmac.h\"\n+#include \"stmmac_est.h\"\n \n static void tc_fill_all_pass_entry(struct stmmac_tc_entry *entry)\n {\n@@ -968,8 +969,7 @@ static int tc_taprio_configure(struct stmmac_priv *priv,\n {\n \tu32 size, wid = priv-\u003edma_cap.estwid, dep = priv-\u003edma_cap.estdep;\n \tstruct netlink_ext_ack *extack = qopt-\u003emqprio.extack;\n-\tstruct timespec64 time, current_time, qopt_time;\n-\tktime_t current_time_ns;\n+\tstruct timespec64 time;\n \tint i, ret = 0;\n \tu64 ctr;\n \n@@ -1069,34 +1069,23 @@ static int tc_taprio_configure(struct stmmac_priv *priv,\n \t}\n \n \tmutex_lock(\u0026priv-\u003eest_lock);\n-\t/* Adjust for real system time */\n-\tpriv-\u003eptp_clock_ops.gettime64(\u0026priv-\u003eptp_clock_ops, \u0026current_time);\n-\tcurrent_time_ns = timespec64_to_ktime(current_time);\n-\ttime = stmmac_calc_tas_basetime(qopt-\u003ebase_time, current_time_ns,\n-\t\t\t\t\tqopt-\u003ecycle_time);\n-\n-\tpriv-\u003eest-\u003ebtr[0] = (u32)time.tv_nsec;\n-\tpriv-\u003eest-\u003ebtr[1] = (u32)time.tv_sec;\n \n-\tqopt_time = ktime_to_timespec64(qopt-\u003ebase_time);\n-\tpriv-\u003eest-\u003ebtr_reserve[0] = (u32)qopt_time.tv_nsec;\n-\tpriv-\u003eest-\u003ebtr_reserve[1] = (u32)qopt_time.tv_sec;\n+\ttime = ktime_to_timespec64(qopt-\u003ebase_time);\n+\tpriv-\u003eest-\u003ebtr_reserve[0] = (u32)time.tv_nsec;\n+\tpriv-\u003eest-\u003ebtr_reserve[1] = (u32)time.tv_sec;\n \n \tctr = qopt-\u003ecycle_time;\n \tpriv-\u003eest-\u003ectr[0] = do_div(ctr, NSEC_PER_SEC);\n \tpriv-\u003eest-\u003ectr[1] = (u32)ctr;\n \n \tpriv-\u003eest-\u003eter = qopt-\u003ecycle_time_extension;\n-\n \ttc_taprio_map_maxsdu_txq(priv, qopt);\n \n-\tret = stmmac_est_configure(priv, priv, priv-\u003eest,\n-\t\t\t\t priv-\u003eplat-\u003eclk_ptp_rate);\n \tmutex_unlock(\u0026priv-\u003eest_lock);\n-\tif (ret) {\n-\t\tnetdev_err(priv-\u003edev, \"failed to configure EST\\n\");\n+\n+\tret = stmmac_setup_est(priv);\n+\tif (ret)\n \t\tgoto disable;\n-\t}\n \n \tret = stmmac_fpe_map_preemption_class(priv, priv-\u003edev, extack,\n \t\t\t\t\t qopt-\u003emqprio.preemptible_tcs);\n"
} |
| 2/1 | 2026/08/29 10:08 | agent | patch-evaluator |
0mModel:core Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the STMicroelectronics / Synopsys DesignWare Ethernet MAC (stmmac) driver to re-apply taprio EST offloading upon interface up and time adjustments. This driver targets physical SoC/PCI hardware and is not available in standard virtualized fuzzing environments (QEMU/GCE).",
"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 32722a22a7f740027fe22fb1d4e7bf050afcca65
Author: syz-cluster <triage@syzkaller.com>
Date: Sat Aug 29 10:08:26 2026 +0000
syz-cluster: applied patch under review
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c
index afc516059b897..bbebd33c8a883 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.c
@@ -80,6 +80,39 @@ static int est_configure(struct stmmac_priv *priv, struct stmmac_est *cfg,
return 0;
}
+int stmmac_setup_est(struct stmmac_priv *priv)
+{
+ struct timespec64 current_time, time;
+ ktime_t current_time_ns, basetime;
+ u64 cycle_time;
+ int err;
+
+ mutex_lock(&priv->est_lock);
+
+ priv->ptp_clock_ops.gettime64(&priv->ptp_clock_ops, ¤t_time);
+ current_time_ns = timespec64_to_ktime(current_time);
+
+ time.tv_nsec = priv->est->btr_reserve[0];
+ time.tv_sec = priv->est->btr_reserve[1];
+ basetime = timespec64_to_ktime(time);
+
+ cycle_time = (u64)priv->est->ctr[1] * NSEC_PER_SEC + priv->est->ctr[0];
+
+ time = stmmac_calc_tas_basetime(basetime, current_time_ns, cycle_time);
+ priv->est->btr[0] = (u32)time.tv_nsec;
+ priv->est->btr[1] = (u32)time.tv_sec;
+
+ err = stmmac_est_configure(priv, priv, priv->est,
+ priv->plat->clk_ptp_rate);
+
+ mutex_unlock(&priv->est_lock);
+
+ if (err)
+ netdev_err(priv->dev, "failed to re-configure EST\n");
+
+ return err;
+}
+
static void est_irq_status(struct stmmac_priv *priv, struct net_device *dev,
struct stmmac_extra_stats *x, u32 txqcnt)
{
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h
index f70221c9c84af..f620d3331c2cc 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_est.h
@@ -65,3 +65,5 @@
#define EST_GCL_DATA 0x00000034
extern const struct stmmac_est_ops dwmac510_est_ops;
+
+int stmmac_setup_est(struct stmmac_priv *priv);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index d576059c04df9..b30036428188c 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -48,6 +48,7 @@
#include "stmmac_ptp.h"
#include "stmmac_fpe.h"
#include "stmmac.h"
+#include "stmmac_est.h"
#include "stmmac_pcs.h"
#include "stmmac_xdp.h"
#include <linux/reset.h>
@@ -4153,11 +4154,22 @@ static int __stmmac_open(struct net_device *dev,
ret = stmmac_hw_setup(dev);
if (ret < 0) {
netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
- goto init_error;
+ return ret;
}
stmmac_setup_ptp(priv);
+ /* The core soft reset in stmmac_hw_setup() clears the MTL_EST
+ * registers, so re-apply the taprio offload after PTP is up.
+ */
+ if (priv->est && priv->est->enable) {
+ ret = stmmac_setup_est(priv);
+ if (ret < 0) {
+ priv->est->enable = false;
+ return ret;
+ }
+ }
+
stmmac_init_coalesce(priv);
phylink_start(priv->phylink);
@@ -4181,7 +4193,7 @@ static int __stmmac_open(struct net_device *dev,
hrtimer_cancel(&priv->dma_conf.tx_queue[chan].txtimer);
stmmac_release_ptp(priv);
-init_error:
+
return ret;
}
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c
index 960249960004c..917ef7ddcae61 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c
@@ -8,6 +8,7 @@
Author: Rayagond Kokatanur <rayagond@vayavyalabs.com>
*******************************************************************************/
#include "stmmac.h"
+#include "stmmac_est.h"
#include "stmmac_ptp.h"
#define PTP_SAFE_TIME_OFFSET_NS 500000
@@ -55,7 +56,6 @@ static int stmmac_adjust_time(struct ptp_clock_info *ptp, s64 delta)
u32 quotient, reminder;
int neg_adj = 0;
bool xmac, est_rst = false;
- int ret;
xmac = dwmac_is_xmac(priv->plat->core_type);
@@ -84,30 +84,8 @@ static int stmmac_adjust_time(struct ptp_clock_info *ptp, s64 delta)
/* Calculate new basetime and re-configured EST after PTP time adjust. */
if (est_rst) {
- struct timespec64 current_time, time;
- ktime_t current_time_ns, basetime;
- u64 cycle_time;
-
- mutex_lock(&priv->est_lock);
- priv->ptp_clock_ops.gettime64(&priv->ptp_clock_ops, ¤t_time);
- current_time_ns = timespec64_to_ktime(current_time);
- time.tv_nsec = priv->est->btr_reserve[0];
- time.tv_sec = priv->est->btr_reserve[1];
- basetime = timespec64_to_ktime(time);
- cycle_time = (u64)priv->est->ctr[1] * NSEC_PER_SEC +
- priv->est->ctr[0];
- time = stmmac_calc_tas_basetime(basetime,
- current_time_ns,
- cycle_time);
-
- priv->est->btr[0] = (u32)time.tv_nsec;
- priv->est->btr[1] = (u32)time.tv_sec;
priv->est->enable = true;
- ret = stmmac_est_configure(priv, priv, priv->est,
- priv->plat->clk_ptp_rate);
- mutex_unlock(&priv->est_lock);
- if (ret)
- netdev_err(priv->dev, "failed to configure EST\n");
+ stmmac_setup_est(priv);
}
return 0;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
index 14cabe76e53ec..b41df317d73cc 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
@@ -10,6 +10,7 @@
#include "dwmac4.h"
#include "dwmac5.h"
#include "stmmac.h"
+#include "stmmac_est.h"
static void tc_fill_all_pass_entry(struct stmmac_tc_entry *entry)
{
@@ -968,8 +969,7 @@ static int tc_taprio_configure(struct stmmac_priv *priv,
{
u32 size, wid = priv->dma_cap.estwid, dep = priv->dma_cap.estdep;
struct netlink_ext_ack *extack = qopt->mqprio.extack;
- struct timespec64 time, current_time, qopt_time;
- ktime_t current_time_ns;
+ struct timespec64 time;
int i, ret = 0;
u64 ctr;
@@ -1069,34 +1069,23 @@ static int tc_taprio_configure(struct stmmac_priv *priv,
}
mutex_lock(&priv->est_lock);
- /* Adjust for real system time */
- priv->ptp_clock_ops.gettime64(&priv->ptp_clock_ops, ¤t_time);
- current_time_ns = timespec64_to_ktime(current_time);
- time = stmmac_calc_tas_basetime(qopt->base_time, current_time_ns,
- qopt->cycle_time);
-
- priv->est->btr[0] = (u32)time.tv_nsec;
- priv->est->btr[1] = (u32)time.tv_sec;
- qopt_time = ktime_to_timespec64(qopt->base_time);
- priv->est->btr_reserve[0] = (u32)qopt_time.tv_nsec;
- priv->est->btr_reserve[1] = (u32)qopt_time.tv_sec;
+ time = ktime_to_timespec64(qopt->base_time);
+ priv->est->btr_reserve[0] = (u32)time.tv_nsec;
+ priv->est->btr_reserve[1] = (u32)time.tv_sec;
ctr = qopt->cycle_time;
priv->est->ctr[0] = do_div(ctr, NSEC_PER_SEC);
priv->est->ctr[1] = (u32)ctr;
priv->est->ter = qopt->cycle_time_extension;
-
tc_taprio_map_maxsdu_txq(priv, qopt);
- ret = stmmac_est_configure(priv, priv, priv->est,
- priv->plat->clk_ptp_rate);
mutex_unlock(&priv->est_lock);
- if (ret) {
- netdev_err(priv->dev, "failed to configure EST\n");
+
+ ret = stmmac_setup_est(priv);
+ if (ret)
goto disable;
- }
ret = stmmac_fpe_map_preemption_class(priv, priv->dev, extack,
qopt->mqprio.preemptible_tcs);
|
| 3/2 | 2026/08/29 10:08 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 5130 output: 38 thoughts: 290 Thoughts: **Fuzzing Feasibility Assessment** Okay, let's take a look at this patch. My initial thought is to figure out if fuzzing this code is even worthwhile. It looks like it touches the `stmmac` driver, specifically within the `drivers/net/ethernet/stmicro/stmmac/` directory. I see modifications in `stmmac_est.c`, `stmmac_est.h`, `stmmac_main.c`, `stmmac_ptp.c`, and `stmmac_tc.c`. The core change seems to be the introduction of this `stmmac_setup_est` function. It looks like `__stmmac_open()` calls it if `priv->est && priv->est->enable`. The other changes refactor some existing functionality in `stmmac_adjust_time()` and `tc_taprio_configure()` to make use of the new function. Before I commit to anything, I need to understand the hardware dependencies here. `stmmac` is the Synopsys DesignWare Ethernet MAC and STMicroelectronics' implementation, right? Is this something that's likely to be present in a virtualized environment like QEMU, or is it specific hardware? I need to check where `stmmac` is commonly used. Can I reasonably expect to find emulated `stmmac` devices in QEMU, or do I need to hunt for actual PCI `stmmac` devices for testing? Let me do a quick `grep` in the `Kconfig` files and driver directories to get a clearer picture of its configuration and usage. I want to see how readily I can build a test environment. |
| 4/2 | 2026/08/29 10:08 | tool | grepper |
0mArgs:{
"Expression": "config STMMAC_",
"PathPrefix": "drivers/net/ethernet/stmicro/stmmac"
}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--\ndrivers/net/ethernet/stmicro/stmmac/Kconfig=18=if STMMAC_ETH\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-19-\ndrivers/net/ethernet/stmicro/stmmac/Kconfig:20:config STMMAC_SELFTESTS\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-21-\tbool \"Support for STMMAC Selftests\"\n--\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-28-\ndrivers/net/ethernet/stmicro/stmmac/Kconfig:29:config STMMAC_PLATFORM\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-30-\ttristate \"STMMAC Platform bus support\"\n--\ndrivers/net/ethernet/stmicro/stmmac/Kconfig=371=endif # STMMAC_PLATFORM\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-372-\ndrivers/net/ethernet/stmicro/stmmac/Kconfig:373:config STMMAC_LIBPCI\ndrivers/net/ethernet/stmicro/stmmac/Kconfig-374-\ttristate\n--\ndrivers/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"
} |
| 5/2 | 2026/08/29 10:08 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 6346 output: 51 thoughts: 364 Thoughts: **My Assessment of the STMMAC Driver and its Worthiness for Fuzzing** Okay, let's break this down. My initial thought is to figure out the emulation situation for `stmmac`. Is this a standard QEMU emulated device, or are we looking at something specific to a particular System-on-Chip (SoC) or Intel PCI like Quark or Elkhart Lake? The next thing I'm asking myself is, which QEMU machines actually *use* `dwmac` or `stmmac`? Or, is this something that always points to physical hardware? I'm specifically referencing the ethernet controller drivers here. Hold on, let me quickly review these instructions. They’re giving criteria for determining if something is "WorthFuzzing=false". Hmm, the key points here are: unreachable code in virtualized environments (like GCE or QEMU even with emulated hardware, such as USB gadget or mac80211_hwsim), vendor-specific drivers that need physical PCIe hardware (like `mlxsw`, `pds_core`, `qed`, etc. which are the sort of things I deal with on a regular basis), and driver teardown callbacks that are only executed during PCI hot-unplug or sysfs driver unbind operations. So, circling back, does QEMU have proper emulation of STMMAC? Essentially, can I get it to work? Does QEMU even emulate `dwmac` or `stmmac` ethernet? I need to know. Now, I'll need to figure out which QEMU platforms support `stmmac` natively, whether it’s used with Allwinner Sunxi, STM32, etc. Or, can I reach it on standard x86_64 or arm64 fuzzing targets? I should really figure out whether it is actually probe-able or instantiated. Okay, let's dig into the code. I'll need to look at `stmmac_pci.c` and `dwmac_*.c` and see which specific chips they support. This will give me some solid answers. |
| 6/2 | 2026/08/29 10:08 | tool | grepper |
0mArgs:{
"Expression": "MODULE_DEVICE_TABLE|pci_device_id|platform_device_id",
"PathPrefix": "drivers/net/ethernet/stmicro/stmmac"
}Results: {
"Output": "drivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c=119=static const struct of_device_id anarion_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c-122-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c:123:MODULE_DEVICE_TABLE(of, anarion_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c-124-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c=353=static const struct of_device_id dwc_eth_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c-358-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c:359:MODULE_DEVICE_TABLE(of, dwc_eth_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c-360-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c=350=static const struct of_device_id eic7700_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c-359-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c:360:MODULE_DEVICE_TABLE(of, eic7700_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c-361-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c=52=static const struct of_device_id dwmac_generic_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c-66-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c:67:MODULE_DEVICE_TABLE(of, dwmac_generic_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c-68-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c=384=static const struct of_device_id imx_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c-389-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c:390:MODULE_DEVICE_TABLE(of, imx_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c-391-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c=262=static const struct of_device_id ingenic_mac_of_matches[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c-269-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c:270:MODULE_DEVICE_TABLE(of, ingenic_mac_of_matches);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c-271-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c=36=static const struct of_device_id intel_eth_plat_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c-39-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c:40:MODULE_DEVICE_TABLE(of, intel_eth_plat_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c-41-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=1263=static int intel_eth_pci_probe(struct pci_dev *pdev,\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1264:\t\t\t const struct pci_device_id *id)\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1265-{\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c=1362=static void intel_eth_pci_remove(struct pci_dev *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1394-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1395:static const struct pci_device_id intel_eth_pci_id_table[] = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1396-\t{ PCI_DEVICE_DATA(INTEL, QUARK, \u0026quark_info) },\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1414-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:1415:MODULE_DEVICE_TABLE(pci, intel_eth_pci_id_table);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel.c-1416-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c=491=static const struct of_device_id ipq806x_gmac_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c-494-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c:495:MODULE_DEVICE_TABLE(of, ipq806x_gmac_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c-496-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c=479=static int loongson_dwmac_fix_reset(struct stmmac_priv *priv)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-497-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:498:static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id *id)\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-499-{\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c=578=static void loongson_dwmac_remove(struct pci_dev *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-595-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:596:static const struct pci_device_id loongson_dwmac_id_table[] = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-597-\t{ PCI_DEVICE_DATA(LOONGSON, GMAC1, \u0026loongson_gmac_pci_info) },\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-601-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:602:MODULE_DEVICE_TABLE(pci, loongson_dwmac_id_table);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c-603-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c=216=static const struct of_device_id ls1x_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c-226-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c:227:MODULE_DEVICE_TABLE(of, ls1x_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c-228-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c=71=static const struct of_device_id lpc18xx_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c-74-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c:75:MODULE_DEVICE_TABLE(of, lpc18xx_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c-76-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c=662=static const struct of_device_id mediatek_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c-669-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:670:MODULE_DEVICE_TABLE(of, mediatek_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c-671-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c=76=static const struct of_device_id meson6_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c-79-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c:80:MODULE_DEVICE_TABLE(of, meson6_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c-81-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c=482=static const struct of_device_id meson8b_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c-504-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c:505:MODULE_DEVICE_TABLE(of, meson8b_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c-506-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c=264=static int motorcomm_setup_irq(struct pci_dev *pdev,\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-292-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c:293:static int motorcomm_probe(struct pci_dev *pdev, const struct pci_device_id *id)\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-294-{\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c=362=static void motorcomm_remove(struct pci_dev *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-366-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c:367:static const struct pci_device_id dwmac_motorcomm_pci_id_table[] = {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-368-\t{ PCI_DEVICE(PCI_VENDOR_ID_MOTORCOMM, 0x6801) },\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-370-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c:371:MODULE_DEVICE_TABLE(pci, dwmac_motorcomm_pci_id_table);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c-372-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c=118=static const struct of_device_id nvt_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c-121-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c:122:MODULE_DEVICE_TABLE(of, nvt_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c-123-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c=800=static const struct of_device_id qcom_ethqos_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c-806-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c:807:MODULE_DEVICE_TABLE(of, qcom_ethqos_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c-808-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c=216=static const struct of_device_id renesas_gbeth_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c-221-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c:222:MODULE_DEVICE_TABLE(of, renesas_gbeth_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c-223-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c=1616=static const struct of_device_id rk_gmac_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c-1634-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c:1635:MODULE_DEVICE_TABLE(of, rk_gmac_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c-1636-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c=75=static const struct of_device_id rzn1_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c-78-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c:79:MODULE_DEVICE_TABLE(of, rzn1_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c-80-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c=216=static const struct of_device_id s32_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c-219-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c:220:MODULE_DEVICE_TABLE(of, s32_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c-221-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c=673=static const struct of_device_id socfpga_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c-678-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c:679:MODULE_DEVICE_TABLE(of, socfpga_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c-680-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c=72=static const struct of_device_id sophgo_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c-76-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c:77:MODULE_DEVICE_TABLE(of, sophgo_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c-78-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c=210=static const struct of_device_id spacemit_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c-213-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c:214:MODULE_DEVICE_TABLE(of, spacemit_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c-215-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c=160=static const struct of_device_id starfive_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c-164-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c:165:MODULE_DEVICE_TABLE(of, starfive_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c-166-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c=296=static const struct of_device_id sti_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c-299-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c:300:MODULE_DEVICE_TABLE(of, sti_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c-301-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c=662=static const struct of_device_id stm32_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c-668-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c:669:MODULE_DEVICE_TABLE(of, stm32_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c-670-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c=141=static const struct of_device_id sun55i_gmac200_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c-144-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c:145:MODULE_DEVICE_TABLE(of, sun55i_gmac200_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c-146-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c=1268=static const struct of_device_id sun8i_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c-1282-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c:1283:MODULE_DEVICE_TABLE(of, sun8i_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c-1284-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c=150=static const struct of_device_id sun7i_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c-153-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c:154:MODULE_DEVICE_TABLE(of, sun7i_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c-155-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c=397=static const struct of_device_id tegra_mgbe_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c-400-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c:401:MODULE_DEVICE_TABLE(of, tegra_mgbe_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c-402-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c=267=static const struct of_device_id thead_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c-270-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c:271:MODULE_DEVICE_TABLE(of, thead_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c-272-\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c=255=static const struct of_device_id visconti_eth_dwmac_match[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c-258-};\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c:259:MODULE_DEVICE_TABLE(of, visconti_eth_dwmac_match);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c-260-\n--\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-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c=192=static void stmmac_pci_remove(struct pci_dev *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-202-\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) },\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c-209-\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-\n"
} |
| 7/2 | 2026/08/29 10:08 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 13656 output: 52 thoughts: 786 Thoughts: **Analyzing stmmac Emulation in QEMU and Syzkaller for Fuzzing** Okay, let's break this down. I'm looking at `stmmac`, the physical Ethernet MAC controller driver used across a range of SoCs and PCI devices – STM32, Allwinner, Rockchip, Intel, Tegra, and so on. My initial thought is, is this thing emulated in a standard QEMU environment or on GCE? Specifically, does standard QEMU even *handle* `stmmac` or `dwmac`? I need to confirm that. Let me rephrase: does QEMU offer any emulation of `stmmac` or `dwmac`? Or, does it depend on real, physical SoC or PCIe hardware which is not emulated? I'll re-check what specific QEMU machines might include dwmac or stmmac, or if it's considered exclusively a physical hardware component. A quick review of available QEMU network devices—e1000, igb, virtio-net, etc.—shows many emulated NICs. On the ARM side, I see some more specific emulations, like smc91c111 and imx_fec. Looking at the Allwinner sun4i/sun8i offerings in QEMU, the emulated devices are `allwinner-emac` and `allwinner-sun8i-emac`. Interesting. But, do these relate to the DWMAC or stmmac drivers? No, the `allwinner-sun8i-emac.c` file provides some clarity. Okay, back to the core question: Does QEMU *actually* emulate STMMAC / DWMAC? Even if there's some obscure board emulation out there, let's consider the fuzzing perspective with syzkaller. I need to refer back to how syzkaller fuzzes and what the instruction set says about its use cases. Specifically, syzkaller will "Return WorthFuzzing=false" if the patch only includes code paths that are impossible to reach in virtual environments (like GCE or QEMU), even when using software-emulated hardware. It also excludes vendor-specific PCIe switch drivers, SmartNIC, or GPU drivers. Additionally, it skips driver teardown callbacks. I must keep this in mind. Now, let's step back a bit and consider the general landscape of ethernet drivers, located in `drivers/net/ethernet/*`. Linux kernel fuzzing with syzkaller operates within standard QEMU (x86_64, arm64) or GCE VMs. The ethernet drivers in that directory are primarily for specific hardware NICs (like Intel e1000, r8169, Broadcom tg3, Mellanox mlx4/mlx5, Chelsio cxgb, etc.) and they are often emulated in QEMU. But now, back to the central question: Is `stmmac` hardware present within these standard QEMU or GCE environments used for fuzzing? From everything I've seen, it's clear: No. The standard QEMU x86_64 / arm64 VMs used by syzkaller do *not* instantiate `stmmac` devices. It isn't part of that standard environment. So, let's re-evaluate: can I instantiate `stmmac` using a platform device or netlink or some mock framework? I should check if there are virtual or mock `stmmac` drivers around. |
| 8/2 | 2026/08/29 10:09 | tool | grepper |
0mArgs:{
"Expression": "platform_device_register.*stmmac|stmmac_probe_config_dt",
"PathPrefix": "drivers/net/ethernet/stmicro/stmmac"
}Results: {
"Output": "drivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c=93=static int anarion_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c-103-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c:104:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c-105-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c=283=static int dwc_eth_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c-306-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c:307:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c-308-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c=167=static int eic7700_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c-180-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c:181:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c-182-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c=19=static int dwmac_generic_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c-29-\tif (pdev-\u003edev.of_node) {\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c:30:\t\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-generic.c-31-\t\tif (IS_ERR(plat_dat)) {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c=293=static int imx_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c-308-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c:309:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-imx.c-310-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c=154=static int ingenic_mac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c-166-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c:167:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c-168-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c=42=static int intel_eth_plat_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c-53-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c:54:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c-55-\tif (IS_ERR(plat_dat)) {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c=374=static int ipq806x_gmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c-386-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c:387:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c-388-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c=158=static int ls1x_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c-187-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c:188:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c-189-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c=42=static int lpc18xx_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c-52-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c:53:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c-54-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c=599=static int mediatek_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c-630-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:631:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c-632-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c=47=static int meson6_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c-57-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c:58:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson.c-59-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c=382=static int meson8b_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c-392-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c:393:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c-394-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c=82=static int nvt_gmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c-93-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c:94:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c-95-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c=684=static int qcom_ethqos_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c-698-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c:699:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c-700-\tif (IS_ERR(plat_dat)) {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c=131=static int renesas_gbeth_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c-145-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c:146:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c-147-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c=1568=static int rk_gmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c-1584-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c:1585:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rk.c-1586-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c=48=static int rzn1_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c-58-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c:59:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c-60-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c=144=static int s32_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c-162-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c:163:\tplat = devm_stmmac_probe_config_dt(pdev, res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-s32.c-164-\tif (IS_ERR(plat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c=596=static int socfpga_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c-614-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c:615:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c-616-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c=35=static int sophgo_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c-47-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c:48:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c-49-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c=147=static int spacemit_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c-168-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c:169:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c-170-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c=90=static int starfive_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c-102-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c:103:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c-104-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c=249=static int sti_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c-266-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c:267:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sti.c-268-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c=525=static int stm32_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c-536-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c:537:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c-538-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c=105=static int sun55i_gmac200_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c-116-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c:117:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun55i.c-118-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c=1105=static int sun8i_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c-1173-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c:1174:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c-1175-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c=99=static int sun7i_gmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c-110-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c:111:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c-112-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c=214=static int tegra_mgbe_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c-319-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c:320:\tplat = devm_stmmac_probe_config_dt(pdev, res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c-321-\tif (IS_ERR(plat)) {\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c=216=static int thead_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c-229-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c:230:\tplat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-thead.c-231-\tif (IS_ERR(plat))\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c=205=static int visconti_eth_dwmac_probe(struct platform_device *pdev)\n--\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c-215-\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c:216:\tplat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);\ndrivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c-217-\tif (IS_ERR(plat_dat))\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c=393=static const char * const stmmac_gmac4_compats[] = {\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-405-/**\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:406: * stmmac_probe_config_dt - parse device-tree driver parameters\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-407- * @pdev: platform_device structure\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c=413=static struct plat_stmmacenet_data *\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:414:stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-415-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c=641=static void devm_stmmac_remove_config_dt(void *data)\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-651-/**\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:652: * devm_stmmac_probe_config_dt\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-653- * @pdev: platform_device structure\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-654- * @mac: MAC address to use\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:655: * Description: Devres variant of stmmac_probe_config_dt().\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-656- */\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c=657=struct plat_stmmacenet_data *\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:658:devm_stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-659-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-662-\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:663:\tplat = stmmac_probe_config_dt(pdev, mac);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-664-\tif (IS_ERR(plat))\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c=675=struct plat_stmmacenet_data *\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:676:devm_stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-677-{\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-680-#endif /* CONFIG_OF */\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:681:EXPORT_SYMBOL_GPL(devm_stmmac_probe_config_dt);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.c-682-\n--\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.h=14=struct plat_stmmacenet_data *\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.h:15:devm_stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac);\ndrivers/net/ethernet/stmicro/stmmac/stmmac_platform.h-16-\n"
} |
| 9/2 | 2026/08/29 10:09 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 21762 output: 94 thoughts: 466 Thoughts: **My Assessment of the Patch's Fuzzing Potential** Okay, let me think this through. Based on the files I'm seeing, these look like platform-specific or PCI drivers for the STMMAC/DWMAC Ethernet MAC from Synopsys DesignWare. Right off the bat, I can tell these are *not* virtual network devices like tun, tap, or even something emulated by standard QEMU. That's a good starting point. Now, let's go back and carefully apply the prompt's exclusion criteria. I need to make sure I haven't missed anything. I'm focusing on the specific checks: documentation, config files, comments, logging, constants, unreachable code in standard QEMU, vendor-specific PCIe/SmartNIC/GPU drivers, and driver teardown callbacks. Specifically, the stmmac driver is designed to work with Synopsys DesignWare and STMicroelectronics MAC hardware. This means it *needs* real hardware or a particular SoC platform; it's *not* something that's properly emulated in a standard QEMU or GCE environment. This immediately suggests its code paths are largely off-limits to fuzzing in these standard virtualized set-ups. Given that, I'm confident in saying `WorthFuzzing` should be `false`. The reasoning is clear: the changes are within the STMicroelectronics/Synopsys DesignWare Ethernet MAC (stmmac) driver. It's a hardware-specific network driver that demands physical hardware/SoCs, which are not accessible within the confines of standard virtualized environments like QEMU and GCE. Therefore, I'm going to set `EnableConfigs` and `FocusSymbols` to empty and make this decision. |
| 10/2 | 2026/08/29 10:09 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch modifies the STMicroelectronics / Synopsys DesignWare Ethernet MAC (stmmac) driver to re-apply taprio EST offloading upon interface up and time adjustments. This driver targets physical SoC/PCI hardware and is not available in standard virtualized fuzzing environments (QEMU/GCE).",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the STMicroelectronics / Synopsys DesignWare Ethernet MAC (stmmac) driver to re-apply taprio EST offloading upon interface up and time adjustments. This driver targets physical SoC/PCI hardware and is not available in standard virtualized fuzzing environments (QEMU/GCE).",
"WorthFuzzing": false
} |
| 11/1 | 2026/08/29 10:09 | 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) |
|---|