From: Geert U. <ge...@li...> - 2002-09-24 12:46:14
|
On Tue, 24 Sep 2002, [iso-8859-2] Krystian Bac=B3awski wrote: > On Tue, 24 Sep 2002, Roman Zippel wrote: > > On Tue, 24 Sep 2002, Geert Uytterhoeven wrote: > >=20 > > > I took a closer look at ide-probe.c and compared it to plain 2.4.18= from > > > Marcelo. Apparently the enable_irq() (and some other code) is pres= ent in the > > > APUS version only! Although there are m68k comments in the changes,= these > > > changes are not present in the Linux/m68k tree. > > > > > > Anyone who knows why APUS changed ide-probe.c? > >=20 > > I changed it while adapting the APUS irq code to the generic ppc irq = code, > > but I don't really remember what caused that change. > > Anyway, that code works with an A4000, so there must be another probl= em, > > that just never triggered before, my guess is a timing problem. > >=20 > > > Perhaps you can try with the original ide-probe.c from Marcelo's tr= ee? > >=20 > > It's better to find the real problem, that code is bascially already = in > > 2.5. Two things which could be tried: > > 1. Add this call to the acknowledge routine before enabling interrupt= s: > > hwif->hw.ack_intr(hwif); > > 2. Move reenabling of interrupts after the request_irq() call. > >=20 > > The first solution hopefullly works, since the second one would be an= ugly > > hack. >=20 > I don't know how, but my kernel's started booting. I modified kernel as > you said: >=20 > __restore_flags(flags); /* local CPU only */ > if (hwif->hw.ack_intr && hwif->irq) > { > hwif->hw.ack_intr(hwif); > enable_irq(hwif->irq); > } Nice! You're using an A1200? Probably because gayle_ack_intr_a1200() has to do = more than gayle_ack_intr_a4000(). Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m6= 8k.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 |