diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index 46a6f952b7..edf4c29f5a 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -36430efef054479ea2cc06f2052a85a09e9bf232 +6a1f0e6e6386e60748607c3c460c51a36a162307 diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index 326e83d686..804413f12b 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -4,7 +4,7 @@ DOWNLOADS := nova.git # r10 branch URL(nova) := https://github.com/alex-ab/NOVA.git -REV(nova) := d7804f2125ad9ba1b86ad983261f72bdc1c0cfe7 +REV(nova) := 7e3b5d3916825fb32e011cff4ee9b09ecdcb8d05 DIR(nova) := src/kernel/nova PATCHES := $(sort $(wildcard $(REP_DIR)/patches/*.patch)) diff --git a/repos/libports/ports/acpica.hash b/repos/libports/ports/acpica.hash index 1ddeea9247..ccec145fef 100644 --- a/repos/libports/ports/acpica.hash +++ b/repos/libports/ports/acpica.hash @@ -1 +1 @@ -eabee3c47ec115b80e21ae830bbdd4faf705200f +cd5027ca2f274e0274219109ac8b3908fd9ed681 diff --git a/repos/libports/src/lib/acpica/acpica.patch b/repos/libports/src/lib/acpica/acpica.patch index 8a8b41b7b5..baf5c879d4 100644 --- a/repos/libports/src/lib/acpica/acpica.patch +++ b/repos/libports/src/lib/acpica/acpica.patch @@ -1,63 +1,3 @@ -diff --git src/lib/acpica/source/components/events/evevent.c src/lib/acpica/source/components/events/evevent.c -index cec39cb..2a8e3a6 100644 ---- src/lib/acpica/source/components/events/evevent.c -+++ src/lib/acpica/source/components/events/evevent.c -@@ -188,6 +188,9 @@ AcpiEvFixedEventInitialize ( - UINT32 i; - ACPI_STATUS Status; - -+ /* read enabled events by kernel and don't disable them */ -+ UINT32 FixedEnable; -+ (void) AcpiHwRegisterRead (ACPI_REGISTER_PM1_ENABLE, &FixedEnable); - - /* - * Initialize the structure that keeps track of fixed event handlers and -@@ -198,6 +201,12 @@ AcpiEvFixedEventInitialize ( - AcpiGbl_FixedEventHandlers[i].Handler = NULL; - AcpiGbl_FixedEventHandlers[i].Context = NULL; - -+ if (FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask) -+ { -+ AcpiOsPrintf (" Genode: SKIP disabling event '%u'(%x) - enabled by kernel!\n", i, AcpiGbl_FixedEventInfo[i].EnableBitMask); -+ continue; -+ } -+ - /* Disable the fixed event */ - - if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF) -@@ -262,10 +271,13 @@ AcpiEvFixedEventDetect ( - */ - for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) - { -- /* Both the status and enable bits must be on for this event */ -- -- if ((FixedStatus & AcpiGbl_FixedEventInfo[i].StatusBitMask) && -- (FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask)) -+ /* kernel 'signals' the fixed event by disabling it in the enable -+ * register. Check for events, that have registered handlers and that -+ * are disabled in the enable register. If found, re-enable event. -+ */ -+ if (AcpiGbl_FixedEventInfo[i].EnableBitMask && -+ AcpiGbl_FixedEventHandlers[i].Handler && -+ !(FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask)) - { - /* - * Found an active (signalled) event. Invoke global event -@@ -309,11 +321,10 @@ AcpiEvFixedEventDispatch ( - ACPI_FUNCTION_ENTRY (); - - -- /* Clear the status bit */ -- -+ /* Re-enable event - kernel disabled it */ - (void) AcpiWriteBitRegister ( -- AcpiGbl_FixedEventInfo[Event].StatusRegisterId, -- ACPI_CLEAR_STATUS); -+ AcpiGbl_FixedEventInfo[Event].EnableRegisterId, -+ ACPI_ENABLE_EVENT); - - /* - * Make sure that a handler exists. If not, report an error diff --git src/lib/acpica/source/include/acpixf.h src/lib/acpica/source/include/acpixf.h index 3a823a3..abc2900 100644 --- src/lib/acpica/source/include/acpixf.h