Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1179756 > unrolled thread

[PATCH v2 0/2] arm: kernel: implement cpuidle_ops with psci backend

Started byJisheng Zhang <jszhang@marvell.com>
First post2015-07-08 15:00 +0200
Last post2015-07-08 15:00 +0200
Articles 2 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH v2 0/2] arm: kernel: implement cpuidle_ops with psci backend Jisheng Zhang <jszhang@marvell.com> - 2015-07-08 15:00 +0200
    [PATCH v2 2/2] arm: kernel: implement cpuidle_ops with psci backend Jisheng Zhang <jszhang@marvell.com> - 2015-07-08 15:00 +0200

#1179756 — [PATCH v2 0/2] arm: kernel: implement cpuidle_ops with psci backend

FromJisheng Zhang <jszhang@marvell.com>
Date2015-07-08 15:00 +0200
Subject[PATCH v2 0/2] arm: kernel: implement cpuidle_ops with psci backend
Message-ID<pJX7c-2OK-3@gated-at.bofh.it>
We'd like to use cpuidle-arm.c for both arm and arm64 with psci as backend.
For arm64, it works. But for arm, we miss cpuidle_ops, these patches try to
address this issue.

Has been tested on Marvell Berlin SoCs. These patches are rebased on the Mark
Rutland's latest psci unification work and Lorenzo Pieralisi's psci related
work[1].

[PATCH 1/2] move psci's cpu_suspend handling to generic code as suggested
	    by Lorenzo.
[PATCH 2/2] implement cpuidle_ops with psci finally.

Since v1:
 - add a new file psci_cpuidle.c to implment cpuidle_ops

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/347352.html

Jisheng Zhang (2):
  firmware: psci: move cpu_suspend handling to generic code
  arm: kernel: implement cpuidle_ops with psci backend

 arch/arm/kernel/Makefile       |  1 +
 arch/arm/kernel/psci_cpuidle.c | 29 +++++++++++++
 arch/arm64/kernel/psci.c       | 95 ------------------------------------------
 drivers/firmware/psci.c        | 95 ++++++++++++++++++++++++++++++++++++++++++
 include/linux/psci.h           |  2 +
 5 files changed, 127 insertions(+), 95 deletions(-)
 create mode 100644 arch/arm/kernel/psci_cpuidle.c

-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1179761 — [PATCH v2 2/2] arm: kernel: implement cpuidle_ops with psci backend

FromJisheng Zhang <jszhang@marvell.com>
Date2015-07-08 15:00 +0200
Subject[PATCH v2 2/2] arm: kernel: implement cpuidle_ops with psci backend
Message-ID<pJX7d-2OK-39@gated-at.bofh.it>
In reply to#1179756
This patch implements cpuidle_ops using psci. After this patch, we can
use cpuidle-arm.c with psci backend for both arm and arm64.

Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
 arch/arm/kernel/Makefile       |  1 +
 arch/arm/kernel/psci_cpuidle.c | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)
 create mode 100644 arch/arm/kernel/psci_cpuidle.c

diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index 3b995f5..96383d8 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -91,6 +91,7 @@ obj-$(CONFIG_ARM_VIRT_EXT)	+= hyp-stub.o
 ifeq ($(CONFIG_ARM_PSCI),y)
 obj-y				+= psci-call.o
 obj-$(CONFIG_SMP)		+= psci_smp.o
+obj-$(CONFIG_CPU_IDLE)		+= psci_cpuidle.o
 endif
 
 extra-y := $(head-y) vmlinux.lds
diff --git a/arch/arm/kernel/psci_cpuidle.c b/arch/arm/kernel/psci_cpuidle.c
new file mode 100644
index 0000000..ae85d97
--- /dev/null
+++ b/arch/arm/kernel/psci_cpuidle.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2015 Marvell Technology Group Ltd.
+ * Author: Jisheng Zhang <jszhang@marvell.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/cpuidle.h>
+#include <linux/psci.h>
+
+#include <asm/cpuidle.h>
+
+static int psci_cpuidle_suspend(int cpu, unsigned long arg)
+{
+	return cpu_psci_cpu_suspend(arg);
+}
+
+static int psci_cpuidle_init(struct device_node *node, int cpu)
+{
+	return cpu_psci_cpu_init_idle(cpu);
+}
+
+static struct cpuidle_ops psci_cpuidle_ops __initdata = {
+	.suspend = psci_cpuidle_suspend,
+	.init = psci_cpuidle_init,
+};
+CPUIDLE_METHOD_OF_DECLARE(psci_cpuidle, "psci", &psci_cpuidle_ops);
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web