[SeaBIOS] [PATCH v2] DSDT: Fix HPET _CRS Method

Gabriel L. Somlo gsomlo at gmail.com
Wed Nov 7 17:42:18 CET 2012

Updated _CRS method for HPET, bringing it in line with the way it is
presented on recent hardware (e.g. Dell Latitude D630, MacPro5,1, etc);
Allows it to be detected and utilized from Mac OS X; Also tested OK on
Linux (F16 64-bit install DVD) and Windows (Win7 64-bit install DVD).

Signed-off-by: Gabriel Somlo <somlo at cmu.edu>

On Wed, Nov 07, 2012 at 07:30:31AM +0100, Gerd Hoffmann wrote:
> Any reason you are making this a method?

Not really, I was just imitating the convention used by the
hardware implementation(s) I was using for inspiration :)
That being said, I do agree it looks better and more concise
if left as "Name...", as you suggested (see below).

> /me wonders where the "ReadOnly" comes from as the hpet has writable
> registers.  I see this on real hardware too, so it is probably correct.
>  Would be nice to have this confirmed by some specification reference
> though.

My guess would be subsection 2.3.2 (page 10) of the HPET spec
rev. 1.0a: "2. Software should not write to read-only registers".
Since at this level of detail we don't know where those registers
are, only that they're out there somewhere, I'm guessing the thinking
was that the safe course of action would be to declare it all ReadOnly,
and leave it to the (hopefully more knowledgeable) OS driver to decide
if/when to override that...


 src/acpi-dsdt.dsl |   13 ++++---------
 1 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
index 284d70d..e19f886 100644
--- a/src/acpi-dsdt.dsl
+++ b/src/acpi-dsdt.dsl
@@ -269,15 +269,10 @@ DefinitionBlock (
                     Return (0x0F)
             Name(_CRS, ResourceTemplate() {
-                DWordMemory(
-                    ResourceConsumer, PosDecode, MinFixed, MaxFixed,
-                    NonCacheable, ReadWrite,
-                    0x00000000,
-                    0xFED00000,
-                    0xFED003FF,
-                    0x00000000,
-                    0x00000400 /* 1K memory: FED00000 - FED003FF */
-                )
+                Memory32Fixed (ReadOnly,
+                    0xFED00000,         // Address Base
+                    0x00000400,         // Address Length
+                    )

More information about the SeaBIOS mailing list