Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1549492 > unrolled thread
| Started by | Gregory Fong <gregory.0xf0@gmail.com> |
|---|---|
| First post | 2017-01-03 02:50 +0100 |
| Last post | 2017-01-03 02:50 +0100 |
| Articles | 1 — 1 participant |
Back to article view | Back to linux.kernel
mpic IRQ_TYPE_BOTH handling Gregory Fong <gregory.0xf0@gmail.com> - 2017-01-03 02:50 +0100
| From | Gregory Fong <gregory.0xf0@gmail.com> |
|---|---|
| Date | 2017-01-03 02:50 +0100 |
| Subject | mpic IRQ_TYPE_BOTH handling |
| Message-ID | <sVmoF-7jY-1@gated-at.bofh.it> |
Hi all,
In arch/powerpc/sysdev/mpic.c , it looks like IRQ_TYPE_EDGE_BOTH is
handled the same way as IRQ_TYPE_EDGE_FALLING:
static unsigned int mpic_type_to_vecpri(struct mpic *mpic, unsigned int type)
{
/* Now convert sense value */
switch(type & IRQ_TYPE_SENSE_MASK) {
case IRQ_TYPE_EDGE_RISING:
return MPIC_INFO(VECPRI_SENSE_EDGE) |
MPIC_INFO(VECPRI_POLARITY_POSITIVE);
case IRQ_TYPE_EDGE_FALLING:
case IRQ_TYPE_EDGE_BOTH:
return MPIC_INFO(VECPRI_SENSE_EDGE) |
MPIC_INFO(VECPRI_POLARITY_NEGATIVE);
case IRQ_TYPE_LEVEL_HIGH:
return MPIC_INFO(VECPRI_SENSE_LEVEL) |
MPIC_INFO(VECPRI_POLARITY_POSITIVE);
case IRQ_TYPE_LEVEL_LOW:
default:
return MPIC_INFO(VECPRI_SENSE_LEVEL) |
MPIC_INFO(VECPRI_POLARITY_NEGATIVE);
}
}
If IRQ_TYPE_EDGE_BOTH is unsupported, shouldn't we be returning an
error, instead of silently setting to use IRQ_TYPE_EDGE_FALLING?
Something like the following (sorry if the diff wraps weirdly, on
webmail at the moment):
----8<----
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index b9aac95..5867ea2 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -876,6 +876,9 @@ int mpic_set_irq_type(struct irq_data *d, unsigned
int flow_type)
if (src >= mpic->num_sources)
return -EINVAL;
+ if (flow_type & IRQ_TYPE_SENSE_MASK == IRQ_TYPE_EDGE_BOTH)
+ return -EINVAL;
+
vold = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI));
/* We don't support "none" type */
---->8----
Thanks,
Gregory
Back to top | Article view | linux.kernel
csiph-web