Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/x86/acpi Put ACPI idle under ACPICPU_ENABLE_C3 unti...



details:   https://anonhg.NetBSD.org/src/rev/221ee62b69a0
branches:  trunk
changeset: 745854:221ee62b69a0
user:      ad <ad%NetBSD.org@localhost>
date:      Sat Mar 14 13:50:46 2020 +0000

description:
Put ACPI idle under ACPICPU_ENABLE_C3 until the wrinkles are ironed out.
This seems well written and basically all good, but currently doesn't enter
a low power state, and imposes a big performance penalty.  Proposed on
port-i386 & port-amd64.

diffstat:

 sys/arch/x86/acpi/acpi_cpu_md.c |  20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diffs (71 lines):

diff -r e8d21c8641f0 -r 221ee62b69a0 sys/arch/x86/acpi/acpi_cpu_md.c
--- a/sys/arch/x86/acpi/acpi_cpu_md.c   Sat Mar 14 13:39:36 2020 +0000
+++ b/sys/arch/x86/acpi/acpi_cpu_md.c   Sat Mar 14 13:50:46 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_cpu_md.c,v 1.81 2019/11/05 20:21:34 maxv Exp $ */
+/* $NetBSD: acpi_cpu_md.c,v 1.82 2020/03/14 13:50:46 ad Exp $ */
 
 /*-
  * Copyright (c) 2010, 2011 Jukka Ruohonen <jruohonen%iki.fi@localhost>
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_md.c,v 1.81 2019/11/05 20:21:34 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_md.c,v 1.82 2020/03/14 13:50:46 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -103,8 +103,10 @@
 
 #define FID_TO_VCO_FID(fidd)   (((fid) < 8) ? (8 + ((fid) << 1)) : (fid))
 
+#ifdef ACPICPU_ENABLE_C3
 static char      native_idle_text[16];
 void           (*native_idle)(void) = NULL;
+#endif
 
 static int      acpicpu_md_quirk_piix4(const struct pci_attach_args *);
 static void     acpicpu_md_pstate_hwf_reset(void *, void *);
@@ -348,6 +350,12 @@
 int
 acpicpu_md_cstate_start(struct acpicpu_softc *sc)
 {
+#ifdef ACPICPU_ENABLE_C3
+       /*
+        * XXX There are performance problems with the ACPI idle loop, and
+        * it does not enter deep sleep.  Once those are resolved it'll be
+        * re-enabled.
+        */
        const size_t size = sizeof(native_idle_text);
        struct acpicpu_cstate *cs;
        bool ipi = false;
@@ -369,6 +377,7 @@
        }
 
        x86_cpu_idle_set(acpicpu_cstate_idle, "acpi", ipi);
+#endif /* ACPICPU_ENABLE_C3 */
 
        return 0;
 }
@@ -376,6 +385,12 @@
 int
 acpicpu_md_cstate_stop(void)
 {
+#ifdef ACPICPU_ENABLE_C3
+       /*
+        * XXX There are performance problems with the ACPI idle loop, and
+        * it does not enter deep sleep.  Once those are resolved it'll be
+        * re-enabled.
+        */
        static char text[16];
        void (*func)(void);
        bool ipi;
@@ -393,6 +408,7 @@
         * out from the ACPI idle-loop before detachment.
         */
        xc_barrier(0);
+#endif /* ACPICPU_ENABLE_C3 */
 
        return 0;
 }



Home | Main Index | Thread Index | Old Index