2019-08-30 23:20:59

by Joel Fernandes

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

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) <[email protected]>
---
drivers/pci/controller/vmd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

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);

--
2.23.0.187.g17f5b7556c-goog


2019-09-04 04:08:50

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH 1/2] pci: Convert to use built-in RCU list checking

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

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <[email protected]>

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


Attachments:
(No filename) (2.34 kB)
.config.gz (46.89 kB)
Download all attachments

2019-09-04 05:05:28

by Joel Fernandes

[permalink] [raw]
Subject: Re: [PATCH 1/2] pci: Convert to use built-in RCU list checking

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 <[email protected]>
>
> 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


2019-09-04 17:14:49

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH 1/2] pci: Convert to use built-in RCU list checking

On Wed, Sep 4, 2019 at 8:07 AM Joel Fernandes <[email protected]> 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.

--
With Best Regards,
Andy Shevchenko

2019-09-04 18:27:16

by Joel Fernandes

[permalink] [raw]
Subject: Re: [PATCH 1/2] pci: Convert to use built-in RCU list checking

On Wed, Sep 4, 2019 at 1:13 PM Andy Shevchenko
<[email protected]> wrote:
>
> On Wed, Sep 4, 2019 at 8:07 AM Joel Fernandes <[email protected]> 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

2019-09-04 19:38:01

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH 1/2] pci: Convert to use built-in RCU list checking

On Wed, Sep 4, 2019 at 9:01 PM Joel Fernandes <[email protected]> wrote:
> On Wed, Sep 4, 2019 at 1:13 PM Andy Shevchenko
> <[email protected]> wrote:
> > On Wed, Sep 4, 2019 at 8:07 AM Joel Fernandes <[email protected]> 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).

--
With Best Regards,
Andy Shevchenko