All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Geert Uytterhoeven <geert+renesas@glider.be>,
	Linus Walleij <linus.walleij@linaro.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Damien Le Moal <damien.lemoal@wdc.com>,
	Marc Zyngier <maz@kernel.org>
Cc: kbuild-all@lists.01.org, linux-gpio@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	Geert Uytterhoeven <geert+renesas@glider.be>
Subject: Re: [PATCH] gpio: sifive: Make the irqchip immutable
Date: Fri, 20 May 2022 11:28:19 +0800	[thread overview]
Message-ID: <202205201122.xuM6bWUt-lkp@intel.com> (raw)
In-Reply-To: <73c75a67d1c87b049d633057c0e765e708ee02a2.1652884788.git.geert+renesas@glider.be>

Hi Geert,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on linusw-gpio/for-next v5.18-rc7]
[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/intel-lab-lkp/linux/commits/Geert-Uytterhoeven/gpio-sifive-Make-the-irqchip-immutable/20220518-224530
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 210e04ff768142b96452030c4c2627512b30ad95
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20220520/202205201122.xuM6bWUt-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.2.0-20) 11.2.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/3db66356e9f7309998a9172feeb84d8b226ad539
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Geert-Uytterhoeven/gpio-sifive-Make-the-irqchip-immutable/20220518-224530
        git checkout 3db66356e9f7309998a9172feeb84d8b226ad539
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpio/gpio-sifive.c:151:27: error: 'IRQCHIP_IMMUTABLE' undeclared here (not in a function); did you mean 'IS_IMMUTABLE'?
     151 |         .flags          = IRQCHIP_IMMUTABLE,
         |                           ^~~~~~~~~~~~~~~~~
         |                           IS_IMMUTABLE
>> drivers/gpio/gpio-sifive.c:152:9: error: 'GPIOCHIP_IRQ_RESOURCE_HELPERS' undeclared here (not in a function)
     152 |         GPIOCHIP_IRQ_RESOURCE_HELPERS,
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpio/gpio-sifive.c:152:9: warning: excess elements in struct initializer
   drivers/gpio/gpio-sifive.c:152:9: note: (near initialization for 'sifive_gpio_irqchip')
   drivers/gpio/gpio-sifive.c: In function 'sifive_gpio_probe':
>> drivers/gpio/gpio-sifive.c:249:9: error: implicit declaration of function 'gpio_irq_chip_set_chip' [-Werror=implicit-function-declaration]
     249 |         gpio_irq_chip_set_chip(girq, &sifive_gpio_irqchip);
         |         ^~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +151 drivers/gpio/gpio-sifive.c

   141	
   142	static const struct irq_chip sifive_gpio_irqchip = {
   143		.name		= "sifive-gpio",
   144		.irq_set_type	= sifive_gpio_irq_set_type,
   145		.irq_mask	= irq_chip_mask_parent,
   146		.irq_unmask	= irq_chip_unmask_parent,
   147		.irq_enable	= sifive_gpio_irq_enable,
   148		.irq_disable	= sifive_gpio_irq_disable,
   149		.irq_eoi	= sifive_gpio_irq_eoi,
   150		.irq_set_affinity = sifive_gpio_irq_set_affinity,
 > 151		.flags		= IRQCHIP_IMMUTABLE,
 > 152		GPIOCHIP_IRQ_RESOURCE_HELPERS,
   153	};
   154	
   155	static int sifive_gpio_child_to_parent_hwirq(struct gpio_chip *gc,
   156						     unsigned int child,
   157						     unsigned int child_type,
   158						     unsigned int *parent,
   159						     unsigned int *parent_type)
   160	{
   161		struct sifive_gpio *chip = gpiochip_get_data(gc);
   162		struct irq_data *d = irq_get_irq_data(chip->irq_number[child]);
   163	
   164		*parent_type = IRQ_TYPE_NONE;
   165		*parent = irqd_to_hwirq(d);
   166	
   167		return 0;
   168	}
   169	
   170	static const struct regmap_config sifive_gpio_regmap_config = {
   171		.reg_bits = 32,
   172		.reg_stride = 4,
   173		.val_bits = 32,
   174		.fast_io = true,
   175		.disable_locking = true,
   176	};
   177	
   178	static int sifive_gpio_probe(struct platform_device *pdev)
   179	{
   180		struct device *dev = &pdev->dev;
   181		struct device_node *node = pdev->dev.of_node;
   182		struct device_node *irq_parent;
   183		struct irq_domain *parent;
   184		struct gpio_irq_chip *girq;
   185		struct sifive_gpio *chip;
   186		int ret, ngpio, i;
   187	
   188		chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
   189		if (!chip)
   190			return -ENOMEM;
   191	
   192		chip->base = devm_platform_ioremap_resource(pdev, 0);
   193		if (IS_ERR(chip->base)) {
   194			dev_err(dev, "failed to allocate device memory\n");
   195			return PTR_ERR(chip->base);
   196		}
   197	
   198		chip->regs = devm_regmap_init_mmio(dev, chip->base,
   199						   &sifive_gpio_regmap_config);
   200		if (IS_ERR(chip->regs))
   201			return PTR_ERR(chip->regs);
   202	
   203		ngpio = of_irq_count(node);
   204		if (ngpio > SIFIVE_GPIO_MAX) {
   205			dev_err(dev, "Too many GPIO interrupts (max=%d)\n",
   206				SIFIVE_GPIO_MAX);
   207			return -ENXIO;
   208		}
   209	
   210		irq_parent = of_irq_find_parent(node);
   211		if (!irq_parent) {
   212			dev_err(dev, "no IRQ parent node\n");
   213			return -ENODEV;
   214		}
   215		parent = irq_find_host(irq_parent);
   216		if (!parent) {
   217			dev_err(dev, "no IRQ parent domain\n");
   218			return -ENODEV;
   219		}
   220	
   221		for (i = 0; i < ngpio; i++)
   222			chip->irq_number[i] = platform_get_irq(pdev, i);
   223	
   224		ret = bgpio_init(&chip->gc, dev, 4,
   225				 chip->base + SIFIVE_GPIO_INPUT_VAL,
   226				 chip->base + SIFIVE_GPIO_OUTPUT_VAL,
   227				 NULL,
   228				 chip->base + SIFIVE_GPIO_OUTPUT_EN,
   229				 chip->base + SIFIVE_GPIO_INPUT_EN,
   230				 BGPIOF_READ_OUTPUT_REG_SET);
   231		if (ret) {
   232			dev_err(dev, "unable to init generic GPIO\n");
   233			return ret;
   234		}
   235	
   236		/* Disable all GPIO interrupts before enabling parent interrupts */
   237		regmap_write(chip->regs, SIFIVE_GPIO_RISE_IE, 0);
   238		regmap_write(chip->regs, SIFIVE_GPIO_FALL_IE, 0);
   239		regmap_write(chip->regs, SIFIVE_GPIO_HIGH_IE, 0);
   240		regmap_write(chip->regs, SIFIVE_GPIO_LOW_IE, 0);
   241		chip->irq_state = 0;
   242	
   243		chip->gc.base = -1;
   244		chip->gc.ngpio = ngpio;
   245		chip->gc.label = dev_name(dev);
   246		chip->gc.parent = dev;
   247		chip->gc.owner = THIS_MODULE;
   248		girq = &chip->gc.irq;
 > 249		gpio_irq_chip_set_chip(girq, &sifive_gpio_irqchip);
   250		girq->fwnode = of_node_to_fwnode(node);
   251		girq->parent_domain = parent;
   252		girq->child_to_parent_hwirq = sifive_gpio_child_to_parent_hwirq;
   253		girq->handler = handle_bad_irq;
   254		girq->default_type = IRQ_TYPE_NONE;
   255	
   256		platform_set_drvdata(pdev, chip);
   257		return gpiochip_add_data(&chip->gc, chip);
   258	}
   259	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Geert Uytterhoeven <geert+renesas@glider.be>,
	Linus Walleij <linus.walleij@linaro.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Damien Le Moal <damien.lemoal@wdc.com>,
	Marc Zyngier <maz@kernel.org>
Cc: kbuild-all@lists.01.org, linux-gpio@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	Geert Uytterhoeven <geert+renesas@glider.be>
Subject: Re: [PATCH] gpio: sifive: Make the irqchip immutable
Date: Fri, 20 May 2022 11:28:19 +0800	[thread overview]
Message-ID: <202205201122.xuM6bWUt-lkp@intel.com> (raw)
In-Reply-To: <73c75a67d1c87b049d633057c0e765e708ee02a2.1652884788.git.geert+renesas@glider.be>

Hi Geert,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on linusw-gpio/for-next v5.18-rc7]
[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/intel-lab-lkp/linux/commits/Geert-Uytterhoeven/gpio-sifive-Make-the-irqchip-immutable/20220518-224530
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 210e04ff768142b96452030c4c2627512b30ad95
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20220520/202205201122.xuM6bWUt-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.2.0-20) 11.2.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/3db66356e9f7309998a9172feeb84d8b226ad539
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Geert-Uytterhoeven/gpio-sifive-Make-the-irqchip-immutable/20220518-224530
        git checkout 3db66356e9f7309998a9172feeb84d8b226ad539
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpio/gpio-sifive.c:151:27: error: 'IRQCHIP_IMMUTABLE' undeclared here (not in a function); did you mean 'IS_IMMUTABLE'?
     151 |         .flags          = IRQCHIP_IMMUTABLE,
         |                           ^~~~~~~~~~~~~~~~~
         |                           IS_IMMUTABLE
>> drivers/gpio/gpio-sifive.c:152:9: error: 'GPIOCHIP_IRQ_RESOURCE_HELPERS' undeclared here (not in a function)
     152 |         GPIOCHIP_IRQ_RESOURCE_HELPERS,
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpio/gpio-sifive.c:152:9: warning: excess elements in struct initializer
   drivers/gpio/gpio-sifive.c:152:9: note: (near initialization for 'sifive_gpio_irqchip')
   drivers/gpio/gpio-sifive.c: In function 'sifive_gpio_probe':
>> drivers/gpio/gpio-sifive.c:249:9: error: implicit declaration of function 'gpio_irq_chip_set_chip' [-Werror=implicit-function-declaration]
     249 |         gpio_irq_chip_set_chip(girq, &sifive_gpio_irqchip);
         |         ^~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +151 drivers/gpio/gpio-sifive.c

   141	
   142	static const struct irq_chip sifive_gpio_irqchip = {
   143		.name		= "sifive-gpio",
   144		.irq_set_type	= sifive_gpio_irq_set_type,
   145		.irq_mask	= irq_chip_mask_parent,
   146		.irq_unmask	= irq_chip_unmask_parent,
   147		.irq_enable	= sifive_gpio_irq_enable,
   148		.irq_disable	= sifive_gpio_irq_disable,
   149		.irq_eoi	= sifive_gpio_irq_eoi,
   150		.irq_set_affinity = sifive_gpio_irq_set_affinity,
 > 151		.flags		= IRQCHIP_IMMUTABLE,
 > 152		GPIOCHIP_IRQ_RESOURCE_HELPERS,
   153	};
   154	
   155	static int sifive_gpio_child_to_parent_hwirq(struct gpio_chip *gc,
   156						     unsigned int child,
   157						     unsigned int child_type,
   158						     unsigned int *parent,
   159						     unsigned int *parent_type)
   160	{
   161		struct sifive_gpio *chip = gpiochip_get_data(gc);
   162		struct irq_data *d = irq_get_irq_data(chip->irq_number[child]);
   163	
   164		*parent_type = IRQ_TYPE_NONE;
   165		*parent = irqd_to_hwirq(d);
   166	
   167		return 0;
   168	}
   169	
   170	static const struct regmap_config sifive_gpio_regmap_config = {
   171		.reg_bits = 32,
   172		.reg_stride = 4,
   173		.val_bits = 32,
   174		.fast_io = true,
   175		.disable_locking = true,
   176	};
   177	
   178	static int sifive_gpio_probe(struct platform_device *pdev)
   179	{
   180		struct device *dev = &pdev->dev;
   181		struct device_node *node = pdev->dev.of_node;
   182		struct device_node *irq_parent;
   183		struct irq_domain *parent;
   184		struct gpio_irq_chip *girq;
   185		struct sifive_gpio *chip;
   186		int ret, ngpio, i;
   187	
   188		chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
   189		if (!chip)
   190			return -ENOMEM;
   191	
   192		chip->base = devm_platform_ioremap_resource(pdev, 0);
   193		if (IS_ERR(chip->base)) {
   194			dev_err(dev, "failed to allocate device memory\n");
   195			return PTR_ERR(chip->base);
   196		}
   197	
   198		chip->regs = devm_regmap_init_mmio(dev, chip->base,
   199						   &sifive_gpio_regmap_config);
   200		if (IS_ERR(chip->regs))
   201			return PTR_ERR(chip->regs);
   202	
   203		ngpio = of_irq_count(node);
   204		if (ngpio > SIFIVE_GPIO_MAX) {
   205			dev_err(dev, "Too many GPIO interrupts (max=%d)\n",
   206				SIFIVE_GPIO_MAX);
   207			return -ENXIO;
   208		}
   209	
   210		irq_parent = of_irq_find_parent(node);
   211		if (!irq_parent) {
   212			dev_err(dev, "no IRQ parent node\n");
   213			return -ENODEV;
   214		}
   215		parent = irq_find_host(irq_parent);
   216		if (!parent) {
   217			dev_err(dev, "no IRQ parent domain\n");
   218			return -ENODEV;
   219		}
   220	
   221		for (i = 0; i < ngpio; i++)
   222			chip->irq_number[i] = platform_get_irq(pdev, i);
   223	
   224		ret = bgpio_init(&chip->gc, dev, 4,
   225				 chip->base + SIFIVE_GPIO_INPUT_VAL,
   226				 chip->base + SIFIVE_GPIO_OUTPUT_VAL,
   227				 NULL,
   228				 chip->base + SIFIVE_GPIO_OUTPUT_EN,
   229				 chip->base + SIFIVE_GPIO_INPUT_EN,
   230				 BGPIOF_READ_OUTPUT_REG_SET);
   231		if (ret) {
   232			dev_err(dev, "unable to init generic GPIO\n");
   233			return ret;
   234		}
   235	
   236		/* Disable all GPIO interrupts before enabling parent interrupts */
   237		regmap_write(chip->regs, SIFIVE_GPIO_RISE_IE, 0);
   238		regmap_write(chip->regs, SIFIVE_GPIO_FALL_IE, 0);
   239		regmap_write(chip->regs, SIFIVE_GPIO_HIGH_IE, 0);
   240		regmap_write(chip->regs, SIFIVE_GPIO_LOW_IE, 0);
   241		chip->irq_state = 0;
   242	
   243		chip->gc.base = -1;
   244		chip->gc.ngpio = ngpio;
   245		chip->gc.label = dev_name(dev);
   246		chip->gc.parent = dev;
   247		chip->gc.owner = THIS_MODULE;
   248		girq = &chip->gc.irq;
 > 249		gpio_irq_chip_set_chip(girq, &sifive_gpio_irqchip);
   250		girq->fwnode = of_node_to_fwnode(node);
   251		girq->parent_domain = parent;
   252		girq->child_to_parent_hwirq = sifive_gpio_child_to_parent_hwirq;
   253		girq->handler = handle_bad_irq;
   254		girq->default_type = IRQ_TYPE_NONE;
   255	
   256		platform_set_drvdata(pdev, chip);
   257		return gpiochip_add_data(&chip->gc, chip);
   258	}
   259	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  parent reply	other threads:[~2022-05-20  3:29 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-18 14:40 [PATCH] gpio: sifive: Make the irqchip immutable Geert Uytterhoeven
2022-05-18 14:40 ` Geert Uytterhoeven
2022-05-19  9:53 ` kernel test robot
2022-05-19  9:53   ` kernel test robot
2022-05-20  3:28 ` kernel test robot [this message]
2022-05-20  3:28   ` kernel test robot
2022-05-20  6:46   ` Geert Uytterhoeven
2022-05-20  6:46     ` Geert Uytterhoeven
2022-05-20  6:46     ` Geert Uytterhoeven
2022-05-31  9:22     ` [kbuild-all] " Chen, Rong A
2022-05-31  9:22       ` Chen, Rong A

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=202205201122.xuM6bWUt-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=brgl@bgdev.pl \
    --cc=damien.lemoal@wdc.com \
    --cc=geert+renesas@glider.be \
    --cc=kbuild-all@lists.01.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=maz@kernel.org \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.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.