[LinuxBIOS] Missing IRQ table entries; irq_tables.c problem?

Juergen Beisert juergen127 at kreuzholzen.de
Wed Sep 19 11:30:48 CEST 2007


Hi Stefan,

On Wednesday 19 September 2007 10:20, Stefan Reinauer wrote:
> * Juergen Beisert <juergen127 at kreuzholzen.de> [070919 09:29]:
> > Yes. It only supports the CS5520. If it detects the CS5530 it states:
> >
> > PCI: Using IRQ router NatSemi [1078/0100] at 0000:00:12.0
> >
> > But does not touch any register. My upstream patch was rejected, as it
> > breaks all the lousy CS5520 targets with broken IRQ routing tables.
> >
> > But I can live with the patch on my target. Nevertheless I would be
> > happy when LB does this job itself.
>
> I remember a valid workaround in such cases was to choose a compatible
> interrupt router (is the cs5520 compatible to the 5530 one?) and specify
> it's vendor id and device id in the corresponding fields in the PIRQ
> table.

Routing registers in CS5520 and CS5530 are the same.

> IIRC at some point most AMD64 boards' pirq tables would state 
> they have an AMD 768 controller. The bus/dev/fn would point to the
> real physical device though. So the vid/did in the pirq table are rather
> a code path selector than a real device/vendor id.

This could work. But: You also must provide a broken PIRQ table, as the Linux 
code swaps the nibbles in the routing registers (to "repair" the broken 
tables in theses systems)! :-(
It might be easier to patch the kernel to do the right thing instead to play 
with various workarounds. But my favourite way would be to let LB do this 
job, never touched by the kernel anymore...

Juergen




More information about the coreboot mailing list