Compaq R3000z ACPI fix
jhb at FreeBSD.org
Mon Jan 31 14:54:42 PST 2005
On Wednesday 19 January 2005 10:14 pm, Jung-uk Kim wrote:
> I finally found some time and made ACPI working on Compaq R3000z. You
> need to fix kernel and DSDT. The kernel hack is for FreeBSD/amd64.
> Similar hack should work with FreeBSD/i386 but I haven't tested.
> To enable the hack, you need to set 'hw.acpi.skip_timer_override=1'
> from loader or loader.conf.
> Yes, I stole the idea from Linux. ;-)
> I only tested with the following options:
> options SMP
> device atpic
> The DSDT fix is against BIOS version F.33. To override DSDT, please
> Jung-uk Kim
The kernel patch can be somewhat simplified (no need for getenv_int() if you
just use TUNABLE_INT() I think), but I'll work on getting it into the tree.
It means that this is a truly screwed up motherboard though, as every other
x86 MP system in existence has routed IRQ 0 via intpin 2 and used intpin 0 as
ExtINT. Actually, this also forces us to use the ATPIC for IRQ 0 via intpin
0, except that if intpin 0 is really wired up to the clock, that is wrong as
well. Can you find out what the real deal is on this motherboard? Is intpin
0 ExtINT to the ATPIC or is it wired up to ISA IRQ 0 directly? Also, if it
is ExtINT, then you should be able to work around this w/o a kernel patch by
just forcing mixed mode. That is, set 'hw.apic.mixed_mode=1' from the loader
on a stock kernel. Then we ignore the APIC for IRQ0 and use the 8259A to
deliver it anyway. It seems that adding 'device atpic' should do this for
you automatically as it is actually so long as you remove 'options
NO_MIXED_MODE' from your kernel config.
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-amd64