Re: [PATCH] Deprecate SA_xxx interrupt flags -V2

From: Andrew Morton
Date: Fri Apr 06 2007 - 15:23:32 EST


On Fri, 06 Apr 2007 15:49:26 +0200
Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:

> The deprecation of the SA_xxx interrupt flags did not emit deprecated
> warnings. Andrew said about the removal of the deprecated flag defines:
>
> > This is going to break a lot of external stuff. We should have found
> > a way to make usage of SA_* emit deprecated warnings (or _some_
> > warning) to warn people of impending doom. But I can't immediately
> > find a way of doing that. if we _can_ find a way of doing this, I
> > suspect we'll need to do it, and give people another six months. It's
> > going to get ugly out there. We shall see...
>
> Define the deprecated flags as a call to a __deprecated inline function
> so a warning is emitted on compile time.
>
> Extend the reprieve of out of tree drivers to 9/2007.
>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> ---
> diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
> index 0bc8b0b..2a531ea 100644
> --- a/Documentation/feature-removal-schedule.txt
> +++ b/Documentation/feature-removal-schedule.txt
> @@ -171,7 +171,7 @@ Who: Greg Kroah-Hartman <gregkh@xxxxxxx>
> ---------------------------
>
> What: Interrupt only SA_* flags
> -When: Januar 2007
> +When: September 2007
> Why: The interrupt related SA_* flags are replaced by IRQF_* to move them
> out of the signal namespace.
>
> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> index 838cf5a..3a72071 100644
> --- a/include/linux/interrupt.h
> +++ b/include/linux/interrupt.h
> @@ -54,20 +54,26 @@
> #define IRQF_NOBALANCING 0x00000800
>
> /*
> - * Migration helpers. Scheduled for removal in 1/2007
> + * Migration helpers. Scheduled for removal in 9/2007
> * Do not use for new code !
> */
> -#define SA_INTERRUPT IRQF_DISABLED
> -#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM
> -#define SA_SHIRQ IRQF_SHARED
> -#define SA_PROBEIRQ IRQF_PROBE_SHARED
> -#define SA_PERCPU IRQF_PERCPU
> -
> -#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW
> -#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH
> -#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING
> -#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING
> -#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK
> +static inline
> +unsigned long __deprecated deprecated_irq_flag(unsigned long flag)
> +{
> + return flag;
> +}
> +
> +#define SA_INTERRUPT deprecated_irq_flag(IRQF_DISABLED)
> +#define SA_SAMPLE_RANDOM deprecated_irq_flag(IRQF_SAMPLE_RANDOM)
> +#define SA_SHIRQ deprecated_irq_flag(IRQF_SHARED)
> +#define SA_PROBEIRQ deprecated_irq_flag(IRQF_PROBE_SHARED)
> +#define SA_PERCPU deprecated_irq_flag(IRQF_PERCPU)
> +
> +#define SA_TRIGGER_LOW deprecated_irq_flag(IRQF_TRIGGER_LOW)
> +#define SA_TRIGGER_HIGH deprecated_irq_flag(IRQF_TRIGGER_HIGH)
> +#define SA_TRIGGER_FALLING deprecated_irq_flag(IRQF_TRIGGER_FALLING)
> +#define SA_TRIGGER_RISING deprecated_irq_flag(IRQF_TRIGGER_RISING)
> +#define SA_TRIGGER_MASK deprecated_irq_flag(IRQF_TRIGGER_MASK)
>
> typedef irqreturn_t (*irq_handler_t)(int, void *);
>

Yeah. I tried something like this and code broke. For example,
arch/mips/sni/irq.c has

struct irqaction sni_isa_irq = {
.handler = sni_isa_irq_handler,
.name = "ISA",
.flags = SA_SHIRQ
};

there are presumably only a few such stragglers left in the tree but there
are probably more instances out-of-tree.

But I think we should just apply your patch anyway. Only a small
proportion of things will break and we do need to be rid of the old
definitions one day.

It would be great if someone could do another pass across the tree,
clean up the remaining SA_* usages.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/