[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Atari TT

On Thu, Jan 24, 2013 at 10:48 PM, Michael Schmitz
<schmitz@mail.biophys.uni-duesseldorf.de> wrote:
>> > The ne.c network driver does not appear to tolerate interrupts arriving before
>> > the device has been configured, at least in the early boot phases. I'm uncertain
>> > whether it would work even with my latest patches applied - maybe I can find
>> > some time on the weekend to test that.
>> Stupid ISA-only driver without IRQ sharing support...
> Indeed - but that may be my old hacked driver which does have IRQ sharing.
>> The hydra and zorro8390 driver should handle that case fine, as interrupts are
>> shared on Amiga.
> But these will only generate interrupts if the card has something to send,
> or receive has been enabled. The timer polling seems to be the problem here.

The point of IRQ sharing is that multiple devices use the same interrupt line.
So it's about _another_ device generating the interrupt.
Both zorro8390 and hydra use IRQ_AMIGA_PORTS. As does Gayle IDE.
Hence if the IDE hardware on A4000 triggers and interrupt, the
interrupt handler of
zorro8390 and hydra will be called as well. Since I'm not aware of any issues
with zorro8390 and hydra in A4000, I assume zorro8390 and hydra handle this,
while ne doesn't.

>> > Geert: is there some way for kernel network drivers to figure out whether the
>> > network subsystem has been initialized, and hold off interrupt processing
>> > before that time? I'm using 'if (netif_running(dev))' in atari_ethernec but
>> > that does not appear to prevent the lockup.
>> Doesn't the driver know when it's configured?
> It does - it will spit out 'interrupt from stopped card' in that case.
> That's the last message I see from the kernel before it locks up (haven't
> tried in a while, at least that's what happened a year or two ago). The same
> still happens when loading the driver as a module - a single message of the
> kind, nothing more (but the kernel keeps running).
> I would have thought netif_running(dev) returns false before the device has
> been started, but that's wrong, apparently.

How does zorro8390 and hydra handle it? They use __ei_interrupt, while
ne uses eip_interrupt, but the latter just calls the former?



Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@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

Reply to: