* [PATCH 6/9] soc: fsl: fix the compilation issue
From: Yinbo Zhu @ 2018-05-11 3:35 UTC (permalink / raw)
To: yinbo.zhu, Rob Herring, Mark Rutland, Catalin Marinas ),
Will Deacon ), Lorenzo Pieralisi ), Li Yang
Cc: xiaobo.xie, ran.wang_1, Daniel Lezcano, Thomas Gleixner,
Shawn Guo, Madalin Bucur, Hou Zhiqiang, Changming Huang,
Minghuan Lian, Zhao Qiang, Fabio Estevam, jiaheng . fan, Po Liu,
Nipun Gupta, Horia Geantă, Priyanka Jain, Sumit Garg, costi,
Bogdan Purcareata, Meng Yi, Wang Dongsheng,
open list:CLOCKSOURCE, CLOCKEVENT DRIVERS,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
linux-arm-kernel, open list:FREESCALE SOC DRIVERS, Tang Yuantian,
ying.zhang22455
In-Reply-To: <20180511033530.7931-1-yinbo.zhu@nxp.com>
From: Zhang Ying-22455 <ying.zhang22455@nxp.com>
Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
---
drivers/soc/fsl/layerscape/ftm_alarm.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/soc/fsl/layerscape/ftm_alarm.c b/drivers/soc/fsl/layerscape/ftm_alarm.c
index 811dcfa..c22ef49 100644
--- a/drivers/soc/fsl/layerscape/ftm_alarm.c
+++ b/drivers/soc/fsl/layerscape/ftm_alarm.c
@@ -19,6 +19,7 @@
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/libata.h>
+#include <linux/module.h>
#define FTM_SC 0x00
#define FTM_SC_CLK_SHIFT 3
--
1.7.1
^ permalink raw reply related
* [PATCH 5/9] drivers: firmware: psci: use psci v0.2 to implement sleep
From: Yinbo Zhu @ 2018-05-11 3:35 UTC (permalink / raw)
To: yinbo.zhu, Rob Herring, Mark Rutland, Catalin Marinas ),
Will Deacon ), Lorenzo Pieralisi ), Li Yang
Cc: xiaobo.xie, ran.wang_1, Daniel Lezcano, Thomas Gleixner,
Shawn Guo, Madalin Bucur, Hou Zhiqiang, Changming Huang,
Minghuan Lian, Zhao Qiang, Fabio Estevam, jiaheng . fan, Po Liu,
Nipun Gupta, Horia Geantă, Priyanka Jain, Sumit Garg, costi,
Bogdan Purcareata, Meng Yi, Wang Dongsheng,
open list:CLOCKSOURCE, CLOCKEVENT DRIVERS,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
linux-arm-kernel, open list:FREESCALE SOC DRIVERS, Tang Yuantian,
ying.zhang22455, Yuantian Tang
In-Reply-To: <20180511033530.7931-1-yinbo.zhu@nxp.com>
From: Yuantian Tang <andy.tang@nxp.com>
Technically psci v0.2 can not support system sleep. Unfortunately
our PPA only supports psci v0.2. So workaround this by changing
psci v1.0 to v0.2 call to implement system sleep.
Signed-off-by: Tang Yuantian <andy.tang@nxp.com>
Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
---
drivers/firmware/psci.c | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index c80ec1d..0bd795f 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -437,8 +437,18 @@ int psci_cpu_suspend_enter(unsigned long index)
static int psci_system_suspend(unsigned long unused)
{
- return invoke_psci_fn(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND),
- __pa_symbol(cpu_resume), 0, 0);
+ u32 state;
+ u32 ver = psci_get_version();
+
+ if (PSCI_VERSION_MAJOR(ver) >= 1) {
+ return invoke_psci_fn(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND),
+ virt_to_phys(cpu_resume), 0, 0);
+ } else {
+ state = (2 << PSCI_0_2_POWER_STATE_AFFL_SHIFT) |
+ (1 << PSCI_0_2_POWER_STATE_TYPE_SHIFT);
+
+ return psci_cpu_suspend(state, virt_to_phys(cpu_resume));
+ }
}
static int psci_system_suspend_enter(suspend_state_t state)
@@ -562,6 +572,8 @@ static void __init psci_0_2_set_functions(void)
arm_pm_restart = psci_sys_reset;
pm_power_off = psci_sys_poweroff;
+
+ suspend_set_ops(&psci_suspend_ops);
}
/*
--
1.7.1
^ permalink raw reply related
* [PATCH 4/9] arm64: dts: ls208xa: Add the identify of the platform to support to set rcpm bit
From: Yinbo Zhu @ 2018-05-11 3:35 UTC (permalink / raw)
To: yinbo.zhu, Rob Herring, Mark Rutland, Catalin Marinas ),
Will Deacon ), Lorenzo Pieralisi ), Li Yang
Cc: xiaobo.xie, ran.wang_1, Daniel Lezcano, Thomas Gleixner,
Shawn Guo, Madalin Bucur, Hou Zhiqiang, Changming Huang,
Minghuan Lian, Zhao Qiang, Fabio Estevam, jiaheng . fan, Po Liu,
Nipun Gupta, Horia Geantă, Priyanka Jain, Sumit Garg, costi,
Bogdan Purcareata, Meng Yi, Wang Dongsheng,
open list:CLOCKSOURCE, CLOCKEVENT DRIVERS,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
linux-arm-kernel, open list:FREESCALE SOC DRIVERS, Tang Yuantian,
ying.zhang22455
In-Reply-To: <20180511033530.7931-1-yinbo.zhu@nxp.com>
From: Zhang Ying-22455 <ying.zhang22455@nxp.com>
Add the identify of the platform to support set the rcpm with
big-endian or little-endian.
Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
---
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
index fec61af..973e646 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
@@ -896,9 +896,11 @@
};
ftm0: ftm0@2800000 {
- compatible = "fsl,ftm-alarm";
- reg = <0x0 0x2800000 0x0 0x10000>;
+ compatible = "fsl,ls208xa-ftm";
+ reg = <0x0 0x2800000 0x0 0x10000>,
+ <0x0 0x1e34050 0x0 0x4>;
interrupts = <0 44 4>;
+ reg-names = "ftm", "FlexTimer1";
};
};
--
1.7.1
^ permalink raw reply related
* [PATCH 3/9] soc: fsl: set rcpm bit for FTM
From: Yinbo Zhu @ 2018-05-11 3:35 UTC (permalink / raw)
To: yinbo.zhu, Rob Herring, Mark Rutland, Catalin Marinas ),
Will Deacon ), Lorenzo Pieralisi ), Li Yang
Cc: xiaobo.xie, ran.wang_1, Daniel Lezcano, Thomas Gleixner,
Shawn Guo, Madalin Bucur, Hou Zhiqiang, Changming Huang,
Minghuan Lian, Zhao Qiang, Fabio Estevam, jiaheng . fan, Po Liu,
Nipun Gupta, Horia Geantă, Priyanka Jain, Sumit Garg, costi,
Bogdan Purcareata, Meng Yi, Wang Dongsheng,
open list:CLOCKSOURCE, CLOCKEVENT DRIVERS,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
linux-arm-kernel, open list:FREESCALE SOC DRIVERS, Tang Yuantian,
ying.zhang22455
In-Reply-To: <20180511033530.7931-1-yinbo.zhu@nxp.com>
From: Zhang Ying-22455 <ying.zhang22455@nxp.com>
Set RCPM for FTM when using FTM as wakeup source. Because the RCPM
module of each platform has different big-end and little-end mode,
there need to set RCPM depending on the platform.
Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
---
.../devicetree/bindings/timer/fsl,ftm-timer.txt | 7 ++
drivers/soc/fsl/layerscape/ftm_alarm.c | 92 ++++++++++++++++++-
2 files changed, 94 insertions(+), 5 deletions(-)
diff --git a/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt b/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt
index aa8c402..15ead58 100644
--- a/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt
+++ b/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt
@@ -3,6 +3,13 @@ Freescale FlexTimer Module (FTM) Timer
Required properties:
- compatible : should be "fsl,ftm-timer"
+ Possible compatibles for ARM:
+ "fsl,ls1012a-ftm"
+ "fsl,ls1021a-ftm"
+ "fsl,ls1043a-ftm"
+ "fsl,ls1046a-ftm"
+ "fsl,ls1088a-ftm"
+ "fsl,ls208xa-ftm"
- reg : Specifies base physical address and size of the register sets for the
clock event device and clock source device.
- interrupts : Should be the clock event device interrupt.
diff --git a/drivers/soc/fsl/layerscape/ftm_alarm.c b/drivers/soc/fsl/layerscape/ftm_alarm.c
index 6f9882f..811dcfa 100644
--- a/drivers/soc/fsl/layerscape/ftm_alarm.c
+++ b/drivers/soc/fsl/layerscape/ftm_alarm.c
@@ -16,6 +16,9 @@
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/libata.h>
#define FTM_SC 0x00
#define FTM_SC_CLK_SHIFT 3
@@ -40,6 +43,59 @@
static u32 alarm_freq;
static bool big_endian;
+enum pmu_endian_type {
+ BIG_ENDIAN,
+ LITTLE_ENDIAN,
+};
+
+struct rcpm_cfg {
+ enum pmu_endian_type big_endian; /* Big/Little endian of PMU module */
+
+ /* FlexTimer1 is not powerdown during device LPM20 */
+ u32 flextimer_set_bit;
+};
+
+static struct rcpm_cfg ls1012a_rcpm_cfg = {
+ .big_endian = BIG_ENDIAN,
+ .flextimer_set_bit = 0x20000,
+};
+
+static struct rcpm_cfg ls1021a_rcpm_cfg = {
+ .big_endian = BIG_ENDIAN,
+ .flextimer_set_bit = 0x20000,
+};
+
+static struct rcpm_cfg ls1043a_rcpm_cfg = {
+ .big_endian = BIG_ENDIAN,
+ .flextimer_set_bit = 0x20000,
+};
+
+static struct rcpm_cfg ls1046a_rcpm_cfg = {
+ .big_endian = BIG_ENDIAN,
+ .flextimer_set_bit = 0x20000,
+};
+
+static struct rcpm_cfg ls1088a_rcpm_cfg = {
+ .big_endian = LITTLE_ENDIAN,
+ .flextimer_set_bit = 0x4000,
+};
+
+static struct rcpm_cfg ls208xa_rcpm_cfg = {
+ .big_endian = LITTLE_ENDIAN,
+ .flextimer_set_bit = 0x4000,
+};
+
+static const struct of_device_id ippdexpcr_of_match[] = {
+ { .compatible = "fsl,ls1012a-ftm", .data = &ls1012a_rcpm_cfg},
+ { .compatible = "fsl,ls1021a-ftm", .data = &ls1021a_rcpm_cfg},
+ { .compatible = "fsl,ls1043a-ftm", .data = &ls1043a_rcpm_cfg},
+ { .compatible = "fsl,ls1046a-ftm", .data = &ls1046a_rcpm_cfg},
+ { .compatible = "fsl,ls1088a-ftm", .data = &ls1088a_rcpm_cfg},
+ { .compatible = "fsl,ls208xa-ftm", .data = &ls208xa_rcpm_cfg},
+ {},
+};
+MODULE_DEVICE_TABLE(of, ippdexpcr_of_match);
+
static inline u32 ftm_readl(void __iomem *addr)
{
if (big_endian)
@@ -214,7 +270,10 @@ static int ftm_alarm_probe(struct platform_device *pdev)
struct resource *r;
int irq;
int ret;
- u32 ippdexpcr;
+ struct rcpm_cfg *rcpm_cfg;
+ u32 ippdexpcr, flextimer;
+ const struct of_device_id *of_id;
+ enum pmu_endian_type endian;
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!r)
@@ -224,14 +283,32 @@ static int ftm_alarm_probe(struct platform_device *pdev)
if (IS_ERR(ftm1_base))
return PTR_ERR(ftm1_base);
+ of_id = of_match_node(ippdexpcr_of_match, np);
+ if (!of_id)
+ return -ENODEV;
+
+ rcpm_cfg = devm_kzalloc(&pdev->dev, sizeof(*rcpm_cfg), GFP_KERNEL);
+ if (!rcpm_cfg)
+ return -ENOMEM;
+
+ rcpm_cfg = (struct rcpm_cfg *)of_id->data;
+ endian = rcpm_cfg->big_endian;
+ flextimer = rcpm_cfg->flextimer_set_bit;
+
r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "FlexTimer1");
if (r) {
rcpm_ftm_addr = devm_ioremap_resource(&pdev->dev, r);
if (IS_ERR(rcpm_ftm_addr))
return PTR_ERR(rcpm_ftm_addr);
- ippdexpcr = ioread32be(rcpm_ftm_addr);
- ippdexpcr |= 0x20000;
- iowrite32be(ippdexpcr, rcpm_ftm_addr);
+ if (endian == BIG_ENDIAN)
+ ippdexpcr = ioread32be(rcpm_ftm_addr);
+ else
+ ippdexpcr = ioread32(rcpm_ftm_addr);
+ ippdexpcr |= flextimer;
+ if (endian == BIG_ENDIAN)
+ iowrite32be(ippdexpcr, rcpm_ftm_addr);
+ else
+ iowrite32(ippdexpcr, rcpm_ftm_addr);
}
irq = irq_of_parse_and_map(np, 0);
@@ -265,7 +342,12 @@ static int ftm_alarm_probe(struct platform_device *pdev)
}
static const struct of_device_id ftm_alarm_match[] = {
- { .compatible = "fsl,ftm-alarm", },
+ { .compatible = "fsl,ls1012a-ftm", },
+ { .compatible = "fsl,ls1021a-ftm", },
+ { .compatible = "fsl,ls1043a-ftm", },
+ { .compatible = "fsl,ls1046a-ftm", },
+ { .compatible = "fsl,ls1088a-ftm", },
+ { .compatible = "fsl,ls208xa-ftm", },
{ .compatible = "fsl,ftm-timer", },
{ },
};
--
1.7.1
^ permalink raw reply related
* [PATCH 2/9] armv8: pm: Fix issue of rcpm driver wrongly program other IP control bits
From: Yinbo Zhu @ 2018-05-11 3:35 UTC (permalink / raw)
To: yinbo.zhu, Rob Herring, Mark Rutland, Catalin Marinas ),
Will Deacon ), Lorenzo Pieralisi ), Li Yang
Cc: xiaobo.xie, ran.wang_1, Daniel Lezcano, Thomas Gleixner,
Shawn Guo, Madalin Bucur, Hou Zhiqiang, Changming Huang,
Minghuan Lian, Zhao Qiang, Fabio Estevam, jiaheng . fan, Po Liu,
Nipun Gupta, Horia Geantă, Priyanka Jain, Sumit Garg, costi,
Bogdan Purcareata, Meng Yi, Wang Dongsheng,
open list:CLOCKSOURCE, CLOCKEVENT DRIVERS,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
linux-arm-kernel, open list:FREESCALE SOC DRIVERS, Tang Yuantian,
ying.zhang22455
In-Reply-To: <20180511033530.7931-1-yinbo.zhu@nxp.com>
From: Ran Wang <ran.wang_1@nxp.com>
When rcpm driver get target register data from DTS property 'fsl,
rcpm-wakeup' (second value), it directly write that data to register
RCPM_IPPDEXPCRx rather than 'OR' the value read from it before. This
operation will over-write those non-related IP control bit which
might have been programmed, should be prevented.
Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
---
drivers/soc/fsl/rcpm.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/soc/fsl/rcpm.c b/drivers/soc/fsl/rcpm.c
index ff0477b..39eabfb 100644
--- a/drivers/soc/fsl/rcpm.c
+++ b/drivers/soc/fsl/rcpm.c
@@ -75,6 +75,7 @@ static void rcpm_wakeup_fixup(struct device *dev, void *data)
static int rcpm_suspend_prepare(void)
{
int i;
+ u32 val;
WARN_ON(!rcpm);
@@ -84,9 +85,12 @@ static int rcpm_suspend_prepare(void)
dpm_for_each_dev(NULL, rcpm_wakeup_fixup);
for (i = 0; i < rcpm->ipp_num; i++) {
- rcpm_reg_write(rcpm->ippdexpcr_offset + 4 * i,
- rcpm->ippdexpcr[i]);
- pr_debug("ippdexpcr%d = 0x%x\n", i, rcpm->ippdexpcr[i]);
+ if (rcpm->ippdexpcr[i]) {
+ val = rcpm_reg_read(rcpm->ippdexpcr_offset + 4 * i);
+ rcpm_reg_write(rcpm->ippdexpcr_offset + 4 * i,
+ val | rcpm->ippdexpcr[i]);
+ pr_debug("ippdexpcr%d = 0x%x\n", i, rcpm->ippdexpcr[i]);
+ }
}
return 0;
--
1.7.1
^ permalink raw reply related
* [PATCH 1/9] armv8: pm: add rcpm module support
From: Yinbo Zhu @ 2018-05-11 3:35 UTC (permalink / raw)
To: yinbo.zhu, Rob Herring, Mark Rutland, Catalin Marinas ),
Will Deacon ), Lorenzo Pieralisi ), Li Yang
Cc: xiaobo.xie, ran.wang_1, Daniel Lezcano, Thomas Gleixner,
Shawn Guo, Madalin Bucur, Hou Zhiqiang, Changming Huang,
Minghuan Lian, Zhao Qiang, Fabio Estevam, jiaheng . fan, Po Liu,
Nipun Gupta, Horia Geantă, Priyanka Jain, Sumit Garg, costi,
Bogdan Purcareata, Meng Yi, Wang Dongsheng,
open list:CLOCKSOURCE, CLOCKEVENT DRIVERS,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
linux-arm-kernel, open list:FREESCALE SOC DRIVERS, Tang Yuantian,
ying.zhang22455, Yuantian Tang
From: Yuantian Tang <andy.tang@nxp.com>
The Run Control and Power Management (RCPM) module communicates
with embedded cores, coherency modules, and other device platform
module to provide run control and power management functionality
Signed-off-by: Tang Yuantian <andy.tang@nxp.com>
Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
---
drivers/soc/fsl/Makefile | 1 +
drivers/soc/fsl/rcpm.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 154 insertions(+), 0 deletions(-)
create mode 100644 drivers/soc/fsl/rcpm.c
diff --git a/drivers/soc/fsl/Makefile b/drivers/soc/fsl/Makefile
index 629dab8..68fcd71 100644
--- a/drivers/soc/fsl/Makefile
+++ b/drivers/soc/fsl/Makefile
@@ -5,6 +5,7 @@
obj-$(CONFIG_FSL_DPAA) += qbman/
obj-$(CONFIG_QUICC_ENGINE) += qe/
obj-$(CONFIG_CPM) += qe/
+obj-$(CONFIG_SUSPEND) += rcpm.o
obj-$(CONFIG_FSL_GUTS) += guts.o
obj-$(CONFIG_FSL_LS2_CONSOLE) += ls2-console/
obj-$(CONFIG_LS_SOC_DRIVERS) += layerscape/
diff --git a/drivers/soc/fsl/rcpm.c b/drivers/soc/fsl/rcpm.c
new file mode 100644
index 0000000..ff0477b
--- /dev/null
+++ b/drivers/soc/fsl/rcpm.c
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2016 NXP
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+#define pr_fmt(fmt) "RCPM: %s: " fmt, __func__
+
+#include <linux/kernel.h>
+#include <linux/io.h>
+#include <linux/of_platform.h>
+#include <linux/of_address.h>
+#include <linux/suspend.h>
+
+/* RCPM register offset */
+#define RCPM_IPPDEXPCR0 0x140
+
+#define RCPM_WAKEUP_CELL_SIZE 2
+
+struct rcpm_config {
+ int ipp_num;
+ int ippdexpcr_offset;
+ u32 ippdexpcr[2];
+ void *rcpm_reg_base;
+};
+
+static struct rcpm_config *rcpm;
+
+static inline void rcpm_reg_write(u32 offset, u32 value)
+{
+ iowrite32be(value, rcpm->rcpm_reg_base + offset);
+}
+
+static inline u32 rcpm_reg_read(u32 offset)
+{
+ return ioread32be(rcpm->rcpm_reg_base + offset);
+}
+
+static void rcpm_wakeup_fixup(struct device *dev, void *data)
+{
+ struct device_node *node = dev ? dev->of_node : NULL;
+ u32 value[RCPM_WAKEUP_CELL_SIZE];
+ int ret, i;
+
+ if (!dev || !node || !device_may_wakeup(dev))
+ return;
+
+ /*
+ * Get the values in the "rcpm-wakeup" property.
+ * Three values are:
+ * The first is a pointer to the RCPM node.
+ * The second is the value of the ippdexpcr0 register.
+ * The third is the value of the ippdexpcr1 register.
+ */
+ ret = of_property_read_u32_array(node, "fsl,rcpm-wakeup",
+ value, RCPM_WAKEUP_CELL_SIZE);
+ if (ret)
+ return;
+
+ pr_debug("wakeup source: the device %s\n", node->full_name);
+
+ for (i = 0; i < rcpm->ipp_num; i++)
+ rcpm->ippdexpcr[i] |= value[i + 1];
+}
+
+static int rcpm_suspend_prepare(void)
+{
+ int i;
+
+ WARN_ON(!rcpm);
+
+ for (i = 0; i < rcpm->ipp_num; i++)
+ rcpm->ippdexpcr[i] = 0;
+
+ dpm_for_each_dev(NULL, rcpm_wakeup_fixup);
+
+ for (i = 0; i < rcpm->ipp_num; i++) {
+ rcpm_reg_write(rcpm->ippdexpcr_offset + 4 * i,
+ rcpm->ippdexpcr[i]);
+ pr_debug("ippdexpcr%d = 0x%x\n", i, rcpm->ippdexpcr[i]);
+ }
+
+ return 0;
+}
+
+static int rcpm_suspend_notifier_call(struct notifier_block *bl,
+ unsigned long state,
+ void *unused)
+{
+ switch (state) {
+ case PM_SUSPEND_PREPARE:
+ rcpm_suspend_prepare();
+ break;
+ }
+
+ return NOTIFY_DONE;
+}
+
+static struct rcpm_config rcpm_default_config = {
+ .ipp_num = 1,
+ .ippdexpcr_offset = RCPM_IPPDEXPCR0,
+};
+
+static const struct of_device_id rcpm_matches[] = {
+ {
+ .compatible = "fsl,qoriq-rcpm-2.1",
+ .data = &rcpm_default_config,
+ },
+ {}
+};
+
+static struct notifier_block rcpm_suspend_notifier = {
+ .notifier_call = rcpm_suspend_notifier_call,
+};
+
+static int __init layerscape_rcpm_init(void)
+{
+ const struct of_device_id *match;
+ struct device_node *np;
+
+ np = of_find_matching_node_and_match(NULL, rcpm_matches, &match);
+ if (!np) {
+ pr_err("Can't find the RCPM node.\n");
+ return -EINVAL;
+ }
+
+ if (match->data)
+ rcpm = (struct rcpm_config *)match->data;
+ else
+ return -EINVAL;
+
+ rcpm->rcpm_reg_base = of_iomap(np, 0);
+ of_node_put(np);
+ if (!rcpm->rcpm_reg_base)
+ return -ENOMEM;
+
+ register_pm_notifier(&rcpm_suspend_notifier);
+
+ pr_info("The RCPM driver initialized.\n");
+
+ return 0;
+}
+
+subsys_initcall(layerscape_rcpm_init);
--
1.7.1
^ permalink raw reply related
* [PATCH] powerpc: Fix emulate_step() on POWER6
From: Michael Neuling @ 2018-05-11 1:35 UTC (permalink / raw)
To: mpe; +Cc: linuxppc-dev, mikey, Ravi Bangoria
emulate_step() will fail on POWER6 currently with:
emulate_step_test: lfdx : PASS
emulate_step_test: stfdx : PASS
emulate_step_test: lvx : PASS
emulate_step_test: stvx : PASS
Oops: Exception in kernel mode, sig: 4 [#1]
BE SMP NR_CPUS=2048 NUMA pSeries
Modules linked in:
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.17.0-rc4-gcc5x-g036db8b #1
NIP: c000000000095c24 LR: c000000000094bdc CTR: c00000000008f4a0
REGS: c0000000494c34f0 TRAP: 0700 Not tainted (4.17.0-rc4-gcc5x-g036db8b)
MSR: 8000000000089032 <SF,EE,ME,IR,DR,RI> CR: 48004224 XER: 20000009
CFAR: c000000000094bd0 SOFTE: 0
GPR00: c000000000094bdc c0000000494c3770 c000000001238400 0000000000000027
GPR04: c0000000494c3870 0000000000000008 8000000000009032 8000000000809032
GPR08: 0000000000000070 800000000280b032 c0000000494c0000 0000000000000000
GPR12: 0000000044000428 c000000007fff300 c00000000000e1c0 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20: 0000000000000000 bfffffffffffffff c0000000494c3870 0000000000000027
GPR24: c0000000494c3860 0000000000000000 c000000000da0538 c0000000494c3b90
GPR28: 0000000000000000 c0000000494c3970 c0000000494c3a20 0000000000000008
NIP [c000000000095c24] .load_vsrn+0x28/0x54
LR [c000000000094bdc] .emulate_loadstore+0x167c/0x17b0
Call Trace:
[c0000000494c3770] [40fe240c7ae147ae] 0x40fe240c7ae147ae (unreliable)
[c0000000494c37f0] [c000000000094bdc] .emulate_loadstore+0x167c/0x17b0
[c0000000494c3900] [c000000000094f6c] .emulate_step+0x25c/0x5bc
[c0000000494c39b0] [c000000000ec90dc] .test_lxvd2x_stxvd2x+0x64/0x154
[c0000000494c3b90] [c000000000ec9204] .test_emulate_step+0x38/0x4c
[c0000000494c3c00] [c00000000000de2c] .do_one_initcall+0x5c/0x2c0
[c0000000494c3cd0] [c000000000eb4bf8] .kernel_init_freeable+0x314/0x4cc
[c0000000494c3db0] [c00000000000e1e4] .kernel_init+0x24/0x160
[c0000000494c3e30] [c00000000000bc24] .ret_from_kernel_thread+0x58/0xb4
The below fixes this by gating the VSX tests on CPU_FTR_VSX.
Tested on POWER9 with VSX disabled and skips the test correctly. Not
tested on POWER6 but the fix is pretty simple.
Fixes: https://github.com/linuxppc/linux/issues/148
Signed-off-by: Michael Neuling <mikey@neuling.org>
---
arch/powerpc/lib/test_emulate_step.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/powerpc/lib/test_emulate_step.c b/arch/powerpc/lib/test_emulate_step.c
index 2534c14475..f2f2d6e728 100644
--- a/arch/powerpc/lib/test_emulate_step.c
+++ b/arch/powerpc/lib/test_emulate_step.c
@@ -371,6 +371,12 @@ static void __init test_lxvd2x_stxvd2x(void)
u32 cached_b[4];
int stepped = -1;
+ if (!cpu_has_feature(CPU_FTR_VSX)) {
+ show_result("lxvd2x", "SKIP (no VSX on this CPU)");
+ show_result("stxvd2x", "SKIP (no VSX on this CPU)");
+ return;
+ }
+
init_pt_regs(®s);
--
2.14.1
^ permalink raw reply related
* [PATCH 2/2] powerpc: hlwd-pic: Prevent interrupts from being handled by Starlet
From: Jonathan Neuschäfer @ 2018-05-10 21:59 UTC (permalink / raw)
To: linuxppc-dev
Cc: linux-kernel, Segher Boessenkool, Joel Stanley,
Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
Mathieu Malaterre, Jonathan Neuschäfer
In-Reply-To: <20180510215919.27808-1-j.neuschaefer@gmx.net>
The interrupt controller inside the Wii's Hollywood chip is connected to
two masters, the "Broadway" PowerPC and the "Starlet" ARM926, each with
their own interrupt status and mask registers.
When booting the Wii with mini[1], interrupts from the SD card
controller (IRQ 7) are handled by the ARM, because mini provides SD
access over IPC. Linux however can't currently use or disable this IPC
service, so both sides try to handle IRQ 7 without coordination.
Let's instead make sure that all interrupts that are unmasked on the PPC
side are masked on the ARM side; this will also make sure that Linux can
properly talk to the SD card controller (and potentially other devices).
If access to a device through IPC is desired in the future, interrupts
from that device should not be handled by Linux directly.
[1]: https://github.com/lewurm/mini
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
---
arch/powerpc/platforms/embedded6xx/hlwd-pic.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
index e3e3af73e9d8..8112b39879d6 100644
--- a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
+++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
@@ -35,6 +35,8 @@
*/
#define HW_BROADWAY_ICR 0x00
#define HW_BROADWAY_IMR 0x04
+#define HW_STARLET_ICR 0x08
+#define HW_STARLET_IMR 0x0c
/*
@@ -74,6 +76,9 @@ static void hlwd_pic_unmask(struct irq_data *d)
void __iomem *io_base = irq_data_get_irq_chip_data(d);
setbits32(io_base + HW_BROADWAY_IMR, 1 << irq);
+
+ /* Make sure the ARM (aka. Starlet) doesn't handle this interrupt. */
+ clrbits32(io_base + HW_STARLET_IMR, 1 << irq);
}
--
2.17.0
^ permalink raw reply related
* [PATCH 1/2] powerpc: flipper-pic: Don't match all IRQ domains
From: Jonathan Neuschäfer @ 2018-05-10 21:59 UTC (permalink / raw)
To: linuxppc-dev
Cc: linux-kernel, Segher Boessenkool, Joel Stanley,
Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
Mathieu Malaterre, Jonathan Neuschäfer
In-Reply-To: <20180510215919.27808-1-j.neuschaefer@gmx.net>
On the Wii, there is a secondary IRQ controller (hlwd-pic), so
flipper-pic's match operation should not be hardcoded to return 1.
In fact, the default matching logic is sufficient, and we can completely
omit flipper_pic_match.
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
---
Note: This shouldn't break Linux on the GameCube, but I've only tested
on the Wii. Some confirmation that I didn't break interrupt handling on
the GC would be nice. (If someone still runs mainline on the GC.)
---
arch/powerpc/platforms/embedded6xx/flipper-pic.c | 8 --------
1 file changed, 8 deletions(-)
diff --git a/arch/powerpc/platforms/embedded6xx/flipper-pic.c b/arch/powerpc/platforms/embedded6xx/flipper-pic.c
index 7206f3f573d4..db0be007fd06 100644
--- a/arch/powerpc/platforms/embedded6xx/flipper-pic.c
+++ b/arch/powerpc/platforms/embedded6xx/flipper-pic.c
@@ -108,16 +108,8 @@ static int flipper_pic_map(struct irq_domain *h, unsigned int virq,
return 0;
}
-static int flipper_pic_match(struct irq_domain *h, struct device_node *np,
- enum irq_domain_bus_token bus_token)
-{
- return 1;
-}
-
-
static const struct irq_domain_ops flipper_irq_domain_ops = {
.map = flipper_pic_map,
- .match = flipper_pic_match,
};
/*
--
2.17.0
^ permalink raw reply related
* [PATCH 0/2] powerpc: Wii IRQ fixes
From: Jonathan Neuschäfer @ 2018-05-10 21:59 UTC (permalink / raw)
To: linuxppc-dev
Cc: linux-kernel, Segher Boessenkool, Joel Stanley,
Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
Mathieu Malaterre, Jonathan Neuschäfer
This series makes it possible to use the SD card on the Wii. The WLAN
now also works on the SDIO level, but fails to connect to a network for
some reason.
Patch 1 seems quite obvious, although I don't know why the code was
broken in this particular way.
Patch 2 might not be the right solution for the problem at hand, but it
works and should only cause problems when both processors in the system
(PPC and ARM) try to use the same interrupt, if at all.
Jonathan Neuschäfer (2):
powerpc: flipper-pic: Don't match all IRQ domains
powerpc: hlwd-pic: Prevent interrupts from being handled by Starlet
arch/powerpc/platforms/embedded6xx/flipper-pic.c | 8 --------
arch/powerpc/platforms/embedded6xx/hlwd-pic.c | 5 +++++
2 files changed, 5 insertions(+), 8 deletions(-)
--
2.17.0
^ permalink raw reply
* Re: [PATCH 9/8] powerpc/pkeys: Drop private VM_PKEY definitions
From: Ram Pai @ 2018-05-10 20:24 UTC (permalink / raw)
To: Michael Ellerman
Cc: mingo, linuxppc-dev, linux-mm, x86, linux-kernel, dave.hansen
In-Reply-To: <20180510135422.6585-1-mpe@ellerman.id.au>
Agree. Was going to send that the moment the other patches
landed upstream. Glad I dont have to do it :-)
Reviewed-by: Ram Pai <linuxram@us.ibm.com>
On Thu, May 10, 2018 at 11:54:22PM +1000, Michael Ellerman wrote:
> Now that we've updated the generic headers to support 5 PKEY bits for
> powerpc we don't need our own #defines in arch code.
>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
> ---
> arch/powerpc/include/asm/pkeys.h | 15 ---------------
> 1 file changed, 15 deletions(-)
>
> One additional patch to finish cleaning things up.
>
> I've added this to my branch.
>
> cheers
>
> diff --git a/arch/powerpc/include/asm/pkeys.h b/arch/powerpc/include/asm/pkeys.h
> index 18ef59a9886d..5ba80cffb505 100644
> --- a/arch/powerpc/include/asm/pkeys.h
> +++ b/arch/powerpc/include/asm/pkeys.h
> @@ -15,21 +15,6 @@ DECLARE_STATIC_KEY_TRUE(pkey_disabled);
> extern int pkeys_total; /* total pkeys as per device tree */
> extern u32 initial_allocation_mask; /* bits set for reserved keys */
>
> -/*
> - * Define these here temporarily so we're not dependent on patching linux/mm.h.
> - * Once it's updated we can drop these.
> - */
> -#ifndef VM_PKEY_BIT0
> -# define VM_PKEY_SHIFT VM_HIGH_ARCH_BIT_0
> -# define VM_PKEY_BIT0 VM_HIGH_ARCH_0
> -# define VM_PKEY_BIT1 VM_HIGH_ARCH_1
> -# define VM_PKEY_BIT2 VM_HIGH_ARCH_2
> -# define VM_PKEY_BIT3 VM_HIGH_ARCH_3
> -# define VM_PKEY_BIT4 VM_HIGH_ARCH_4
> -#elif !defined(VM_PKEY_BIT4)
> -# define VM_PKEY_BIT4 VM_HIGH_ARCH_4
> -#endif
> -
> #define ARCH_VM_PKEY_FLAGS (VM_PKEY_BIT0 | VM_PKEY_BIT1 | VM_PKEY_BIT2 | \
> VM_PKEY_BIT3 | VM_PKEY_BIT4)
>
> --
> 2.14.1
--
Ram Pai
^ permalink raw reply
* [PATCH v2] powerpc: kvm: Change return type to vm_fault_t
From: Souptick Joarder @ 2018-05-10 18:27 UTC (permalink / raw)
To: paulus, benh, mpe, willy; +Cc: kvm-ppc, linuxppc-dev, linux-kernel
Use new return type vm_fault_t for fault handler
in struct vm_operations_struct. For now, this is
just documenting that the function returns a
VM_FAULT value rather than an errno. Once all
instances are converted, vm_fault_t will become
a distinct type.
commit 1c8f422059ae ("mm: change return type to
vm_fault_t")
Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
---
v2: Updated the change log
arch/powerpc/kvm/book3s_64_vio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_64_vio.c b/arch/powerpc/kvm/book3s_64_vio.c
index 4dffa61..346ac0d 100644
--- a/arch/powerpc/kvm/book3s_64_vio.c
+++ b/arch/powerpc/kvm/book3s_64_vio.c
@@ -237,7 +237,7 @@ static void release_spapr_tce_table(struct rcu_head *head)
kfree(stt);
}
-static int kvm_spapr_tce_fault(struct vm_fault *vmf)
+static vm_fault_t kvm_spapr_tce_fault(struct vm_fault *vmf)
{
struct kvmppc_spapr_tce_table *stt = vmf->vma->vm_file->private_data;
struct page *page;
--
1.9.1
^ permalink raw reply related
* [PATCH] powerpc/powernv: process all OPAL event interrupts with kopald
From: Nicholas Piggin @ 2018-05-10 17:20 UTC (permalink / raw)
To: linuxppc-dev; +Cc: Nicholas Piggin, Alistair Popple
Using irq_work for processing OPAL event interrupts is not necessary.
irq_work is typically used to schedule work from NMI context, a
softirq may be more appropriate. However OPAL events are not
particularly performance or latency critical, so they can all be
invoked by kopald.
This patch removes the irq_work queueing, and instead wakes up
kopald when there is an event to be processed. kopald processes
interrupts individually, enabling irqs and calling cond_resched
between each one to minimise latencies.
Event handlers themselves should still use threaded handlers,
workqueues, etc. as necessary to avoid high interrupts-off latencies
within any single interrupt.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/powerpc/platforms/powernv/opal-irqchip.c | 87 +++++++++----------
arch/powerpc/platforms/powernv/opal.c | 23 +++--
arch/powerpc/platforms/powernv/powernv.h | 3 +-
3 files changed, 52 insertions(+), 61 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/opal-irqchip.c b/arch/powerpc/platforms/powernv/opal-irqchip.c
index 9d1b8c0aaf93..354fa53947be 100644
--- a/arch/powerpc/platforms/powernv/opal-irqchip.c
+++ b/arch/powerpc/platforms/powernv/opal-irqchip.c
@@ -22,7 +22,6 @@
#include <linux/kthread.h>
#include <linux/delay.h>
#include <linux/slab.h>
-#include <linux/irq_work.h>
#include <asm/machdep.h>
#include <asm/opal.h>
@@ -38,37 +37,47 @@ struct opal_event_irqchip {
unsigned long mask;
};
static struct opal_event_irqchip opal_event_irqchip;
-
+static u64 last_outstanding_events;
static unsigned int opal_irq_count;
static unsigned int *opal_irqs;
-static void opal_handle_irq_work(struct irq_work *work);
-static u64 last_outstanding_events;
-static struct irq_work opal_event_irq_work = {
- .func = opal_handle_irq_work,
-};
-
-void opal_handle_events(uint64_t events)
+void opal_handle_events(void)
{
- int virq, hwirq = 0;
- u64 mask = opal_event_irqchip.mask;
+ __be64 events = 0;
+ u64 e;
+
+ e = READ_ONCE(last_outstanding_events) & opal_event_irqchip.mask;
+again:
+ while (e) {
+ int virq, hwirq;
+
+ hwirq = fls64(e) - 1;
+ e &= ~BIT_ULL(hwirq);
+
+ local_irq_disable();
+ virq = irq_find_mapping(opal_event_irqchip.domain, hwirq);
+ if (virq) {
+ irq_enter();
+ generic_handle_irq(virq);
+ irq_exit();
+ }
+ local_irq_enable();
- if (!in_irq() && (events & mask)) {
- last_outstanding_events = events;
- irq_work_queue(&opal_event_irq_work);
- return;
+ cond_resched();
}
+ last_outstanding_events = 0;
+ if (opal_poll_events(&events) != OPAL_SUCCESS)
+ return;
+ e = be64_to_cpu(events) & opal_event_irqchip.mask;
+ if (e)
+ goto again;
+}
- while (events & mask) {
- hwirq = fls64(events) - 1;
- if (BIT_ULL(hwirq) & mask) {
- virq = irq_find_mapping(opal_event_irqchip.domain,
- hwirq);
- if (virq)
- generic_handle_irq(virq);
- }
- events &= ~BIT_ULL(hwirq);
- }
+bool opal_have_pending_events(void)
+{
+ if (last_outstanding_events & opal_event_irqchip.mask)
+ return true;
+ return false;
}
static void opal_event_mask(struct irq_data *d)
@@ -78,24 +87,9 @@ static void opal_event_mask(struct irq_data *d)
static void opal_event_unmask(struct irq_data *d)
{
- __be64 events;
-
set_bit(d->hwirq, &opal_event_irqchip.mask);
-
- opal_poll_events(&events);
- last_outstanding_events = be64_to_cpu(events);
-
- /*
- * We can't just handle the events now with opal_handle_events().
- * If we did we would deadlock when opal_event_unmask() is called from
- * handle_level_irq() with the irq descriptor lock held, because
- * calling opal_handle_events() would call generic_handle_irq() and
- * then handle_level_irq() which would try to take the descriptor lock
- * again. Instead queue the events for later.
- */
- if (last_outstanding_events & opal_event_irqchip.mask)
- /* Need to retrigger the interrupt */
- irq_work_queue(&opal_event_irq_work);
+ if (opal_have_pending_events())
+ opal_wake_poller();
}
static int opal_event_set_type(struct irq_data *d, unsigned int flow_type)
@@ -136,16 +130,13 @@ static irqreturn_t opal_interrupt(int irq, void *data)
__be64 events;
opal_handle_interrupt(virq_to_hw(irq), &events);
- opal_handle_events(be64_to_cpu(events));
+ last_outstanding_events = be64_to_cpu(events);
+ if (opal_have_pending_events())
+ opal_wake_poller();
return IRQ_HANDLED;
}
-static void opal_handle_irq_work(struct irq_work *work)
-{
- opal_handle_events(last_outstanding_events);
-}
-
static int opal_event_match(struct irq_domain *h, struct device_node *node,
enum irq_domain_bus_token bus_token)
{
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index 48fbb41af5d1..0d539c661748 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -540,21 +540,15 @@ int opal_hmi_exception_early(struct pt_regs *regs)
/* HMI exception handler called in virtual mode during check_irq_replay. */
int opal_handle_hmi_exception(struct pt_regs *regs)
{
- s64 rc;
- __be64 evt = 0;
-
/*
* Check if HMI event is available.
- * if Yes, then call opal_poll_events to pull opal messages and
- * process them.
+ * if Yes, then wake kopald to process them.
*/
if (!local_paca->hmi_event_available)
return 0;
local_paca->hmi_event_available = 0;
- rc = opal_poll_events(&evt);
- if (rc == OPAL_SUCCESS && evt)
- opal_handle_events(be64_to_cpu(evt));
+ opal_wake_poller();
return 1;
}
@@ -757,14 +751,19 @@ static void __init opal_imc_init_dev(void)
static int kopald(void *unused)
{
unsigned long timeout = msecs_to_jiffies(opal_heartbeat) + 1;
- __be64 events;
set_freezable();
do {
try_to_freeze();
- opal_poll_events(&events);
- opal_handle_events(be64_to_cpu(events));
- schedule_timeout_interruptible(timeout);
+
+ opal_handle_events();
+
+ set_current_state(TASK_INTERRUPTIBLE);
+ if (opal_have_pending_events())
+ __set_current_state(TASK_RUNNING);
+ else
+ schedule_timeout(timeout);
+
} while (!kthread_should_stop());
return 0;
diff --git a/arch/powerpc/platforms/powernv/powernv.h b/arch/powerpc/platforms/powernv/powernv.h
index 94f17ab1374b..fd4a1c5a6369 100644
--- a/arch/powerpc/platforms/powernv/powernv.h
+++ b/arch/powerpc/platforms/powernv/powernv.h
@@ -24,7 +24,8 @@ extern u32 pnv_get_supported_cpuidle_states(void);
extern void pnv_lpc_init(void);
-extern void opal_handle_events(uint64_t events);
+extern void opal_handle_events(void);
+extern bool opal_have_pending_events(void);
extern void opal_event_shutdown(void);
bool cpu_core_split_required(void);
--
2.17.0
^ permalink raw reply related
* Re: [PATCH] kvm: Change return type to vm_fault_t
From: Paolo Bonzini @ 2018-05-10 16:42 UTC (permalink / raw)
To: Souptick Joarder, jhogan, ralf, paulus, benh, mpe, borntraeger,
frankja, david, cohuck, schwidefsky, tglx, mingo,
christoffer.dall, marc.zyngier
Cc: linux-mips, linux-kernel, kvm-ppc, linuxppc-dev, linux-s390, kvm,
linux-arm-kernel, kvmarm, willy
In-Reply-To: <20180418191958.GA25806@jordon-HP-15-Notebook-PC>
On 18/04/2018 21:19, Souptick Joarder wrote:
> Use new return type vm_fault_t for fault handler. For
> now, this is just documenting that the function returns
> a VM_FAULT value rather than an errno. Once all instances
> are converted, vm_fault_t will become a distinct type.
>
> commit 1c8f422059ae ("mm: change return type to vm_fault_t")
>
> Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
> Reviewed-by: Matthew Wilcox <mawilcox@microsoft.com>
> ---
> arch/mips/kvm/mips.c | 2 +-
> arch/powerpc/kvm/powerpc.c | 2 +-
> arch/s390/kvm/kvm-s390.c | 2 +-
> arch/x86/kvm/x86.c | 2 +-
> include/linux/kvm_host.h | 2 +-
> virt/kvm/arm/arm.c | 2 +-
> virt/kvm/kvm_main.c | 2 +-
> 7 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c
> index 2549fdd..03e0e0f 100644
> --- a/arch/mips/kvm/mips.c
> +++ b/arch/mips/kvm/mips.c
> @@ -1076,7 +1076,7 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
> return -ENOIOCTLCMD;
> }
>
> -int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> +vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> {
> return VM_FAULT_SIGBUS;
> }
> diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
> index 403e642..3099dee 100644
> --- a/arch/powerpc/kvm/powerpc.c
> +++ b/arch/powerpc/kvm/powerpc.c
> @@ -1825,7 +1825,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
> return r;
> }
>
> -int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> +vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> {
> return VM_FAULT_SIGBUS;
> }
> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> index ba4c709..24af487 100644
> --- a/arch/s390/kvm/kvm-s390.c
> +++ b/arch/s390/kvm/kvm-s390.c
> @@ -3941,7 +3941,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
> return r;
> }
>
> -int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> +vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> {
> #ifdef CONFIG_KVM_S390_UCONTROL
> if ((vmf->pgoff == KVM_S390_SIE_PAGE_OFFSET)
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index c8a0b54..95d8102 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -3827,7 +3827,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
> return r;
> }
>
> -int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> +vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> {
> return VM_FAULT_SIGBUS;
> }
> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
> index ac0062b..8eeb062 100644
> --- a/include/linux/kvm_host.h
> +++ b/include/linux/kvm_host.h
> @@ -736,7 +736,7 @@ long kvm_arch_dev_ioctl(struct file *filp,
> unsigned int ioctl, unsigned long arg);
> long kvm_arch_vcpu_ioctl(struct file *filp,
> unsigned int ioctl, unsigned long arg);
> -int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf);
> +vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf);
>
> int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext);
>
> diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
> index 86941f6..6c8cc31 100644
> --- a/virt/kvm/arm/arm.c
> +++ b/virt/kvm/arm/arm.c
> @@ -163,7 +163,7 @@ int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
> return 0;
> }
>
> -int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> +vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
> {
> return VM_FAULT_SIGBUS;
> }
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index 4501e65..45eb54b 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -2341,7 +2341,7 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me, bool yield_to_kernel_mode)
> }
> EXPORT_SYMBOL_GPL(kvm_vcpu_on_spin);
>
> -static int kvm_vcpu_fault(struct vm_fault *vmf)
> +static vm_fault_t kvm_vcpu_fault(struct vm_fault *vmf)
> {
> struct kvm_vcpu *vcpu = vmf->vma->vm_file->private_data;
> struct page *page;
> --
> 1.9.1
>
Applied, thanks.
Paolo
^ permalink raw reply
* Re: [PATCH v10 06/25] mm: make pte_unmap_same compatible with SPF
From: vinayak menon @ 2018-05-10 16:15 UTC (permalink / raw)
To: Laurent Dufour
Cc: Andrew Morton, Michal Hocko, Peter Zijlstra, kirill, ak, dave,
jack, Matthew Wilcox, benh, mpe, paulus, Thomas Gleixner,
Ingo Molnar, hpa, Will Deacon, Sergey Senozhatsky,
Andrea Arcangeli, Alexei Starovoitov, kemi.wang,
sergey.senozhatsky.work, Daniel Jordan, David Rientjes,
Jerome Glisse, Ganesh Mahendran, linux-kernel, linux-mm, haren,
khandual, npiggin, bsingharora, Paul McKenney, Tim Chen,
linuxppc-dev, x86, Vinayak Menon
In-Reply-To: <1523975611-15978-7-git-send-email-ldufour@linux.vnet.ibm.com>
On Tue, Apr 17, 2018 at 8:03 PM, Laurent Dufour
<ldufour@linux.vnet.ibm.com> wrote:
> pte_unmap_same() is making the assumption that the page table are still
> around because the mmap_sem is held.
> This is no more the case when running a speculative page fault and
> additional check must be made to ensure that the final page table are still
> there.
>
> This is now done by calling pte_spinlock() to check for the VMA's
> consistency while locking for the page tables.
>
> This is requiring passing a vm_fault structure to pte_unmap_same() which is
> containing all the needed parameters.
>
> As pte_spinlock() may fail in the case of a speculative page fault, if the
> VMA has been touched in our back, pte_unmap_same() should now return 3
> cases :
> 1. pte are the same (0)
> 2. pte are different (VM_FAULT_PTNOTSAME)
> 3. a VMA's changes has been detected (VM_FAULT_RETRY)
>
> The case 2 is handled by the introduction of a new VM_FAULT flag named
> VM_FAULT_PTNOTSAME which is then trapped in cow_user_page().
> If VM_FAULT_RETRY is returned, it is passed up to the callers to retry the
> page fault while holding the mmap_sem.
>
> Acked-by: David Rientjes <rientjes@google.com>
> Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
> ---
> include/linux/mm.h | 1 +
> mm/memory.c | 39 ++++++++++++++++++++++++++++-----------
> 2 files changed, 29 insertions(+), 11 deletions(-)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 4d1aff80669c..714da99d77a3 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -1208,6 +1208,7 @@ static inline void clear_page_pfmemalloc(struct page *page)
> #define VM_FAULT_NEEDDSYNC 0x2000 /* ->fault did not modify page tables
> * and needs fsync() to complete (for
> * synchronous page faults in DAX) */
> +#define VM_FAULT_PTNOTSAME 0x4000 /* Page table entries have changed */
This has to be added to VM_FAULT_RESULT_TRACE ?
^ permalink raw reply
* [PATCH] macintosh/windfarm: fix spelling mistake: "ttarged" -> "ttarget"
From: Colin King @ 2018-05-10 15:54 UTC (permalink / raw)
To: Benjamin Herrenschmidt, linuxppc-dev; +Cc: kernel-janitors, linux-kernel
From: Colin Ian King <colin.king@canonical.com>
Trivial fix to spelling mistake in debug messages of a structure
field name
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
drivers/macintosh/windfarm_pm121.c | 2 +-
drivers/macintosh/windfarm_pm81.c | 2 +-
drivers/macintosh/windfarm_pm91.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/macintosh/windfarm_pm121.c b/drivers/macintosh/windfarm_pm121.c
index 4d72d8f58cb6..97634e030991 100644
--- a/drivers/macintosh/windfarm_pm121.c
+++ b/drivers/macintosh/windfarm_pm121.c
@@ -710,7 +710,7 @@ static void pm121_create_cpu_fans(void)
wf_cpu_pid_init(&pm121_cpu_state->pid, &pid_param);
pr_debug("pm121: CPU Fan control initialized.\n");
- pr_debug(" ttarged=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM,\n",
+ pr_debug(" ttarget=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM,\n",
FIX32TOPRINT(pid_param.ttarget), FIX32TOPRINT(pid_param.tmax),
pid_param.min, pid_param.max);
diff --git a/drivers/macintosh/windfarm_pm81.c b/drivers/macintosh/windfarm_pm81.c
index d9ea45581b9e..346c91744442 100644
--- a/drivers/macintosh/windfarm_pm81.c
+++ b/drivers/macintosh/windfarm_pm81.c
@@ -455,7 +455,7 @@ static void wf_smu_create_cpu_fans(void)
wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param);
DBG("wf: CPU Fan control initialized.\n");
- DBG(" ttarged=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM\n",
+ DBG(" ttarget=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM\n",
FIX32TOPRINT(pid_param.ttarget), FIX32TOPRINT(pid_param.tmax),
pid_param.min, pid_param.max);
diff --git a/drivers/macintosh/windfarm_pm91.c b/drivers/macintosh/windfarm_pm91.c
index 7fd73dcb2b0a..a8a47c62a74b 100644
--- a/drivers/macintosh/windfarm_pm91.c
+++ b/drivers/macintosh/windfarm_pm91.c
@@ -200,7 +200,7 @@ static void wf_smu_create_cpu_fans(void)
wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param);
DBG("wf: CPU Fan control initialized.\n");
- DBG(" ttarged=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM\n",
+ DBG(" ttarget=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM\n",
FIX32TOPRINT(pid_param.ttarget), FIX32TOPRINT(pid_param.tmax),
pid_param.min, pid_param.max);
--
2.17.0
^ permalink raw reply related
* Re: [PATCH] kvm: Change return type to vm_fault_t
From: Souptick Joarder @ 2018-05-10 15:14 UTC (permalink / raw)
To: Cornelia Huck
Cc: jhogan, ralf, paulus, benh, mpe, borntraeger, frankja, david,
schwidefsky, pbonzini, tglx, mingo, christoffer.dall,
marc.zyngier, linux-mips, linux-kernel, kvm-ppc, linuxppc-dev,
linux-s390, kvm, linux-arm-kernel, kvmarm, Matthew Wilcox
In-Reply-To: <20180419155606.45a85009.cohuck@redhat.com>
On Thu, Apr 19, 2018 at 7:26 PM, Cornelia Huck <cohuck@redhat.com> wrote:
> On Thu, 19 Apr 2018 00:49:58 +0530
> Souptick Joarder <jrdr.linux@gmail.com> wrote:
>
>> Use new return type vm_fault_t for fault handler. For
>> now, this is just documenting that the function returns
>> a VM_FAULT value rather than an errno. Once all instances
>> are converted, vm_fault_t will become a distinct type.
>>
>> commit 1c8f422059ae ("mm: change return type to vm_fault_t")
>>
>> Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
>> Reviewed-by: Matthew Wilcox <mawilcox@microsoft.com>
>> ---
>> arch/mips/kvm/mips.c | 2 +-
>> arch/powerpc/kvm/powerpc.c | 2 +-
>> arch/s390/kvm/kvm-s390.c | 2 +-
>> arch/x86/kvm/x86.c | 2 +-
>> include/linux/kvm_host.h | 2 +-
>> virt/kvm/arm/arm.c | 2 +-
>> virt/kvm/kvm_main.c | 2 +-
>> 7 files changed, 7 insertions(+), 7 deletions(-)
>
> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
If no further comment, We would like to get this
patch in queue for 4.18.
^ permalink raw reply
* Re: [PATCH v2] powerpc: platform: cell: spufs: Change return type to vm_fault_t
From: Souptick Joarder @ 2018-05-10 15:05 UTC (permalink / raw)
To: Matthew Wilcox
Cc: Jeremy Kerr, Arnd Bergmann, benh, paulus, mpe, linuxppc-dev
In-Reply-To: <20180420213435.GL10788@bombadil.infradead.org>
On Sat, Apr 21, 2018 at 3:04 AM, Matthew Wilcox <willy@infradead.org> wrote:
> On Fri, Apr 20, 2018 at 11:02:39PM +0530, Souptick Joarder wrote:
>> Use new return type vm_fault_t for fault handler. For
>> now, this is just documenting that the function returns
>> a VM_FAULT value rather than an errno. Once all instances
>> are converted, vm_fault_t will become a distinct type.
>>
>> Reference id -> 1c8f422059ae ("mm: change return type to
>> vm_fault_t")
>>
>> We are fixing a minor bug, that the error from vm_insert_
>> pfn() was being ignored and the effect of this is likely
>> to be only felt in OOM situations.
>>
>> Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
>
> Reviewed-by: Matthew Wilcox <mawilcox@microsoft.com>
Any further comment on this patch ?
^ permalink raw reply
* Re: [PATCH v2 1/5] powerpc/kbuild: set default generic machine type for 32-bit compile
From: Segher Boessenkool @ 2018-05-10 14:52 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: linux-kbuild, Masahiro Yamada, linuxppc-dev
In-Reply-To: <20180510051659.15356-2-npiggin@gmail.com>
On Thu, May 10, 2018 at 03:16:55PM +1000, Nicholas Piggin wrote:
> The 64-bit toolchain uses the wrong ISA variant for compiling 32-bit
> kernels, eve with -m32. Set -mcpu=powerpc which is the generic 32-bit
> powerpc machine type and scheduling model. 32-bit platforms and CPUs
> can override this with -mcpu= options that come later on the command
> line.
So it turns out your compiler was configured with --with-cpu=power8;
it's not that GCC defaults are bad, but who built your compiler
overrode the defaults.
If the problem only happens in .S files, it might be better to put
.machine directives in those. But your patch should work too, yes.
Segher
^ permalink raw reply
* Re: [PATCH v2 1/5] powerpc/kbuild: set default generic machine type for 32-bit compile
From: Segher Boessenkool @ 2018-05-10 14:29 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: linux-kbuild, Masahiro Yamada, linuxppc-dev
In-Reply-To: <20180510232440.7374071f@roar.ozlabs.ibm.com>
On Thu, May 10, 2018 at 11:24:40PM +1000, Nicholas Piggin wrote:
> On Thu, 10 May 2018 08:10:03 -0500
> Segher Boessenkool <segher@kernel.crashing.org> wrote:
> > On Thu, May 10, 2018 at 03:16:55PM +1000, Nicholas Piggin wrote:
> > > The 64-bit toolchain uses the wrong ISA variant for compiling 32-bit
> > > kernels, eve with -m32. Set -mcpu=powerpc which is the generic 32-bit
> > > powerpc machine type and scheduling model. 32-bit platforms and CPUs
> > > can override this with -mcpu= options that come later on the command
> > > line.
> > >
> > > This fixes a lot of build failures due to incompatible assembly when
> > > compiling 32-bit kernel with 64-bit toolchain.
> >
> > So what ISA is set for gas without this patch? With what GCC version?
>
> I'm not sure, how do I find that out?
gcc --version
gcc -v <rest of command>, look at the command line options passed to as
make something.s, look at what .machine is set (if any).
> > And, why is that wrong?
>
> Some 32-bit platforms and CPU types do not provide -mcpu, so I assume
> for 32-bit toolchains that must result in the "powerpc" machine. With
It results in whatever is the default for that toolchain. Depends on
many things.
> 64-bit toolchains
>
> arch/powerpc/mm/hash_low_32.S:353: Error: missing operand
>
> Which is,
>
> tlbie r4
>
> Is that v2.06?
The original ISA did not have the L field, 2.xx does, for any xx even I think.
Segher
^ permalink raw reply
* Re: [PATCH 1/2] powerpc/pmu/fsl: fix is_nmi test for irq mask change
From: Madhavan Srinivasan @ 2018-05-10 14:24 UTC (permalink / raw)
To: Nicholas Piggin, linuxppc-dev
In-Reply-To: <20180510010424.16854-1-npiggin@gmail.com>
On Thursday 10 May 2018 06:34 AM, Nicholas Piggin wrote:
> When soft enabled was changed to irq disabled mask, this test missed
> being converted (although the equivalent book3s test was converted).
>
> The PMU drivers consider it an NMI when they take a PMI while general
> interrupts are disabled. This change restores that behaviour.
Looks fine to me.
Reviewed-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
> Fixes: 01417c6cc7 ("powerpc/64: Change soft_enabled from flag to bitmask")
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> arch/powerpc/perf/core-fsl-emb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/perf/core-fsl-emb.c b/arch/powerpc/perf/core-fsl-emb.c
> index 85f1d18e5fd3..ba485844d506 100644
> --- a/arch/powerpc/perf/core-fsl-emb.c
> +++ b/arch/powerpc/perf/core-fsl-emb.c
> @@ -42,7 +42,7 @@ static DEFINE_MUTEX(pmc_reserve_mutex);
> static inline int perf_intr_is_nmi(struct pt_regs *regs)
> {
> #ifdef __powerpc64__
> - return !regs->softe;
> + return (regs->softe & IRQS_DISABLED);
> #else
> return 0;
> #endif
^ permalink raw reply
* Re: [v2, 1/4] powerpc/64/kexec: fix race in kexec when XIVE is shutdown
From: Michael Ellerman @ 2018-05-10 14:06 UTC (permalink / raw)
To: Cédric Le Goater, linuxppc-dev; +Cc: Cédric Le Goater
In-Reply-To: <20180508070517.947-2-clg@kaod.org>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 994 bytes --]
On Tue, 2018-05-08 at 07:05:14 UTC, =?utf-8?q?C=C3=A9dric_Le_Goater?= wrote:
> The kexec_state KEXEC_STATE_IRQS_OFF barrier is reached by all
> secondary CPUs before the kexec_cpu_down() operation is called on
> secondaries. This can raise conflicts and provoque errors in the XIVE
> hcalls when XIVE is shutdown with H_INT_RESET on the primary CPU.
>
> To synchronize the kexec_cpu_down() operations and make sure the
> secondaries have completed their task before the primary starts doing
> the same, let's move the primary kexec_cpu_down() after the
> KEXEC_STATE_REAL_MODE barrier.
>
> This change of the ending sequence of kexec is mostly useful on the
> pseries platform but it impacts also the powernv, ps3 and 85xx
> platforms. powernv can be easily tested and fixed but some caution is
> required for the other two.
>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
Series applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/d2b04b0c78881ef1c051cc3a4a2c61
cheers
^ permalink raw reply
* Re: [v2, 1/4] powerpc: wii_defconfig: Disable Ethernet driver support code
From: Michael Ellerman @ 2018-05-10 14:06 UTC (permalink / raw)
To: Jonathan Neuschäfer, linuxppc-dev
Cc: Greg Kroah-Hartman, Benjamin Gilbert, Jonathan Neuschäfer,
Robin H. Johnson, linux-kernel, Paul Mackerras, Joel Stanley
In-Reply-To: <20180507142019.32669-2-j.neuschaefer@gmx.net>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 543 bytes --]
On Mon, 2018-05-07 at 14:20:16 UTC, =?utf-8?q?Jonathan_Neusch=C3=A4fer?= wrote:
> The Wii doesn't have built-in Ethernet and USB Ethernet adapters are in
> a different menu. Disable CONFIG_ETHERNET to save some space in support
> code for Ethernet drivers.
>
> Note that this patch doesn't disable any Ethernet drivers, because they
> are not enabled by default.
>
> Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Series applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/a84813f5bf2948c2a2947b0d684562
cheers
^ permalink raw reply
* Re: powerpc/pseries: hcall_exit tracepoint retval should be signed
From: Michael Ellerman @ 2018-05-10 14:06 UTC (permalink / raw)
To: Michael Ellerman, linuxppc-dev; +Cc: anton
In-Reply-To: <20180507130355.25115-1-mpe@ellerman.id.au>
On Mon, 2018-05-07 at 13:03:55 UTC, Michael Ellerman wrote:
> The hcall_exit() tracepoint has retval defined as unsigned long. That
> leads to humours results like:
>
> bash-3686 [009] d..2 854.134094: hcall_entry: opcode=24
> bash-3686 [009] d..2 854.134095: hcall_exit: opcode=24 retval=18446744073709551609
>
> It's normal for some hcalls to return negative values, displaying them
> as unsigned isn't very helpful. So change it to signed.
>
> bash-3711 [001] d..2 471.691008: hcall_entry: opcode=24
> bash-3711 [001] d..2 471.691008: hcall_exit: opcode=24 retval=-7
>
> Which can be more easily compared to H_NOT_FOUND in hvcall.h
>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
> Acked-by: Anton Blanchard <anton@samba.org>
Applied to powerpc next.
https://git.kernel.org/powerpc/c/8f2133cc0e1f9718f3e2d39b7587f4
cheers
^ permalink raw reply
* Re: [2/9] powerpc/watchdog: fix typo 'can by' to 'can be'
From: Michael Ellerman @ 2018-05-10 14:06 UTC (permalink / raw)
To: Wolfram Sang, trivial
Cc: linux-kernel, linux-renesas-soc, Wolfram Sang, Paul Mackerras,
linuxppc-dev
In-Reply-To: <20180506112404.24872-3-wsa+renesas@sang-engineering.com>
On Sun, 2018-05-06 at 11:23:46 UTC, Wolfram Sang wrote:
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/7c18659dd498b25c6651ba83d4267b
cheers
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox