ed8eb91107
Implemented IRQ service and MATD parsing. Please have a look at the 'README' file. Fixes issue #151
51 lines
1.6 KiB
Plaintext
51 lines
1.6 KiB
Plaintext
This directory contains an implementation of a simple ACPI parser
|
|
|
|
Behavior
|
|
--------
|
|
|
|
This server should be used when using a kernel (like Fiasco.OC or Nova) that
|
|
takes advantage of x86's APIC. The server traverses the ACPI tables and sets the
|
|
interrupt line of devices within the PCI config space to the GSIs found in the
|
|
ACPI tables. The 'MADT' table is parsed by the server as well, enabling clients
|
|
to use the correct IRQ when 'Interrupt Override' structures are found wihtin the
|
|
table.
|
|
|
|
Usage
|
|
-----
|
|
|
|
Start the 'acpi_drv' in your Genode environment. Do not start the 'pci_drv'
|
|
since this will be used as a slave of the 'acpi_drv'. You still must load the
|
|
'pci_drv' in your boot loader.
|
|
|
|
Configuration snipped (please not that IRQ service requests of the 'timer' are
|
|
routed to the ACPI-driver):
|
|
|
|
!<start name="acpi">
|
|
! <resource name="RAM" quantum="2M"/>
|
|
! <binary name="acpi_drv"/>
|
|
! <provides>
|
|
! <service name="PCI"/>
|
|
! <service name="IRQ" />
|
|
! </provides>
|
|
! <route>
|
|
! <service name="PCI"> <any-child /> </service>
|
|
! <any-service> <parent/> <any-child /> </any-service>
|
|
! </route>
|
|
!</start>
|
|
!
|
|
!<start name="timer">
|
|
! <resource name="RAM" quantum="1M"/>
|
|
! <provides><service name="Timer"/></provides>
|
|
! <route>
|
|
! <service name="IRQ"><child name="acpi" /></service>
|
|
! <any-service> <parent /> <any-child /></any-service>
|
|
! </route>
|
|
!</start>
|
|
|
|
Limitations and known issues
|
|
----------------------------
|
|
|
|
Currently there is no interface to set the interrupt mode for Irq_sessions
|
|
(e.g., level or edge triggered). This is required by Fiasco.OCs kernel
|
|
interface. We regard this as future work.
|