All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolai Buchwitz <nb@tipi-net.de>
To: "Théo Lebrun" <theo.lebrun@bootlin.com>
Cc: "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>,
	"Richard Cochran" <richardcochran@gmail.com>,
	"Russell King" <linux@armlinux.org.uk>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>,
	"Claudiu Beznea" <claudiu.beznea@tuxon.dev>,
	"Paolo Valerio" <pvalerio@redhat.com>,
	"Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
	"Gregory CLEMENT" <gregory.clement@bootlin.com>,
	"Benoît Monin" <benoit.monin@bootlin.com>,
	"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
	"Maxime Chevallier" <maxime.chevallier@bootlin.com>
Subject: Re: [PATCH net-next v4 11/15] net: macb: change function signatures to take contexts
Date: Sun, 19 Jul 2026 12:46:44 +0200	[thread overview]
Message-ID: <a6ae2cec6d910378e790d52cc3fd1a00@tipi-net.de> (raw)
In-Reply-To: <20260717-macb-context-v4-11-0acbe7f10cdb@bootlin.com>

Hi Théo

On 17.7.2026 21:48, Théo Lebrun wrote:
> For parallel MACB context to start become a reality, many functions 
> need
> to stop operating on bp->ctx (the currently active context) and instead
> work on a context they get passed. That context might be
> (1) the new one that is getting allocated and initialised, or,
> (2) the old one to be freed.
> 
> To reduce bug surface area, taint those functions to *only* take a
> context `struct macb_context *ctx` and no `struct macb *bp`. That way,
> no bug of using `bp->ctx` instead of `ctx` will ever occur.
> 
> We also convert functions that take a `struct macb_queue *queue` to
> instead take `struct macb_context *ctx, unsigned int q`, with q
> indexing ctx->txq[] and ctx->rxq[].
> 
> Full list:
> 
>    macb_adj_dma_desc_idx()
>    macb_tx_ring_wrap()
>    macb_tx_desc()
>    macb_rx_ring_wrap()
>    macb_rx_desc()
>    macb_get_addr()
>    gem_rx_refill()
>    macb_init_rx_ring()
>    gem_free_rx_buffers()
>    macb_free_rx_buffers()
>    macb_tx_ring_size_per_queue()
>    macb_rx_ring_size_per_queue()
>    macb_free()
>    gem_alloc_rx_buffers()
>    macb_alloc_rx_buffers()
>    macb_alloc()
>    gem_init_rx_ring()
>    gem_init_rings()
>    macb_init_rings()
> 
> Note about gem_rx_refill(): it ends with a netdev_vdbg() that prints 
> the
> queue pointer. Change to print the queue index because we do not have
> access to the queue anymore.
> 
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
> ---
>  drivers/net/ethernet/cadence/macb.h      |   7 +-
>  drivers/net/ethernet/cadence/macb_main.c | 398 
> ++++++++++++++++---------------
>  2 files changed, 215 insertions(+), 190 deletions(-)
> 
> diff --git a/drivers/net/ethernet/cadence/macb.h 
> b/drivers/net/ethernet/cadence/macb.h
> index c551d7db8ebe..ac2f2d8065d7 100644
> --- a/drivers/net/ethernet/cadence/macb.h
> +++ b/drivers/net/ethernet/cadence/macb.h
> @@ -1196,11 +1196,12 @@ static const struct gem_statistic 
> queue_statistics[] = {
> 
>  struct macb;
>  struct macb_queue;
> +struct macb_context;
> 
>  struct macb_or_gem_ops {
> -	int	(*mog_alloc_rx_buffers)(struct macb *bp);
> -	void	(*mog_free_rx_buffers)(struct macb *bp);
> -	void	(*mog_init_rings)(struct macb *bp);
> +	int	(*mog_alloc_rx_buffers)(struct macb_context *ctx);
> +	void	(*mog_free_rx_buffers)(struct macb_context *ctx);
> +	void	(*mog_init_rings)(struct macb_context *ctx);
>  	int	(*mog_rx)(struct macb_queue *queue, struct napi_struct *napi,
>  			  int budget);
>  };
> diff --git a/drivers/net/ethernet/cadence/macb_main.c 
> b/drivers/net/ethernet/cadence/macb_main.c
> index 7574418d5094..d396a307310b 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c

> [...]

> @@ -5083,7 +5107,7 @@ static int at91ether_start(struct macb *bp)
> 
>  	addr = rxq->buffers_dma;
>  	for (i = 0; i < AT91ETHER_MAX_RX_DESCR; i++) {
> -		desc = macb_rx_desc(queue, i);
> +		desc = macb_rx_desc(bp->ctx, 0, i);

AFAIU at91ether_open() doesn't set bp->ctx->info at this point in the
series, so with CONFIG_MACB_USE_HWSTAMP=y this should oops on ifup:

     macb_rx_desc()
       macb_adj_dma_desc_idx()
         macb_dma_ptp(ctx->info)   -> NULL deref

The next patch adds the missing assignment to at91ether_open(), so
only bisection is affected. Maybe move that line here or into patch 9?

> [...]

Thanks
Nicolai

  reply	other threads:[~2026-07-19 10:46 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-17 19:48 [PATCH net-next v4 00/15] net: macb: implement context swapping Théo Lebrun
2026-07-17 19:48 ` [PATCH net-next v4 01/15] net: macb: drop "consistent" from alloc/free function names Théo Lebrun
2026-07-17 19:48 ` [PATCH net-next v4 02/15] net: macb: unify device pointer naming convention Théo Lebrun
2026-07-19 10:32   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 03/15] net: macb: unify variable naming convention in at91ether functions Théo Lebrun
2026-07-17 19:48 ` [PATCH net-next v4 04/15] net: macb: unify queue index variable naming convention and types Théo Lebrun
2026-07-17 19:48 ` [PATCH net-next v4 05/15] net: macb: enforce reverse christmas tree (RCT) convention Théo Lebrun
2026-07-17 19:48 ` [PATCH net-next v4 06/15] net: macb: allocate tieoff descriptor once across device lifetime Théo Lebrun
2026-07-17 19:48 ` [PATCH net-next v4 07/15] net: macb: introduce macb_context struct for buffer management Théo Lebrun
2026-07-19 10:38   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 08/15] net: macb: avoid macb_init_rx_buffer_size() modifying state Théo Lebrun
2026-07-19 10:39   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 09/15] net: macb: make `struct macb` subset reachable from macb_context struct Théo Lebrun
2026-07-19 10:40   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 10/15] net: macb: change caps helpers signatures Théo Lebrun
2026-07-19 10:42   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 11/15] net: macb: change function signatures to take contexts Théo Lebrun
2026-07-19 10:46   ` Nicolai Buchwitz [this message]
2026-07-17 19:48 ` [PATCH net-next v4 12/15] net: macb: introduce macb_context_alloc() helper Théo Lebrun
2026-07-19 10:47   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 13/15] net: macb: read ISR inside bp->lock critical section Théo Lebrun
2026-07-19 10:48   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 14/15] net: macb: use context swapping in .set_ringparam() Théo Lebrun
2026-07-19 10:53   ` Nicolai Buchwitz
2026-07-17 19:48 ` [PATCH net-next v4 15/15] net: macb: use context swapping in .ndo_change_mtu() Théo Lebrun
2026-07-19 10:54   ` Nicolai Buchwitz

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=a6ae2cec6d910378e790d52cc3fd1a00@tipi-net.de \
    --to=nb@tipi-net.de \
    --cc=andrew+netdev@lunn.ch \
    --cc=benoit.monin@bootlin.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=conor.dooley@microchip.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gregory.clement@bootlin.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=maxime.chevallier@bootlin.com \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=pabeni@redhat.com \
    --cc=pvalerio@redhat.com \
    --cc=richardcochran@gmail.com \
    --cc=tawfik.bayouk@mobileye.com \
    --cc=theo.lebrun@bootlin.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=vladimir.kondratiev@mobileye.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.