From: "Théo Lebrun" <theo.lebrun@bootlin.com>
To: "Nathan Chancellor" <nathan@kernel.org>,
"Conor Dooley" <conor.dooley@microchip.com>,
"Andrew Lunn" <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Nicolai Buchwitz" <nb@tipi-net.de>
Cc: <netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH net] net: macb: Move macb_{alloc,free}_tieoff() out of CONFIG_OF block
Date: Wed, 19 Aug 2026 20:06:48 +0200 [thread overview]
Message-ID: <DKT4CBU8YB5G.2W0766H2NU6Y8@bootlin.com> (raw)
In-Reply-To: <20260818-macb-fix-no-of-build-v1-1-f2a009616384@kernel.org>
Hello Nathan,
On Wed Aug 19, 2026 at 3:14 AM CEST, Nathan Chancellor wrote:
> Commit 5262eab9462a ("net: macb: allocate tieoff descriptor once across
> device lifetime") moved macb_alloc_tieoff() and macb_free_tieoff() into
> a CONFIG_OF block, breaking the build when it is disabled:
That commit message is somewhat off: the commit created the two
functions, it didn't move them around. But indeed I was wrong in the
location where I created them (argh I hate #if/ifdef blocks, especially
long ones).
Can reproduce using my host toolchain easily:
⟩ unset ARCH CROSS_COMPILE
⟩ make mrproper
⟩ make defconfig
⟩ ./scripts/config -e COMMON_CLK -e MACB
⟩ make olddefconfig
⟩ make drivers/net/ethernet/cadence/
⟩ echo $?
2
Here is an alternative fix proposal: let's drop the #ifdef. It will
avoid any future error. Almost all drivers have no #ifdef as such:
⟩ git grep -l MODULE_DEVICE_TABLE drivers/ | wc -l
7458
⟩ git grep -l MODULE_DEVICE_TABLE drivers/ | xargs git grep -l CONFIG_OF | wc -l
391
Yes, I know this means the match table land in the module in !OF case.
Almost everyone on the ML I've seen seem to consider that it's trivial.
Apparently it's even useful because some ACPI can match on compatible,
somehow.
Opinions?
> drivers/net/ethernet/cadence/macb_main.c: In function 'macb_probe':
> drivers/net/ethernet/cadence/macb_main.c:5951:15: error: implicit declaration of function 'macb_alloc_tieoff' [-Wimplicit-function-declaration]
> 5951 | err = macb_alloc_tieoff(bp);
> | ^~~~~~~~~~~~~~~~~
> drivers/net/ethernet/cadence/macb_main.c:5973:9: error: implicit declaration of function 'macb_free_tieoff' [-Wimplicit-function-declaration]
> 5973 | macb_free_tieoff(bp);
> | ^~~~~~~~~~~~~~~~
>
> Moving macb_alloc_tieoff() from its original positive does not appear to
> be necessary, so move it and macb_free_tieoff() back out of the
> CONFIG_OF block to clear up the error.
Apart from the typo already reported, I'm guessing the original position
is the one from previous macb_init_tieoff() functions. Yes I don't see
a reason for the move.
> Fixes: 5262eab9462a ("net: macb: allocate tieoff descriptor once across device lifetime")
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> ---
> This does not apply to net currently but I assume net will be fast
> forwarded when net-next-7.3 is merged.
> ---
> drivers/net/ethernet/cadence/macb_main.c | 64 ++++++++++++++++----------------
> 1 file changed, 32 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
> index 1476bce77f34..96a7e7777e62 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c
> @@ -2776,6 +2776,38 @@ static int macb_alloc(struct macb *bp)
> return -ENOMEM;
> }
>
> +static int macb_alloc_tieoff(struct macb *bp)
> +{
> + /* Tieoff is a workaround in case HW cannot disable queues, for PM. */
> + if (bp->caps & MACB_CAPS_QUEUE_DISABLE)
> + return 0;
> +
> + bp->rx_ring_tieoff = dma_alloc_coherent(&bp->pdev->dev,
> + macb_dma_desc_get_size(bp),
> + &bp->rx_ring_tieoff_dma,
> + GFP_KERNEL);
> + if (!bp->rx_ring_tieoff)
> + return -ENOMEM;
> +
> + macb_set_addr(bp, bp->rx_ring_tieoff,
> + MACB_BIT(RX_WRAP) | MACB_BIT(RX_USED));
> +
> + bp->rx_ring_tieoff->ctrl = 0;
> +
> + return 0;
> +}
> +
> +static void macb_free_tieoff(struct macb *bp)
> +{
> + if (!bp->rx_ring_tieoff)
> + return;
> +
> + dma_free_coherent(&bp->pdev->dev, macb_dma_desc_get_size(bp),
> + bp->rx_ring_tieoff,
> + bp->rx_ring_tieoff_dma);
> + bp->rx_ring_tieoff = NULL;
> +}
> +
> static void gem_init_rx_ring(struct macb_queue *queue)
> {
> queue->rx_tail = 0;
> @@ -5507,38 +5539,6 @@ static int eyeq5_init(struct platform_device *pdev)
> return ret;
> }
>
> -static int macb_alloc_tieoff(struct macb *bp)
> -{
> - /* Tieoff is a workaround in case HW cannot disable queues, for PM. */
> - if (bp->caps & MACB_CAPS_QUEUE_DISABLE)
> - return 0;
> -
> - bp->rx_ring_tieoff = dma_alloc_coherent(&bp->pdev->dev,
> - macb_dma_desc_get_size(bp),
> - &bp->rx_ring_tieoff_dma,
> - GFP_KERNEL);
> - if (!bp->rx_ring_tieoff)
> - return -ENOMEM;
> -
> - macb_set_addr(bp, bp->rx_ring_tieoff,
> - MACB_BIT(RX_WRAP) | MACB_BIT(RX_USED));
> -
> - bp->rx_ring_tieoff->ctrl = 0;
> -
> - return 0;
> -}
> -
> -static void macb_free_tieoff(struct macb *bp)
> -{
> - if (!bp->rx_ring_tieoff)
> - return;
> -
> - dma_free_coherent(&bp->pdev->dev, macb_dma_desc_get_size(bp),
> - bp->rx_ring_tieoff,
> - bp->rx_ring_tieoff_dma);
> - bp->rx_ring_tieoff = NULL;
> -}
> -
> static const struct macb_usrio_config mpfs_usrio = {
> .tsu_source = 0,
> };
>
> ---
> base-commit: 61eb236c41c2a4717015dff18016a75a5eb90052
> change-id: 20260818-macb-fix-no-of-build-eee72c7cf20d
>
> Best regards,
> --
> Cheers,
> Nathan
Thanks,
--
Théo Lebrun, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2026-08-19 18:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-19 1:14 [PATCH net] net: macb: Move macb_{alloc,free}_tieoff() out of CONFIG_OF block Nathan Chancellor
2026-08-19 7:10 ` luoxuanqiang
2026-08-19 17:14 ` Nathan Chancellor
2026-08-19 7:39 ` Nicolai Buchwitz
2026-08-19 18:06 ` Théo Lebrun [this message]
2026-08-19 18:54 ` Nathan Chancellor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DKT4CBU8YB5G.2W0766H2NU6Y8@bootlin.com \
--to=theo.lebrun@bootlin.com \
--cc=andrew+netdev@lunn.ch \
--cc=conor.dooley@microchip.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nathan@kernel.org \
--cc=nb@tipi-net.de \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox