Compaq R3000z ACPI fix

John Baldwin jhb at
Mon Jan 31 14:54:42 PST 2005

On Wednesday 19 January 2005 10:14 pm, Jung-uk Kim wrote:
> Hi,
> 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
> read:
> Enjoy,
> 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>  <><
"Power Users Use the Power to Serve"  =

More information about the freebsd-amd64 mailing list