AI Trajectory


Trajectory: (Expand/Collapse All)
Seq Timestamp Type Name Duration
0/0 2026/09/13 14:30 flow patch-triage
0m Args:
null

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "KMSANReasoning": "",
  "NeedsKMSAN": false,
  "Reasoning": "The patch modifies `rvu_mcs_ptp_cfg()` in `drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c`, adding a NULL check for the pointer returned by `mcs_get_pdata()`. This code is part of the Marvell OcteonTX2 RVU Admin Function driver, which requires vendor-specific physical SmartNIC / SoC ASIC hardware (Cavium/Marvell OcteonTX2/CN10K PCIe devices) not emulated in standard virtualized environments like QEMU. Consequently, the modified code is structurally unreachable for syzkaller fuzzing.",
  "WorthFuzzing": false
}

1/1 2026/09/13 14:30 action read-patch-diff
0m Args:
null

Results:
{
  "PatchDiff": "commit 91306721c71cad9e7fbb5cc1abe65c658993c9eb\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate:   Sun Sep 13 14:30:54 2026 +0000\n\n    syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c b/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c\nindex fce22e314cac0..5e24d43d5fc79 100644\n--- a/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c\n+++ b/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c\n@@ -50,6 +50,8 @@ void rvu_mcs_ptp_cfg(struct rvu *rvu, u8 rpm_id, u8 lmac_id, bool ena)\n \t/* CNF10K-B */\n \tif (rvu-\u003emcs_blk_cnt \u003e 1) {\n \t\tmcs = mcs_get_pdata(rpm_id);\n+\t\tif (!mcs)\n+\t\t\treturn;\n \t\tcfg = mcs_reg_read(mcs, MCSX_PEX_RX_SLAVE_PEX_CONFIGURATION);\n \t\tif (ena)\n \t\t\tcfg |= BIT_ULL(lmac_id);\n"
}

2/1 2026/09/13 14:30 agent patch-evaluator
0m Model:
core

Args:
null

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "Reasoning": "The patch modifies `rvu_mcs_ptp_cfg()` in `drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c`, adding a NULL check for the pointer returned by `mcs_get_pdata()`. This code is part of the Marvell OcteonTX2 RVU Admin Function driver, which requires vendor-specific physical SmartNIC / SoC ASIC hardware (Cavium/Marvell OcteonTX2/CN10K PCIe devices) not emulated in standard virtualized environments like QEMU. Consequently, the modified code is structurally unreachable for syzkaller fuzzing.",
  "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 91306721c71cad9e7fbb5cc1abe65c658993c9eb
Author: syz-cluster <triage@syzkaller.com>
Date:   Sun Sep 13 14:30:54 2026 +0000

    syz-cluster: applied patch under review

diff --git a/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c b/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c
index fce22e314cac0..5e24d43d5fc79 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c
@@ -50,6 +50,8 @@ void rvu_mcs_ptp_cfg(struct rvu *rvu, u8 rpm_id, u8 lmac_id, bool ena)
 	/* CNF10K-B */
 	if (rvu->mcs_blk_cnt > 1) {
 		mcs = mcs_get_pdata(rpm_id);
+		if (!mcs)
+			return;
 		cfg = mcs_reg_read(mcs, MCSX_PEX_RX_SLAVE_PEX_CONFIGURATION);
 		if (ena)
 			cfg |= BIT_ULL(lmac_id);

3/2 2026/09/13 14:30 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 2968
							output: 44
							thoughts: 423
						

Thoughts:
**Analyzing this Patch: A Quick Deep Dive**

Okay, let's dive into this patch. My immediate thought is to understand the implications within the OcteonTX2 ecosystem. The diff is targeting `drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c`, which tells me we're dealing with the Marvell Octeon TX2 family, specifically the AF (Application Fabric) component, probably related to network interface configuration. Given my experience with these SoCs, I'm already mentally mapping the relevant hardware blocks.

Looking at the code, it's modifying the `rvu_mcs_ptp_cfg` function. This function seems to handle Precision Time Protocol (PTP) configuration, probably for a specific LMAC (Logical MAC) ID within the OcteonTX2. The key change is the addition of a null check for `mcs` before accessing its members. It appears there was a potential for a null pointer dereference there. Given the context of the `mcs_get_pdata` function, it must have been returning NULL in some scenarios. The introduction of the null check seems straightforward but, I am curious as to the particular code path that can produce the failure.

My next step is to investigate the Kconfig options for the `octeontx2/af` directory to get a better handle on the potential configuration scenarios that led to the reported issue and to ascertain the broader implications and build dependencies.



4/2 2026/09/13 14:31 tool grepper
0m Args:
{
  "Expression": "mcs_rvu_if",
  "PathPrefix": "drivers/net/ethernet/marvell/octeontx2/af/"
}

Results:
{
  "Output": "drivers/net/ethernet/marvell/octeontx2/af/Makefile=11=rvu_af-y := cgx.o rvu.o rvu_cgx.o rvu_npa.o rvu_nix.o \\\n--\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile-13-\t\t  rvu_cpt.o rvu_devlink.o rpm.o rvu_cn10k.o rvu_switch.o \\\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile:14:\t\t  rvu_sdp.o rvu_npc_hash.o mcs.o mcs_rvu_if.o mcs_cnf10kb.o \\\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile-15-\t\t  rvu_rep.o cn20k/mbox_init.o cn20k/nix.o cn20k/debugfs.o \\\n"
}

5/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 4007
							output: 34
							thoughts: 47
						

Thoughts:
Here's my thought process, as requested:

**Navigating the OcteonTX2 Ethernet Driver Configuration**

Okay, so I need to figure out the configuration options for the OcteonTX2 Ethernet driver. My first instinct, given my experience, is to zero in on the `Kconfig` files. That's where all the build-time configuration magic happens, defining the different features, settings, and dependencies. Now, where would the relevant configurations *likely* live? Considering the driver's architecture and the possible presence of offload functionalities, I'll start by checking either the main `Kconfig` file under `drivers/net/ethernet/marvell/octeontx2/Kconfig` or, since the `af` directory often handles offload features, I'll also look at `drivers/net/ethernet/marvell/octeontx2/af/Kconfig`. These seem like the most logical starting points to examine the available configurations. I expect to find things like enabling/disabling different features, defining buffer sizes, and perhaps even some debugging options, all controlled by these Kconfig files. Time to dig in!



6/2 2026/09/13 14:31 tool grepper
0m Args:
{
  "Expression": "rvu_af",
  "PathPrefix": "drivers/net/ethernet/marvell/"
}

Results:
{
  "Output": "drivers/net/ethernet/marvell/octeontx2/af/Makefile=7=obj-$(CONFIG_OCTEONTX2_MBOX) += rvu_mbox.o\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile:8:obj-$(CONFIG_OCTEONTX2_AF) += rvu_af.o\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile-9-\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile=10=rvu_mbox-y := mbox.o rvu_trace.o\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile:11:rvu_af-y := cgx.o rvu.o rvu_cgx.o rvu_npa.o rvu_nix.o \\\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile-12-\t\t  rvu_reg.o rvu_npc.o rvu_debugfs.o ptp.o rvu_npc_fs.o \\\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/struct.h=19=enum rvu_mbox_pf_int_vec_e {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/struct.h-28-/* RVU Admin function Interrupt Vector Enumeration */\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/struct.h:29:enum rvu_af_cn20k_int_vec_e {\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/struct.h-30-\tRVU_AF_CN20K_INT_VEC_POISON\t\t= 0x0,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/mbox.h=468=struct msg_rsp {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/mbox.h-474- */\ndrivers/net/ethernet/marvell/octeontx2/af/mbox.h:475:enum rvu_af_status {\ndrivers/net/ethernet/marvell/octeontx2/af/mbox.h-476-\tRVU_INVALID_VF_ID           = -256,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-26-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:27:#define DRV_NAME\t\"rvu_af\"\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-28-#define DRV_STRING      \"Marvell OcteonTX2 RVU Admin Function Driver\"\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=2307=static void __rvu_mbox_handler(struct rvu_work *mwork, int type, bool poll)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2397-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2398:static inline void rvu_afpf_mbox_handler(struct work_struct *work)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2399-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2407-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2408:static inline void rvu_afvf_mbox_handler(struct work_struct *work)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2409-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=2415=static void __rvu_mbox_up_handler(struct rvu_work *mwork, int type)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2482-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2483:static inline void rvu_afpf_mbox_up_handler(struct work_struct *work)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2484-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2489-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2490:static inline void rvu_afvf_mbox_up_handler(struct work_struct *work)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2491-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=2570=static int rvu_mbox_init(struct rvu *rvu, struct mbox_wq_info *mw,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2625-\tcase TYPE_AFPF:\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2626:\t\tname = \"rvu_afpf_mailbox\";\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2627-\t\tdir = MBOX_DIR_AFPF;\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2634-\tcase TYPE_AFVF:\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2635:\t\tname = \"rvu_afvf_mailbox\";\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2636-\t\tdir = MBOX_DIR_PFVF;\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=2889=static void __rvu_flr_handler(struct rvu *rvu, u16 pcifunc)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2929-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2930:static void rvu_afvf_flr_handler(struct rvu *rvu, int vf)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2931-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=2947=static void rvu_flr_handler(struct work_struct *work)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2956-\tif (pf \u003e= rvu-\u003ehw-\u003etotal_pfs) {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2957:\t\trvu_afvf_flr_handler(rvu, pf - rvu-\u003ehw-\u003etotal_pfs);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2958-\t\treturn;\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2976-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:2977:static void rvu_afvf_queue_flr_work(struct rvu *rvu, int start_vf, int numvfs)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-2978-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3001=static irqreturn_t rvu_flr_intr_handler(int irq, void *rvu_irq)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3024-afvf_flr:\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3025:\trvu_afvf_queue_flr_work(rvu, 0, 64);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3026-\tif (rvu-\u003evfs \u003e 64)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3027:\t\trvu_afvf_queue_flr_work(rvu, 64, rvu-\u003evfs - 64);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3028-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3093=static void rvu_unregister_interrupts(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3124-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3125:static int rvu_afvf_msix_vectors_num_ok(struct rvu *rvu)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3126-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3145=static int rvu_register_interrupts(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3242-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3243:\tif (!rvu_afvf_msix_vectors_num_ok(rvu))\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3244-\t\treturn 0;\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3360=static int rvu_flr_init(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3372-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3373:\trvu-\u003eflr_wq = alloc_workqueue(\"rvu_afpf_flr\",\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3374-\t\t\t\t      WQ_HIGHPRI | WQ_MEM_RECLAIM, 0);\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3473=static int rvu_enable_sriov(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3478-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3479:\tif (!rvu_afvf_msix_vectors_num_ok(rvu)) {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3480-\t\tdev_warn(\u0026pdev-\u003edev,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3519-\terr = rvu_mbox_init(rvu, \u0026rvu-\u003eafvf_wq_info, TYPE_AFVF, vfs,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3520:\t\t\t    rvu_afvf_mbox_handler, rvu_afvf_mbox_up_handler);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3521-\tif (err)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3558=static int rvu_probe(struct pci_dev *pdev, const struct pci_device_id *id)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3638-\terr = rvu_mbox_init(rvu, \u0026rvu-\u003eafpf_wq_info, TYPE_AFPF,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3639:\t\t\t    rvu-\u003ehw-\u003etotal_pfs, rvu_afpf_mbox_handler,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3640:\t\t\t    rvu_afpf_mbox_up_handler);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3641-\tif (err) {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c=1169=static void rvu_health_reporters_destroy(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1181-/* Devlink Params APIs */\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1182:static int rvu_af_dl_dwrr_mtu_validate(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1183-\t\t\t\t       union devlink_param_value *val,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1220-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1221:static int rvu_af_dl_dwrr_mtu_set(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1222-\t\t\t\t  struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1235-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1236:static int rvu_af_dl_dwrr_mtu_get(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1237-\t\t\t\t  struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1253-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1254:enum rvu_af_dl_param_id {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1255-\tRVU_AF_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1264-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1265:static int rvu_af_npc_defrag_feature_get(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1266-\t\t\t\t\t struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1280-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1281:static int rvu_af_npc_defrag(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1282-\t\t\t     struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1297-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1298:static int rvu_af_npc_defrag_feature_validate(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1299-\t\t\t\t\t      union devlink_param_value *val,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1325-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1326:static int rvu_af_npc_exact_feature_get(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1327-\t\t\t\t\tstruct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1341-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1342:static int rvu_af_npc_exact_feature_disable(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1343-\t\t\t\t\t    struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1353-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1354:static int rvu_af_npc_exact_feature_validate(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1355-\t\t\t\t\t     union devlink_param_value *val,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1381-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1382:static int rvu_af_dl_npc_mcam_high_zone_percent_get(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1383-\t\t\t\t\t\t    struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1397-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1398:static int rvu_af_dl_npc_mcam_high_zone_percent_set(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1399-\t\t\t\t\t\t    struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1416-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1417:static int rvu_af_dl_npc_mcam_high_zone_percent_validate(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1418-\t\t\t\t\t\t\t union devlink_param_value *val,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1444-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1445:static int rvu_af_dl_npc_def_rule_cntr_get(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1446-\t\t\t\t\t   struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1456-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1457:static int rvu_af_dl_npc_def_rule_cntr_set(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1458-\t\t\t\t\t   struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1471-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1472:static int rvu_af_dl_nix_maxlf_get(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1473-\t\t\t\t   struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1483-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1484:static int rvu_af_dl_nix_maxlf_set(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1485-\t\t\t\t   struct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1506-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1507:static int rvu_af_dl_nix_maxlf_validate(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1508-\t\t\t\t\tunion devlink_param_value *val,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1557-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1558:static const struct devlink_param rvu_af_dl_params[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1559-\tDEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_DWRR_MTU,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1561-\t\t\t     BIT(DEVLINK_PARAM_CMODE_RUNTIME),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1562:\t\t\t     rvu_af_dl_dwrr_mtu_get, rvu_af_dl_dwrr_mtu_set,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1563:\t\t\t     rvu_af_dl_dwrr_mtu_validate),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1564-\tDEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_NPC_MCAM_ZONE_PERCENT,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1566-\t\t\t     BIT(DEVLINK_PARAM_CMODE_RUNTIME),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1567:\t\t\t     rvu_af_dl_npc_mcam_high_zone_percent_get,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1568:\t\t\t     rvu_af_dl_npc_mcam_high_zone_percent_set,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1569:\t\t\t     rvu_af_dl_npc_mcam_high_zone_percent_validate),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1570-\tDEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_NPC_DEF_RULE_CNTR_ENABLE,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1572-\t\t\t     BIT(DEVLINK_PARAM_CMODE_RUNTIME),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1573:\t\t\t     rvu_af_dl_npc_def_rule_cntr_get,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1574:\t\t\t     rvu_af_dl_npc_def_rule_cntr_set, NULL),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1575-\tDEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_NIX_MAXLF,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1577-\t\t\t     BIT(DEVLINK_PARAM_CMODE_RUNTIME),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1578:\t\t\t     rvu_af_dl_nix_maxlf_get,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1579:\t\t\t     rvu_af_dl_nix_maxlf_set,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1580:\t\t\t     rvu_af_dl_nix_maxlf_validate),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1581-};\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1582-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1583:static const struct devlink_param rvu_af_dl_param_exact_match[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1584-\tDEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_NPC_EXACT_FEATURE_DISABLE,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1586-\t\t\t     BIT(DEVLINK_PARAM_CMODE_RUNTIME),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1587:\t\t\t     rvu_af_npc_exact_feature_get,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1588:\t\t\t     rvu_af_npc_exact_feature_disable,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1589:\t\t\t     rvu_af_npc_exact_feature_validate),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1590-};\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c=1608=static int rvu_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1633-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1634:static int rvu_af_dl_npc_srch_order_set(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1635-\t\t\t\t\tstruct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1645-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1646:static int rvu_af_dl_npc_srch_order_get(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1647-\t\t\t\t\tstruct devlink_param_gset_ctx *ctx,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1661-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1662:static int rvu_af_dl_npc_srch_order_validate(struct devlink *devlink, u32 id,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1663-\t\t\t\t\t     union devlink_param_value *val,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c=1699=static const struct devlink_ops rvu_devlink_ops = {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1703-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1704:static const struct devlink_param rvu_af_dl_cn20k_params[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1705-\tDEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_NPC_SRCH_ORDER,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1707-\t\t\t     BIT(DEVLINK_PARAM_CMODE_RUNTIME),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1708:\t\t\t     rvu_af_dl_npc_srch_order_get,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1709:\t\t\t     rvu_af_dl_npc_srch_order_set,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1710:\t\t\t     rvu_af_dl_npc_srch_order_validate),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1711-\tDEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_NPC_DEFRAG,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1713-\t\t\t     BIT(DEVLINK_PARAM_CMODE_RUNTIME),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1714:\t\t\t     rvu_af_npc_defrag_feature_get,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1715:\t\t\t     rvu_af_npc_defrag,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1716:\t\t\t     rvu_af_npc_defrag_feature_validate),\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1717-};\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c=1719=int rvu_register_dl(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1743-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1744:\terr = devlink_params_register(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1745-\tif (err) {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1751-\tif (is_cn20k(rvu-\u003epdev)) {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1752:\t\terr = devlink_params_register(dl, rvu_af_dl_cn20k_params,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1753:\t\t\t\t\t      ARRAY_SIZE(rvu_af_dl_cn20k_params));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1754-\t\tif (err) {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1765-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1766:\terr = devlink_params_register(dl, rvu_af_dl_param_exact_match,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1767:\t\t\t\t      ARRAY_SIZE(rvu_af_dl_param_exact_match));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1768-\tif (err) {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1780-\tif (is_cn20k(rvu-\u003epdev))\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1781:\t\tdevlink_params_unregister(dl, rvu_af_dl_cn20k_params,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1782:\t\t\t\t\t  ARRAY_SIZE(rvu_af_dl_cn20k_params));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1783-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1784-err_dl_cn20k_params:\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1785:\tdevlink_params_unregister(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1786-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c=1793=void rvu_unregister_dl(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1799-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1800:\tdevlink_params_unregister(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1801-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1802-\tif (is_cn20k(rvu-\u003epdev))\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1803:\t\tdevlink_params_unregister(dl, rvu_af_dl_cn20k_params,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1804:\t\t\t\t\t  ARRAY_SIZE(rvu_af_dl_cn20k_params));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1805-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1807-\tif (rvu_npc_exact_has_match_table(rvu))\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1808:\t\tdevlink_params_unregister(dl, rvu_af_dl_param_exact_match,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1809:\t\t\t\t\t  ARRAY_SIZE(rvu_af_dl_param_exact_match));\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c-1810-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h=43=enum rvu_block_type_e {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h-59-/* RVU Admin function Interrupt Vector Enumeration */\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h:60:enum rvu_af_int_vec_e {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h-61-\tRVU_AF_INT_VEC_POISON = 0x0,\n"
}

7/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 14564
							output: 36
							thoughts: 24
						

Thoughts:
Here's my summary, as though I'm thinking through this process:

**Diving into the Marvell Octeon TX2 Ethernet Driver Configuration**

Okay, time to get a handle on the configuration options for this Octeon TX2 ethernet driver. I need to understand what knobs are available, what features can be enabled or disabled, and how everything is structured. The first place to look, of course, is the Kconfig file. Let's start by navigating to `drivers/net/ethernet/marvell/octeontx2/Kconfig`. Hopefully, this will give me a clear picture of the build-time configuration parameters I can tweak. I'm expecting to find options for things like flow control, jumbo frames, checksum offload, maybe even specific hardware revisions or PHY types. This is the bedrock of the configuration, so this is where I need to start. From here, I can get a feel for the underlying architecture and how to properly configure this driver for its various use cases.



8/2 2026/09/13 14:31 tool grepper
0m Args:
{
  "Expression": "config OCTEONTX2",
  "PathPrefix": "drivers/net/ethernet/marvell/"
}

Results:
{
  "Output": "drivers/net/ethernet/marvell/octeontx2/Kconfig-5-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:6:config OCTEONTX2_MBOX\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-7-\ttristate\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-8-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:9:config OCTEONTX2_AF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-10-\ttristate \"Marvell OcteonTX2 RVU Admin Function driver\"\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig=22=config NDC_DIS_DYNAMIC_CACHING\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-30-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:31:config OCTEONTX2_PF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-32-\ttristate \"Marvell OcteonTX2 NIC Physical Function driver\"\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-44-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:45:config OCTEONTX2_VF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-46-\ttristate \"Marvell OcteonTX2 NIC Virtual Function driver\"\n"
}

9/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 15247
							output: 44
							thoughts: 24
						

Thoughts:
Here's my take on the `drivers/net/ethernet/marvell/octeontx2/Kconfig` file:

**Diving into the Octeon TX2 Kconfig**

Okay, so I'm about to dig into the configuration file for the Octeon TX2 Ethernet driver. My expectation is this is where the meat of the driver's build-time options and dependencies will reside. I'm looking for the usual suspects: feature flags, module selection, and any platform-specific configurations. I'll need to understand what aspects are configurable, which features are enabled or disabled by default, and how the driver interacts with the rest of the kernel build system. This is crucial for customizing the driver to specific hardware configurations or performance requirements, and for resolving any build conflicts if the project is being compiled for a different target. I'll start with the file's structure. I'll pay close attention to the dependencies and any `select` statements, since those will dictate which other parts of the driver or kernel are pulled in based on my choices. It will be helpful to see any comments, since these contain vital information. I'm curious what kind of granularity they offer. I'm also looking for any clues regarding what's considered experimental or not yet fully baked. Finally, I'll need to cross-reference this with the driver code itself to fully grasp the ramifications of each configuration option. Let's see what we've got.



10/2 2026/09/13 14:31 tool read-file
0m Args:
{
  "File": "drivers/net/ethernet/marvell/octeontx2/Kconfig",
  "FirstLine": 1,
  "LineCount": 60
}

Results:
{
  "Contents": "   1:\t# SPDX-License-Identifier: GPL-2.0-only\n   2:\t#\n   3:\t# Marvell RVU Network drivers configuration\n   4:\t#\n   5:\t\n   6:\tconfig OCTEONTX2_MBOX\n   7:\t\ttristate\n   8:\t\n   9:\tconfig OCTEONTX2_AF\n  10:\t\ttristate \"Marvell OcteonTX2 RVU Admin Function driver\"\n  11:\t\tselect OCTEONTX2_MBOX\n  12:\t\tselect NET_DEVLINK\n  13:\t\tdepends on (64BIT \u0026\u0026 COMPILE_TEST) || ARM64\n  14:\t\tdepends on PCI\n  15:\t\tdepends on PTP_1588_CLOCK_OPTIONAL\n  16:\t\thelp\n  17:\t\t  This driver supports Marvell's OcteonTX2 Resource Virtualization\n  18:\t\t  Unit's admin function manager which manages all RVU HW resources\n  19:\t\t  and provides a medium to other PF/VFs to configure HW. Should be\n  20:\t\t  enabled for other RVU device drivers to work.\n  21:\t\n  22:\tconfig NDC_DIS_DYNAMIC_CACHING\n  23:\t\tbool \"Disable caching of dynamic entries in NDC\"\n  24:\t\tdepends on OCTEONTX2_AF\n  25:\t\tdefault n\n  26:\t\thelp\n  27:\t\t  This config option disables caching of dynamic entries such as NIX SQEs\n  28:\t\t  , NPA stack pages etc in NDC. Also locks down NIX SQ/CQ/RQ/RSS and\n  29:\t\t  NPA Aura/Pool contexts.\n  30:\t\n  31:\tconfig OCTEONTX2_PF\n  32:\t\ttristate \"Marvell OcteonTX2 NIC Physical Function driver\"\n  33:\t\tselect OCTEONTX2_MBOX\n  34:\t\tselect NET_DEVLINK\n  35:\t\tselect PAGE_POOL\n  36:\t\tselect CRYPTO_LIB_AES if MACSEC\n  37:\t\tdepends on (64BIT \u0026\u0026 COMPILE_TEST) || ARM64\n  38:\t\tselect DIMLIB\n  39:\t\tdepends on PCI\n  40:\t\tdepends on PTP_1588_CLOCK_OPTIONAL\n  41:\t\tdepends on MACSEC || !MACSEC\n  42:\t\thelp\n  43:\t\t  This driver supports Marvell's OcteonTX2 NIC physical function.\n  44:\t\n  45:\tconfig OCTEONTX2_VF\n  46:\t\ttristate \"Marvell OcteonTX2 NIC Virtual Function driver\"\n  47:\t\tdepends on OCTEONTX2_PF\n  48:\t\thelp\n  49:\t\t  This driver supports Marvell's OcteonTX2 NIC virtual function.\n  50:\t\n  51:\tconfig RVU_ESWITCH\n  52:\t\ttristate \"Marvell RVU E-Switch support\"\n  53:\t\tdepends on OCTEONTX2_PF\n  54:\t\tdefault m\n  55:\t\thelp\n  56:\t\t  This driver supports Marvell's RVU E-Switch that\n  57:\t\t  provides internal SRIOV packet steering and switching.\n"
}

11/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 16433
							output: 53
							thoughts: 132
						

Thoughts:
**Analyzing the Marvell OcteonTX2 Driver**

Okay, let's break this down. First, I see the dependency: `(64BIT && COMPILE_TEST) || ARM64`. That tells me this module is likely targeted towards 64-bit architectures, and possibly includes some testing or build-time checks, or ARM64. Interesting. Then I spot the `PCI` dependency. That immediately narrows down the hardware interaction; this thing is dealing with Peripheral Component Interconnect, which is no surprise given its likely role in network acceleration.

Then I read the driver description: "This driver supports Marvell's OcteonTX2 Resource Virtualization Unit's admin function manager which manages all RVU HW resources and provides a medium to other PF/VFs to configure HW." Right, bingo! That's the key. This is a driver specifically for the Marvell OcteonTX2, or perhaps a CN9K/CN10K chip. It's handling the Resource Virtualization Unit (RVU) – probably managing the hardware resources and providing configuration interfaces for other functions.

Time to dive in. I'm going to want to focus on `mcs_rvu_if.c` and take a look at `rvu_mcs_ptp_cfg`. These are probably the core files that define the interface and PTP (Precision Time Protocol) configuration for the RVU. That's where the real meat of the logic will be. Let's see what they're doing...



12/2 2026/09/13 14:31 tool read-file
0m Args:
{
  "File": "drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c",
  "FirstLine": 40,
  "LineCount": 40
}

Results:
{
  "Contents": "  40:\t\tu8 port;\n  41:\t\n  42:\t\tif (!rvu-\u003emcs_blk_cnt)\n  43:\t\t\treturn;\n  44:\t\n  45:\t\t/* When ptp is enabled, RPM appends 8B header for all\n  46:\t\t * RX packets. MCS PEX need to configure to skip 8B\n  47:\t\t * during packet parsing.\n  48:\t\t */\n  49:\t\n  50:\t\t/* CNF10K-B */\n  51:\t\tif (rvu-\u003emcs_blk_cnt \u003e 1) {\n  52:\t\t\tmcs = mcs_get_pdata(rpm_id);\n  53:\t\t\tif (!mcs)\n  54:\t\t\t\treturn;\n  55:\t\t\tcfg = mcs_reg_read(mcs, MCSX_PEX_RX_SLAVE_PEX_CONFIGURATION);\n  56:\t\t\tif (ena)\n  57:\t\t\t\tcfg |= BIT_ULL(lmac_id);\n  58:\t\t\telse\n  59:\t\t\t\tcfg \u0026= ~BIT_ULL(lmac_id);\n  60:\t\t\tmcs_reg_write(mcs, MCSX_PEX_RX_SLAVE_PEX_CONFIGURATION, cfg);\n  61:\t\t\treturn;\n  62:\t\t}\n  63:\t\t/* CN10KB */\n  64:\t\tmcs = mcs_get_pdata(0);\n  65:\t\tport = (rpm_id * rvu-\u003ehw-\u003elmac_per_cgx) + lmac_id;\n  66:\t\tcfg = mcs_reg_read(mcs, MCSX_PEX_RX_SLAVE_PORT_CFGX(port));\n  67:\t\tif (ena)\n  68:\t\t\tcfg |= BIT_ULL(0);\n  69:\t\telse\n  70:\t\t\tcfg \u0026= ~BIT_ULL(0);\n  71:\t\tmcs_reg_write(mcs, MCSX_PEX_RX_SLAVE_PORT_CFGX(port), cfg);\n  72:\t}\n  73:\t\n  74:\tint rvu_mbox_handler_mcs_set_lmac_mode(struct rvu *rvu,\n  75:\t\t\t\t\t       struct mcs_set_lmac_mode *req,\n  76:\t\t\t\t\t       struct msg_rsp *rsp)\n  77:\t{\n  78:\t\tstruct mcs *mcs;\n  79:\t\n"
}

13/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 17553
							output: 39
							thoughts: 17
						

Thoughts:
Okay, here's my interpretation of that thought process, assuming I'm deep in the weeds of debugging or understanding a complex system:

**Hunting Down the Caller: `rvu_mcs_ptp_cfg`**

Alright, time to get to the bottom of this. My focus is laser-targeted on `rvu_mcs_ptp_cfg`. I need to figure out *what* is calling this function. That's the key to understanding its behavior, its impact, and potentially, the source of any issues I'm seeing. This isn't a casual exploration; I'm actively pursuing the call graph. Let's dig in and track down the upstream dependency. I have to trace back the execution path and uncover the initiating process or component responsible for triggering this particular function. It’s like a detective searching for clues – the calling code is the prime suspect, and I need to gather all the evidence. So, I'm mentally, and perhaps with some tools, diving in to find out where this function is being invoked from. I need to understand its context.



14/2 2026/09/13 14:31 tool grepper
0m Args:
{
  "Expression": "rvu_mcs_ptp_cfg",
  "PathPrefix": "drivers/net/ethernet/marvell/"
}

Results:
{
  "Output": "drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c=33=MBOX_UP_MCS_MESSAGES\n--\ndrivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c-35-\ndrivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c:36:void rvu_mcs_ptp_cfg(struct rvu *rvu, u8 rpm_id, u8 lmac_id, bool ena)\ndrivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c-37-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.h=1191=int rvu_mcs_flr_handler(struct rvu *rvu, u16 pcifunc);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.h:1192:void rvu_mcs_ptp_cfg(struct rvu *rvu, u8 rpm_id, u8 lmac_id, bool ena);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.h-1193-void rvu_mcs_exit(struct rvu *rvu);\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c=823=static int rvu_cgx_ptp_rx_cfg(struct rvu *rvu, u16 pcifunc, bool enable)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c-854-\t/* Inform MCS about 8B RX header */\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c:855:\trvu_mcs_ptp_cfg(rvu, cgx_id, lmac_id, enable);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c-856-\treturn 0;\n"
}

15/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 18384
							output: 44
							thoughts: 16
						

Thoughts:
Here's a summary of my thought process:

**Investigating PCI Device Bindings**

Okay, let's dive in. I need to figure out which PCI devices the `rvu_af` driver is currently bound to. This is a critical first step for understanding the system's configuration and how this particular driver is interacting with the hardware. I need to get a clear picture of what's happening under the hood. Time to get to work!



16/2 2026/09/13 14:31 tool grepper
0m Args:
{
  "Expression": "pci_device_id",
  "PathPrefix": "drivers/net/ethernet/marvell/octeontx2/af/"
}

Results:
{
  "Output": "drivers/net/ethernet/marvell/octeontx2/af/cgx.c=63=static int cgx_fwi_link_change(struct cgx *cgx, int lmac_id, bool en);\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c-65-/* Supported devices */\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c:66:static const struct pci_device_id cgx_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c-67-\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_CGX) },\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c=1916=static struct mac_ops\tcgx_mac_ops    = {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c-1950-\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c:1951:static int cgx_probe(struct pci_dev *pdev, const struct pci_device_id *id)\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c-1952-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/mcs.c-19-\ndrivers/net/ethernet/marvell/octeontx2/af/mcs.c:20:static const struct pci_device_id mcs_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/mcs.c-21-\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_CN10K_MCS) },\n--\ndrivers/net/ethernet/marvell/octeontx2/af/mcs.c=1507=static struct mcs_ops cn10kb_mcs_ops = {\n--\ndrivers/net/ethernet/marvell/octeontx2/af/mcs.c-1516-\ndrivers/net/ethernet/marvell/octeontx2/af/mcs.c:1517:static int mcs_probe(struct pci_dev *pdev, const struct pci_device_id *id)\ndrivers/net/ethernet/marvell/octeontx2/af/mcs.c-1518-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c=77=static struct ptp *first_ptp_block;\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:78:static const struct pci_device_id ptp_id_table[];\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-79-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c=517=static int ptp_probe(struct pci_dev *pdev,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:518:\t\t     const struct pci_device_id *ent)\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-519-{\n--\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c=571=static void ptp_remove(struct pci_dev *pdev)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-588-\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:589:static const struct pci_device_id ptp_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-590-\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_PTP,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=41=static irqreturn_t rvu_mbox_intr_handler(int irq, void *rvu_irq);\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-43-/* Supported devices */\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:44:static const struct pci_device_id rvu_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-45-\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_RVU_AF) },\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3556=static atomic_t device_bound = ATOMIC_INIT(0);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3557-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3558:static int rvu_probe(struct pci_dev *pdev, const struct pci_device_id *id)\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3559-{\n"
}

17/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 19953
							output: 27
							thoughts: 416
						

Thoughts:
**My Assessment of the Marvell OcteonTX2 RVU Admin Function Driver for Fuzzing**

Okay, let's break this down systematically, applying my expertise to the criteria. The prompt clearly lays out the negative criteria for WorthFuzzing=false, so I need to see if this driver falls into those categories.

First, I need to confirm: Is the Marvell OcteonTX2 RVU Admin Function driver hardware-specific PCIe NIC/SoC? Based on my understanding, absolutely. Marvell OcteonTX2 (specifically the variants like PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_RVU_AF, CN10K, etc.) is textbook vendor-specific SmartNIC / network SoC hardware. It *requires* physical ASIC / PCIe cards. QEMU, as we know, doesn't emulate the OcteonTX2 RVU AF hardware. That's a huge red flag – it satisfies the "Structurally unreachable hardware" condition.

Second, I need to consider the architecture. The target is amd64, while the OcteonTX2 is an ARM64 SoC. While the driver *might* be compiled on amd64 for COMPILE_TEST purposes (based on the `depends on (64BIT && COMPILE_TEST) || ARM64` condition), the critical point is the *physical* device: PCI_VENDOR_ID_CAVIUM / OCTEONTX2. That's *physical silicon* that simply isn't present or emulated in standard QEMU or Google Compute Engine environments. This, in essence, also satisfies the "Unreachable execution paths" criterion, because the code will only be executed if the physical hardware is present.

Now, just to be thorough and because I always double-check, I'll quickly look for any mock or virtual device implementations or test harnesses that might exist for the OcteonTX2. I'll search to see if any virtual usages exist. This is more of a sanity check; my initial assessment points to a strong "WorthFuzzing=false" scenario.



18/2 2026/09/13 14:31 tool grepper
0m Args:
{
  "Expression": "OCTEONTX2",
  "PathPrefix": "drivers/"
}

Results:
{
  "Output": "drivers/crypto/marvell/Kconfig=23=config CRYPTO_DEV_OCTEONTX_CPT\n--\ndrivers/crypto/marvell/Kconfig-39-\ndrivers/crypto/marvell/Kconfig:40:config CRYPTO_DEV_OCTEONTX2_CPT\ndrivers/crypto/marvell/Kconfig-41-\ttristate \"Marvell OcteonTX2 CPT driver\"\n--\ndrivers/crypto/marvell/Kconfig-44-\tdepends on NET_VENDOR_MARVELL\ndrivers/crypto/marvell/Kconfig:45:\tselect OCTEONTX2_MBOX\ndrivers/crypto/marvell/Kconfig-46-\tselect CRYPTO_DEV_MARVELL\n--\ndrivers/crypto/marvell/Makefile=4=obj-$(CONFIG_CRYPTO_DEV_OCTEONTX_CPT) += octeontx/\ndrivers/crypto/marvell/Makefile:5:obj-$(CONFIG_CRYPTO_DEV_OCTEONTX2_CPT) += octeontx2/\n--\ndrivers/crypto/marvell/octeontx2/Makefile-1-# SPDX-License-Identifier: GPL-2.0-only\ndrivers/crypto/marvell/octeontx2/Makefile:2:obj-$(CONFIG_CRYPTO_DEV_OCTEONTX2_CPT) += rvu_cptcommon.o rvu_cptpf.o rvu_cptvf.o\ndrivers/crypto/marvell/octeontx2/Makefile-3-\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=49=void cn10k_cpt_lmtst_free(struct pci_dev *pdev, struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-60-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:61:EXPORT_SYMBOL_NS_GPL(cn10k_cpt_lmtst_free, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-62-\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=83=int cn10k_cptpf_lmtst_init(struct otx2_cptpf_dev *cptpf)\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-111-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:112:EXPORT_SYMBOL_NS_GPL(cn10k_cptpf_lmtst_init, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-113-\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=114=int cn10k_cptvf_lmtst_init(struct otx2_cptvf_dev *cptvf)\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-139-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:140:EXPORT_SYMBOL_NS_GPL(cn10k_cptvf_lmtst_init, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-141-\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=142=void cn10k_cpt_hw_ctx_clear(struct pci_dev *pdev,\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-155-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:156:EXPORT_SYMBOL_NS_GPL(cn10k_cpt_hw_ctx_clear, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-157-\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=158=void cn10k_cpt_hw_ctx_set(union cn10k_cpt_hw_ctx *hctx, u16 ctx_sz)\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-164-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:165:EXPORT_SYMBOL_NS_GPL(cn10k_cpt_hw_ctx_set, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-166-\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=167=int cn10k_cpt_hw_ctx_init(struct pci_dev *pdev,\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-194-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:195:EXPORT_SYMBOL_NS_GPL(cn10k_cpt_hw_ctx_init, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-196-\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=197=void cn10k_cpt_ctx_flush(struct pci_dev *pdev, u64 cptr, bool inval)\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-213-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:214:EXPORT_SYMBOL_NS_GPL(cn10k_cpt_ctx_flush, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-215-\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c=216=void cptvf_hw_ops_get(struct otx2_cptvf_dev *cptvf)\n--\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c-222-}\ndrivers/crypto/marvell/octeontx2/cn10k_cpt.c:223:EXPORT_SYMBOL_NS_GPL(cptvf_hw_ops_get, \"CRYPTO_DEV_OCTEONTX2_CPT\");\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=7=int otx2_cpt_send_mbox_msg(struct otx2_mbox *mbox, struct pci_dev *pdev)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-21-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:22:EXPORT_SYMBOL_NS_GPL(otx2_cpt_send_mbox_msg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-23-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=24=int otx2_cpt_send_ready_msg(struct otx2_mbox *mbox, struct pci_dev *pdev)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-39-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:40:EXPORT_SYMBOL_NS_GPL(otx2_cpt_send_ready_msg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-41-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=42=int otx2_cpt_send_af_reg_requests(struct otx2_mbox *mbox, struct pci_dev *pdev)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-45-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:46:EXPORT_SYMBOL_NS_GPL(otx2_cpt_send_af_reg_requests, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-47-\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=74=int otx2_cpt_add_write_af_reg(struct otx2_mbox *mbox, struct pci_dev *pdev,\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-97-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:98:EXPORT_SYMBOL_NS_GPL(otx2_cpt_add_write_af_reg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-99-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=100=int otx2_cpt_read_af_reg(struct otx2_mbox *mbox, struct pci_dev *pdev,\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-110-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:111:EXPORT_SYMBOL_NS_GPL(otx2_cpt_read_af_reg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-112-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=113=int otx2_cpt_write_af_reg(struct otx2_mbox *mbox, struct pci_dev *pdev,\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-123-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:124:EXPORT_SYMBOL_NS_GPL(otx2_cpt_write_af_reg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-125-\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=156=int otx2_cpt_detach_rsrcs_msg(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-182-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:183:EXPORT_SYMBOL_NS_GPL(otx2_cpt_detach_rsrcs_msg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-184-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=185=int otx2_cpt_msix_offset_msg(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-215-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:216:EXPORT_SYMBOL_NS_GPL(otx2_cpt_msix_offset_msg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-217-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=218=int otx2_cpt_sync_mbox_msg(struct otx2_mbox *mbox)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-230-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:231:EXPORT_SYMBOL_NS_GPL(otx2_cpt_sync_mbox_msg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-232-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=233=int otx2_cpt_lf_reset_msg(struct otx2_cptlfs_info *lfs, int slot)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-251-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:252:EXPORT_SYMBOL_NS_GPL(otx2_cpt_lf_reset_msg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-253-\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c=254=int otx2_cpt_lmtst_tbl_setup_msg(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c-276-}\ndrivers/crypto/marvell/octeontx2/otx2_cpt_mbox_common.c:277:EXPORT_SYMBOL_NS_GPL(otx2_cpt_lmtst_tbl_setup_msg, \"CRYPTO_DEV_OCTEONTX2_CPT\");\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=274=void otx2_cptlf_unregister_misc_interrupts(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-290-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:291:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_unregister_misc_interrupts, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-292-\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=293=void otx2_cptlf_unregister_done_interrupts(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-309-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:310:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_unregister_done_interrupts, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-311-\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=331=int otx2_cptlf_register_misc_interrupts(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-351-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:352:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_register_misc_interrupts, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-353-\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=354=int otx2_cptlf_register_done_interrupts(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-374-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:375:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_register_done_interrupts, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-376-\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=377=void otx2_cptlf_free_irqs_affinity(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-388-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:389:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_free_irqs_affinity, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-390-\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=391=int otx2_cptlf_set_irqs_affinity(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-421-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:422:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_set_irqs_affinity, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-423-\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=424=int otx2_cptlf_init(struct otx2_cptlfs_info *lfs, u8 eng_grp_mask, int pri,\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-481-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:482:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_init, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-483-\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c=484=void otx2_cptlf_shutdown(struct otx2_cptlfs_info *lfs)\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-493-}\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c:494:EXPORT_SYMBOL_NS_GPL(otx2_cptlf_shutdown, \"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptlf.c-495-\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptpf_main.c=877=module_pci_driver(otx2_cpt_pci_driver);\ndrivers/crypto/marvell/octeontx2/otx2_cptpf_main.c-878-\ndrivers/crypto/marvell/octeontx2/otx2_cptpf_main.c:879:MODULE_IMPORT_NS(\"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptpf_main.c-880-\n--\ndrivers/crypto/marvell/octeontx2/otx2_cptvf_main.c=476=module_pci_driver(otx2_cptvf_pci_driver);\ndrivers/crypto/marvell/octeontx2/otx2_cptvf_main.c-477-\ndrivers/crypto/marvell/octeontx2/otx2_cptvf_main.c:478:MODULE_IMPORT_NS(\"CRYPTO_DEV_OCTEONTX2_CPT\");\ndrivers/crypto/marvell/octeontx2/otx2_cptvf_main.c-479-\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-5-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:6:config OCTEONTX2_MBOX\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-7-\ttristate\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-8-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:9:config OCTEONTX2_AF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-10-\ttristate \"Marvell OcteonTX2 RVU Admin Function driver\"\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:11:\tselect OCTEONTX2_MBOX\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-12-\tselect NET_DEVLINK\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig=22=config NDC_DIS_DYNAMIC_CACHING\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-23-\tbool \"Disable caching of dynamic entries in NDC\"\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:24:\tdepends on OCTEONTX2_AF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-25-\tdefault n\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-30-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:31:config OCTEONTX2_PF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-32-\ttristate \"Marvell OcteonTX2 NIC Physical Function driver\"\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:33:\tselect OCTEONTX2_MBOX\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-34-\tselect NET_DEVLINK\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-44-\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:45:config OCTEONTX2_VF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-46-\ttristate \"Marvell OcteonTX2 NIC Virtual Function driver\"\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:47:\tdepends on OCTEONTX2_PF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-48-\thelp\n--\ndrivers/net/ethernet/marvell/octeontx2/Kconfig=51=config RVU_ESWITCH\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-52-\ttristate \"Marvell RVU E-Switch support\"\ndrivers/net/ethernet/marvell/octeontx2/Kconfig:53:\tdepends on OCTEONTX2_PF\ndrivers/net/ethernet/marvell/octeontx2/Kconfig-54-\tdefault m\n--\ndrivers/net/ethernet/marvell/octeontx2/Makefile-5-\ndrivers/net/ethernet/marvell/octeontx2/Makefile:6:obj-$(CONFIG_OCTEONTX2_MBOX) += af/\ndrivers/net/ethernet/marvell/octeontx2/Makefile:7:obj-$(CONFIG_OCTEONTX2_AF) += af/\ndrivers/net/ethernet/marvell/octeontx2/Makefile:8:obj-$(CONFIG_OCTEONTX2_PF) += nic/\n--\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile=6=ccflags-y += -I$(src)\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile:7:obj-$(CONFIG_OCTEONTX2_MBOX) += rvu_mbox.o\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile:8:obj-$(CONFIG_OCTEONTX2_AF) += rvu_af.o\ndrivers/net/ethernet/marvell/octeontx2/af/Makefile-9-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c=66=static const struct pci_device_id cgx_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c:67:\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_CGX) },\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.c-68-\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_CN10K_RPM,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.h-15- /* PCI device IDs */\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.h:16:#define\tPCI_DEVID_OCTEONTX2_CGX\t\t0xA059\ndrivers/net/ethernet/marvell/octeontx2/af/cgx.h-17-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c=154=DEFINE_SHOW_ATTRIBUTE(npc_mcam_layout);\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-155-\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c:156:#define __OCTEONTX2_DEBUGFS_ATTRIBUTE_FOPS(__name)\t\t\t\\\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-157-static const struct file_operations __name ## _fops = {\t\t\t\\\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-164-\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c:165:#define DEFINE_OCTEONTX2_DEBUGFS_ATTRIBUTE_WITH_SIZE(__name, __size)\t\t\\\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-166-static int __name ## _open(struct inode *inode, struct file *file)\t\t\\\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-170-}\t\t\t\t\t\t\t\t\t\t\\\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c:171:__OCTEONTX2_DEBUGFS_ATTRIBUTE_FOPS(__name)\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-172-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c=181=static int npc_mcam_dstats_show(struct seq_file *s, void *unused)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-242-#define TOTAL_SZ (MAX_NUM_BANKS * MAX_NUM_SUB_BANKS * MAX_SUBBANK_DEPTH * 64)\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c:243:DEFINE_OCTEONTX2_DEBUGFS_ATTRIBUTE_WITH_SIZE(npc_mcam_dstats, TOTAL_SZ);\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-244-\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c=245=static int npc_mcam_mismatch_show(struct seq_file *s, void *unused)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-284-/* \"%u\\t%d\\t%u\\n\" needs less than 64 characters to print. */\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c:285:DEFINE_OCTEONTX2_DEBUGFS_ATTRIBUTE_WITH_SIZE(npc_mcam_mismatch, TOTAL_SZ);\ndrivers/net/ethernet/marvell/octeontx2/af/cn20k/debugfs.c-286-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-20-\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:21:#define PCI_DEVID_OCTEONTX2_PTP\t\t\t0xA00C\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-22-#define PCI_SUBSYS_DEVID_OCTX2_98xx_PTP\t\t0xB100\n--\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-27-#define PCI_SUBSYS_DEVID_OCTX2_95XXO_PTP\t0xB600\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:28:#define PCI_DEVID_OCTEONTX2_RST\t\t\t0xA085\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-29-#define PCI_DEVID_CN10K_PTP\t\t\t0xA09E\n--\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c=589=static const struct pci_device_id ptp_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:590:\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_PTP,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-591-\t\t\t PCI_VENDOR_ID_CAVIUM,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-592-\t\t\t PCI_SUBSYS_DEVID_OCTX2_98xx_PTP) },\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:593:\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_PTP,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-594-\t\t\t PCI_VENDOR_ID_CAVIUM,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-595-\t\t\t PCI_SUBSYS_DEVID_OCTX2_96XX_PTP) },\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:596:\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_PTP,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-597-\t\t\t PCI_VENDOR_ID_CAVIUM,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-598-\t\t\t PCI_SUBSYS_DEVID_OCTX2_95XX_PTP) },\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:599:\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_PTP,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-600-\t\t\t PCI_VENDOR_ID_CAVIUM,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-601-\t\t\t PCI_SUBSYS_DEVID_OCTX2_95XXN_PTP) },\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:602:\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_PTP,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-603-\t\t\t PCI_VENDOR_ID_CAVIUM,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-604-\t\t\t PCI_SUBSYS_DEVID_OCTX2_95MM_PTP) },\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c:605:\t{ PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_PTP,\ndrivers/net/ethernet/marvell/octeontx2/af/ptp.c-606-\t\t\t PCI_VENDOR_ID_CAVIUM,\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=44=static const struct pci_device_id rvu_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:45:\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_RVU_AF) },\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-46-\t{ 0, }  /* end of table */\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=927=static void rvu_get_lbk_bufsize(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-933-\tpdev = pci_get_device(PCI_VENDOR_ID_CAVIUM,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:934:\t\t\t      PCI_DEVID_OCTEONTX2_LBK, pdev);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-935-\tif (!pdev)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3447=int rvu_get_num_lbk_chans(void)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3452-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3453:\tpdev = pci_get_device(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_LBK,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3454-\t\t\t      NULL);\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3470-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3471:#define PCI_DEVID_OCTEONTX2_RVU_AFVF\t0xA0F8\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3472-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c=3473=static int rvu_enable_sriov(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3494-\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c:3495:\tif (rvu-\u003evf_devid == PCI_DEVID_OCTEONTX2_RVU_AFVF) {\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.c-3496-\t\tchans = rvu_get_num_lbk_chans();\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.h-23-/* PCI device IDs */\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.h:24:#define\tPCI_DEVID_OCTEONTX2_RVU_AF\t\t0xA065\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.h:25:#define\tPCI_DEVID_OCTEONTX2_LBK\t\t\t0xA061\ndrivers/net/ethernet/marvell/octeontx2/af/rvu.h-26-\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c=392=static void rvu_lbk_set_channels(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c-415-\t\tpdev = pci_get_device(PCI_VENDOR_ID_CAVIUM,\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c:416:\t\t\t\t      PCI_DEVID_OCTEONTX2_LBK, pdev);\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c-417-\t\tif (!pdev)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c=2806=static void rvu_dbg_npa_init(struct rvu *rvu)\n--\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c-2825-/* Per-lmac CGX debugfs files need both RVU and CGX handle; inode-\u003ei_private\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c:2826: * points here so seq_file ops avoid pci_get_device(PCI_DEVID_OCTEONTX2_RVU_AF).\ndrivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c-2827- */\n--\ndrivers/net/ethernet/marvell/octeontx2/nic/Makefile-5-\ndrivers/net/ethernet/marvell/octeontx2/nic/Makefile:6:obj-$(CONFIG_OCTEONTX2_PF) += rvu_nicpf.o otx2_ptp.o\ndrivers/net/ethernet/marvell/octeontx2/nic/Makefile:7:obj-$(CONFIG_OCTEONTX2_VF) += rvu_nicvf.o otx2_ptp.o\ndrivers/net/ethernet/marvell/octeontx2/nic/Makefile-8-obj-$(CONFIG_RVU_ESWITCH) += rvu_rep.o\n--\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-42-/* PCI device IDs */\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h:43:#define PCI_DEVID_OCTEONTX2_RVU_PF              0xA063\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h:44:#define PCI_DEVID_OCTEONTX2_RVU_VF\t\t0xA064\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h:45:#define PCI_DEVID_OCTEONTX2_RVU_AFVF\t\t0xA0F8\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-46-\n--\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-50-\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h:51:#define PCI_DEVID_OCTEONTX2_SDP_REP\t\t0xA0F7\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-52-\n--\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h=597=static inline bool is_otx2_lbkvf(struct pci_dev *pdev)\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-598-{\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h:599:\treturn (pdev-\u003edevice == PCI_DEVID_OCTEONTX2_RVU_AFVF) ||\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-600-\t\t(pdev-\u003edevice == PCI_DEVID_RVU_REP);\n--\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h=615=static inline bool is_otx2_sdp_rep(struct pci_dev *pdev)\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-616-{\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h:617:\treturn pdev-\u003edevice == PCI_DEVID_OCTEONTX2_SDP_REP;\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h-618-}\n--\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c=36=static const struct pci_device_id otx2_pf_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c:37:\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_RVU_PF) },\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c-38-\t{ 0, }  /* end of table */\n--\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c=22=static const struct pci_device_id otx2_vf_id_table[] = {\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c:23:\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_RVU_AFVF) },\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c:24:\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_RVU_VF) },\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c:25:\t{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVID_OCTEONTX2_SDP_REP) },\ndrivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c-26-\t{ }\n"
}

19/2 2026/09/13 14:31 llm patch-evaluator
0m Model:
gemini-3.8-flash

Args:
null

Results:
null

Tokens:
							input: 32612
							output: 170
							thoughts: 525
						

Thoughts:
**WorthFuzzing Assessment: Marvell OcteonTX2 RVU Driver**

Okay, let's break this down. The patch is in `drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c`, specifically in the `rvu_mcs_ptp_cfg` function. It's a simple NULL check – adding `mcs_get_pdata(rpm_id)` to prevent a potential crash. No groundbreaking functionality here, just defensive programming.

The critical piece, however, is the hardware. This is the RVU Admin Function driver for Marvell OcteonTX2 and CN10K hardware. We're talking about *vendor-specific* physical hardware – SmartNICs, network SoCs, that sort of thing. The PCI IDs confirm this: `PCI_VENDOR_ID_CAVIUM`, `PCI_DEVID_OCTEONTX2_RVU_AF`, `PCI_DEVID_CN10K_MCS`.

Now, the instructions flagged this as a potential negative case. Let me check... Yep, structurally unreachable hardware is a no-go for fuzzing. We're talking about things like vendor-specific PCIe switches, SmartNICs, GPU drivers – the list goes on. And specifically, the example given is drivers *requiring physical ASIC/PCIe cards not emulated in standard QEMU*. Bingo. This *is* that case. The Marvell OcteonTX2 RVU requires real, physical Marvell Cavium/OcteonTX2 hardware, or some very specialized emulation. Standard QEMU or GCE are useless here.

Therefore, because this code is tied to specific hardware that's not accessible in a standard fuzzing setup, `WorthFuzzing` has to be `false`.

Let me quickly summarize my reasoning for the record:

*   Modified code: `drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c` (Marvell OcteonTX2 RVU Admin Function driver).
*   Patch: Adds a NULL check in `rvu_mcs_ptp_cfg`.
*   Hardware Dependency: Vendor-specific SmartNIC / network SoC driver that requires physical Marvell OcteonTX2 / CN10K PCIe hardware.
*   Reachability: Structurally unreachable in standard virtualized fuzzing environments (QEMU/GCE) without specialized emulation.
*   Conclusion: `WorthFuzzing = false`.

And since `WorthFuzzing` is `false`, the `EnableConfigs` and `FocusSymbols` will be empty. I can set the results now.



20/2 2026/09/13 14:31 tool set-results
0m Args:
{
  "EnableConfigs": [],
  "FocusSymbols": [],
  "Reasoning": "The patch modifies `rvu_mcs_ptp_cfg()` in `drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c`, adding a NULL check for the pointer returned by `mcs_get_pdata()`. This code is part of the Marvell OcteonTX2 RVU Admin Function driver, which requires vendor-specific physical SmartNIC / SoC ASIC hardware (Cavium/Marvell OcteonTX2/CN10K PCIe devices) not emulated in standard virtualized environments like QEMU. Consequently, the modified code is structurally unreachable for syzkaller fuzzing.",
  "WorthFuzzing": false
}

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "Reasoning": "The patch modifies `rvu_mcs_ptp_cfg()` in `drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c`, adding a NULL check for the pointer returned by `mcs_get_pdata()`. This code is part of the Marvell OcteonTX2 RVU Admin Function driver, which requires vendor-specific physical SmartNIC / SoC ASIC hardware (Cavium/Marvell OcteonTX2/CN10K PCIe devices) not emulated in standard virtualized environments like QEMU. Consequently, the modified code is structurally unreachable for syzkaller fuzzing.",
  "WorthFuzzing": false
}

21/1 2026/09/13 14:31 action If
0m Args:
{
  "WorthFuzzing": false
}

Results:
null

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