On Mon, Mar 23, 2026 at 05:44:44PM -0700, Jakub Kicinski wrote:
> On Thu, 19 Mar 2026 00:09:13 -0700 Erni Sri Satya Vennela wrote:
> > Add debugfs entries to expose hardware configuration and diagnostic
> > information that aids in debugging driver initialization and runtime
> > operations without adding noise to dmesg.
> > 
> > The debugfs directory creation and removal for each PCI device is
> > integrated into mana_gd_setup() and mana_gd_cleanup_device()
> > respectively, so that all callers (probe, remove, suspend, resume,
> > shutdown) share a single code path.
> > 
> > Device-level entries (under /sys/kernel/debug/mana/<slot>/):
> >   - num_msix_usable, max_num_queues: Max resources from hardware
> >   - gdma_protocol_ver, pf_cap_flags1: VF version negotiation results
> >   - num_vports, bm_hostmode: Device configuration
> > 
> > Per-vPort entries (under /sys/kernel/debug/mana/<slot>/vportN/):
> >   - port_handle: Hardware vPort handle
> >   - max_sq, max_rq: Max queues from vPort config
> >   - indir_table_sz: Indirection table size
> >   - steer_rx, steer_rss, steer_update_tab, steer_cqe_coalescing:
> >     Last applied steering configuration parameters
> 
> AI says:
> 
> > @@ -1918,15 +1930,23 @@ static int mana_gd_setup(struct pci_dev *pdev)
> >     struct gdma_context *gc = pci_get_drvdata(pdev);
> >     int err;
> >  
> > +   if (gc->is_pf)
> > +           gc->mana_pci_debugfs = debugfs_create_dir("0", 
> > mana_debugfs_root);
> > +   else
> > +           gc->mana_pci_debugfs = 
> > debugfs_create_dir(pci_slot_name(pdev->slot),
> > +                                                     mana_debugfs_root);
> 
> If pdev->slot is NULL (which can happen for VFs in environments like generic
> VFIO passthrough or nested KVM), will pci_slot_name(pdev->slot) cause a
> NULL pointer dereference?
> 
> Also, could this naming scheme cause name collisions? If multiple PFs are
> present, they would all try to use "0". Similarly, VFs across different
> PCI domains or buses might share the same physical slot identifier, leading
> to -EEXIST errors. Would it be safer to use the unique PCI BDF via
> pci_name(pdev) instead?
Yes. that is a better way to handle it. I will use pci_name. We can
remove if-else and use only one for both the cases.
> 
> > @@ -3141,6 +3149,24 @@ static int mana_init_port(struct net_device *ndev)
> >     eth_hw_addr_set(ndev, apc->mac_addr);
> >     sprintf(vport, "vport%d", port_idx);
> >     apc->mana_port_debugfs = debugfs_create_dir(vport, 
> > gc->mana_pci_debugfs);
> > +
> > +   debugfs_create_u64("port_handle", 0400, apc->mana_port_debugfs,
> > +                      &apc->port_handle);
> 
> When operations like changing the MTU or setting an XDP program trigger a
> detach/attach cycle, mana_detach() invokes mana_cleanup_port_context(),
> which recursively removes the apc->mana_port_debugfs directory.
> During re-attachment, mana_attach() calls mana_init_port(), which
> recreates the directory and the new files added in this patch. However, the
> pre-existing current_speed file (created in mana_probe_port()) is not
> recreated here.
> 
> Does this cause the current_speed file to be permanently lost after a
> detach/attach cycle? Should the creation of current_speed be moved to
> mana_init_port() so it survives the cycle?
Yes that is correct.

Since these issues are pre-existing and not introduced from my patch.
I'll plan to send them as different patch with fixes tag.
> -- 
> pw-bot: cr

Reply via email to