diff mbox series

[1/2] pci: Convert to use built-in RCU list checking

Message ID 20190830231817.76862-1-joel@joelfernandes.org (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show
Series [1/2] pci: Convert to use built-in RCU list checking | expand

Commit Message

Joel Fernandes Aug. 30, 2019, 11:18 p.m. UTC
CONFIG_PROVE_RCU_LIST requires list_for_each_entry_rcu() to pass a
lockdep expression if using srcu or locking for protection. It can only
check regular RCU protection, all other protection needs to be passed as
lockdep expression.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
 drivers/pci/controller/vmd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Joel Fernandes Sept. 4, 2019, 5:04 a.m. UTC | #1
On Wed, Sep 04, 2019 at 12:06:43PM +0800, kbuild test robot wrote:
> Hi "Joel,
> 
> Thank you for the patch! Yet something to improve:
> 
> [auto build test ERROR on linus/master]
> [cannot apply to v5.3-rc7 next-20190903]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
> 
> url:    https://github.com/0day-ci/linux/commits/Joel-Fernandes-Google/pci-Convert-to-use-built-in-RCU-list-checking/20190901-211013
> config: x86_64-rhel-7.6 (attached as .config)
> compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=x86_64 

This error seems bogus. I pulled -next and applied this patch and it builds
fine. I am not sure what is wrong with the 0day tree, and the above 0day link
is also dead.

What's going on with 0day ?!

thanks,

 - Joel

> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
> 
> All error/warnings (new ones prefixed by >>):
> 
>    drivers/pci/controller/vmd.c: In function 'vmd_irq':
> >> drivers/pci/controller/vmd.c:722:37: error: macro "list_for_each_entry_rcu" passed 4 arguments, but takes just 3
>         srcu_read_lock_held(&irqs->srcu))
>                                         ^
> >> drivers/pci/controller/vmd.c:721:2: error: unknown type name 'list_for_each_entry_rcu'
>      list_for_each_entry_rcu(vmdirq, &irqs->irq_list, node,
>      ^~~~~~~~~~~~~~~~~~~~~~~
> >> drivers/pci/controller/vmd.c:723:28: error: expected ')' before '->' token
>       generic_handle_irq(vmdirq->virq);
>                                ^~
> >> drivers/pci/controller/vmd.c:721:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
>      list_for_each_entry_rcu(vmdirq, &irqs->irq_list, node,
>      ^~~~~~~~~~~~~~~~~~~~~~~
>    drivers/pci/controller/vmd.c:717:18: warning: unused variable 'vmdirq' [-Wunused-variable]
>      struct vmd_irq *vmdirq;
>                      ^~~~~~
> 
> vim +/list_for_each_entry_rcu +722 drivers/pci/controller/vmd.c
> 
>    713	
>    714	static irqreturn_t vmd_irq(int irq, void *data)
>    715	{
>    716		struct vmd_irq_list *irqs = data;
>    717		struct vmd_irq *vmdirq;
>    718		int idx;
>    719	
>    720		idx = srcu_read_lock(&irqs->srcu);
>  > 721		list_for_each_entry_rcu(vmdirq, &irqs->irq_list, node,
>  > 722					srcu_read_lock_held(&irqs->srcu))
>  > 723			generic_handle_irq(vmdirq->virq);
>    724		srcu_read_unlock(&irqs->srcu, idx);
>    725	
>    726		return IRQ_HANDLED;
>    727	}
>    728	
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Andy Shevchenko Sept. 4, 2019, 5:13 p.m. UTC | #2
On Wed, Sep 4, 2019 at 8:07 AM Joel Fernandes <joel@joelfernandes.org> wrote:
>
> On Wed, Sep 04, 2019 at 12:06:43PM +0800, kbuild test robot wrote:
> > Hi "Joel,
> >
> > Thank you for the patch! Yet something to improve:
> >
> > [auto build test ERROR on linus/master]
> > [cannot apply to v5.3-rc7 next-20190903]
> > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
> >
> > url:    https://github.com/0day-ci/linux/commits/Joel-Fernandes-Google/pci-Convert-to-use-built-in-RCU-list-checking/20190901-211013
> > config: x86_64-rhel-7.6 (attached as .config)
> > compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
> > reproduce:
> >         # save the attached .config to linux build tree
> >         make ARCH=x86_64
>
> This error seems bogus. I pulled -next and applied this patch and it builds
> fine. I am not sure what is wrong with the 0day tree, and the above 0day link
> is also dead.
>
> What's going on with 0day ?!

I would rather to add Depends-on: ... tag to your patch if the
dependency is going thru another tree at the same cycle.
kbuildbot absolutely correct here.
Joel Fernandes Sept. 4, 2019, 6:01 p.m. UTC | #3
On Wed, Sep 4, 2019 at 1:13 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Wed, Sep 4, 2019 at 8:07 AM Joel Fernandes <joel@joelfernandes.org> wrote:
> >
> > On Wed, Sep 04, 2019 at 12:06:43PM +0800, kbuild test robot wrote:
> > > Hi "Joel,
> > >
> > > Thank you for the patch! Yet something to improve:
> > >
> > > [auto build test ERROR on linus/master]
> > > [cannot apply to v5.3-rc7 next-20190903]
> > > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
> > >
> > > url:    https://github.com/0day-ci/linux/commits/Joel-Fernandes-Google/pci-Convert-to-use-built-in-RCU-list-checking/20190901-211013
> > > config: x86_64-rhel-7.6 (attached as .config)
> > > compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
> > > reproduce:
> > >         # save the attached .config to linux build tree
> > >         make ARCH=x86_64
> >
> > This error seems bogus. I pulled -next and applied this patch and it builds
> > fine. I am not sure what is wrong with the 0day tree, and the above 0day link
> > is also dead.
> >
> > What's going on with 0day ?!
>
> I would rather to add Depends-on: ... tag to your patch if the
> dependency is going thru another tree at the same cycle.
> kbuildbot absolutely correct here.

The dependency is already in -next and I pulled it and applied the
patch. It is testing -next right?

thanks,

 - Joel
Andy Shevchenko Sept. 4, 2019, 7:36 p.m. UTC | #4
On Wed, Sep 4, 2019 at 9:01 PM Joel Fernandes <joel@joelfernandes.org> wrote:
> On Wed, Sep 4, 2019 at 1:13 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Wed, Sep 4, 2019 at 8:07 AM Joel Fernandes <joel@joelfernandes.org> wrote:
> > > On Wed, Sep 04, 2019 at 12:06:43PM +0800, kbuild test robot wrote:

> > > > [auto build test ERROR on linus/master]

^^^ (1)

> > > > [cannot apply to v5.3-rc7 next-20190903]

^^^ (2)


> The dependency is already in -next and I pulled it and applied the
> patch.

This is a problem. You must provide dependency even for maintainers
(in form of immutable branch / tag).
The easier way to provide Depends-on (when it's one patch), though
kbuild bot doesn't support it. Yet?

>  It is testing -next right?

It testing (1) and (2). (it was unable to apply against next by some
reason, but the build error is against latest vanilla failed. And this
is completely correct. Just follow the process (see above).
diff mbox series

Patch

diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c
index 4575e0c6dc4b..127631d0c6da 100644
--- a/drivers/pci/controller/vmd.c
+++ b/drivers/pci/controller/vmd.c
@@ -718,7 +718,8 @@  static irqreturn_t vmd_irq(int irq, void *data)
 	int idx;
 
 	idx = srcu_read_lock(&irqs->srcu);
-	list_for_each_entry_rcu(vmdirq, &irqs->irq_list, node)
+	list_for_each_entry_rcu(vmdirq, &irqs->irq_list, node,
+				srcu_read_lock_held(&irqs->srcu))
 		generic_handle_irq(vmdirq->virq);
 	srcu_read_unlock(&irqs->srcu, idx);