All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Niklas Cassel <niklas.cassel@axis.com>,
	Jingoo Han <jingoohan1@gmail.com>,
	Joao Pinto <Joao.Pinto@synopsys.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Niklas Cassel <niklass@axis.com>,
	linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/2] PCI: designware-ep: Fix find_first_zero_bit() usage
Date: Tue, 21 Nov 2017 16:44:06 +0000	[thread overview]
Message-ID: <20171121164406.GA15713@red-moon> (raw)
In-Reply-To: <4376af2c-7e90-f9b4-7f53-65c00de55e90@ti.com>

On Tue, Nov 21, 2017 at 01:24:53PM +0530, Kishon Vijay Abraham I wrote:
> Hi Lorenzo,
> 
> On Saturday 18 November 2017 12:13 AM, Lorenzo Pieralisi wrote:
> > [+Kishon - please CC him next time]
> > 
> > On Fri, Nov 17, 2017 at 04:00:40PM +0100, Niklas Cassel wrote:
> >> find_first_zero_bit()'s parameter 'size' is defined in bits,
> >> not in bytes.
> >>
> >> find_first_zero_bit() was called with size in bytes rather than bits,
> >> which thus defined a too low upper limit, causing
> >> dw_pcie_ep_inbound_atu() to assign iatu index #4 to both bar 4
> >> and bar 5, which made bar 5 overwrite the settings set by bar 4.
> >>
> >> Fix this by using replacing find_first_zero_bit() with ffz(),
> >> since ffz() only works on a single 'unsigned long' and therefore
> >> does not need a size argument.
> >>
> >> Fixes: f8aed6ec624f ("PCI: dwc: designware: Add EP mode support")
> >> Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
> >> ---
> >>  drivers/pci/dwc/pcie-designware-ep.c | 6 ++----
> >>  1 file changed, 2 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/pci/dwc/pcie-designware-ep.c b/drivers/pci/dwc/pcie-designware-ep.c
> >> index d53d5f168363..ab9a9e160daf 100644
> >> --- a/drivers/pci/dwc/pcie-designware-ep.c
> >> +++ b/drivers/pci/dwc/pcie-designware-ep.c
> >> @@ -70,8 +70,7 @@ static int dw_pcie_ep_inbound_atu(struct dw_pcie_ep *ep, enum pci_barno bar,
> >>  	u32 free_win;
> >>  	struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
> >>  
> >> -	free_win = find_first_zero_bit(&ep->ib_window_map,
> >> -				       sizeof(ep->ib_window_map));
> >> +	free_win = ffz(ep->ib_window_map);
> > 
> > You fix the bug at hand but code suffers from the same issue since we
> > should be checking the value against ~0UL first ie if size in bits <
> > num_ib_windows (that I think it is unlikely anyway but while at it let's
> > think if we can improve this).
> > 
> > @Kishon: maybe we should add a static upper size and declare a
> > static bitmap accordingly (and still use find_first_zero_bit()) ?
> > 
> > I think the check against ~0UL should be added anyway, let's get
> > Kishon's opinion before a v3 (if any).
> 
> Yeah, for both ffz and find_first_zero_bit, the results are undefined if no
> zero exists.
> 
> I'm thinking if we should just use
> find_first_zero_bit(&ep->ib_window_map, ep->num_ib_windows) after checking if
> there are some '0' bits left.

Well yes but first the &ep->ib_window_map must be sized accordingly.

Lorenzo

  reply	other threads:[~2017-11-21 16:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-17 15:00 [PATCH v2 0/2] Fix find_first_zero_bit() usage Niklas Cassel
2017-11-17 15:00 ` [PATCH v2 1/2] PCI: designware-ep: " Niklas Cassel
2017-11-17 18:43   ` Lorenzo Pieralisi
2017-11-21  7:54     ` Kishon Vijay Abraham I
2017-11-21 16:44       ` Lorenzo Pieralisi [this message]
2017-11-17 15:00 ` [PATCH v2 2/2] PCI: endpoint: " Niklas Cassel

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=20171121164406.GA15713@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=Joao.Pinto@synopsys.com \
    --cc=bhelgaas@google.com \
    --cc=jingoohan1@gmail.com \
    --cc=kishon@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=niklas.cassel@axis.com \
    --cc=niklass@axis.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.