All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas@monjalon.net>
To: "Bruce Richardson" <bruce.richardson@intel.com>,
	"Morten Brørup" <mb@smartsharesystems.com>
Cc: dev@dpdk.org, Tyler Retzlaff <roretzla@linux.microsoft.com>,
	Ferruh Yigit <ferruh.yigit@amd.com>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>,
	Gaetan Rivet <grive@u256.net>, Jie Hai <haijie1@huawei.com>,
	Long Li <longli@microsoft.com>, Wei Hu <weh@microsoft.com>
Subject: Re: [PATCH 2/2] drivers/net: support single queue per port
Date: Wed, 06 Nov 2024 17:06:45 +0100	[thread overview]
Message-ID: <5956521.peFUeoqG7q@thomas> (raw)
In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35E9F88A@smartserver.smartshare.dk>

06/11/2024 13:19, Morten Brørup:
> > From: Bruce Richardson [mailto:bruce.richardson@intel.com]
> > Sent: Wednesday, 6 November 2024 12.52
> > 
> > On Fri, Oct 25, 2024 at 11:52:23AM +0000, Morten Brørup wrote:
> > > When configuring DPDK for one queue per port
> > > (#define RTE_MAX_QUEUES_PER_PORT 1), compilation of some network
> > drivers
> > > fails with e.g.:
> > >
> > > ../drivers/net/bnxt/bnxt_rxq.c: In function 'bnxt_rx_queue_stop':
> > > ../drivers/net/bnxt/bnxt_rxq.c:587:34: error: array subscript 1 is
> > above array bounds of 'uint8_t[1]' {aka 'unsigned char[1]'} [-
> > Werror=array-bounds=]
> > >   587 |         dev->data->rx_queue_state[q_id] =
> > RTE_ETH_QUEUE_STATE_STOPPED;
> > >       |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
> > > In file included from ../drivers/net/bnxt/bnxt.h:16,
> > >                  from ../drivers/net/bnxt/bnxt_rxq.c:10:
> > > ../lib/ethdev/ethdev_driver.h:168:17: note: while referencing
> > 'rx_queue_state'
> > >   168 |         uint8_t rx_queue_state[RTE_MAX_QUEUES_PER_PORT];
> > >       |                 ^~~~~~~~~~~~~~
> > >
> > > To fix this, a hint is added to the network drivers where a compiler
> > in
> > > the CI has been seen to emit the above error when DPDK is configured
> > for
> > > one queue per port, but we know that the error cannot occur.
[...]
> > >  	for (i = 0; i < dev->data->nb_rx_queues; i++) {
> > > +		__rte_assume(i < RTE_MAX_QUEUES_PER_PORT);
> > >  		rxq = dev->data->rx_queues[i];
[...]
> > BTW: is this the only/best way to put in the assumption? If it were me,
> > I'd
> > look to put before the loop the underlying assumption that
> > (dev->data->nb_XX_queues < RTE_MAX_QUEUES_PER_PORT), rather than
> > putting
> > the assumption on "i".
> 
> I would also prefer putting it outside the loop,
> but it doesn't work in cases where the variable
> is potentially modified inside the loop.
> And here's the problem with that:
> Passing it as a parameter to a logging macro
> makes the compiler think it is "potentially modified".

I don't understand this part.
"i" is not a pointer, so how it can be modified?

> And thus, I have to put it where it hurts, and decided to do it consistently.

Why doing something heavier consistently?
I would prefer to catch the problematic cases only with this macro.





  parent reply	other threads:[~2024-11-06 16:06 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-25 11:52 [PATCH 0/2] ethdev: support single queue per port Morten Brørup
2024-10-25 11:52 ` [PATCH 1/2] eal: add unreachable and precondition hints Morten Brørup
2024-11-04 11:40   ` Morten Brørup
2024-11-04 12:19     ` Bruce Richardson
2024-11-04 12:53       ` Morten Brørup
2024-11-06 11:48   ` Bruce Richardson
2024-10-25 11:52 ` [PATCH 2/2] drivers/net: support single queue per port Morten Brørup
2024-10-25 21:27   ` Ajit Khaparde
2024-10-25 21:56   ` Long Li
2024-11-06 11:52   ` Bruce Richardson
2024-11-06 12:19     ` Morten Brørup
2024-11-06 13:28       ` Bruce Richardson
2024-11-06 16:06       ` Thomas Monjalon [this message]
2024-11-07 10:28         ` Morten Brørup
2024-11-12  2:25 ` [PATCH 0/2] ethdev: " Thomas Monjalon

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=5956521.peFUeoqG7q@thomas \
    --to=thomas@monjalon.net \
    --cc=ajit.khaparde@broadcom.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.com \
    --cc=grive@u256.net \
    --cc=haijie1@huawei.com \
    --cc=longli@microsoft.com \
    --cc=mb@smartsharesystems.com \
    --cc=roretzla@linux.microsoft.com \
    --cc=somnath.kotur@broadcom.com \
    --cc=weh@microsoft.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.