The ES7000 patch added some code to arch/i386/kernel/mpparse.c mp_parse_prt() ... if (!ioapic && (irq < 16)) irq += 16; What happens next depends on the configuration. The apic and the pin# are still correct. If the pin has been programmed already, then the side-effect is that entry->irq is set to the wrong number. If the pin needs to be programmed, then the bad irq# is used to index into the irq_2_pin. If it isn't used already, then the system will still work, though it may report an impossible IRQ for this interrupt. If that IRQ is already used, then you're probably going to have some confusion when the interrupt actually arrives...
Andrew de Quincy fixed this: http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/test/2.6.0-test9/20031121014213-mpparse_es7000.patch
Andrew's fix was integrated into 2.6.2 -- closing.