Subject: Re: Adding flag to disable native mode on aceride
To: None <tech-kern@netbsd.org>
From: Chris Gilbert <chris@dokein.co.uk>
List: tech-kern
Date: 08/29/2007 16:04:18
On Wed, August 29, 2007 12:42 pm, Joerg Sonnenberger wrote:
> On Wed, Aug 29, 2007 at 10:08:29AM +0100, Chris Gilbert wrote:
>> I've been trying to work-around a bug with the ABLE BIOS for cats.  Th=
e
>> issue is that ABLE enables native mode on the aceride chipset.  Howeve=
r,
>> it fails to put in place any of the interrupt routing, IE it doesn't
>> setup the interrupts to route out onto the PCI bus or internally to is=
a
>> interrupts.
>
> Which chipset exactly do you have?

It's an ALI M1543C southbridge.

Reading the M1543C data-sheet suggests that it can route IDE interrupts
onto the PCI bus, as lines B & C (with USB on D) or route them internally
to the ISA PIC (but you have to setup the routing when in native mode, in
compat I guess they automatically route to 14 and 15)

The BIOS isn't routing the interrupts anywhere, it's switching it over to
native mode.  I guess it just polls the disks when accessing them.

Also pciide_common doesn't appear to handle having separate interrupt
lines for each channel.  It registers an interrupt for the pci device,
rather than for each channel.  This makes sense as it only has the pci
config registers,  which only specify one interrupt line.  This means the
second channel isn't assigned an interrupt handler, and acesses to it tim=
e
out.

The simplest fix appeared to be to switch back to compat mode, and avoid
having to work out how to register an interrupt handler for each channel
when in native mode.

Thanks,
Chris