FADT BootArchitectureFlags pre 2.0

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
User avatar
makerimages
Member
Member
Posts: 27
Joined: Sun Dec 28, 2014 11:16 am
Libera.chat IRC: Makerimages
Location: Estonia

FADT BootArchitectureFlags pre 2.0

Post by makerimages »

Ok, apparently, the FADT BootArchitectureFlags is used in ACPI 2.0. But This is needed for PS/2 controller existence checking. What is the BootArchitectureFlags equiv. for pre- 2.0 ? The Flags field?
Working on SinusOS.
Octocontrabass
Member
Member
Posts: 5588
Joined: Mon Mar 25, 2013 7:01 pm

Re: FADT BootArchitectureFlags pre 2.0

Post by Octocontrabass »

makerimages wrote:But This is needed for PS/2 controller existence checking.
What are your OS's minimum system requirements? I doubt your OS will run on anything so old that it's PC-compatible but not AT-compatible.
madanra
Member
Member
Posts: 149
Joined: Mon Sep 07, 2009 12:01 pm

Re: FADT BootArchitectureFlags pre 2.0

Post by madanra »

Octocontrabass wrote:What are your OS's minimum system requirements? I doubt your OS will run on anything so old that it's PC-compatible but not AT-compatible.
Modern computer might not have PS/2, and be USB-only.
Octocontrabass
Member
Member
Posts: 5588
Joined: Mon Mar 25, 2013 7:01 pm

Re: FADT BootArchitectureFlags pre 2.0

Post by Octocontrabass »

Modern computers will support at least ACPI 2.0.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re: FADT BootArchitectureFlags pre 2.0

Post by Brendan »

Hi,
makerimages wrote:Ok, apparently, the FADT BootArchitectureFlags is used in ACPI 2.0. But This is needed for PS/2 controller existence checking. What is the BootArchitectureFlags equiv. for pre- 2.0 ? The Flags field?
In ACPI 1.0b; there's 3 reserved bytes at offset 109 in the FADT (most likely padding for alignment) followed by a 32-bit "flags" field at offset 112.

In ACPI 2.0 and later, the first 2 bytes at offset 109 became the misaligned 16-bit "IAPC_BOOT_ARCH" flags, and the byte at offset 111 is "must be zero".

Note that (in general, for all ACPI tables) there is no "ACPI version number" and all of the tables only have a "table version number". Each time they change the table they increase the version number, but if they don't change the table they don't change the table's version number. For example, for ACPI 6.0 the DSDT has "table version 2", the SSDT has "table version 2" and the MADT has "table version 3".

Also; it would be a mistake to assume that firmware doesn't mix and match. For example; the FADT might have "table version 1" (from ACPI 1.0) while MADT has "table version 3" (from ACPI 4.0?); or FADT might have "table version 6" (from ACPI 6.0) while MADT has "table version 1" (from ACPI 1.0).

Mostly; you'd check if the FADT "table version" is 2 or higher, and if it is you'd check the "IAPC_BOOT_ARCH" flags to see if (e.g.) 8042 is present; and if FADT "table version" is 1 (or lower?) then the "IAPC_BOOT_ARCH" flags don't exist and you'd just assume an 8042 is present (and you'd still check the FADT "table version" even if something else makes your software think it's ACPI 2 or later).


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
User avatar
thepowersgang
Member
Member
Posts: 734
Joined: Tue Dec 25, 2007 6:03 am
Libera.chat IRC: thePowersGang
Location: Perth, Western Australia
Contact:

Re: FADT BootArchitectureFlags pre 2.0

Post by thepowersgang »

brendan is right there - If the FADT is older than the revision that contains the IA32 boot flags, you assume that the 8042 is present. (Current qemu ships with tables that require knowing this)
Kernel Development, It's the brain surgery of programming.
Acess2 OS (c) | Tifflin OS (rust) | mrustc - Rust compiler
Currently Working on: mrustc
Post Reply