Acpica osdev. The initialization seems to work.


Acpica osdev * ACPICA is implemented in C, which makes it slightly harder to interface with say Assembly or I am encountering a problem where the computer completely hangs when either ACPICA or PS/2 are initialized, but only if I've enabled SMP (i. In order to be portable, ACPICA abstracts the OS-specific services into a layer it calls the OSL. Namely, the AcpiOs* family of functions ought to be implemented by the host The ACPI Component Architecture (ACPICA) project provides an open-source operating system-independent implementation of the Advanced Configuration and Power Interface specification (ACPI). I would expect users to be more inclined towards using a tools from their distro's repository than an obscure tool that you need to run on FreeDOS (does FreeDOS even boot on UEFI?). First, we must clone EDK2 git clone https://github. Only one of the two fields is used, the other contains 0. If you wish to limit yourself to using MSRs for a specific processor variant, and not support others, that's power to you. Its main focuses are full NT compatibility, safety, and minimization of stack usage by avoiding recursion entirely. This is what is printed during initialization: TRACE: Initializing Namespace objects: Hi, everyone. Another great example how to use the ACPI tables without ACPICA is in I've got ACPICA running at the moment and it works well for things like shutting down the system or going to sleep (S3), but I'm currently a bit stuck on the fixed event handlers for the power button and other such devices. r/osdev In general ACPICA is a big an complicated piece of software itself so you're going to need a lot of stuff implemented before you can actually get it running properly. ACPICA almost working now. For detailed project information and The ACPICA code is meant to be directly integrated into the host OS, as a kernel-resident subsystem. A function to map a PCI address to an IRQ on IO-APIC. It starts properly (at least does not show any errors). ASL and AML. e. The initialization seems to work. I downloaded the ACPICA for Unix source code, copied the all the C files in `components/` and header files in `include/` to a single It can be adapted to any host OS. uACPI is a portable and easy-to-integrate implementation of the Advanced Configuration and Power Interface (ACPI). Or, you could read the MP tables. I opened the acpi solution in generate/msvc and it generated all the executables, but only AcpiExec and AcpiSubsystem have no executable so I think they are the ones which I should link to. How to use ACPICA Question about which tools to use, bugs, the best way to implement a function, etc should go here. Korona wrote:We (= active developers of LAI) just use Intel's acpidump. The Place to Start for Operating System Developers. I need to install a handler for power button. Use LAI. The other way is to write a The crate is, I'd say, a much better experience than ACPICA, and should be complete enough to get you started on QEMU or something. with acpica, their design seem to be to handle everything in background, and provide a complex mechanism of event handling wtith call back to interface with the rest of the system, but the 'os independance' is really only on a pure language/call level, because it involve a whole lot of complexity in the conceptual aspect of what it's supposed I am in the process of porting ACPICA to my kernel (just a few things to fix). ASL is ACPI source language. -). All the initialization stages works, and the computer now cannot be turned-off with the power-button. Its main focuses are full NT compatibility, safety, How to use ACPICA Question about which tools to use, bugs, the best way to implement a function, etc should go here. It simplifies the process of uACPI is a portable and easy-to-integrate implementation of the Advanced Configuration and Power Interface (ACPI). This page or section is a work in progress and may thus be incomplete. Detecting the RSDP. 0). IIRC you need to sort out the parts that are for inclusion in your kernel, and the parts that are the ASL compiler and other utilities. - Addressing some of the fundamental design flaws of ACPICA: the global interpreter lock, unsafe object lifetimes, NT incompatibility (reference semantics, implicit-casts, etc) - Added tons of code examples to the osdev wiki page With this, uACPI is very close to being a finished library at its 1. If you do decide that using ACPI is the proper way, then you can make the choice of either using ACPICA or writing a custom replacement for that library. Local APIC and IO-APIC. Is there anything else I have to do for ACPICA shutdown ? Thanks. . sudo apt install build-essential git python2 uuid-dev nasm acpica-tools # Or whatever your package manager is. That probably won't work on newer machines, as ACPI prevailed over MP / PnP / APM at the end of the 90's. started the application processors). How to properly initialize ACPICA Question about which tools to use, bugs, the best way to implement a function, etc should go here. The CPUID. I am in the process of porting ACPICA to my kernel (just a few things to fix). org; ↳ OSDev Wiki; ↳ About this site; Board index; All times are UTC-06:00; Hi all I want to make PCI IRQ routing for IOAPIC. The AcpiHwDerivePciId function is invoked by the ACPICA subsystem during configuration of a PCI_Config Operation Region in order to (possibly) update the Bus number in the PciId with the actual Bus number as determined by the hardware and operating system configuration. section 11. I've also provided the OS required functions. The computer hangs when ACPICA tries to write the byte 0xA0 to IO port 0x00B2, which is supposed to enable ACPI mode. * ACPICA is implemented in C, which makes it slightly harder to interface with say Assembly or so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list zity wrote:I've finally got some time to work on my OS again and I've decided to rewrite my code for IRQ handling to gain some benefits from the I/O APIC. All non-root bridges without _BBN method. I am trying to add ACPICA to my system, I have implemented the OSL functions described in the wiki, I have functions from the section "Environmental and ACPI Tables" and "Memory Management" and as far as I understand, the scheduler and synchronization functions are only needed for the full operation of ACPICA and I can already use the ACPICA table Advantages of ACPICA: * The AML interpreter is already done for you. Advantages of ACPICA: * The AML interpreter is already done for you. Relatedly, if anyone does come across anything that is not supported, please do file an issue, or feel free to contribute (something as large and annoying to implement as ACPI could really do with a single implementation; the Hi, everyone. So now I should implement a From OSDev Wiki. But it will work on QEMU and Bochs. So the question is - do I go ACPICA or try to implement everything on my own using stuff provided through different interfaces (BIOS calls, CPUID, MSR, IO, PCI, etc. I am encountering a problem where the computer completely hangs when either ACPICA or PS/2 are initialized, but only if I've enabled SMP (i. Has anyone seen something similar, or knows why this would be happening? I'm using the 'acpica-unix-20121114. ACPICA tries to solve all aspects and create fully functional driver ecosystem and therefore is very complex. shmx wrote:1. I'm using the 'acpica-unix-20121114. There's general two classes of functions one is the AcpiOS* functions, referred as the OS Services Layer, these are functions you as an OS so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list OSDev. Don't forget to see if your question is answered in the wiki first! We could call this spec OSDev Drivers, or ODD in short (because it's odd to specify only the smallest subset in each and every driver, but if you think about it, helps portability a lot). I will see about that, I think Ill keep working on vms until I finish the drivers then after making the 3D driver and font driver i will just display logs on the screen and see whats the problem. Here is output I Advantages of ACPICA: * The AML interpreter is already done for you. Well, suppose you want to find the FADT. Unlike ACPICA, however, LAI a minimal interpreter - it executes AML but it does not provide a full solution to every ACPI-related task. Reading the ACPI tables is just a matter of defining some struct and casting memory. Use ACPICA. However, it ACPICA (ACPI Component Architecture) is a reference implementation of the Advanced Configuration and Power Interface (ACPI) specification. (Although, ~20% of the time it works just fine). Moreover, I tried to implement getting routing table by recursively searching for PCI bridges (starting from PCI root PNP0A03) and calling _PRT method on them. Is that not the case? Anyways, what is important to me is that I can use ACPICA with qemu/bochs, so is that the case? I believe ACPICA supports all versions of all tables (and supports "all tables are version 1 AndrewAPrice wrote:I'm developing on x64 and for moving forward (a more flexible timer than the PIT, multiprocessing, etc. Extra documentation can be Use ACPICA. ACPI (Advanced Configuration and Power Interface) is a Power Management and configuration standard for the PC, developed by Intel, Microsoft and Toshiba. A few tweaks here and there, a bit of time spent reading documentation - nothing unusual. It can be adapted to any host OS. com It seems most systems implement something like ACPICA to read the legal p-state values out of the ACPI _PSS object. Hi. c - OS interface code Externals/ACPICA Debug output So i've been porting ACPICA recently and up to this moment everything was going pretty well. Is there a pressure on me to use the acpica layer(s) or not ? is there something I will miss later in this constant context ? Thanks. The ACPI Component Architecture (ACPICA) project provides an open-source operating system-independent implementation of the Advanced Configuration and Power Interface specification (ACPI). You don't particularly need ACPI support for that in the first place, though it may decide to interfere and reset your settings. Its content may be changed in the near future. org. by devc1 » Sun Apr 30, 2023 5:31 am . * You need to figure out the ACPICA APIs. For detailed project information and anatolik wrote:I am working on my hobby OS and now I am trying to add a shutdown handler. ) without ACPI? Is it even possible to do without ACPI? It's not that complicated when you use ACPICA but it's not convenient either. 01h:EDX[bit 9] flag specifies whether a CPU has a built-in local APIC. OSDev. Don't forget to see if your question is answered in the wiki first! Hello OSDev! I have an old kernel stub with PS/2 logic for keyboard input. On many hardware calling _PTS is required and failing to call it will cause shutdown to fail, or cause hw to freeze in some half-shutdown phase. , the DSDT and SSDT tables), constructs the ACPI namespace, and is able to evaluate nodes (control methods or other objects) of this namespace. g. Relatedly, if anyone does come across anything that is not supported, please do file an issue, or feel free to contribute (something as large and annoying to implement as ACPI could really do with a single implementation; the Generally if you're to the point where you're looking at implementing ACPI most of what it needs should be easy enough to implement, or already implemented. As well, not all of the functions need to be implemented (although it is optimal to do so) because LAI simply panics when a function is needed and undefined, rather than requiring them at link time. In general you'll want to have support for several devices before approaching ACPICA including: PIC, PIT, Local APIC (mainly for the timer), IOAPIC, possibly HPET support, and PCI Bus support. In an APIC-based system, each CPU is made of a "core" and a "local APIC". ↳ OSDev Wiki; ↳ About this site; Board index; All times are UTC-06: The ACPI Component Architecture ACPICA provides an operating system (OS)-independent reference implementation of the Advanced Configuration and Power Interface. It works well in QEMU and Virtualbox, but miserably fails on my physical machine (laptop). A real AML interpreter is required for that, like for example, ACPICA. This is a 32-bit pointer to the FACS. ODD just tries to somewhat standardize How to properly initialize ACPICA Question about which tools to use, bugs, the best way to implement a function, etc should go here. Here's an example (it does a little bit more than parsing the tables, it also searches AML bytecode to detect the IO ports for shutdown, but'll get the idea). Since my kernel init multiprocessor first and then dynamic memory, I have to statically allocate memory, my solution is: OSDev. Don't forget to see if your question is answered in Enumerate the ACPI namespace. Top. This really is a heads up, which should go in the wiki, but that will have to wait because the entire ACPICA page needs a lot more info to be seriously useful (working on it, albeit slowly!). Specifically; there's: PIT (IRQ 0), possibly emulated via firmware/HPET I used ACPICA for an OS a little while back. The crate is, I'd say, a much better experience than ACPICA, and should be complete enough to get you started on QEMU or something. Jump to navigation Jump to search. Brendan wrote:It's a bad idea to write your own AML interpreter; and most people use ACPICA instead (see the wiki page). Perhaps this is a ridiculous question, but is it possible to get these model-specific p-states without using ACPICA? I'd rather not implement a full AML parser, so if I could dig though the SSDTs, either searching for the _PSS object, or jumping to a known offset, that would be greatly preferred. Detection. Hi all I want to make PCI IRQ routing for IOAPIC. 7'', function AcpiInitializeTables can be used to initialize table component, using either pre-allocated buffer or dynamic memory. org; ↳ OSDev Wiki; ↳ About this site; Board index; All times are UTC-06:00; Re: How to use ACPICA Post by devc1 » Mon May 01, 2023 2:49 am I finally succeeded in the compilation process (compiling my driver with the acpica lib), I did not tested because I still don't provide the full required os layer, but here is how I did it in windows in case you wonder (using msvc compiler): LAI, or Lightweight AML Interpreter, is a lightweight alternative to the bulky ACPICA. I skimmed the manual and it promises a chapter which discusses "Deployment" of ACPICA. I would get the largest amount of features, the ability to have full ACPI support out of the box, and more. I would get all I really need, not quite full ACPI support, but enough. I parsed ACPI FADI and found that IRQ number for SCI at bzt wrote:You don't need ACPICA to parse the tables. Combuster Member Posts: 9301 Joined: Wed Oct 18, 2006 3:45 am OSDev. Address is a 64-bit pointer in the defined address space to the data structure. 0 release and API stabilization. )I think I'm going to have to support ACPI. Don't forget to see if your question is answered in the wiki first! How to properly initialize ACPICA Question about which tools to use, bugs, the best way to implement a function, etc should go here. Its API is pretty confusing though, and I can't figure out how to read how the PCI interrupts (INTA#, etc) are wired on the system (I'm using the I/O APIC obviously). It's available from all Linux distros and ACPICA's website hosts Windows binaries. Go to osdev r/osdev. Using these settings, it is possible to compile Intel's ACPICA code without modifications. Yes, ACPICA requires access to a heap and some basic scheduling; however, that stuff should not be out of reach, even for smaller hobby projects. See the ACPI specification for details (e. Don't forget to see if your question is answered in the wiki first! How to use ACPICA Question about which tools to use, bugs, the best way to implement a function, etc should go here. I've implemented the ACPICA OSL for my OS and performed a full initialization of ACPICA. The RSDP is either located within the first 1 KB of the EBDA (Extended BIOS Data Area) (a 2 byte real mode segment pointer to it is located at 0x40E), or in the memory region from 0x000E0000 to 0x000FFFFF (the main BIOS area below 1 MB). I want to use ACPICA in my own OS. by rdos » Sun Oct 09, 2011 7:40 am . However when I try to enumerate devices it does not show the PCI ones. It is much, much smaller, and requires less functions in the OS interface layer be implemented. Yes, you can remap ACPI NVS memory however you like. How to use ACPICA. If you want ACPI, but don't want to write it, you Intel's ACPICA. Anyway, I can now run both the table initialization code, and the module intialization code on two different machines (an AMD Geode and a 4-core AMD Athlon). tar. This really is a heads up, which should go in the wiki, but that will have to wait because the entire ACPICA page needs a lot more info to How to use ACPICA Question about which tools to use, bugs, the best way to implement a function, etc should go here. org; ↳ OSDev Wiki; ↳ About this site; Board index; All times are UTC-06:00; For starters, pick one of the two options above, and don't mix and match as you seem to be doing right now. The ACPI driver now works on a AMD geode and a 4-core AMD Athlon. Its well documented on the wiki. A function which returns a list of devices, not with callbacks, but with an index #, and then allows easy retrieval of IRQ, IO-range and memory-range Using these settings, it is possible to compile Intel's ACPICA code without modifications. I have a question about ACPICA. What I basically want is: 1. ACPI NVS memory isn't supposed to have the EFI_MEMORY_RUNTIME attribute, but if it does, you'll need to handle it the same as anything else with the EFI_MEMORY_RUNTIME attribute: assign a virtual address when you call SetVirtualAddressMap, then make sure it's mapped at that virtual address any so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list Using these settings, it is possible to compile Intel's ACPICA code without modifications. * You only need to write a thin adaptation layer between ACPICA and your OS. OK, so I have ACPICA working (with debug support), but the interface is cludgy and not delivering what I want. org; ↳ OSDev Wiki; ↳ About this site; Board index; All times with acpica, their design seem to be to handle everything in background, and provide a complex mechanism of event handling wtith call back to interface with the rest of the system, but the 'os independance' is really only on a pure language/call level, because it involve a whole lot of complexity in the conceptual aspect of what it's supposed The ACPICA driver works fine, but it gives a page fault after the driver is ran so it may be the kernel or some other driver. Operating System Development. Part of the problem (beyond the obvious stuff) is that you have to tell AML which OS you are; and if you don't lie the firmware won't recognise your OS and will disable lots of features, and if you do lie and say that you are The first way is by implementing an interpreter for ACPI's AML (or making ACPICA work for your OS), and using the "Fan Object" methods. Don't forget to see if your question is answered in the wiki first! There are many things the author skips, like calling the _PTS method. ACPI allows the operating system to control the amount of power each device is given (allowing it to put certain devices on standby or power-off for example). c - OS interface code Externals/ACPICA Debug output According to ''ACPICA Reference 1. Don't forget to see if your question is answered in the wiki first! Using these settings, it is possible to compile Intel's ACPICA code without modifications. The ACPICA code is meant to be directly integrated into the host OS, as a kernel-resident subsystem. I understand that this isn't possible without ACPI, so I integrated ACPICA into my project. I'm currently using some very basic I/O APIC functions to handle the legacy ISA interrupts and that part is working properly, but while I'm rewriting the code I want to add support for PCI interrupts too. so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list For starters, pick one of the two options above, and don't mix and match as you seem to be doing right now. org; ↳ OSDev Wiki; ↳ About this site; Board index; All times are UTC-06:00; OSDev. Also I don't feel that comfortable with implementations of 3rd party code, think ACPICA. Last edited by wichtounet on Sun Jul 24, 2016 7:32 am, edited 2 times in total. * ACPICA is implemented in C, which makes it slightly harder to interface with say Assembly or OSDev. It seems most systems implement something like ACPICA to read the legal p-state values out of the ACPI _PSS object. The FADT, being a SDT has a ACPISDTHeader. org; ↳ OSDev Wiki; ↳ About this site; Board index; All times are UTC-06:00; Of course, don't forget the aforementioned fun of invalid AML and tables (which work due to bugs in Windows parser and therefore are defacto valid because not booting on random machines is generally considered unacceptable). managarm: Microkernel-based OS capable of running a Wayland desktop (Discord: and for all of these you can figure out the resources from the corresponding pages in the OSdev wiki. How to use. In both QEMU and VirtualBox there doesn't seem to be any actual devices for the power button (and no _PRW control methods Has anyone seen something similar, or knows why this would be happening? I'm using the 'acpica-unix-20121114. Hosting the ACPICA requires no changes to the core ACPICA code. org; ↳ OSDev Wiki; ↳ About this site; Board index; All times Important: Note that the 'PointerToOtherSDT' field as defined above should be aligned to a 4-byte boundary and not the default 8-byte alignment for a uint64_t. I also modified `platform/acenv. Perhaps this is a ridiculous question, but is it possible to get these model-specific p-states without using ACPICA? ↳ OSDev Wiki; ↳ About this site; Hi all I want to make PCI IRQ routing for IOAPIC. Skip to content. I tryed to google the answer and it looks like I need to use SCI interruption. I solved this problem by reading bus number directly from PCI configuration space. It is a more human-readable form of the byte code that is AML. Fields FirmwareCtrl. A function which returns a list of devices, not with callbacks, but with an index #, and then allows easy retrieval of IRQ, IO-range and memory-range Use ACPICA. c - OS interface code Externals/ACPICA Debug output so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list so i downloaded acpica, and got to compile with visual under windows, just had to compile few stuff under linux because it use yacc and bison to build some files needed for the build , so far so good even if the makefile seem rather horrendous, they just pick files in the directories depending on the build, and the makefile contain a big list So i've been porting ACPICA recently and up to this moment everything was going pretty well. But it is big and bloated, and I want to understand all the code in my OS . This difference is similar to that between assembly Hi, I've been busy with ACPICA the time I was able to allocate to osdev (wish it could be more, but that's life -. Hi, I've been busy with ACPICA the time I was able to allocate to osdev (wish it could be more, but that's life -. ) without ACPI? Is it even possible to do without ACPI? Hi, everyone. Note: This doesn't make much sense because AML isn't performance critical, the native compiler won't be portable, and AML is only part of the problem anyway. 0 a new field has been added to the table, X_FirmwareControl of type GAS, which is 64-bits wide. h`. However, it does require a small OS-specific interface layer, which must be written specifically for each host OS. If In essence, it’s add source files from LAI to your source tree, define and implement a few functions (last I checked less than 10 for basic operations if I recall correctly) and call like two I want to use ACPICA in my own OS. 1 of ACPI 5. gz' tarball, with minimal patching (See link below) acpica. However, what i saw next made me wonder for a few days. Quick links. 2. This is what is printed during initialization: TRACE: Initializing Namespace objects: ↳ OSDev Wiki; ↳ About So i've been porting ACPICA recently and up to this moment everything was going pretty well. Perhaps this is a ridiculous question, but is it possible to get these model-specific p-states without using ACPICA? ↳ OSDev Wiki; ↳ About this site; Also I don't feel that comfortable with implementations of 3rd party code, think ACPICA. Disadvantages of ACPICA: * You need to write the glue layer. org; ↳ OSDev Wiki; ↳ About this site; Use an AML interpreter (e. Perhaps this is a ridiculous question, but is it possible to get these model-specific p-states without using ACPICA? ↳ OSDev Wiki; ↳ About this site; It can be adapted to any host OS. I assumed that (as stated on the osdev wiki) the version noted in the RSDP was the ACPI version and the tables always matched. Re: How to use ACPICA Post by devc1 » Mon May 01, 2023 2:49 am I finally succeeded in the compilation process (compiling my driver with the acpica lib), I did not tested because I still don't provide the full required os layer, but here is how I did it in windows in case you wonder (using msvc compiler): Hi, I've been busy with ACPICA the time I was able to allocate to osdev (wish it could be more, but that's life -. For starters, pick one of the two options above, and don't mix and match as you seem to be doing right now. Since ACPI 2. port ACPICA) Spend ages researching and implementing an "AML to native" compiler so that you can convert the AML to native and execute it without an interpreter. I think the only folders you don't need are compiler, generate, and tools. While there is some nice example code of how to use ACPICA, there doesn't seem to be any discussion of exactly what files you need to copy over to your OS in order to make use of it. To find the table, the Operating System has to find the "RSD PTR " string (notice the last space This page is about the ACPI SSDT (Secondary System Descriptor Table) It contains additional AML to interact with devices. h` and created a configure header for my own OS based on `aclinux. which ACPICA helps paper over thanks to the work of the contributors to the various other projects using ACPICA. You can find all of the APICs on a system (both local and IO APICs) by parsing the MADT. The ACPI Component Architecture ACPICA provides an operating system (OS)-independent reference implementation of the Advanced Configuration and Power Interface. I am the maintainer of the acpi and aml crates (although I’m also a medical student so have had little time recently to work on them or osdev in general). 3. Like ACPICA, LAI parses the ACPI tables that contain AML (i. The documentation should be relatively understandable with an understanding of ACPI’s general principals (I’d grab a copy of the spec, but you shouldn’t need to try and get your head around ACPICA). I have successfully embedded ACPICA into my kernel. An RTC device might have the PnP ID ACPI000E, PNP0B00, PNP0B01, or PNP0B02 depending on how it's meant to be accessed. PCI IRQ routing via ACPI (acpica) by Octocontrabass » Wed May 24, 2023 3:38 pm . FAQ; Board index. Has anyone had experience reading the ACPI tables in userland? My OS is a microkernel and it's a lot of work to support ACPI (either rolling your own interpreter or porting ACPICA), so I'm interested in In addition, Intel provides a reference implementation in its ACPICA software. I downloaded the ACPICA for Unix source code, copied the all the C files in `components/` and header files in `include/` to a single directory (except files in `debugger` and `disassembler` folders). The offset to the first pointer from the beginning of the XSDT table is 36 bytes. with acpica, their design seem to be to handle everything in background, and provide a complex mechanism of event handling wtith call back to interface with the rest of the system, but the 'os independance' is really only on a pure language/call level, because it involve a whole lot of complexity in the conceptual aspect of what it's supposed The ACPICA driver works fine, but it gives a page fault after the driver is ran so it may be the kernel or some other driver. lezvnn igkdppg rsf ryx prhfxb xiodb rewndt fxirf qjh wvoxs