* [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain
@ 2021-03-08 19:31 Andy Shevchenko
2021-03-08 19:31 ` [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator Andy Shevchenko
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Andy Shevchenko @ 2021-03-08 19:31 UTC (permalink / raw)
To: linux-gpio, linux-kernel
Cc: Linus Walleij, Bartosz Golaszewski, linux-acpi,
Rafael J. Wysocki, Andy Shevchenko
When IRQ domain is created for an ACPI case, the name of it becomes unknown-%d
since for now it utilizes of_node member only and doesn't consider fwnode case.
Convert IRQ domain creation code to utilize fwnode instead.
Before/After the change on Intel Galileo Gen 2 with two GPIO (IRQ) controllers:
unknown-1 ==> \_SB.PCI0.GIP0.GPO
unknown-2 ==> \_SB.NIO3
Due to the nature of this change we may also deduplicate the WARN():s
because in either case (DT or ACPI) the fwnode will be set correctly
and %pfw is an equivalent to what the current code prints as a prefix.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v4: added a paragraph about WARN changes, split out ops optimizations (Rafael)
drivers/gpio/gpiolib.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 1853075df741..afee48e7dd41 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1456,9 +1456,9 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
struct lock_class_key *lock_key,
struct lock_class_key *request_key)
{
+ struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
struct irq_chip *irqchip = gc->irq.chip;
const struct irq_domain_ops *ops = NULL;
- struct device_node *np;
unsigned int type;
unsigned int i;
@@ -1470,7 +1470,6 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
return -EINVAL;
}
- np = gc->gpiodev->dev.of_node;
type = gc->irq.default_type;
/*
@@ -1478,16 +1477,10 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
* used to configure the interrupts, as you may end up with
* conflicting triggers. Tell the user, and reset to NONE.
*/
- if (WARN(np && type != IRQ_TYPE_NONE,
- "%s: Ignoring %u default trigger\n", np->full_name, type))
+ if (WARN(fwnode && type != IRQ_TYPE_NONE,
+ "%pfw: Ignoring %u default trigger\n", fwnode, type))
type = IRQ_TYPE_NONE;
- if (has_acpi_companion(gc->parent) && type != IRQ_TYPE_NONE) {
- acpi_handle_warn(ACPI_HANDLE(gc->parent),
- "Ignoring %u default trigger\n", type);
- type = IRQ_TYPE_NONE;
- }
-
if (gc->to_irq)
chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__);
@@ -1508,7 +1501,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
if (!ops)
ops = &gpiochip_domain_ops;
- gc->irq.domain = irq_domain_add_simple(np,
+ gc->irq.domain = irq_domain_create_simple(fwnode,
gc->ngpio,
gc->irq.first,
ops, gc);
--
2.30.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator
2021-03-08 19:31 [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Andy Shevchenko
@ 2021-03-08 19:31 ` Andy Shevchenko
2021-03-08 19:43 ` Rafael J. Wysocki
2021-03-08 19:36 ` [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Rafael J. Wysocki
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Andy Shevchenko @ 2021-03-08 19:31 UTC (permalink / raw)
To: linux-gpio, linux-kernel
Cc: Linus Walleij, Bartosz Golaszewski, linux-acpi,
Rafael J. Wysocki, Andy Shevchenko
It's quite spread code to initialize IRQ domain options.
Let's fold it into a simple oneliner.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v4: new patch (see changelog of previous one)
drivers/gpio/gpiolib.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index afee48e7dd41..8c5ce377accc 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1458,7 +1458,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
{
struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
struct irq_chip *irqchip = gc->irq.chip;
- const struct irq_domain_ops *ops = NULL;
+ const struct irq_domain_ops *ops;
unsigned int type;
unsigned int i;
@@ -1496,11 +1496,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
return ret;
} else {
/* Some drivers provide custom irqdomain ops */
- if (gc->irq.domain_ops)
- ops = gc->irq.domain_ops;
-
- if (!ops)
- ops = &gpiochip_domain_ops;
+ ops = gc->irq.domain_ops ?: &gpiochip_domain_ops;
gc->irq.domain = irq_domain_create_simple(fwnode,
gc->ngpio,
gc->irq.first,
--
2.30.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain
2021-03-08 19:31 [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Andy Shevchenko
2021-03-08 19:31 ` [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator Andy Shevchenko
@ 2021-03-08 19:36 ` Rafael J. Wysocki
2021-03-08 21:12 ` kernel test robot
2021-03-09 0:06 ` kernel test robot
3 siblings, 0 replies; 10+ messages in thread
From: Rafael J. Wysocki @ 2021-03-08 19:36 UTC (permalink / raw)
To: Andy Shevchenko
Cc: open list:GPIO SUBSYSTEM, Linux Kernel Mailing List,
Linus Walleij, Bartosz Golaszewski, ACPI Devel Maling List,
Rafael J. Wysocki
On Mon, Mar 8, 2021 at 8:33 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> When IRQ domain is created for an ACPI case, the name of it becomes unknown-%d
> since for now it utilizes of_node member only and doesn't consider fwnode case.
> Convert IRQ domain creation code to utilize fwnode instead.
>
> Before/After the change on Intel Galileo Gen 2 with two GPIO (IRQ) controllers:
>
> unknown-1 ==> \_SB.PCI0.GIP0.GPO
> unknown-2 ==> \_SB.NIO3
>
> Due to the nature of this change we may also deduplicate the WARN():s
> because in either case (DT or ACPI) the fwnode will be set correctly
> and %pfw is an equivalent to what the current code prints as a prefix.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> v4: added a paragraph about WARN changes, split out ops optimizations (Rafael)
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> drivers/gpio/gpiolib.c | 15 ++++-----------
> 1 file changed, 4 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 1853075df741..afee48e7dd41 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -1456,9 +1456,9 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
> struct lock_class_key *lock_key,
> struct lock_class_key *request_key)
> {
> + struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
> struct irq_chip *irqchip = gc->irq.chip;
> const struct irq_domain_ops *ops = NULL;
> - struct device_node *np;
> unsigned int type;
> unsigned int i;
>
> @@ -1470,7 +1470,6 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
> return -EINVAL;
> }
>
> - np = gc->gpiodev->dev.of_node;
> type = gc->irq.default_type;
>
> /*
> @@ -1478,16 +1477,10 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
> * used to configure the interrupts, as you may end up with
> * conflicting triggers. Tell the user, and reset to NONE.
> */
> - if (WARN(np && type != IRQ_TYPE_NONE,
> - "%s: Ignoring %u default trigger\n", np->full_name, type))
> + if (WARN(fwnode && type != IRQ_TYPE_NONE,
> + "%pfw: Ignoring %u default trigger\n", fwnode, type))
> type = IRQ_TYPE_NONE;
>
> - if (has_acpi_companion(gc->parent) && type != IRQ_TYPE_NONE) {
> - acpi_handle_warn(ACPI_HANDLE(gc->parent),
> - "Ignoring %u default trigger\n", type);
> - type = IRQ_TYPE_NONE;
> - }
> -
> if (gc->to_irq)
> chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__);
>
> @@ -1508,7 +1501,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
>
> if (!ops)
> ops = &gpiochip_domain_ops;
> - gc->irq.domain = irq_domain_add_simple(np,
> + gc->irq.domain = irq_domain_create_simple(fwnode,
> gc->ngpio,
> gc->irq.first,
> ops, gc);
> --
> 2.30.1
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator
2021-03-08 19:31 ` [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator Andy Shevchenko
@ 2021-03-08 19:43 ` Rafael J. Wysocki
2021-03-08 19:46 ` Andy Shevchenko
0 siblings, 1 reply; 10+ messages in thread
From: Rafael J. Wysocki @ 2021-03-08 19:43 UTC (permalink / raw)
To: Andy Shevchenko
Cc: open list:GPIO SUBSYSTEM, Linux Kernel Mailing List,
Linus Walleij, Bartosz Golaszewski, ACPI Devel Maling List,
Rafael J. Wysocki
On Mon, Mar 8, 2021 at 8:33 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> It's quite spread code to initialize IRQ domain options.
> Let's fold it into a simple oneliner.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> v4: new patch (see changelog of previous one)
> drivers/gpio/gpiolib.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index afee48e7dd41..8c5ce377accc 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -1458,7 +1458,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
> {
> struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
> struct irq_chip *irqchip = gc->irq.chip;
> - const struct irq_domain_ops *ops = NULL;
> + const struct irq_domain_ops *ops;
It looks like the ops local var is redundant.
> unsigned int type;
> unsigned int i;
>
> @@ -1496,11 +1496,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
> return ret;
> } else {
> /* Some drivers provide custom irqdomain ops */
> - if (gc->irq.domain_ops)
> - ops = gc->irq.domain_ops;
> -
> - if (!ops)
> - ops = &gpiochip_domain_ops;
> + ops = gc->irq.domain_ops ?: &gpiochip_domain_ops;
> gc->irq.domain = irq_domain_create_simple(fwnode,
> gc->ngpio,
> gc->irq.first,
Because this can be
gc->irq.domain = irq_domain_add_simple(np,
gc->ngpio,
gc->irq.first,
gc->irq.domain_ops ?: &gpiochip_domain_ops,
gc);
(modulo white space / formatting) and this is the only place where ops
is used in this function.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator
2021-03-08 19:43 ` Rafael J. Wysocki
@ 2021-03-08 19:46 ` Andy Shevchenko
2021-03-08 19:52 ` Andy Shevchenko
0 siblings, 1 reply; 10+ messages in thread
From: Andy Shevchenko @ 2021-03-08 19:46 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: open list:GPIO SUBSYSTEM, Linux Kernel Mailing List,
Linus Walleij, Bartosz Golaszewski, ACPI Devel Maling List,
Rafael J. Wysocki
On Mon, Mar 08, 2021 at 08:43:19PM +0100, Rafael J. Wysocki wrote:
> On Mon, Mar 8, 2021 at 8:33 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
...
> It looks like the ops local var is redundant.
>
> > unsigned int type;
> > unsigned int i;
> >
> > @@ -1496,11 +1496,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
> > return ret;
> > } else {
> > /* Some drivers provide custom irqdomain ops */
> > - if (gc->irq.domain_ops)
> > - ops = gc->irq.domain_ops;
> > -
> > - if (!ops)
> > - ops = &gpiochip_domain_ops;
> > + ops = gc->irq.domain_ops ?: &gpiochip_domain_ops;
> > gc->irq.domain = irq_domain_create_simple(fwnode,
> > gc->ngpio,
> > gc->irq.first,
>
> Because this can be
>
> gc->irq.domain = irq_domain_add_simple(np,
> gc->ngpio,
> gc->irq.first,
> gc->irq.domain_ops ?: &gpiochip_domain_ops,
> gc);
>
> (modulo white space / formatting) and this is the only place where ops
> is used in this function.
I just sent v5 without this, sorry :-)
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator
2021-03-08 19:46 ` Andy Shevchenko
@ 2021-03-08 19:52 ` Andy Shevchenko
0 siblings, 0 replies; 10+ messages in thread
From: Andy Shevchenko @ 2021-03-08 19:52 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: open list:GPIO SUBSYSTEM, Linux Kernel Mailing List,
Linus Walleij, Bartosz Golaszewski, ACPI Devel Maling List,
Rafael J. Wysocki
On Mon, Mar 08, 2021 at 09:46:52PM +0200, Andy Shevchenko wrote:
> On Mon, Mar 08, 2021 at 08:43:19PM +0100, Rafael J. Wysocki wrote:
> I just sent v5 without this, sorry :-)
I will do it in v6.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain
2021-03-08 19:31 [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Andy Shevchenko
2021-03-08 19:31 ` [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator Andy Shevchenko
2021-03-08 19:36 ` [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Rafael J. Wysocki
@ 2021-03-08 21:12 ` kernel test robot
2021-03-09 10:25 ` Andy Shevchenko
2021-03-09 0:06 ` kernel test robot
3 siblings, 1 reply; 10+ messages in thread
From: kernel test robot @ 2021-03-08 21:12 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 5492 bytes --]
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on linux/master]
[also build test ERROR on linus/master v5.12-rc2 next-20210305]
[cannot apply to gpio/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ab38c17aac10bf55ab3efde4c4db3893d8691d2
config: s390-randconfig-s031-20210309 (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-262-g5e674421-dirty
# https://github.com/0day-ci/linux/commit/cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
git checkout cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
drivers/gpio/gpiolib.c: In function 'gpiochip_add_irqchip':
>> drivers/gpio/gpiolib.c:1505:20: error: implicit declaration of function 'irq_domain_create_simple'; did you mean 'irq_domain_create_tree'? [-Werror=implicit-function-declaration]
1505 | gc->irq.domain = irq_domain_create_simple(fwnode,
| ^~~~~~~~~~~~~~~~~~~~~~~~
| irq_domain_create_tree
>> drivers/gpio/gpiolib.c:1505:18: warning: assignment to 'struct irq_domain *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
1505 | gc->irq.domain = irq_domain_create_simple(fwnode,
| ^
cc1: some warnings being treated as errors
vim +1505 drivers/gpio/gpiolib.c
1449
1450 /**
1451 * gpiochip_add_irqchip() - adds an IRQ chip to a GPIO chip
1452 * @gc: the GPIO chip to add the IRQ chip to
1453 * @lock_key: lockdep class for IRQ lock
1454 * @request_key: lockdep class for IRQ request
1455 */
1456 static int gpiochip_add_irqchip(struct gpio_chip *gc,
1457 struct lock_class_key *lock_key,
1458 struct lock_class_key *request_key)
1459 {
1460 struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
1461 struct irq_chip *irqchip = gc->irq.chip;
1462 const struct irq_domain_ops *ops = NULL;
1463 unsigned int type;
1464 unsigned int i;
1465
1466 if (!irqchip)
1467 return 0;
1468
1469 if (gc->irq.parent_handler && gc->can_sleep) {
1470 chip_err(gc, "you cannot have chained interrupts on a chip that may sleep\n");
1471 return -EINVAL;
1472 }
1473
1474 type = gc->irq.default_type;
1475
1476 /*
1477 * Specifying a default trigger is a terrible idea if DT or ACPI is
1478 * used to configure the interrupts, as you may end up with
1479 * conflicting triggers. Tell the user, and reset to NONE.
1480 */
1481 if (WARN(fwnode && type != IRQ_TYPE_NONE,
1482 "%pfw: Ignoring %u default trigger\n", fwnode, type))
1483 type = IRQ_TYPE_NONE;
1484
1485 if (gc->to_irq)
1486 chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__);
1487
1488 gc->to_irq = gpiochip_to_irq;
1489 gc->irq.default_type = type;
1490 gc->irq.lock_key = lock_key;
1491 gc->irq.request_key = request_key;
1492
1493 /* If a parent irqdomain is provided, let's build a hierarchy */
1494 if (gpiochip_hierarchy_is_hierarchical(gc)) {
1495 int ret = gpiochip_hierarchy_add_domain(gc);
1496 if (ret)
1497 return ret;
1498 } else {
1499 /* Some drivers provide custom irqdomain ops */
1500 if (gc->irq.domain_ops)
1501 ops = gc->irq.domain_ops;
1502
1503 if (!ops)
1504 ops = &gpiochip_domain_ops;
> 1505 gc->irq.domain = irq_domain_create_simple(fwnode,
1506 gc->ngpio,
1507 gc->irq.first,
1508 ops, gc);
1509 if (!gc->irq.domain)
1510 return -EINVAL;
1511 }
1512
1513 if (gc->irq.parent_handler) {
1514 void *data = gc->irq.parent_handler_data ?: gc;
1515
1516 for (i = 0; i < gc->irq.num_parents; i++) {
1517 /*
1518 * The parent IRQ chip is already using the chip_data
1519 * for this IRQ chip, so our callbacks simply use the
1520 * handler_data.
1521 */
1522 irq_set_chained_handler_and_data(gc->irq.parents[i],
1523 gc->irq.parent_handler,
1524 data);
1525 }
1526 }
1527
1528 gpiochip_set_irq_hooks(gc);
1529
1530 acpi_gpiochip_request_interrupts(gc);
1531
1532 return 0;
1533 }
1534
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 14837 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain
2021-03-08 19:31 [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Andy Shevchenko
` (2 preceding siblings ...)
2021-03-08 21:12 ` kernel test robot
@ 2021-03-09 0:06 ` kernel test robot
3 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2021-03-09 0:06 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 5438 bytes --]
Hi Andy,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.12-rc2 next-20210305]
[cannot apply to gpio/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ab38c17aac10bf55ab3efde4c4db3893d8691d2
config: x86_64-randconfig-r001-20210309 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 3a11a41795bec548e91621caaa4cc00fc31b2212)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
git checkout cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/gpio/gpiolib.c:1505:20: error: implicit declaration of function 'irq_domain_create_simple' [-Werror,-Wimplicit-function-declaration]
gc->irq.domain = irq_domain_create_simple(fwnode,
^
>> drivers/gpio/gpiolib.c:1505:18: warning: incompatible integer to pointer conversion assigning to 'struct irq_domain *' from 'int' [-Wint-conversion]
gc->irq.domain = irq_domain_create_simple(fwnode,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
vim +1505 drivers/gpio/gpiolib.c
1449
1450 /**
1451 * gpiochip_add_irqchip() - adds an IRQ chip to a GPIO chip
1452 * @gc: the GPIO chip to add the IRQ chip to
1453 * @lock_key: lockdep class for IRQ lock
1454 * @request_key: lockdep class for IRQ request
1455 */
1456 static int gpiochip_add_irqchip(struct gpio_chip *gc,
1457 struct lock_class_key *lock_key,
1458 struct lock_class_key *request_key)
1459 {
1460 struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
1461 struct irq_chip *irqchip = gc->irq.chip;
1462 const struct irq_domain_ops *ops = NULL;
1463 unsigned int type;
1464 unsigned int i;
1465
1466 if (!irqchip)
1467 return 0;
1468
1469 if (gc->irq.parent_handler && gc->can_sleep) {
1470 chip_err(gc, "you cannot have chained interrupts on a chip that may sleep\n");
1471 return -EINVAL;
1472 }
1473
1474 type = gc->irq.default_type;
1475
1476 /*
1477 * Specifying a default trigger is a terrible idea if DT or ACPI is
1478 * used to configure the interrupts, as you may end up with
1479 * conflicting triggers. Tell the user, and reset to NONE.
1480 */
1481 if (WARN(fwnode && type != IRQ_TYPE_NONE,
1482 "%pfw: Ignoring %u default trigger\n", fwnode, type))
1483 type = IRQ_TYPE_NONE;
1484
1485 if (gc->to_irq)
1486 chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__);
1487
1488 gc->to_irq = gpiochip_to_irq;
1489 gc->irq.default_type = type;
1490 gc->irq.lock_key = lock_key;
1491 gc->irq.request_key = request_key;
1492
1493 /* If a parent irqdomain is provided, let's build a hierarchy */
1494 if (gpiochip_hierarchy_is_hierarchical(gc)) {
1495 int ret = gpiochip_hierarchy_add_domain(gc);
1496 if (ret)
1497 return ret;
1498 } else {
1499 /* Some drivers provide custom irqdomain ops */
1500 if (gc->irq.domain_ops)
1501 ops = gc->irq.domain_ops;
1502
1503 if (!ops)
1504 ops = &gpiochip_domain_ops;
> 1505 gc->irq.domain = irq_domain_create_simple(fwnode,
1506 gc->ngpio,
1507 gc->irq.first,
1508 ops, gc);
1509 if (!gc->irq.domain)
1510 return -EINVAL;
1511 }
1512
1513 if (gc->irq.parent_handler) {
1514 void *data = gc->irq.parent_handler_data ?: gc;
1515
1516 for (i = 0; i < gc->irq.num_parents; i++) {
1517 /*
1518 * The parent IRQ chip is already using the chip_data
1519 * for this IRQ chip, so our callbacks simply use the
1520 * handler_data.
1521 */
1522 irq_set_chained_handler_and_data(gc->irq.parents[i],
1523 gc->irq.parent_handler,
1524 data);
1525 }
1526 }
1527
1528 gpiochip_set_irq_hooks(gc);
1529
1530 acpi_gpiochip_request_interrupts(gc);
1531
1532 return 0;
1533 }
1534
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36667 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain
2021-03-08 21:12 ` kernel test robot
@ 2021-03-09 10:25 ` Andy Shevchenko
2021-03-10 9:35 ` Rong Chen
0 siblings, 1 reply; 10+ messages in thread
From: Andy Shevchenko @ 2021-03-09 10:25 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 1939 bytes --]
On Tue, Mar 09, 2021 at 05:12:21AM +0800, kernel test robot wrote:
> Hi Andy,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on linux/master]
> [also build test ERROR on linus/master v5.12-rc2 next-20210305]
> [cannot apply to gpio/for-next]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ab38c17aac10bf55ab3efde4c4db3893d8691d2
> config: s390-randconfig-s031-20210309 (attached as .config)
> compiler: s390-linux-gcc (GCC) 9.3.0
> reproduce:
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # apt-get install sparse
> # sparse version: v0.6.3-262-g5e674421-dirty
> # https://github.com/0day-ci/linux/commit/cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
> git checkout cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=s390
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All error/warnings (new ones prefixed by >>):
It was based on Rafael's bleeding-edge, in any case it's not actual anymore.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain
2021-03-09 10:25 ` Andy Shevchenko
@ 2021-03-10 9:35 ` Rong Chen
0 siblings, 0 replies; 10+ messages in thread
From: Rong Chen @ 2021-03-10 9:35 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2068 bytes --]
On 3/9/21 6:25 PM, Andy Shevchenko wrote:
> On Tue, Mar 09, 2021 at 05:12:21AM +0800, kernel test robot wrote:
>> Hi Andy,
>>
>> I love your patch! Yet something to improve:
>>
>> [auto build test ERROR on linux/master]
>> [also build test ERROR on linus/master v5.12-rc2 next-20210305]
>> [cannot apply to gpio/for-next]
>> [If your patch is applied to the wrong git tree, kindly drop us a note.
>> And when submitting patch, we suggest to use '--base' as documented in
>> https://git-scm.com/docs/git-format-patch]
>>
>> url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
>> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ab38c17aac10bf55ab3efde4c4db3893d8691d2
>> config: s390-randconfig-s031-20210309 (attached as .config)
>> compiler: s390-linux-gcc (GCC) 9.3.0
>> reproduce:
>> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>> chmod +x ~/bin/make.cross
>> # apt-get install sparse
>> # sparse version: v0.6.3-262-g5e674421-dirty
>> # https://github.com/0day-ci/linux/commit/cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
>> git remote add linux-review https://github.com/0day-ci/linux
>> git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Reuse-device-s-fwnode-to-create-IRQ-domain/20210309-033330
>> git checkout cfe5ca8e3b629a621c75b8e64aa49f8ee81f1e0d
>> # save the attached .config to linux build tree
>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=s390
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
>>
>> All error/warnings (new ones prefixed by >>):
> It was based on Rafael's bleeding-edge, in any case it's not actual anymore.
>
>
Hi Andy,
Thanks for the feedback, we'll take a look.
Best Regards,
Rong Chen
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-03-10 9:35 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-08 19:31 [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Andy Shevchenko
2021-03-08 19:31 ` [PATCH v4 2/2] gpiolib: Fold conditionals into simple ternary operator Andy Shevchenko
2021-03-08 19:43 ` Rafael J. Wysocki
2021-03-08 19:46 ` Andy Shevchenko
2021-03-08 19:52 ` Andy Shevchenko
2021-03-08 19:36 ` [PATCH v4 1/2] gpiolib: Reuse device's fwnode to create IRQ domain Rafael J. Wysocki
2021-03-08 21:12 ` kernel test robot
2021-03-09 10:25 ` Andy Shevchenko
2021-03-10 9:35 ` Rong Chen
2021-03-09 0:06 ` kernel test robot
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.