Message ID | 42264f1b12a91e415ffa47ff9adb53f02a6aa3ea.1684493615.git.mazziesaccount@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | fix fwnode_irq_get[_byname()] returnvalue | expand |
Fri, May 19, 2023 at 02:02:16PM +0300, Matti Vaittinen kirjoitti: > fwnode_irq_get[_byname]() were changed to not return 0 anymore. The > special error case where device-tree based IRQ mapping fails can't no > longer be reliably detected from this return value. This yields a > functional change in the driver where the mapping failure is treated as > an error. > > The mapping failure can occur for example when the device-tree IRQ > information translation call-back(s) (xlate) fail, IRQ domain is not > found, IRQ type conflicts, etc. In most cases this indicates an error in > the device-tree and special handling is not really required. > > One more thing to note is that ACPI APIs do not return zero for any > failures so this special handling did only apply on device-tree based > systems. > > Drop the special (no error, just skip the IRQ) handling for DT mapping > failures as these can no longer be separated from other errors at driver > side. ... > The commit message does not mention if choosing not to abort the probe > on device-tree mapping failure (as is done on other errors) was chosen > because: a) Abort would have broken some existing setup. b) Because skipping > an IRQ on failure is "the right thing to do", or c) because it sounded like > a way to minimize risk of breaking something. > > If the reason is a) - then I'd appreciate receiving some more > information and a suggestion how to proceed (if possible). If the reason > is b), then it might be best to just skip the IRQ instead of aborting > the probe for all errors on IRQ getting. Finally, in case of c), well, > by acking this change you will now accept the risk :) No need to repeat this. As I answered the case c) was in my mind when I made that change.
On 5/21/23 20:20, andy.shevchenko@gmail.com wrote: > Fri, May 19, 2023 at 02:02:16PM +0300, Matti Vaittinen kirjoitti: >> fwnode_irq_get[_byname]() were changed to not return 0 anymore. The >> special error case where device-tree based IRQ mapping fails can't no >> longer be reliably detected from this return value. This yields a >> functional change in the driver where the mapping failure is treated as >> an error. >> >> The mapping failure can occur for example when the device-tree IRQ >> information translation call-back(s) (xlate) fail, IRQ domain is not >> found, IRQ type conflicts, etc. In most cases this indicates an error in >> the device-tree and special handling is not really required. >> >> One more thing to note is that ACPI APIs do not return zero for any >> failures so this special handling did only apply on device-tree based >> systems. >> >> Drop the special (no error, just skip the IRQ) handling for DT mapping >> failures as these can no longer be separated from other errors at driver >> side. > > ... > >> The commit message does not mention if choosing not to abort the probe >> on device-tree mapping failure (as is done on other errors) was chosen >> because: a) Abort would have broken some existing setup. b) Because skipping >> an IRQ on failure is "the right thing to do", or c) because it sounded like >> a way to minimize risk of breaking something. >> >> If the reason is a) - then I'd appreciate receiving some more >> information and a suggestion how to proceed (if possible). If the reason >> is b), then it might be best to just skip the IRQ instead of aborting >> the probe for all errors on IRQ getting. Finally, in case of c), well, >> by acking this change you will now accept the risk :) > > No need to repeat this. As I answered the case c) was in my mind when I made > that change. True. I'll drop that if I re-spin. Thanks for pointing it out. Yours, -- Matti
diff --git a/drivers/pinctrl/nuvoton/pinctrl-wpcm450.c b/drivers/pinctrl/nuvoton/pinctrl-wpcm450.c index 2d1c1652cfd9..f9326210b5eb 100644 --- a/drivers/pinctrl/nuvoton/pinctrl-wpcm450.c +++ b/drivers/pinctrl/nuvoton/pinctrl-wpcm450.c @@ -1106,8 +1106,6 @@ static int wpcm450_gpio_register(struct platform_device *pdev, irq = fwnode_irq_get(child, i); if (irq < 0) break; - if (!irq) - continue; girq->parents[i] = irq; girq->num_parents++;