lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 28 Mar 2023 18:12:15 +0200
From:   Piotr Raczynski <piotr.raczynski@...el.com>
To:     Simon Horman <simon.horman@...igine.com>
CC:     <intel-wired-lan@...ts.osuosl.org>, <netdev@...r.kernel.org>,
        <michal.swiatkowski@...el.com>, <shiraz.saleem@...el.com>,
        <jacob.e.keller@...el.com>, <sridhar.samudrala@...el.com>,
        <jesse.brandeburg@...el.com>, <aleksander.lobakin@...el.com>,
        <lukasz.czapnik@...el.com>,
        Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>
Subject: Re: [PATCH net-next v3 7/8] ice: track interrupt vectors with xarray

On Sun, Mar 26, 2023 at 03:19:58PM +0200, Simon Horman wrote:
> On Thu, Mar 23, 2023 at 01:24:39PM +0100, Piotr Raczynski wrote:
> > Replace custom interrupt tracker with generic xarray data structure.
> > Remove all code responsible for searching for a new entry with xa_alloc,
> > which always tries to allocate at the lowes possible index. As a result
> > driver is always using a contiguous region of the MSIX vector table.
> > 
> > New tracker keeps ice_irq_entry entries in xarray as opaque for the rest
> > of the driver hiding the entry details from the caller.
> > 
> > Reviewed-by: Jacob Keller <jacob.e.keller@...el.com>
> > Reviewed-by: Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>
> > Signed-off-by: Piotr Raczynski <piotr.raczynski@...el.com>
> 
> Reviewed-by: Simon Horman <simon.horman@...igine.com>
> 
> I've added a few comments inline for your consideration
> if you need to respin for some other reason.
> 
Thanks for reviewing.

> ...
> 
> > diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
> > index 89d80a2b5feb..b7398abda26a 100644
> > --- a/drivers/net/ethernet/intel/ice/ice.h
> > +++ b/drivers/net/ethernet/intel/ice/ice.h
> > @@ -104,7 +104,6 @@
> >  #define ICE_Q_WAIT_RETRY_LIMIT	10
> >  #define ICE_Q_WAIT_MAX_RETRY	(5 * ICE_Q_WAIT_RETRY_LIMIT)
> >  #define ICE_MAX_LG_RSS_QS	256
> > -#define ICE_RES_VALID_BIT	0x8000
> 
> nit: BIT() could be used here.
> 

This piece is gone anyway.

> >  #define ICE_INVAL_Q_INDEX	0xffff
> >  
> >  #define ICE_MAX_RXQS_PER_TC		256	/* Used when setting VSI context per TC Rx queues */
> 
> ...
> 
> > diff --git a/drivers/net/ethernet/intel/ice/ice_irq.c b/drivers/net/ethernet/intel/ice/ice_irq.c
> > index ca1a1de26766..20d4e9a6aefb 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_irq.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_irq.c
> 
> ...
> 
> > +/**
> > + * ice_get_irq_res - get an interrupt resource
> > + * @pf: board private structure
> > + *
> > + * Allocate new irq entry in the free slot of the tracker. Since xarray
> > + * is used, always allocate new entry at the lowest possible index. Set
> > + * proper allocation limit for maximum tracker entries.
> > + *
> > + * Returns allocated irq entry or NULL on failure.
> > + */
> > +static struct ice_irq_entry *ice_get_irq_res(struct ice_pf *pf)
> > +{
> > +	struct xa_limit limit = { .max = pf->irq_tracker.num_entries,
> > +				  .min = 0 };
> > +	struct ice_irq_entry *entry;
> > +	unsigned int index;
> > +	int ret;
> > +
> > +	entry = kzalloc(sizeof(*entry), GFP_KERNEL);
> > +	if (!entry)
> > +		goto exit;
> 
> nit: maybe it is simpler to return NULL here.
> 
> > +
> > +	ret = xa_alloc(&pf->irq_tracker.entries, &index, entry, limit,
> > +		       GFP_KERNEL);
> > +
> > +	if (ret) {
> > +		kfree(entry);
> > +		entry = NULL;
> 
> and here.
> 
> > +	} else {
> > +		entry->index = index;
> 
> Which allows for more idiomatic code by moving this out of the else clause.
> 
> > +	}
> > +
> > +exit:
> 
> And removal of this label.

Good idea, thanks.

> 
> > +	return entry;
> > +}
> > +

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ