diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2020-01-08 19:37:35 +0100 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2020-01-08 19:47:50 +0100 |
commit | 3d00a8089ed6fd5875be75733adc2da3768ba252 (patch) | |
tree | 5ed74e627f761c0054ae4bbc71185c380f6806f6 /kernels/linux-libre-arm64/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch | |
parent | b8dd027e7c1b4103263135b75537d7117792ac8e (diff) | |
download | abslibre-3d00a8089ed6fd5875be75733adc2da3768ba252.tar.gz abslibre-3d00a8089ed6fd5875be75733adc2da3768ba252.tar.bz2 abslibre-3d00a8089ed6fd5875be75733adc2da3768ba252.zip |
kernels: add linux-libre-aarch64
Some System On a Chip (SOC) have 64bit ARM CPUs that are also
capable of running arm 32bit applications.
Since:
- Parabola doesn't have an aarch64 package repository yet
- The devicetree of devices using such System On a Chip
are not compiled when using the armv7 defconfig
- Drivers or other platform support code for such hardware
might also not be compiled in with the armv7 defconfig
- This approach has already been tested with the linux-libre-x86_64
kenrel
It's then a good idea to add support for such devices by adding
an arrch64 kernel as the maintenance and work is minimal.
The downside is that the external kernel modules that are either
compiled against the kernel or using DKMS will not work by default.
It's however still possible to compile them by hand by using
ARCH= and CROSS_COMPILE= as it is done for this kernel, so it
should be relatively easy to add support for the non-dkms modules.
As for DKMS, someone would need to look into it to understand how
to pass it the make flags (ARCH= and CROSS_COMPILE=) that are
required to automatically build modules.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Diffstat (limited to 'kernels/linux-libre-arm64/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch')
-rw-r--r-- | kernels/linux-libre-arm64/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/kernels/linux-libre-arm64/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch b/kernels/linux-libre-arm64/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch new file mode 100644 index 000000000..7b749ce70 --- /dev/null +++ b/kernels/linux-libre-arm64/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch @@ -0,0 +1,78 @@ +From f74b67cce5f0c5c37b0c5cb0020a818f0594a743 Mon Sep 17 00:00:00 2001 +From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com> +Date: Thu, 28 Nov 2019 23:50:40 +0100 +Subject: [PATCH 06/13] ACPI: PM: s2idle: Rework ACPI events synchronization + +Note that the EC GPE processing need not be synchronized in +acpi_s2idle_wake() after invoking acpi_ec_dispatch_gpe(), because +that function checks the GPE status and dispatches its handler if +need be and the SCI action handler is not going to run anyway at +that point. + +Moreover, it is better to drain all of the pending ACPI events +before restoring the working-state configuration of GPEs in +acpi_s2idle_restore(), because those events are likely to be related +to system wakeup, in which case they will not be relevant going +forward. + +Rework the code to take these observations into account. + +Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> +--- + drivers/acpi/sleep.c | 26 +++++++++++++++++++------- + 1 file changed, 19 insertions(+), 7 deletions(-) + +diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c +index 2af937a8b1c5..6747a279621b 100644 +--- a/drivers/acpi/sleep.c ++++ b/drivers/acpi/sleep.c +@@ -977,6 +977,16 @@ static int acpi_s2idle_prepare_late(void) + return 0; + } + ++static void acpi_s2idle_sync(void) ++{ ++ /* ++ * The EC driver uses the system workqueue and an additional special ++ * one, so those need to be flushed too. ++ */ ++ acpi_ec_flush_work(); ++ acpi_os_wait_events_complete(); /* synchronize Notify handling */ ++} ++ + static void acpi_s2idle_wake(void) + { + /* +@@ -1001,13 +1011,8 @@ static void acpi_s2idle_wake(void) + * should be missed by canceling the wakeup here. + */ + pm_system_cancel_wakeup(); +- /* +- * The EC driver uses the system workqueue and an additional +- * special one, so those need to be flushed too. +- */ +- acpi_os_wait_events_complete(); /* synchronize EC GPE processing */ +- acpi_ec_flush_work(); +- acpi_os_wait_events_complete(); /* synchronize Notify handling */ ++ ++ acpi_s2idle_sync(); + + rearm_wake_irq(acpi_sci_irq); + } +@@ -1024,6 +1029,13 @@ static void acpi_s2idle_restore_early(void) + + static void acpi_s2idle_restore(void) + { ++ /* ++ * Drain pending events before restoring the working-state configuration ++ * of GPEs. ++ */ ++ acpi_os_wait_events_complete(); /* synchronize GPE processing */ ++ acpi_s2idle_sync(); ++ + s2idle_wakeup = false; + + acpi_enable_all_runtime_gpes(); +-- +2.24.1 + |