Discussion:
[PATCH] m68k/q40: Revert "m68k/q40: Fix q40_irq_startup() to return -ENXIO on failures"
Sasha Levin
2014-07-23 12:51:39 UTC
Permalink
Revert since we're trying to return -ENXIO from a function returning
unsigned int. Not only it causes compiler warnings it's also obviously
incorrect.

In general, watch for patches from Nick Krause since they are not even
build tested.

Signed-off-by: Sasha Levin <***@kernel.org>
---
arch/m68k/q40/q40ints.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c
index 9dfa1ea..513f9bb 100644
--- a/arch/m68k/q40/q40ints.c
+++ b/arch/m68k/q40/q40ints.c
@@ -49,7 +49,7 @@ static unsigned int q40_irq_startup(struct irq_data *data)
case 1: case 2: case 8: case 9:
case 11: case 12: case 13:
printk("%s: ISA IRQ %d not implemented by HW\n", __func__, irq);
- return -ENXIO;
+ /* FIXME return -ENXIO; */
}
return 0;
}
--
1.9.1
Guenter Roeck
2014-07-23 14:06:40 UTC
Permalink
Post by Sasha Levin
Revert since we're trying to return -ENXIO from a function returning
unsigned int. Not only it causes compiler warnings it's also obviously
incorrect.
In general, watch for patches from Nick Krause since they are not even
build tested.
Guess I wasn't fast enough with my comments :-(
Post by Sasha Levin
---
arch/m68k/q40/q40ints.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c
index 9dfa1ea..513f9bb 100644
--- a/arch/m68k/q40/q40ints.c
+++ b/arch/m68k/q40/q40ints.c
@@ -49,7 +49,7 @@ static unsigned int q40_irq_startup(struct irq_data *data)
printk("%s: ISA IRQ %d not implemented by HW\n", __func__, irq);
- return -ENXIO;
+ /* FIXME return -ENXIO; */
}
return 0;
}
Nick Krause
2014-07-23 15:39:57 UTC
Permalink
Post by Guenter Roeck
Post by Sasha Levin
Revert since we're trying to return -ENXIO from a function returning
unsigned int. Not only it causes compiler warnings it's also obviously
incorrect.
In general, watch for patches from Nick Krause since they are not even
build tested.
Guess I wasn't fast enough with my comments :-(
Post by Sasha Levin
---
arch/m68k/q40/q40ints.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c
index 9dfa1ea..513f9bb 100644
--- a/arch/m68k/q40/q40ints.c
+++ b/arch/m68k/q40/q40ints.c
@@ -49,7 +49,7 @@ static unsigned int q40_irq_startup(struct irq_data *data)
printk("%s: ISA IRQ %d not implemented by HW\n", __func__, irq);
- return -ENXIO;
+ /* FIXME return -ENXIO; */
}
return 0;
}
I guess this is another bad patch :(.
Nick
Davidlohr Bueso
2014-07-23 16:02:19 UTC
Permalink
Post by Nick Krause
I guess this is another bad patch :(.
This is an example of you wasting peoples time with thoughtless patches.
Please stop. You've been asked a million times.
Geert Uytterhoeven
2014-07-26 15:21:04 UTC
Permalink
Post by Guenter Roeck
Post by Sasha Levin
Revert since we're trying to return -ENXIO from a function returning
unsigned int. Not only it causes compiler warnings it's also obviously
incorrect.
In general, watch for patches from Nick Krause since they are not even
build tested.
Guess I wasn't fast enough with my comments :-(
I applied Nick's cleanup (which is not yet in mainline, just in the m68k repo)
because I thought Nick was right (in this particular case ;-), cfr. my
reasoning in www.spinics.net/lists/kernel/msg1774736.html

W.r.t. the signess, I didn't see the compiler warning, as the version of gcc
I'm using didn't print that warning. However, irq_startup() converts the
value returned by .irq_startup() from unsigned to signed.
I assume this is just a missing conversion when the genirq framework
itself was introduced (m68k was converted quite late)?

W.r.t. the actual value, any non-zero value is treated the same.
I can change it to 1, if that makes you feel better. If returning a non-zero
value here is wrong, presumable the code has been wrong since it
incarnation.

As we're close to the opening of the merge window, it would be nice
if we could conclude on this ;-)

Thanks!
Post by Guenter Roeck
Post by Sasha Levin
---
arch/m68k/q40/q40ints.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c
index 9dfa1ea..513f9bb 100644
--- a/arch/m68k/q40/q40ints.c
+++ b/arch/m68k/q40/q40ints.c
@@ -49,7 +49,7 @@ static unsigned int q40_irq_startup(struct irq_data *data)
printk("%s: ISA IRQ %d not implemented by HW\n", __func__, irq);
- return -ENXIO;
+ /* FIXME return -ENXIO; */
}
return 0;
}
Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ***@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Sasha Levin
2014-07-26 15:33:58 UTC
Permalink
Post by Geert Uytterhoeven
I applied Nick's cleanup (which is not yet in mainline, just in the m68k repo)
because I thought Nick was right (in this particular case ;-), cfr. my
reasoning in www.spinics.net/lists/kernel/msg1774736.html
W.r.t. the signess, I didn't see the compiler warning, as the version of gcc
I'm using didn't print that warning. However, irq_startup() converts the
value returned by .irq_startup() from unsigned to signed.
I assume this is just a missing conversion when the genirq framework
itself was introduced (m68k was converted quite late)?
W.r.t. the actual value, any non-zero value is treated the same.
I can change it to 1, if that makes you feel better. If returning a non-zero
value here is wrong, presumable the code has been wrong since it
incarnation.
As we're close to the opening of the merge window, it would be nice
if we could conclude on this ;-)
1. The whole signed/unsigned mishmash here. Pretty much any solution
besides implicitly converting a signed value into an unsigned one
which then gets treated as something else entirely should be acceptable
here.

2. Beyond semantics, the original patch also changed the behaviour of
the code. What previously was a soft printk() is now a hard error.
Does it break any systems? Cornercases? I dunno, but I can assure you
that this wasn't tested at all.

To sum it up, a solution would be welcome. The patch you currently have
in the m68k repo isn't a solution.


Thanks,
Sasha
Geert Uytterhoeven
2014-07-26 15:57:06 UTC
Permalink
Post by Sasha Levin
Post by Geert Uytterhoeven
I applied Nick's cleanup (which is not yet in mainline, just in the m68k repo)
because I thought Nick was right (in this particular case ;-), cfr. my
reasoning in www.spinics.net/lists/kernel/msg1774736.html
W.r.t. the signess, I didn't see the compiler warning, as the version of gcc
I'm using didn't print that warning. However, irq_startup() converts the
value returned by .irq_startup() from unsigned to signed.
I assume this is just a missing conversion when the genirq framework
itself was introduced (m68k was converted quite late)?
W.r.t. the actual value, any non-zero value is treated the same.
I can change it to 1, if that makes you feel better. If returning a non-zero
value here is wrong, presumable the code has been wrong since it
incarnation.
As we're close to the opening of the merge window, it would be nice
if we could conclude on this ;-)
1. The whole signed/unsigned mishmash here. Pretty much any solution
besides implicitly converting a signed value into an unsigned one
which then gets treated as something else entirely should be acceptable
here.
2. Beyond semantics, the original patch also changed the behaviour of
the code. What previously was a soft printk() is now a hard error.
Does it break any systems? Cornercases? I dunno, but I can assure you
that this wasn't tested at all.
If it broke something, it was most probably broken before
commit c288bf2533e57174b90b07860c4391bcd1ea269c ("m68k/irq:
Rename irq_controller to irq_chip"), too.

It seems the Q40 hardware cannot handle this case, so considering this
a hard error looks fine to me (CC Richard Zidlicky).
Post by Sasha Levin
To sum it up, a solution would be welcome. The patch you currently have
in the m68k repo isn't a solution.
OK, reverted. Thanks!

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ***@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Guenter Roeck
2014-07-26 16:58:10 UTC
Permalink
Post by Geert Uytterhoeven
Post by Guenter Roeck
Post by Sasha Levin
Revert since we're trying to return -ENXIO from a function returning
unsigned int. Not only it causes compiler warnings it's also obviously
incorrect.
In general, watch for patches from Nick Krause since they are not even
build tested.
Guess I wasn't fast enough with my comments :-(
I applied Nick's cleanup (which is not yet in mainline, just in the m68k repo)
because I thought Nick was right (in this particular case ;-), cfr. my
reasoning in www.spinics.net/lists/kernel/msg1774736.html
W.r.t. the signess, I didn't see the compiler warning, as the version of gcc
I'm using didn't print that warning. However, irq_startup() converts the
value returned by .irq_startup() from unsigned to signed.
I assume this is just a missing conversion when the genirq framework
itself was introduced (m68k was converted quite late)?
W.r.t. the actual value, any non-zero value is treated the same.
I can change it to 1, if that makes you feel better. If returning a non-zero
value here is wrong, presumable the code has been wrong since it
incarnation.
In my understanding, anything not equal to 0 means that an interrupt
is pending, not that there was an error. Maybe my understanding is wrong.

Either case, I don't really care.

Guenter

Loading...