Re: [PATCH v22 net-next 02/12] net/nebula-matrix: add core driver architecture and HW layer initialization
From: Jakub Kicinski
Date: Thu Jul 30 2026 - 21:31:37 EST
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
---
--- Patch [2]: [PATCH v22 net-next 02/12] net/nebula-matrix: add core driver architecture and HW layer initialization ---
commit b4e4638b25f9e82d490889327022a039dbb63644
Author: illusion wang <illusion.wang@xxxxxxxxxxxxxxxxx>
net/nebula-matrix: add core driver architecture and HW layer initialization
This commit adds the core driver framework and hardware layer initialization
for the NBL NIC family. It handles basic device capability parsing, DMA
mask fallback, and Leonis hardware BAR resource requests and mappings.
> diff --git a/drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis.c b/drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis.c
> new file mode 100644
> index 0000000000000..79a4b15c01a90
> --- /dev/null
> +++ b/drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis.c
[ ... ]
> +int nbl_hw_init_leonis(struct nbl_adapter *adapter)
> +{
[ ... ]
> + if (common->has_ctrl) {
> + /*
> + * The fixed 16MiB MEMORY BAR of PF0 contains both control
> + * register region and the 8KiB RDMA notify partition inside
> + * this single 16MiB window. The RDMA notify area does not
> + * occupy extra space outside the BAR range.
> + * We only map the front part of BAR by cutting off the last
> + * NBL_RDMA_NOTIFY_LEN bytes for hardware exclusive RDMA
> + * notification use,
> + * so the mapping length equals bar_len - NBL_RDMA_NOTIFY_LEN.
> + * Since the RDMA notify region is internal to the 16MiB BAR,
> + * the minimum BAR size check remains bar_len >=
> + * NBL_HW_REG_SPACE_SIZE to ensure full register space is
> + * available.
> + */
> + if (bar_len < NBL_HW_REG_SPACE_SIZE) {
> + dev_err(&pdev->dev,
> + "MEMORY BAR len %pa too small for ctrl reg space\n",
> + &bar_len);
> + ret = -EINVAL;
> + goto setup_mgt_fail;
> + }
> +
> + hw_mgt->hw_size = bar_len - NBL_RDMA_NOTIFY_LEN;
> + hw_mgt->hw_addr =
> + pcim_iomap(pdev, NBL_MEMORY_BAR,
> + hw_mgt->hw_size);
[Severity: Medium]
Will this map the hardware-exclusive RDMA notify region if the platform or
hypervisor assigns a BAR larger than 16 MiB (NBL_HW_REG_SPACE_SIZE)?
If bar_len > NBL_HW_REG_SPACE_SIZE, hw_size will span beyond the front part
of the fixed 16 MiB window and cover the RDMA notify region.
If an RDMA driver later attempts to map this same region with Write-Combining
(WC) attributes, could it conflict with the Ethernet driver's Uncacheable (UC)
mapping and cause x86 PAT attribute aliasing issues?
Should this calculation use NBL_HW_REG_SPACE_SIZE instead of bar_len?
> + } else {
> + if (bar_len < NBL_REG_NET_ONLY_LEN) {
[ ... ]
--
pw-bot: cr