Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Feb 2008 10:17:48 -0800
From:      Nate Lawson <nate@root.org>
To:        Andriy Gapon <avg@icyb.net.ua>
Cc:        freebsd-acpi@freebsd.org
Subject:   Re: mismatch between FACP and chipset spec
Message-ID:  <47C6FACC.9090502@root.org>
In-Reply-To: <47C67001.20101@icyb.net.ua>
References:  <47C67001.20101@icyb.net.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Andriy Gapon wrote:
> As some of you probably already know I have a motherboard based on
> 440BX/PIIX4E chipset:
> http://www.geocities.com/SiliconValley/3686/delta_mp2.html
> 
> Here's some info from ACPI tables:
>         PM1a_EVT_BLK=0x4000-0x4003
>         PM1a_CNT_BLK=0x4040-0x4041
>         PM_TMR_BLK=0x4008-0x400b
> 
> I know that in my case 0x4000 is a base address of "Power Management IO
> Space" (as defined by PIIX4 specification).
> I see that descriptions of the registers and their bits match between
> ACPI specification and PIIX4 specification for registers in PM1a_EVT_BLK
> (PMSTS and PMEN registers in PIIX4 parlance) and PM_TMR_BLK (PMTMP
> register in PIIX4 parlance).
> But addresses given for PM1a_CNT_BLK are not documented at all! On the
> other hand ACPI description of that register perfectly matches
> description of PIIX4 PMCNTRL register that is located at 0x4004 with a
> given base address. So, this is 0x4040 vs. 0x4004, looks like a possible
> typo/mistake by an author of ACPI tables for this motherboard.

440BX is pretty old, and typos like that were common back then.  ACPI 
was less used and drivers would just hardcode 0x4004 or whatever.

> Question: is there any way I can way override the address of
> PM1a_CNT_BLK? My guess is that there is zero chance that there would be
> any BIOS updates for this old and exotic motherboard (MP2-BX-X).

No generic way.  You'd have to add a quirk to acpi.c/acpi_quirks and use 
that to override FADT.

> I think that this register is mostly useful for BM_RLD bit which is used
> in C3 support. I don't use C3 (there is an errata for C3 with this
> chipset and there is no PM2_CNT register defined anyway), but I am
> curios anyway.

Seems like a lot of effort for no gain.  Since you are getting good at 
debugging, can we get you newer hardware to play with?  :)

> And a mostly unrelated question. From the following code it seems that
> linux won't go even into C2 state if there is any bus master activity
> detected (but I am not what would happen with "demotion"/"promotion"):
> http://lxr.linux.no/linux/drivers/acpi/processor_idle.c#L389

I don't think so.  I think cx->demotion.threshold.bm is a flag that says 
whether the idle state the CPU is entering requires bus mastering 
awareness.  It will probably only be set for C3.

-- 
Nate



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47C6FACC.9090502>