If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
fixed irq number. On ia64 platform, such numbers are GSI and should be converted
to irq vector.
Below patch against kernel 2.6.20 fixes it.
Signed-off-by: Zhang Yanmin <[email protected]>
---
diff -Nraup linux-2.6.20/include/asm-generic/libata-portmap.h linux-2.6.20_fix/include/asm-generic/libata-portmap.h
--- linux-2.6.20/include/asm-generic/libata-portmap.h 2007-02-08 15:13:44.000000000 +0800
+++ linux-2.6.20_fix/include/asm-generic/libata-portmap.h 2007-02-08 15:20:13.000000000 +0800
@@ -3,10 +3,20 @@
#define ATA_PRIMARY_CMD 0x1F0
#define ATA_PRIMARY_CTL 0x3F6
+#if defined(__ia64__)
+#define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(14)
+#else
#define ATA_PRIMARY_IRQ(dev) 14
+#endif
+
#define ATA_SECONDARY_CMD 0x170
#define ATA_SECONDARY_CTL 0x376
+#if defined(__ia64__)
+#define ATA_SECONDARY_IRQ(dev) isa_irq_to_vector(15)
+#else
#define ATA_SECONDARY_IRQ(dev) 15
+#endif
+
#endif
if use ide_default_irq , then I guess the #if defined can be removed.
#define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(0x1F0)
On 2/8/07, Zhang, Yanmin <[email protected]> wrote:
> If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> to irq vector.
>
> Below patch against kernel 2.6.20 fixes it.
>
> Signed-off-by: Zhang Yanmin <[email protected]>
>
> ---
>
> diff -Nraup linux-2.6.20/include/asm-generic/libata-portmap.h linux-2.6.20_fix/include/asm-generic/libata-portmap.h
> --- linux-2.6.20/include/asm-generic/libata-portmap.h 2007-02-08 15:13:44.000000000 +0800
> +++ linux-2.6.20_fix/include/asm-generic/libata-portmap.h 2007-02-08 15:20:13.000000000 +0800
> @@ -3,10 +3,20 @@
>
> #define ATA_PRIMARY_CMD 0x1F0
> #define ATA_PRIMARY_CTL 0x3F6
> +#if defined(__ia64__)
> +#define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(14)
> +#else
> #define ATA_PRIMARY_IRQ(dev) 14
> +#endif
> +
>
> #define ATA_SECONDARY_CMD 0x170
> #define ATA_SECONDARY_CTL 0x376
> +#if defined(__ia64__)
> +#define ATA_SECONDARY_IRQ(dev) isa_irq_to_vector(15)
> +#else
> #define ATA_SECONDARY_IRQ(dev) 15
> +#endif
> +
>
> #endif
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
sorry, it should be
#define ATA_PRIMARY_IRQ(dev) ide_default_irq(0x1F0)
On 2/8/07, Luming Yu <[email protected]> wrote:
> if use ide_default_irq , then I guess the #if defined can be removed.
> #define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(0x1F0)
>
>
> On 2/8/07, Zhang, Yanmin <[email protected]> wrote:
> > If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> > fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> > to irq vector.
> >
> > Below patch against kernel 2.6.20 fixes it.
> >
> > Signed-off-by: Zhang Yanmin <[email protected]>
> >
> > ---
> >
> > diff -Nraup linux-2.6.20/include/asm-generic/libata-portmap.h linux-2.6.20_fix/include/asm-generic/libata-portmap.h
> > --- linux-2.6.20/include/asm-generic/libata-portmap.h 2007-02-08 15:13:44.000000000 +0800
> > +++ linux-2.6.20_fix/include/asm-generic/libata-portmap.h 2007-02-08 15:20:13.000000000 +0800
> > @@ -3,10 +3,20 @@
> >
> > #define ATA_PRIMARY_CMD 0x1F0
> > #define ATA_PRIMARY_CTL 0x3F6
> > +#if defined(__ia64__)
> > +#define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(14)
> > +#else
> > #define ATA_PRIMARY_IRQ(dev) 14
> > +#endif
> > +
> >
> > #define ATA_SECONDARY_CMD 0x170
> > #define ATA_SECONDARY_CTL 0x376
> > +#if defined(__ia64__)
> > +#define ATA_SECONDARY_IRQ(dev) isa_irq_to_vector(15)
> > +#else
> > #define ATA_SECONDARY_IRQ(dev) 15
> > +#endif
> > +
> >
> > #endif
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to [email protected]
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/
> >
>
On Thu, Feb 08, 2007 at 03:40:22PM +0800, Zhang, Yanmin wrote:
> If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> to irq vector.
>
> Below patch against kernel 2.6.20 fixes it.
These direct arch ifdefs in core aren't acceptable. The again I'm
pretty sure we have patches floating around to turn these two macros
into architecture-supplied ones, IIRC it came from the powerpc side.
On Thu, 8 Feb 2007 19:42:04 +0000
Christoph Hellwig <[email protected]> wrote:
> On Thu, Feb 08, 2007 at 03:40:22PM +0800, Zhang, Yanmin wrote:
> > If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> > fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> > to irq vector.
> >
> > Below patch against kernel 2.6.20 fixes it.
>
> These direct arch ifdefs in core aren't acceptable.
For 2.6.21 that's true. But this is a suitable fix for 2.6.20.x, no?
On Thu, Feb 08, 2007 at 12:25:39PM -0800, Andrew Morton wrote:
> On Thu, 8 Feb 2007 19:42:04 +0000
> Christoph Hellwig <[email protected]> wrote:
>
> > On Thu, Feb 08, 2007 at 03:40:22PM +0800, Zhang, Yanmin wrote:
> > > If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> > > fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> > > to irq vector.
> > >
> > > Below patch against kernel 2.6.20 fixes it.
> >
> > These direct arch ifdefs in core aren't acceptable.
>
> For 2.6.21 that's true. But this is a suitable fix for 2.6.20.x, no?
Just putting in an #ifndef and allow to to set it up in asm/ata.h
is almost as trivial and a lot nice conceptually. Then again
what happened to the idea of putting fixes into mainline before
-stable?
On Thu, 8 Feb 2007 20:34:53 +0000
Christoph Hellwig <[email protected]> wrote:
> On Thu, Feb 08, 2007 at 12:25:39PM -0800, Andrew Morton wrote:
> > On Thu, 8 Feb 2007 19:42:04 +0000
> > Christoph Hellwig <[email protected]> wrote:
> >
> > > On Thu, Feb 08, 2007 at 03:40:22PM +0800, Zhang, Yanmin wrote:
> > > > If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> > > > fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> > > > to irq vector.
> > > >
> > > > Below patch against kernel 2.6.20 fixes it.
> > >
> > > These direct arch ifdefs in core aren't acceptable.
> >
> > For 2.6.21 that's true. But this is a suitable fix for 2.6.20.x, no?
>
> Just putting in an #ifndef and allow to to set it up in asm/ata.h
> is almost as trivial and a lot nice conceptually.
Well if that's what the 2.6.21 solution looks like then OK. Would want to
see the patch though.
> Then again
> what happened to the idea of putting fixes into mainline before
> -stable?
If the preferred mainline patch involves a lot of not-really-needed
restructuring then an alternative short-but-obvious fix for -stable is
sometimes more appropriate.
On Thu, 2007-02-08 at 17:17 +0800, Luming Yu wrote:
> sorry, it should be
> #define ATA_PRIMARY_IRQ(dev) ide_default_irq(0x1F0)
>
> On 2/8/07, Luming Yu <[email protected]> wrote:
> > if use ide_default_irq , then I guess the #if defined can be removed.
> > #define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(0x1F0)
ata driver will replace old ide driver, so I don't use ide codes in
ata driver.
> >
> >
> > On 2/8/07, Zhang, Yanmin <[email protected]> wrote:
> > > If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> > > fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> > > to irq vector.
> > >
> > > Below patch against kernel 2.6.20 fixes it.
> > >
> > > Signed-off-by: Zhang Yanmin <[email protected]>
> > >
> > > ---
> > >
> > > diff -Nraup linux-2.6.20/include/asm-generic/libata-portmap.h linux-2.6.20_fix/include/asm-generic/libata-portmap.h
> > > --- linux-2.6.20/include/asm-generic/libata-portmap.h 2007-02-08 15:13:44.000000000 +0800
> > > +++ linux-2.6.20_fix/include/asm-generic/libata-portmap.h 2007-02-08 15:20:13.000000000 +0800
> > > @@ -3,10 +3,20 @@
> > >
> > > #define ATA_PRIMARY_CMD 0x1F0
> > > #define ATA_PRIMARY_CTL 0x3F6
> > > +#if defined(__ia64__)
> > > +#define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(14)
> > > +#else
> > > #define ATA_PRIMARY_IRQ(dev) 14
> > > +#endif
> > > +
> > >
> > > #define ATA_SECONDARY_CMD 0x170
> > > #define ATA_SECONDARY_CTL 0x376
> > > +#if defined(__ia64__)
> > > +#define ATA_SECONDARY_IRQ(dev) isa_irq_to_vector(15)
> > > +#else
> > > #define ATA_SECONDARY_IRQ(dev) 15
> > > +#endif
> > > +
> > >
> > > #endif
Zhang, Yanmin wrote:
> If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> to irq vector.
>
> Below patch against kernel 2.6.20 fixes it.
>
> Signed-off-by: Zhang Yanmin <[email protected]>
IA64 should create its own libata-portmap.h, rather than modifying the
one in asm-generic with arch-specific choices.
powerpc is a current example of this (and currently the only
non-asm-generic user) found in kernel 2.6.20.
Jeff
On Thu, 2007-02-08 at 20:19 -0500, Jeff Garzik wrote:
> Zhang, Yanmin wrote:
> > If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
> > fixed irq number. On ia64 platform, such numbers are GSI and should be converted
> > to irq vector.
> >
> > Below patch against kernel 2.6.20 fixes it.
> >
> > Signed-off-by: Zhang Yanmin <[email protected]>
>
> IA64 should create its own libata-portmap.h, rather than modifying the
> one in asm-generic with arch-specific choices.
>
> powerpc is a current example of this (and currently the only
> non-asm-generic user) found in kernel 2.6.20.
Thank Jeff. I worked out a new patch.
If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the fixed
irq number. On ia64 platform, such numbers are GSI and should be converted to irq
vector.
Below patch against kernel 2.6.20 fixes it.
Signed-off-by: Zhang Yanmin <[email protected]>
---
diff -Nraup linux-2.6.20/arch/ia64/Kconfig linux-2.6.20_fix/arch/ia64/Kconfig
--- linux-2.6.20/arch/ia64/Kconfig 2007-02-08 15:13:41.000000000 +0800
+++ linux-2.6.20_fix/arch/ia64/Kconfig 2007-02-09 11:19:35.000000000 +0800
@@ -11,6 +11,7 @@ menu "Processor type and features"
config IA64
bool
+ select ATA_NONSTANDARD if ATA
default y
help
The Itanium Processor Family is Intel's 64-bit successor to
diff -Nraup linux-2.6.20/include/asm-ia64/libata-portmap.h linux-2.6.20_fix/include/asm-ia64/libata-portmap.h
--- linux-2.6.20/include/asm-ia64/libata-portmap.h 1970-01-01 08:00:00.000000000 +0800
+++ linux-2.6.20_fix/include/asm-ia64/libata-portmap.h 2007-02-09 11:19:55.000000000 +0800
@@ -0,0 +1,12 @@
+#ifndef __ASM_IA64_LIBATA_PORTMAP_H
+#define __ASM_IA64_LIBATA_PORTMAP_H
+
+#define ATA_PRIMARY_CMD 0x1F0
+#define ATA_PRIMARY_CTL 0x3F6
+#define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(14)
+
+#define ATA_SECONDARY_CMD 0x170
+#define ATA_SECONDARY_CTL 0x376
+#define ATA_SECONDARY_IRQ(dev) isa_irq_to_vector(15)
+
+#endif
Zhang, Yanmin wrote:
> On Thu, 2007-02-08 at 20:19 -0500, Jeff Garzik wrote:
>> Zhang, Yanmin wrote:
>>> If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
>>> fixed irq number. On ia64 platform, such numbers are GSI and should be converted
>>> to irq vector.
>>>
>>> Below patch against kernel 2.6.20 fixes it.
>>>
>>> Signed-off-by: Zhang Yanmin <[email protected]>
>> IA64 should create its own libata-portmap.h, rather than modifying the
>> one in asm-generic with arch-specific choices.
>>
>> powerpc is a current example of this (and currently the only
>> non-asm-generic user) found in kernel 2.6.20.
> Thank Jeff. I worked out a new patch.
>
> If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the fixed
> irq number. On ia64 platform, such numbers are GSI and should be converted to irq
> vector.
>
> Below patch against kernel 2.6.20 fixes it.
>
> Signed-off-by: Zhang Yanmin <[email protected]>
applied