* [PATCH 1/2] ARM: dts: omap3-overo: Add support for pwm-leds
From: Florian Vaussard @ 2013-01-24 16:50 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5101570A.1030303@ti.com>
>> I did it at first, but the led API executes in atomic context, where the
>> pwm-twl-led driver uses i2c communication. Setting a trigger will result in a
>> kernel panic.
>
> Now that you mentioned it, this might be true.
>
[<c0013204>] (unwind_backtrace+0x0/0xec) from [<c00348ac>]
(warn_slowpath_common+0x4c/0x64)
[<c00348ac>] (warn_slowpath_common+0x4c/0x64) from [<c00348e0>]
(warn_slowpath_null+0x1c/0x24)
[<c00348e0>] (warn_slowpath_null+0x1c/0x24) from [<c054d384>]
(__mutex_lock_slowpath+0x6c/0x26c)
[<c054d384>] (__mutex_lock_slowpath+0x6c/0x26c) from [<c054d590>]
(mutex_lock+0xc/0x20)
[<c054d590>] (mutex_lock+0xc/0x20) from [<c02d740c>]
(regmap_bulk_write+0x48/0x138)
[<c02d740c>] (regmap_bulk_write+0x48/0x138) from [<c02de2c0>]
(twl_i2c_write+0xa4/0xf0)
[<c02de2c0>] (twl_i2c_write+0xa4/0xf0) from [<c0299e34>]
(twl4030_pwmled_config+0x70/0x9c)
[<c0299e34>] (twl4030_pwmled_config+0x70/0x9c) from [<c029875c>]
(pwm_config+0x5c/0x6c)
[<c029875c>] (pwm_config+0x5c/0x6c) from [<c039dc04>]
(led_pwm_set+0x28/0x64)
[<c039dc04>] (led_pwm_set+0x28/0x64) from [<c039e27c>]
(led_heartbeat_function+0x10c/0x134)
[<c039e27c>] (led_heartbeat_function+0x10c/0x134) from [<c004359c>]
(call_timer_fn+0x90/0x178)
[<c004359c>] (call_timer_fn+0x90/0x178) from [<c0043994>]
(run_timer_softirq+0x250/0x2c8)
[<c0043994>] (run_timer_softirq+0x250/0x2c8) from [<c003cf78>]
(__do_softirq+0xf8/0x248)
[<c003cf78>] (__do_softirq+0xf8/0x248) from [<c003d154>]
(irq_exit+0x44/0x98)
[<c003d154>] (irq_exit+0x44/0x98) from [<c000e338>] (handle_IRQ+0x68/0x8c)
[<c000e338>] (handle_IRQ+0x68/0x8c) from [<c000870c>]
(omap3_intc_handle_irq+0x58/0x70)
[<c000870c>] (omap3_intc_handle_irq+0x58/0x70) from [<c054f8c0>]
(__irq_svc+0x40/0x70)
Exception stack(0xc077df60 to 0xc077dfa8)
:-)
>> I am working on a patch for pwm-twl-led to defer using a workqueue right now.
>
> Great!
> The only thing I worry about is the latency we are going to get with the
> workqueue.
>
If the latency becomes critical, we can create our own workqueue.
Do we merge anyway this patchset, or do we wait until the trigger has
been fixed?
Florian
^ permalink raw reply
* [PATCH v3 1/1 net-next] net: fec: enable pause frame to improve rx prefomance for 1G network
From: Ben Hutchings @ 2013-01-24 16:49 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CAHrpEqSzu97X2PUgUEh30EqkbjLUYyhCN28AEzJ6eLPXx0Qg1Q@mail.gmail.com>
On Thu, 2013-01-24 at 10:16 +0800, Frank Li wrote:
> 2013/1/24 Ben Hutchings <bhutchings@solarflare.com>:
> > On Thu, 2013-01-17 at 10:55 +0800, Frank Li wrote:
> >> The limition of imx6 internal bus cause fec can't achieve 1G perfomance.
> >> There will be many packages lost because FIFO over run.
> >>
> >> This patch enable pause frame flow control.
> > [...]
> >> --- a/drivers/net/ethernet/freescale/fec.c
> >> +++ b/drivers/net/ethernet/freescale/fec.c
> > [...]
> >> +static int fec_enet_set_pauseparam(struct net_device *ndev,
> >> + struct ethtool_pauseparam *pause)
> >> +{
> >> + struct fec_enet_private *fep = netdev_priv(ndev);
> >> +
> >> + if (pause->tx_pause != pause->rx_pause) {
> >> + netdev_info(ndev,
> >> + "hardware only support enable/disable both tx and rx");
> >> + return -EINVAL;
> >> + }
> >> +
> >> + fep->pause_flag = 0;
> >> +
> >> + /* tx pause must be same as rx pause */
> >> + fep->pause_flag |= pause->rx_pause ? FEC_PAUSE_FLAG_ENABLE : 0;
> >> + fep->pause_flag |= pause->autoneg ? FEC_PAUSE_FLAG_AUTONEG : 0;
> >> +
> >> + if (pause->rx_pause || pause->autoneg) {
> >> + fep->phy_dev->supported |= ADVERTISED_Pause;
> >> + fep->phy_dev->advertising |= ADVERTISED_Pause;
> >> + } else {
> >> + fep->phy_dev->supported &= ~ADVERTISED_Pause;
> >> + fep->phy_dev->advertising &= ~ADVERTISED_Pause;
> >> + }
> > [...]
> >
> > Why is this changing the supported flags, i.e. device capabilities? You
> > need to leave those flags alone and reject an attempt to enable pause
> > frames on a device that doesn't support them.
>
> I go through phylib, I have not found good place set ADVERTISED_Pause
> capabilities.
> genphy_config_init never check Pause capabilities.
I agree that phylib can't initialise pause capabilities because those
depend on the MAC. But look at which function I'm quoting: this is the
ethtool operation, which shouldn't change capabilities.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* [PATCH 4/4] clk: ux500: Support is_prepared callback for clk-prcmu
From: Ulf Hansson @ 2013-01-24 16:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359045956-30741-1-git-send-email-ulf.hansson@stericsson.com>
From: Ulf Hansson <ulf.hansson@linaro.org>
To be able to gate unused prcmu clocks from the clk_disable_unused sequence,
clk-prcmu now implements the is_prepared callback.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/clk/ux500/clk-prcmu.c | 134 ++++++++++++++++++++++++-----------------
1 file changed, 80 insertions(+), 54 deletions(-)
diff --git a/drivers/clk/ux500/clk-prcmu.c b/drivers/clk/ux500/clk-prcmu.c
index 74faa7e..9d83256 100644
--- a/drivers/clk/ux500/clk-prcmu.c
+++ b/drivers/clk/ux500/clk-prcmu.c
@@ -20,15 +20,23 @@
struct clk_prcmu {
struct clk_hw hw;
u8 cg_sel;
+ int is_prepared;
int is_enabled;
+ int opp_requested;
};
/* PRCMU clock operations. */
static int clk_prcmu_prepare(struct clk_hw *hw)
{
+ int ret;
struct clk_prcmu *clk = to_clk_prcmu(hw);
- return prcmu_request_clock(clk->cg_sel, true);
+
+ ret = prcmu_request_clock(clk->cg_sel, true);
+ if (!ret)
+ clk->is_prepared = 1;
+
+ return ret;;
}
static void clk_prcmu_unprepare(struct clk_hw *hw)
@@ -37,6 +45,14 @@ static void clk_prcmu_unprepare(struct clk_hw *hw)
if (prcmu_request_clock(clk->cg_sel, false))
pr_err("clk_prcmu: %s failed to disable %s.\n", __func__,
hw->init->name);
+ else
+ clk->is_prepared = 0;
+}
+
+static int clk_prcmu_is_prepared(struct clk_hw *hw)
+{
+ struct clk_prcmu *clk = to_clk_prcmu(hw);
+ return clk->is_prepared;
}
static int clk_prcmu_enable(struct clk_hw *hw)
@@ -79,58 +95,52 @@ static int clk_prcmu_set_rate(struct clk_hw *hw, unsigned long rate,
return prcmu_set_clock_rate(clk->cg_sel, rate);
}
-static int request_ape_opp100(bool enable)
-{
- static int reqs;
- int err = 0;
-
- if (enable) {
- if (!reqs)
- err = prcmu_qos_add_requirement(PRCMU_QOS_APE_OPP,
- "clock", 100);
- if (!err)
- reqs++;
- } else {
- reqs--;
- if (!reqs)
- prcmu_qos_remove_requirement(PRCMU_QOS_APE_OPP,
- "clock");
- }
- return err;
-}
-
static int clk_prcmu_opp_prepare(struct clk_hw *hw)
{
int err;
struct clk_prcmu *clk = to_clk_prcmu(hw);
- err = request_ape_opp100(true);
- if (err) {
- pr_err("clk_prcmu: %s failed to request APE OPP100 for %s.\n",
- __func__, hw->init->name);
- return err;
+ if (!clk->opp_requested) {
+ err = prcmu_qos_add_requirement(PRCMU_QOS_APE_OPP,
+ (char *)__clk_get_name(hw->clk),
+ 100);
+ if (err) {
+ pr_err("clk_prcmu: %s fail req APE OPP for %s.\n",
+ __func__, hw->init->name);
+ return err;
+ }
+ clk->opp_requested = 1;
}
err = prcmu_request_clock(clk->cg_sel, true);
- if (err)
- request_ape_opp100(false);
+ if (err) {
+ prcmu_qos_remove_requirement(PRCMU_QOS_APE_OPP,
+ (char *)__clk_get_name(hw->clk));
+ clk->opp_requested = 0;
+ return err;
+ }
- return err;
+ clk->is_prepared = 1;
+ return 0;
}
static void clk_prcmu_opp_unprepare(struct clk_hw *hw)
{
struct clk_prcmu *clk = to_clk_prcmu(hw);
- if (prcmu_request_clock(clk->cg_sel, false))
- goto out_error;
- if (request_ape_opp100(false))
- goto out_error;
- return;
-
-out_error:
- pr_err("clk_prcmu: %s failed to disable %s.\n", __func__,
- hw->init->name);
+ if (prcmu_request_clock(clk->cg_sel, false)) {
+ pr_err("clk_prcmu: %s failed to disable %s.\n", __func__,
+ hw->init->name);
+ return;
+ }
+
+ if (clk->opp_requested) {
+ prcmu_qos_remove_requirement(PRCMU_QOS_APE_OPP,
+ (char *)__clk_get_name(hw->clk));
+ clk->opp_requested = 0;
+ }
+
+ clk->is_prepared = 0;
}
static int clk_prcmu_opp_volt_prepare(struct clk_hw *hw)
@@ -138,38 +148,49 @@ static int clk_prcmu_opp_volt_prepare(struct clk_hw *hw)
int err;
struct clk_prcmu *clk = to_clk_prcmu(hw);
- err = prcmu_request_ape_opp_100_voltage(true);
- if (err) {
- pr_err("clk_prcmu: %s failed to request APE OPP VOLT for %s.\n",
- __func__, hw->init->name);
- return err;
+ if (!clk->opp_requested) {
+ err = prcmu_request_ape_opp_100_voltage(true);
+ if (err) {
+ pr_err("clk_prcmu: %s fail req APE OPP VOLT for %s.\n",
+ __func__, hw->init->name);
+ return err;
+ }
+ clk->opp_requested = 1;
}
err = prcmu_request_clock(clk->cg_sel, true);
- if (err)
+ if (err) {
prcmu_request_ape_opp_100_voltage(false);
+ clk->opp_requested = 0;
+ return err;
+ }
- return err;
+ clk->is_prepared = 1;
+ return 0;
}
static void clk_prcmu_opp_volt_unprepare(struct clk_hw *hw)
{
struct clk_prcmu *clk = to_clk_prcmu(hw);
- if (prcmu_request_clock(clk->cg_sel, false))
- goto out_error;
- if (prcmu_request_ape_opp_100_voltage(false))
- goto out_error;
- return;
-
-out_error:
- pr_err("clk_prcmu: %s failed to disable %s.\n", __func__,
- hw->init->name);
+ if (prcmu_request_clock(clk->cg_sel, false)) {
+ pr_err("clk_prcmu: %s failed to disable %s.\n", __func__,
+ hw->init->name);
+ return;
+ }
+
+ if (clk->opp_requested) {
+ prcmu_request_ape_opp_100_voltage(false);
+ clk->opp_requested = 0;
+ }
+
+ clk->is_prepared = 0;
}
static struct clk_ops clk_prcmu_scalable_ops = {
.prepare = clk_prcmu_prepare,
.unprepare = clk_prcmu_unprepare,
+ .is_prepared = clk_prcmu_is_prepared,
.enable = clk_prcmu_enable,
.disable = clk_prcmu_disable,
.is_enabled = clk_prcmu_is_enabled,
@@ -181,6 +202,7 @@ static struct clk_ops clk_prcmu_scalable_ops = {
static struct clk_ops clk_prcmu_gate_ops = {
.prepare = clk_prcmu_prepare,
.unprepare = clk_prcmu_unprepare,
+ .is_prepared = clk_prcmu_is_prepared,
.enable = clk_prcmu_enable,
.disable = clk_prcmu_disable,
.is_enabled = clk_prcmu_is_enabled,
@@ -202,6 +224,7 @@ static struct clk_ops clk_prcmu_rate_ops = {
static struct clk_ops clk_prcmu_opp_gate_ops = {
.prepare = clk_prcmu_opp_prepare,
.unprepare = clk_prcmu_opp_unprepare,
+ .is_prepared = clk_prcmu_is_prepared,
.enable = clk_prcmu_enable,
.disable = clk_prcmu_disable,
.is_enabled = clk_prcmu_is_enabled,
@@ -211,6 +234,7 @@ static struct clk_ops clk_prcmu_opp_gate_ops = {
static struct clk_ops clk_prcmu_opp_volt_scalable_ops = {
.prepare = clk_prcmu_opp_volt_prepare,
.unprepare = clk_prcmu_opp_volt_unprepare,
+ .is_prepared = clk_prcmu_is_prepared,
.enable = clk_prcmu_enable,
.disable = clk_prcmu_disable,
.is_enabled = clk_prcmu_is_enabled,
@@ -242,7 +266,9 @@ static struct clk *clk_reg_prcmu(const char *name,
}
clk->cg_sel = cg_sel;
+ clk->is_prepared = 1;
clk->is_enabled = 1;
+ clk->opp_requested = 0;
/* "rate" can be used for changing the initial frequency */
if (rate)
prcmu_set_clock_rate(cg_sel, rate);
--
1.7.10
^ permalink raw reply related
* [PATCH 3/4] clk: Introduce optional unprepare_unused callback
From: Ulf Hansson @ 2013-01-24 16:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359045956-30741-1-git-send-email-ulf.hansson@stericsson.com>
From: Ulf Hansson <ulf.hansson@linaro.org>
An unprepare_unused callback is introduced due to the same reasons to
why the disable_unused callback was added.
During the clk_disable_unused sequence, those clk_hw that needs specific
treatment with regards to being unprepared, shall implement the
unprepare_unused callback.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/clk/clk.c | 7 +++++--
include/linux/clk-provider.h | 5 +++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 0944348..d8dc6d7c 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -358,9 +358,12 @@ static void clk_unprepare_unused_subtree(struct clk *clk)
if (clk->flags & CLK_IGNORE_UNUSED)
return;
- if (__clk_is_prepared(clk))
- if (clk->ops->unprepare)
+ if (__clk_is_prepared(clk)) {
+ if (clk->ops->unprepare_unused)
+ clk->ops->unprepare_unused(clk->hw);
+ else if (clk->ops->unprepare)
clk->ops->unprepare(clk->hw);
+ }
}
/* caller must hold prepare_lock */
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 86ff6be..9e97fb4 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -49,6 +49,10 @@ struct clk_hw;
* This function is allowed to sleep. Optional, if this op is not
* set then the prepare count will be used.
*
+ * @unprepare_unused: Unprepare the clock atomically. Only called from
+ * clk_disable_unused for prepare clocks with special needs.
+ * Called with prepare mutex held. This function may sleep.
+ *
* @enable: Enable the clock atomically. This must not return until the
* clock is generating a valid clock signal, usable by consumer
* devices. Called with enable_lock held. This function must not
@@ -113,6 +117,7 @@ struct clk_ops {
int (*prepare)(struct clk_hw *hw);
void (*unprepare)(struct clk_hw *hw);
int (*is_prepared)(struct clk_hw *hw);
+ void (*unprepare_unused)(struct clk_hw *hw);
int (*enable)(struct clk_hw *hw);
void (*disable)(struct clk_hw *hw);
int (*is_enabled)(struct clk_hw *hw);
--
1.7.10
^ permalink raw reply related
* [PATCH 2/4] clk: Unprepare the unused prepared slow clocks at late init
From: Ulf Hansson @ 2013-01-24 16:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359045956-30741-1-git-send-email-ulf.hansson@stericsson.com>
From: Ulf Hansson <ulf.hansson@linaro.org>
The unused ungated fast clocks are already being disabled from
clk_disable_unused at late init. This patch extend this sequence
to the slow unused prepared clocks to be unprepared.
Unless the optional .is_prepared callback is implemented by a
clk_hw the clk_disable_unused sequence will not unprepare any
unused clocks, since it will fall back to use the software
prepare counter.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/clk/clk.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index deb259a..0944348 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -341,6 +341,29 @@ static inline int clk_debug_register(struct clk *clk) { return 0; }
#endif
/* caller must hold prepare_lock */
+static void clk_unprepare_unused_subtree(struct clk *clk)
+{
+ struct clk *child;
+ struct hlist_node *tmp;
+
+ if (!clk)
+ return;
+
+ hlist_for_each_entry(child, tmp, &clk->children, child_node)
+ clk_unprepare_unused_subtree(child);
+
+ if (clk->prepare_count)
+ return;
+
+ if (clk->flags & CLK_IGNORE_UNUSED)
+ return;
+
+ if (__clk_is_prepared(clk))
+ if (clk->ops->unprepare)
+ clk->ops->unprepare(clk->hw);
+}
+
+/* caller must hold prepare_lock */
static void clk_disable_unused_subtree(struct clk *clk)
{
struct clk *child;
@@ -393,6 +416,12 @@ static int clk_disable_unused(void)
hlist_for_each_entry(clk, tmp, &clk_orphan_list, child_node)
clk_disable_unused_subtree(clk);
+ hlist_for_each_entry(clk, tmp, &clk_root_list, child_node)
+ clk_unprepare_unused_subtree(clk);
+
+ hlist_for_each_entry(clk, tmp, &clk_orphan_list, child_node)
+ clk_unprepare_unused_subtree(clk);
+
mutex_unlock(&prepare_lock);
return 0;
--
1.7.10
^ permalink raw reply related
* [PATCH 1/4] clk: Introduce optional is_prepared callback
From: Ulf Hansson @ 2013-01-24 16:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359045956-30741-1-git-send-email-ulf.hansson@stericsson.com>
From: Ulf Hansson <ulf.hansson@linaro.org>
To reflect whether a clk_hw is prepared the clk_hw may implement
the optional is_prepared callback. If not implemented we fall back
to use the software prepare counter.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/clk/clk.c | 21 +++++++++++++++++++++
include/linux/clk-provider.h | 6 ++++++
2 files changed, 27 insertions(+)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 593a2e4..deb259a 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -458,6 +458,27 @@ unsigned long __clk_get_flags(struct clk *clk)
return !clk ? 0 : clk->flags;
}
+bool __clk_is_prepared(struct clk *clk)
+{
+ int ret;
+
+ if (!clk)
+ return false;
+
+ /*
+ * .is_prepared is optional for clocks that can prepare
+ * fall back to software usage counter if it is missing
+ */
+ if (!clk->ops->is_prepared) {
+ ret = clk->prepare_count ? 1 : 0;
+ goto out;
+ }
+
+ ret = clk->ops->is_prepared(clk->hw);
+out:
+ return !!ret;
+}
+
bool __clk_is_enabled(struct clk *clk)
{
int ret;
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 4989b8a..86ff6be 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -45,6 +45,10 @@ struct clk_hw;
* undo any work done in the @prepare callback. Called with
* prepare_lock held.
*
+ * @is_prepared: Queries the hardware to determine if the clock is prepared.
+ * This function is allowed to sleep. Optional, if this op is not
+ * set then the prepare count will be used.
+ *
* @enable: Enable the clock atomically. This must not return until the
* clock is generating a valid clock signal, usable by consumer
* devices. Called with enable_lock held. This function must not
@@ -108,6 +112,7 @@ struct clk_hw;
struct clk_ops {
int (*prepare)(struct clk_hw *hw);
void (*unprepare)(struct clk_hw *hw);
+ int (*is_prepared)(struct clk_hw *hw);
int (*enable)(struct clk_hw *hw);
void (*disable)(struct clk_hw *hw);
int (*is_enabled)(struct clk_hw *hw);
@@ -351,6 +356,7 @@ unsigned int __clk_get_enable_count(struct clk *clk);
unsigned int __clk_get_prepare_count(struct clk *clk);
unsigned long __clk_get_rate(struct clk *clk);
unsigned long __clk_get_flags(struct clk *clk);
+bool __clk_is_prepared(struct clk *clk);
bool __clk_is_enabled(struct clk *clk);
struct clk *__clk_lookup(const char *name);
--
1.7.10
^ permalink raw reply related
* [PATCH 0/4] clk: Provide option to unprepare unused clocks at late init
From: Ulf Hansson @ 2013-01-24 16:45 UTC (permalink / raw)
To: linux-arm-kernel
From: Ulf Hansson <ulf.hansson@linaro.org>
The disable_unused sequence executed at late init, is already handling the
fast unused ungated clocks to be gated. This patchset extends this sequence to
include the slow unused prepared clocks to be unprepared.
The default behavior will not change in this patchset. To unprepare unused
clocks during the disable_unused sequence, the clk_hw needs to implement
the new optional callback, is_prepared.
The motivation for this patchset is to save power. Clocks that is from
bootloaders prepared|enabled, but not used should be unprepared|disabled.
Patch 4 is specific for ux500, which implements the is_prepared callback
for it's PRMCU clocks.
Note that patch 1-3 has been sent earlier, but since a proof of concept
patch could be useful, as patch 4 is, the hole patchset is resent.
Ulf Hansson (4):
clk: Introduce optional is_prepared callback
clk: Unprepare the unused prepared slow clocks at late init
clk: Introduce optional unprepare_unused callback
clk: ux500: Support is_prepared callback for clk-prcmu
drivers/clk/clk.c | 53 ++++++++++++++++
drivers/clk/ux500/clk-prcmu.c | 134 ++++++++++++++++++++++++-----------------
include/linux/clk-provider.h | 11 ++++
3 files changed, 144 insertions(+), 54 deletions(-)
--
1.7.10
^ permalink raw reply
* [PATCH] i2c: samsung: resume race fix
From: Wolfram Sang @ 2013-01-24 16:44 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CALiw-2F7tG9ogDHj4Yf47T47rBn6mAiH2XvK8jpWB1a3OhNJBQ@mail.gmail.com>
> below setting suspended = 1. Upstream implementation of the same
> functionality will be implemented differently, most likely.
Thanks, so I'll discard this patch.
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130124/8dca191b/attachment.sig>
^ permalink raw reply
* [PATCH] i2c: samsung: resume race fix
From: Olof Johansson @ 2013-01-24 16:42 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124132759.GH12933@pengutronix.de>
[Silly gmail defaulting to html the first time around, sorry for the
re-send to those not on lists]
2013/1/24 Wolfram Sang <w.sang@pengutronix.de>:
> On Wed, Nov 07, 2012 at 11:44:37AM +0100, Jean Delvare wrote:
>> On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote:
>> > Don't unmark the device as suspended until after it's been re-setup.
>> >
>> > The main race would be w.r.t. an i2c driver that gets resumed at the same
>> > time (asyncronously), that is allowed to do a transfer since suspended
>> > is set to 0 before reinit, but really should have seen the -EIO return
>> > instead.
>>
>> I thought that the suspend order was children first and the resume
>> order was parent first?
>
> Same here, why does it not work this way?
Sorry for being quiet on this so far, I didn't notice the controversy until now.
This is actually about half of what the original fix was (which I
wrote, thus my signed-off-by). The original one was related to us
having the GPIO handshake for a shared bus (see separate discussions
on how that should be upstreamed, and the work on that). For
reference, that patch is at:
https://gerrit.chromium.org/gerrit/#/c/28126/1/drivers/i2c/busses/i2c-s3c2410.c.
So, I'm not sure that this patch is really needed. The significant
part of the original one was the move of our internal
s3c24xx_i2c_dt_gpio_free() below setting suspended = 1. Upstream
implementation of the same functionality will be implemented
differently, most likely.
-Olof
^ permalink raw reply
* [PATCH] i2c: samsung: resume race fix
From: Olof Johansson @ 2013-01-24 16:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124132759.GH12933@pengutronix.de>
2013/1/24 Wolfram Sang <w.sang@pengutronix.de>
> On Wed, Nov 07, 2012 at 11:44:37AM +0100, Jean Delvare wrote:
> > On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote:
> > > Don't unmark the device as suspended until after it's been re-setup.
> > >
> > > The main race would be w.r.t. an i2c driver that gets resumed at the
> same
> > > time (asyncronously), that is allowed to do a transfer since suspended
> > > is set to 0 before reinit, but really should have seen the -EIO return
> > > instead.
> >
> > I thought that the suspend order was children first and the resume
> > order was parent first?
>
> Same here, why does it not work this way?
>
Sorry for being quiet on this so far, I didn't notice the controversy until
now.
This is actually about half of what the original fix was (which I wrote,
thus my signed-off-by). The original one was related to us having the GPIO
handshake for a shared bus (see separate discussions on how that should be
upstreamed, and the work on that). For reference, that patch is at:
https://gerrit.chromium.org/gerrit/#/c/28126/1/drivers/i2c/busses/i2c-s3c2410.c
.
So, I'm not sure that this patch is really needed. The significant part of
the original one was the move of our internal s3c24xx_i2c_dt_gpio_free()
below setting suspended = 1. Upstream implementation of the same
functionality will be implemented differently, most likely.
-Olof
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130124/9785789b/attachment-0001.html>
^ permalink raw reply
* [PATCH v6 00/15] KVM/ARM Implementation
From: Christoffer Dall @ 2013-01-24 16:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124162627.GE18233@arm.com>
On Thu, Jan 24, 2013 at 11:26 AM, Catalin Marinas
<catalin.marinas@arm.com> wrote:
> Hi Christoffer,
>
> On Wed, Jan 16, 2013 at 05:57:19PM +0000, Christoffer Dall wrote:
>> The following series implements KVM support for ARM processors,
>> specifically on the Cortex A-15 platform.
>
> I went through the KVM patches (just this series, not the vgic or
> timers) and apart from a few minor clean-up issues (which can be done
> later as an additional patch) they look fine to me.
>
> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Thanks a lot!
-Christoffer
^ permalink raw reply
* [PATCH v6 02/15] ARM: Section based HYP idmap
From: Christoffer Dall @ 2013-01-24 16:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124143224.GC18233@arm.com>
On Thu, Jan 24, 2013 at 9:32 AM, Catalin Marinas
<catalin.marinas@arm.com> wrote:
> On Wed, Jan 16, 2013 at 05:57:34PM +0000, Christoffer Dall wrote:
>> --- a/arch/arm/mm/idmap.c
>> +++ b/arch/arm/mm/idmap.c
>> @@ -1,4 +1,6 @@
>> +#include <linux/module.h>
>
> Minor thing - do you need to include linux/module.h here?
>
there was once a time when kvm/arm could be compiled as a module; my
best guess is that it's a leftover from that.
>> + identity_mapping_add(hyp_pgd, __hyp_idmap_text_start,
>> + __hyp_idmap_text_end, PMD_SECT_AP1);
>
> It would be more consistent if you define PMD_SECT_HYP or something like
> that. I think you have a L_PTE_HYP bit as well.
>
Is this along the lines of what you had in mind?
diff --git a/arch/arm/include/asm/pgtable-3level-hwdef.h
b/arch/arm/include/asm/pgtable-3level-hwdef.h
index 18f5cef..432fa12 100644
--- a/arch/arm/include/asm/pgtable-3level-hwdef.h
+++ b/arch/arm/include/asm/pgtable-3level-hwdef.h
@@ -50,6 +50,7 @@
#define PMD_SECT_AP_READ (_AT(pmdval_t, 0))
#define PMD_SECT_AP1 (_AT(pmdval_t, 1) << 6)
#define PMD_SECT_TEX(x) (_AT(pmdval_t, 0))
+#define PMD_SECT_HYP PMD_SECT_AP1
/*
* AttrIndx[2:0] encoding (mapping attributes defined in the MAIR* registers).
diff --git a/arch/arm/include/asm/pgtable-3level.h
b/arch/arm/include/asm/pgtable-3level.h
index 6ef8afd..a7e6532 100644
--- a/arch/arm/include/asm/pgtable-3level.h
+++ b/arch/arm/include/asm/pgtable-3level.h
@@ -116,6 +116,7 @@
/*
* Hyp-mode PL2 PTE definitions for LPAE.
*/
+#define PMD_HYP PMD_SECT_AP1
#define L_PTE_HYP L_PTE_USER
#ifndef __ASSEMBLY__
diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c
index 2dffc01..bf1ee20 100644
--- a/arch/arm/mm/idmap.c
+++ b/arch/arm/mm/idmap.c
@@ -1,4 +1,3 @@
-#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
@@ -97,7 +96,7 @@ static int __init init_static_idmap_hyp(void)
pr_info("Setting up static HYP identity map for 0x%p - 0x%p\n",
__hyp_idmap_text_start, __hyp_idmap_text_end);
identity_mapping_add(hyp_pgd, __hyp_idmap_text_start,
- __hyp_idmap_text_end, PMD_SECT_AP1);
+ __hyp_idmap_text_end, PMD_SECT_HYP);
return 0;
}
^ permalink raw reply related
* [GIT PULL] at91: fixes for 3.8-rc5
From: Olof Johansson @ 2013-01-24 16:33 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5100FA77.3020405@atmel.com>
On Thu, Jan 24, 2013 at 1:10 AM, Nicolas Ferre <nicolas.ferre@atmel.com> wrote:
> Arnd, Olof,
>
> Here is the pull request related to the fixes series that I sent
> earlier this week. Changes are obvious and are very constrained in
> AT91-related material.
>
> The following changes since commit 7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619:
>
> Linux 3.8-rc4 (2013-01-17 19:25:45 -0800)
>
> are available in the git repository at:
>
> git://github.com/at91linux/linux-at91.git tags/at91-fixes
Pulled.
-Olof
^ permalink raw reply
* [GIT PULL] vexpress: fixes for v3.8-rc5
From: Olof Johansson @ 2013-01-24 16:32 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359031777.26878.49.camel@hornet>
On Thu, Jan 24, 2013 at 4:49 AM, Pawel Moll <pawel.moll@arm.com> wrote:
> Hi Arnd, Olof,
>
> Could you, please, pull this small series of VE fixes for v3.8-rc5? It:
>
> * makes the V2P-CA15_A7 (a.k.a. TC2) work with 3.8 kernels
> * improves vexpress-sysreg.c behaviour on arm64 platforms
>
> Thanks!
>
> Pawel
>
> The following changes since commit 7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619:
>
> Linux 3.8-rc4 (2013-01-17 19:25:45 -0800)
>
> are available in the git repository at:
>
> git://git.linaro.org/people/pawelmoll/linux.git vexpress/fixes
Pulled. Thanks for giving an overview of the contents. If you have a
chance, please explore using signed tags to hold that contents too,
since it makes life even easier for us doing the pulls. :-)
-Olof
^ permalink raw reply
* [GIT PULL] ARM: arm-soc fixes for 3.8-rc, take 2
From: Olof Johansson @ 2013-01-24 16:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124050440.GA9151@quad.lixom.net>
On Wed, Jan 23, 2013 at 09:04:40PM -0800, Olof Johansson wrote:
> Hi Linus,
>
> The following changes since commit 7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619:
>
> Linux 3.8-rc4 (2013-01-17 19:25:45 -0800)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/fixes-for-linus
I had accidentally missed one pull of at91 fixes (because I had pushed
back due to size, but it seems like they're still relevant). Also,
a pull request for some vexpress fixes just came in so I included it.
I don't know if you already pulled the first request, so I created a
new tag, and below is both an incremental pull request/delta, as well
as a full pull request on all of it. I kept the tag text as the superset
description, edit as you see fit, of course.
-Olof
The following changes since commit 4ad3041d3b76632c02b50aa384a8f21d7d15bac0:
Merge tag 'imx-fixes-3.8-3' of git://git.linaro.org/people/shawnguo/linux-2.6 into fixes (2013-01-23 20:35:02 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/fixes-for-linus2
for you to fetch changes up to 3836414f45b01486b9b50c627a329010573ad0f4:
Merge branch 'vexpress/fixes' of git://git.linaro.org/people/pawelmoll/linux into fixes (2013-01-24 08:12:24 -0800)
----------------------------------------------------------------
ARM: arm-soc: Fixes for 3.8-rc, take 2
Here's a long-pending fixes pull request for arm-soc (I didn't send one
in the -rc4 cycle).
The larger deltas are from:
- A fixup of error paths in the mvsdio driver
- Header file move for a driver that hadn't been properly converted to
multiplatform on i.MX, which was causing build failures when included
- Device tree updates for at91 dealing mostly with their new
pinctrl setup merged in 3.8 and mistakes in those initial configs
The rest are the normal mix of small fixes all over the place; sunxi,
omap, imx, mvebu, etc, etc.
----------------------------------------------------------------
Boris BREZILLON (1):
ARM: at91/dts: add macb mii pinctrl config for kizbox
Douglas Gilbert (1):
ARM: at91/dts: correct comment in at91sam9x5.dtsi for mii
Jean-Christophe PLAGNIOL-VILLARD (1):
ARM: at91: rm9200: remake the BGA as default version
Joachim Eastwood (1):
ARM: at91: fix gpios on i2c-gpio for RM9200 DT
Lorenzo Pieralisi (1):
ARM: vexpress: extend the MPIDR range used for pen release check
Nicolas Ferre (2):
ARM: at91/at91_dt_defconfig: remove memory specification to cmdline
ARM: at91/at91_dt_defconfig: add at91sam9n12 SoC to DT defconfig
Olof Johansson (2):
Merge tag 'at91-fixes' of git://github.com/at91linux/linux-at91 into fixes
Merge branch 'vexpress/fixes' of git://git.linaro.org/people/pawelmoll/linux into fixes
Pawel Moll (2):
ARM: vexpress: Enable A7 cores in V2P-CA15_A7's Device Tree
mfd: vexpress-sysreg: Don't skip initialization on probe
Richard Genoud (3):
ARM: at91/at91-pinctrl documentation: fix typo and add some details
ARM: at91/at91sam9x5 DTS: correct wrong PIO BANK values on u(s)arts
ARM: at91/at91sam9x5 DTS: add SCK USART pins
.../bindings/pinctrl/atmel,at91-pinctrl.txt | 5 +-
arch/arm/boot/dts/at91rm9200.dtsi | 4 +-
arch/arm/boot/dts/at91sam9x5.dtsi | 60 ++++++++++++++--------
arch/arm/boot/dts/kizbox.dts | 2 +
arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 2 -
arch/arm/configs/at91_dt_defconfig | 3 +-
arch/arm/mach-at91/setup.c | 2 +
arch/arm/plat-versatile/headsmp.S | 2 +-
drivers/mfd/vexpress-sysreg.c | 32 +++++++-----
9 files changed, 72 insertions(+), 40 deletions(-)
And the full one:
The following changes since commit 7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619:
Linux 3.8-rc4 (2013-01-17 19:25:45 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/fixes-for-linus2
for you to fetch changes up to 3836414f45b01486b9b50c627a329010573ad0f4:
Merge branch 'vexpress/fixes' of git://git.linaro.org/people/pawelmoll/linux into fixes (2013-01-24 08:12:24 -0800)
----------------------------------------------------------------
ARM: arm-soc: Fixes for 3.8-rc, take 2
Here's a long-pending fixes pull request for arm-soc (I didn't send one
in the -rc4 cycle).
The larger deltas are from:
- A fixup of error paths in the mvsdio driver
- Header file move for a driver that hadn't been properly converted to
multiplatform on i.MX, which was causing build failures when included
- Device tree updates for at91 dealing mostly with their new
pinctrl setup merged in 3.8 and mistakes in those initial configs
The rest are the normal mix of small fixes all over the place; sunxi,
omap, imx, mvebu, etc, etc.
----------------------------------------------------------------
Alim Akhtar (1):
ARM: dts: correct the dw-mshc timing properties as per binding
Andrew Lunn (1):
mmc: mvsdio: use devm_ API to simplify/correct error paths.
Boris BREZILLON (1):
ARM: at91/dts: add macb mii pinctrl config for kizbox
Cong Ding (1):
clk: mvebu/clk-cpu.c: fix memory leakage
Dimitris Papastamos (1):
ARM: S3C64XX: Fix up IRQ mapping for balblair on Cragganmore
Douglas Gilbert (1):
ARM: at91/dts: correct comment in at91sam9x5.dtsi for mii
Fabio Estevam (1):
video: imxfb: Do not crash on reboot
Gregory CLEMENT (1):
arm: mvebu: Fix memory size for Armada 370 DB
Gwenhael Goavec-Merou (2):
ARM: imx: platform-imx-fb: modifies platform device name
video: imxfb: fix imxfb_info configuration order
Jean-Christophe PLAGNIOL-VILLARD (1):
ARM: at91: rm9200: remake the BGA as default version
Joachim Eastwood (1):
ARM: at91: fix gpios on i2c-gpio for RM9200 DT
Jon Hunter (1):
ARM: OMAP2: Fix missing omap2xxx_clkt_vps_late_init function calls
Linus Walleij (1):
ARM: integrator: move syscon remap for AP PCIv3
Lorenzo Pieralisi (1):
ARM: vexpress: extend the MPIDR range used for pen release check
Luciano Coelho (1):
ARM: OMAP2+: omap4-panda: add UART2 muxing for WiLink shared transport
Maxime Ripard (1):
ARM: sunxi: Use the Synosys APB UART instead of ns8250
Nicolas Ferre (2):
ARM: at91/at91_dt_defconfig: remove memory specification to cmdline
ARM: at91/at91_dt_defconfig: add at91sam9n12 SoC to DT defconfig
Olof Johansson (10):
Merge tag 'mvebu_fixes_for_v3.8-rc3' of git://git.infradead.org/users/jcooper/linux into fixes
Merge tag 'imx-fixes-3.8-2' of git://git.linaro.org/people/shawnguo/linux-2.6 into fixes
Merge tag 'sunxi-fixes-for-3.8-rc4' of git://github.com/mripard/linux into fixes
Merge branch 'v3.8-samsung-fixes-3' of git://git.kernel.org/.../kgene/linux-samsung into fixes
Merge tag 'imx-fixes-rc' of git://git.pengutronix.de/git/imx/linux-2.6 into fixes
Merge tag 'omap-for-v3.8-rc4/fixes-signed' of git://git.kernel.org/.../tmlind/linux-omap into fixes
Merge tag 'mvebu_fixes_for_v3.8-rc5' of git://git.infradead.org/users/jcooper/linux into fixes
Merge tag 'imx-fixes-3.8-3' of git://git.linaro.org/people/shawnguo/linux-2.6 into fixes
Merge tag 'at91-fixes' of git://github.com/at91linux/linux-at91 into fixes
Merge branch 'vexpress/fixes' of git://git.linaro.org/people/pawelmoll/linux into fixes
Pantelis Antoniou (1):
ARM: OMAP2+: DT node Timer iteration fix
Pawel Moll (2):
ARM: vexpress: Enable A7 cores in V2P-CA15_A7's Device Tree
mfd: vexpress-sysreg: Don't skip initialization on probe
Peter Ujfalusi (2):
ARM: OMAP4: clock data: Lock ABE DPLL on all revisions
ARM: OMAP4: hwmod_data: Correct IDLEMODE for McPDM
Richard Genoud (3):
ARM: at91/at91-pinctrl documentation: fix typo and add some details
ARM: at91/at91sam9x5 DTS: correct wrong PIO BANK values on u(s)arts
ARM: at91/at91sam9x5 DTS: add SCK USART pins
Rob Clark (1):
ARM: OMAP2+: fix build break for omapdrm
Sascha Hauer (1):
[media] coda: Fix build due to iram.h rename
Sebastian Hesselbarth (2):
ARM: Dove: add Cubox sdhci card detect gpio
ARM: kirkwood: fix missing #interrupt-cells property
Shawn Guo (3):
ARM: imx: fix build error with !CONFIG_SMP
ARM: imx: disable cpu in .cpu_kill hook
ARM: imx: correct low-power mode setting
Simon Guinot (1):
ARM: Kirkwood: fix ns2 gpios by converting to pinctrl
Thomas Petazzoni (1):
arm: mvebu: use global interrupts for GPIOs on Armada XP
Tomasz Figa (1):
ARM: S3C64XX: Fix build error with CONFIG_S3C_DEV_FB disabled
Tony Lindgren (3):
arm: mvebu: Fix compile for multiplatform when ARMv6 is selected
Merge tag 'omap-fixes-b-for-v3.8-rc' of git://git.kernel.org/.../pjw/omap-pending into omap-for-v3.8-rc4/fixes
ARM: OMAP2+: Fix section warning for omap_init_ocp2scp()
Uwe Kleine-K?nig (1):
ARM: compile fix for DEBUG_LL=y && MMU=n
.../bindings/pinctrl/atmel,at91-pinctrl.txt | 5 +-
arch/arm/boot/dts/armada-370-db.dts | 2 +-
arch/arm/boot/dts/armada-xp-mv78230.dtsi | 14 ++--
arch/arm/boot/dts/armada-xp-mv78260.dtsi | 21 +++--
arch/arm/boot/dts/armada-xp-mv78460.dtsi | 21 +++--
arch/arm/boot/dts/at91rm9200.dtsi | 4 +-
arch/arm/boot/dts/at91sam9x5.dtsi | 60 +++++++++-----
arch/arm/boot/dts/cros5250-common.dtsi | 12 +--
arch/arm/boot/dts/dove-cubox.dts | 14 +++-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 8 +-
arch/arm/boot/dts/kirkwood-ns2-common.dtsi | 16 ++++
arch/arm/boot/dts/kirkwood.dtsi | 2 +
arch/arm/boot/dts/kizbox.dts | 2 +
arch/arm/boot/dts/sunxi.dtsi | 6 +-
arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 2 -
arch/arm/configs/at91_dt_defconfig | 3 +-
arch/arm/kernel/debug.S | 2 +
arch/arm/mach-at91/setup.c | 2 +
arch/arm/mach-imx/Kconfig | 1 +
arch/arm/mach-imx/clk-imx6q.c | 3 +
arch/arm/mach-imx/common.h | 1 +
arch/arm/mach-imx/devices/platform-imx-fb.c | 2 +-
arch/arm/mach-imx/hotplug.c | 10 ++-
arch/arm/mach-imx/iram_alloc.c | 3 +-
arch/arm/mach-imx/platsmp.c | 1 +
arch/arm/mach-imx/pm-imx6q.c | 1 +
arch/arm/mach-integrator/pci_v3.c | 14 +++-
arch/arm/mach-kirkwood/board-ns2.c | 38 ---------
arch/arm/mach-mvebu/Makefile | 2 +
arch/arm/mach-omap2/board-omap4panda.c | 6 ++
arch/arm/mach-omap2/cclock2420_data.c | 2 +
arch/arm/mach-omap2/cclock2430_data.c | 2 +
arch/arm/mach-omap2/cclock44xx_data.c | 13 ++-
arch/arm/mach-omap2/devices.c | 2 +-
arch/arm/mach-omap2/drm.c | 3 +-
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 6 +-
arch/arm/mach-omap2/timer.c | 8 +-
arch/arm/mach-s3c64xx/mach-crag6410-module.c | 2 +-
arch/arm/mach-s3c64xx/pm.c | 2 +
arch/arm/plat-versatile/headsmp.S | 2 +-
drivers/clk/mvebu/clk-cpu.c | 9 ++-
drivers/media/platform/coda.c | 2 +-
drivers/mfd/vexpress-sysreg.c | 32 +++++---
drivers/mmc/host/mvsdio.c | 92 +++++++---------------
drivers/video/imxfb.c | 13 ++-
.../linux/platform_data/imx-iram.h | 0
46 files changed, 248 insertions(+), 220 deletions(-)
rename arch/arm/mach-imx/iram.h => include/linux/platform_data/imx-iram.h (100%)
^ permalink raw reply
* [PATCH v6 00/15] KVM/ARM Implementation
From: Catalin Marinas @ 2013-01-24 16:26 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130116175716.29147.15348.stgit@ubuntu>
Hi Christoffer,
On Wed, Jan 16, 2013 at 05:57:19PM +0000, Christoffer Dall wrote:
> The following series implements KVM support for ARM processors,
> specifically on the Cortex A-15 platform.
I went through the KVM patches (just this series, not the vgic or
timers) and apart from a few minor clean-up issues (which can be done
later as an additional patch) they look fine to me.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
^ permalink raw reply
* [RFC PATCH 6/6] ARM: kirkwood: consolidate mv643xx_eth init for DT
From: Jason Cooper @ 2013-01-24 16:13 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <201301241554.28003.arnd@arndb.de>
On Thu, Jan 24, 2013 at 03:54:27PM +0000, Arnd Bergmann wrote:
> On Thursday 24 January 2013, Jason Cooper wrote:
> > I agree, however, there is a long history with that patch. That driver
> > has been in use by powerpc for many years. We need to be mindful not to
> > break existing installations. I don't think it'll be ready in time for
> > v3.9. So, I'd like to do the cleanup now.
> >
> > > [1]: http://patchwork.ozlabs.org/patch/175652/
>
> I actually think we can take that patch.
Woot!
> The result of the discussion back then was after all that we won't try
> to keep the bindings compatible, and the powerpc version just uses the
> platform_device part of the driver by fabricating platform_data from
> the arch code.
>
> It should not have any impact on this, as long as you ensure that the
> platform_data is still supported.
Ian's patch appears to do so. I'll respin this series using it vice my
lookup table.
thx,
Jason.
^ permalink raw reply
* OMAP4 randconfig failure: Zynq
From: Russell King - ARM Linux @ 2013-01-24 16:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124160609.GW23505@n2100.arm.linux.org.uk>
On Thu, Jan 24, 2013 at 04:06:09PM +0000, Russell King - ARM Linux wrote:
> On Thu, Jan 24, 2013 at 09:57:04AM -0600, Josh Cartwright wrote:
> > On Thu, Jan 24, 2013 at 11:11:17AM +0000, Russell King - ARM Linux wrote:
> > > The OMAP4 randconfig build last night failed with this error:
> > >
> > > arch/arm/mach-zynq/common.c:99:14: error: 'irqchip_init' undeclared here (not in a function)
> > >
> > > Full details at the usual place -
> > > http://www.arm.linux.org.uk/developer/build/
> >
> > Curious. This doesn't look like a valid config to me.
>
> I think you're wrong.
>
> > In particular, both ARCH_MULTIPLATFORM and ARCH_OMAP are selected, even
> > though those selections should be mutually exclusive, since they fall
> > under the same:
> >
> > choice
> > prompt "ARM system type"
> > default ARCH_MULTIPLATFORM
> >
> > Perhaps it's because CONFIG_ARCH_OMAP=y was setup in the seed?
>
> ARCH_OMAP2PLUS selects ARCH_OMAP, and ARCH_OMAP2PLUS must be enabled
> to produce a configuration including any OMAP code.
>
> > oldconfig seems to complain, too:
> >
> > .config:340:warning: override: ARCH_OMAP changes choice state
>
> Err, nope, don't get that warning.
>
> $ mkdir /tmp/build
> $ wget -O /tmp/build/.config 'http://www.arm.linux.org.uk/developer/build/file.php?type=config&idx=3562'
> $ emake -j2 O=/tmp/build/ oldconfig
> GEN /tmp/build/Makefile
> HOSTCC scripts/basic/fixdep
> HOSTCC scripts/kconfig/conf.o
> SHIPPED scripts/kconfig/zconf.tab.c
> SHIPPED scripts/kconfig/zconf.lex.c
> SHIPPED scripts/kconfig/zconf.hash.c
> HOSTCC scripts/kconfig/zconf.tab.o
> HOSTLD scripts/kconfig/conf
> scripts/kconfig/conf --oldconfig Kconfig
> #
> # configuration written to .config
> #
>
> So, the config system produced this configuration, and the config system
> believes it to be correct. The problem lies elsewhere.
>
> Clearly from the error, for a configuration for an OMAP platform to be
> errored out by a Zynq error, that means there's something that Zynq is
> missing.
And what's missing is _specific_ to Zynq. Let's look at the error again:
arch/arm/mach-zynq/common.c:99:14: error: 'irqchip_init' undeclared here (not in a function)
What it means is that the "irqchip_init" identifier was not declared by
anything before it has been used. That means arch/arm/mach-zynq/common.c
is missing a required #include statement.
irqchip_init can be found in linux/irqchip.h. Does arch/arm/mach-zynq/common.c
include this required include? No. Therefore, the build fails with the
above error.
You need to add this include file...
^ permalink raw reply
* [PATCH 3/3] ARM: shmobile: move pin configuration on armadillo800eva-reference to DT
From: Guennadi Liakhovetski @ 2013-01-24 16:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359043653-11374-1-git-send-email-g.liakhovetski@gmx.de>
Use pinctrl and sh-eth DT bindings to configure sh-eth MAC pins on
armadillo800eva in reference implementation.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
.../boot/dts/r8a7740-armadillo800eva-reference.dts | 7 +++++
.../board-armadillo800eva-reference.c | 24 --------------------
2 files changed, 7 insertions(+), 24 deletions(-)
diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
index 11cb0f9..b815ffd9 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
@@ -26,9 +26,12 @@
reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>;
interrupts = <0x500>;
phy-mode = "mii";
+ phy-reset-gpios = <&gpio 18 1>;
sh-eth,edmac-endian = "little";
sh-eth,register-type = "gigabit";
sh-eth,phy-id = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <ð_pins>;
};
reg_3p3v: regulator at 0 {
@@ -137,4 +140,8 @@
renesas,pins = "mmc0_data8_1", "mmc0_ctrl_1";
renesas,function = "mmc0";
};
+ eth_pins: pfc_eth_pins {
+ renesas,pins = "eth_base";
+ renesas,function = "eth";
+ };
};
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
index 92d7106..54ec573e 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
@@ -152,30 +152,6 @@ static void __init eva_init(void)
gpio_request(GPIO_FN_SCIFA1_RXD, NULL);
gpio_request(GPIO_FN_SCIFA1_TXD, NULL);
- /* GETHER */
- gpio_request(GPIO_FN_ET_CRS, NULL);
- gpio_request(GPIO_FN_ET_MDC, NULL);
- gpio_request(GPIO_FN_ET_MDIO, NULL);
- gpio_request(GPIO_FN_ET_TX_ER, NULL);
- gpio_request(GPIO_FN_ET_RX_ER, NULL);
- gpio_request(GPIO_FN_ET_ERXD0, NULL);
- gpio_request(GPIO_FN_ET_ERXD1, NULL);
- gpio_request(GPIO_FN_ET_ERXD2, NULL);
- gpio_request(GPIO_FN_ET_ERXD3, NULL);
- gpio_request(GPIO_FN_ET_TX_CLK, NULL);
- gpio_request(GPIO_FN_ET_TX_EN, NULL);
- gpio_request(GPIO_FN_ET_ETXD0, NULL);
- gpio_request(GPIO_FN_ET_ETXD1, NULL);
- gpio_request(GPIO_FN_ET_ETXD2, NULL);
- gpio_request(GPIO_FN_ET_ETXD3, NULL);
- gpio_request(GPIO_FN_ET_PHY_INT, NULL);
- gpio_request(GPIO_FN_ET_COL, NULL);
- gpio_request(GPIO_FN_ET_RX_DV, NULL);
- gpio_request(GPIO_FN_ET_RX_CLK, NULL);
-
- gpio_request(GPIO_PORT18, NULL); /* PHY_RST */
- gpio_direction_output(GPIO_PORT18, 1);
-
#ifdef CONFIG_CACHE_L2X0
/* Early BRESP enable, Shared attribute override enable, 32K*8way */
l2x0_init(IOMEM(0xf0002000), 0x40440000, 0x82000fff);
--
1.7.2.5
^ permalink raw reply related
* [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
From: Guennadi Liakhovetski @ 2013-01-24 16:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359043653-11374-1-git-send-email-g.liakhovetski@gmx.de>
If an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add
a binding and code to parse it, request the GPIO and take the PHY out of
reset.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: devicetree-discuss at lists.ozlabs.org
Cc: netdev at vger.kernel.org
---
Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++
drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++-
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/Documentation/devicetree/bindings/net/sh_ether.txt b/Documentation/devicetree/bindings/net/sh_ether.txt
index c11e45d..edaf683 100644
--- a/Documentation/devicetree/bindings/net/sh_ether.txt
+++ b/Documentation/devicetree/bindings/net/sh_ether.txt
@@ -12,6 +12,7 @@ Required properties:
- interrupts: Interrupt mapping for the sh_eth interrupt
sources (vector id).
- phy-mode: String, operation mode of the PHY interface.
+- phy-reset-gpios: PHY reset GPIO tuple
- sh-eth,edmac-endian: String, endian of sh_eth dmac.
- sh-eth,register-type: String, register type of sh_eth.
Please select "gigabit", "fast-sh4" or
@@ -37,6 +38,7 @@ Example (armadillo800eva):
reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>;
interrupts = <0x500>;
phy-mode = "mii";
+ phy-reset-gpios = <&gpio 18 0>;
sh-eth,edmac-endian = "little";
sh-eth,register-type = "gigabit";
sh-eth,phy-id = <0>;
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 1f64848..06035a2 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -20,6 +20,7 @@
* the file called "COPYING".
*/
+#include <linux/gpio.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
@@ -33,6 +34,7 @@
#include <linux/netdevice.h>
#include <linux/of.h>
#include <linux/of_device.h>
+#include <linux/of_gpio.h>
#include <linux/of_platform.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -2376,10 +2378,11 @@ sh_eth_of_get_register_type(struct device_node *np)
static struct sh_eth_plat_data *
sh_eth_parse_dt(struct device *dev, struct net_device *ndev)
{
- int ret;
+ int ret, gpio;
const char *of_str;
struct device_node *np = dev->of_node;
struct sh_eth_plat_data *pdata;
+ enum of_gpio_flags flags;
pdata = devm_kzalloc(dev, sizeof(struct sh_eth_plat_data),
GFP_KERNEL);
@@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct net_device *ndev)
else
pdata->needs_init = 0;
+ gpio = of_get_named_gpio_flags(np, "phy-reset-gpios", 0, &flags);
+ if (gpio_is_valid(gpio) && !devm_gpio_request(dev, gpio, NULL))
+ gpio_direction_output(gpio, !!(flags & OF_GPIO_ACTIVE_LOW));
+
#ifdef CONFIG_OF_NET
if (!is_valid_ether_addr(ndev->dev_addr)) {
const char *macaddr = of_get_mac_address(np);
--
1.7.2.5
^ permalink raw reply related
* [PATCH 1/3] pinctrl: add ethernet pin groups to r8a7740
From: Guennadi Liakhovetski @ 2013-01-24 16:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359043653-11374-1-git-send-email-g.liakhovetski@gmx.de>
r8a7740 SoCs have an integrated gigabit ethernet MAC. This patch adds two
pin groups: base for 100mbps and additional pins for the gigabit mode.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
drivers/pinctrl/sh-pfc/pfc-r8a7740.c | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7740.c b/drivers/pinctrl/sh-pfc/pfc-r8a7740.c
index 4c92af8..d7f69dd 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a7740.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a7740.c
@@ -2052,6 +2052,29 @@ static const unsigned int mmc0_ctrl_1_mux[] = {
MMC1_CMD_PORT104_MARK, MMC1_CLK_PORT103_MARK,
};
+static const unsigned int eth_base_pins[] = {
+ 203, 204, 205, 206, 207,
+ 183, 184,
+ 185, 186, 187, 188,
+ 171, 170, 169, 168,
+ 161, 163, 164, 174,
+};
+static const unsigned int eth_base_mux[] = {
+ ET_TX_ER_MARK, ET_RX_ER_MARK, ET_CRS_MARK, ET_MDC_MARK, ET_MDIO_MARK,
+ ET_TX_EN_MARK, ET_TX_CLK_MARK,
+ ET_ERXD0_MARK, ET_ERXD1_MARK, ET_ERXD2_MARK, ET_ERXD3_MARK,
+ ET_ETXD0_MARK, ET_ETXD1_MARK, ET_ETXD2_MARK, ET_ETXD3_MARK,
+ ET_RX_DV_MARK, ET_COL_MARK, ET_PHY_INT_MARK, ET_RX_CLK_MARK,
+};
+static const unsigned int eth_gbit_pins[] = {
+ 189, 190, 191, 192,
+ 167, 166, 173, 172,
+};
+static const unsigned int eth_gbit_mux[] = {
+ ET_ERXD4_MARK, ET_ERXD5_MARK, ET_ERXD6_MARK, ET_ERXD7_MARK,
+ ET_ETXD4_MARK, ET_ETXD5_MARK, ET_ETXD6_MARK, ET_ETXD7_MARK,
+};
+
static const struct sh_pfc_pin_group pinmux_groups[] = {
SH_PFC_PIN_GROUP(lcd0_data8),
SH_PFC_PIN_GROUP(lcd0_data9),
@@ -2100,6 +2123,8 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
SH_PFC_PIN_GROUP(mmc0_data4_1),
SH_PFC_PIN_GROUP(mmc0_data8_1),
SH_PFC_PIN_GROUP(mmc0_ctrl_1),
+ SH_PFC_PIN_GROUP(eth_base),
+ SH_PFC_PIN_GROUP(eth_gbit),
};
static const char * const lcd0_groups[] = {
@@ -2167,6 +2192,11 @@ static const char * const mmc0_groups[] = {
"mmc0_ctrl_1",
};
+static const char * const eth_groups[] = {
+ "eth_base",
+ "eth_gbit",
+};
+
static const struct sh_pfc_function pinmux_functions[] = {
SH_PFC_FUNCTION(lcd0),
SH_PFC_FUNCTION(lcd1),
@@ -2174,6 +2204,7 @@ static const struct sh_pfc_function pinmux_functions[] = {
SH_PFC_FUNCTION(sdhi1),
SH_PFC_FUNCTION(sdhi2),
SH_PFC_FUNCTION(mmc0),
+ SH_PFC_FUNCTION(eth),
};
#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)
--
1.7.2.5
^ permalink raw reply related
* [PATCH 0/3] ARM: shmobile: sh-eth pins in DT for armadillo800eva
From: Guennadi Liakhovetski @ 2013-01-24 16:07 UTC (permalink / raw)
To: linux-arm-kernel
This patch series gets rid of gpio_request()-style ethernet pin
configuration on armadillo800eva in reference implementation.
Guennadi Liakhovetski (3):
pinctrl: add ethernet pin groups to r8a7740
ethernet: add a PHY reset GPIO DT binding to sh_eth
ARM: shmobile: move pin configuration on armadillo800eva-reference to
DT
Documentation/devicetree/bindings/net/sh_ether.txt | 2 +
.../boot/dts/r8a7740-armadillo800eva-reference.dts | 7 ++++
.../board-armadillo800eva-reference.c | 24 ---------------
drivers/net/ethernet/renesas/sh_eth.c | 9 +++++-
drivers/pinctrl/sh-pfc/pfc-r8a7740.c | 31 ++++++++++++++++++++
5 files changed, 48 insertions(+), 25 deletions(-)
--
1.7.2.5
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
^ permalink raw reply
* OMAP4 randconfig failure: Zynq
From: Russell King - ARM Linux @ 2013-01-24 16:06 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124155704.GJ11970@beefymiracle.amer.corp.natinst.com>
On Thu, Jan 24, 2013 at 09:57:04AM -0600, Josh Cartwright wrote:
> On Thu, Jan 24, 2013 at 11:11:17AM +0000, Russell King - ARM Linux wrote:
> > The OMAP4 randconfig build last night failed with this error:
> >
> > arch/arm/mach-zynq/common.c:99:14: error: 'irqchip_init' undeclared here (not in a function)
> >
> > Full details at the usual place -
> > http://www.arm.linux.org.uk/developer/build/
>
> Curious. This doesn't look like a valid config to me.
I think you're wrong.
> In particular, both ARCH_MULTIPLATFORM and ARCH_OMAP are selected, even
> though those selections should be mutually exclusive, since they fall
> under the same:
>
> choice
> prompt "ARM system type"
> default ARCH_MULTIPLATFORM
>
> Perhaps it's because CONFIG_ARCH_OMAP=y was setup in the seed?
ARCH_OMAP2PLUS selects ARCH_OMAP, and ARCH_OMAP2PLUS must be enabled
to produce a configuration including any OMAP code.
> oldconfig seems to complain, too:
>
> .config:340:warning: override: ARCH_OMAP changes choice state
Err, nope, don't get that warning.
$ mkdir /tmp/build
$ wget -O /tmp/build/.config 'http://www.arm.linux.org.uk/developer/build/file.php?type=config&idx=3562'
$ emake -j2 O=/tmp/build/ oldconfig
GEN /tmp/build/Makefile
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --oldconfig Kconfig
#
# configuration written to .config
#
So, the config system produced this configuration, and the config system
believes it to be correct. The problem lies elsewhere.
Clearly from the error, for a configuration for an OMAP platform to be
errored out by a Zynq error, that means there's something that Zynq is
missing.
^ permalink raw reply
* [PATCH 1/1] ARM: ux500: Fix u9540 booting issues
From: Linus Walleij @ 2013-01-24 16:06 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1354008890-10476-1-git-send-email-lee.jones@linaro.org>
On Tue, Nov 27, 2012 at 10:34 AM, Lee Jones <lee.jones@linaro.org> wrote:
> The u9540 stopped booting after the v3.7 merge window due to
> a lack of common clk support and early PRCMU initialisation.
> In this patch we rectify these issues, placing the u9540
> development board back into a successfully booting state.
>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Applied to my ux500-fixes branch, will go into ARM SoC
pull request RealSoonNow.
Yours,
Linus Walleij
^ permalink raw reply
* [PATCH v6 01/15] ARM: Add page table and page defines needed by KVM
From: Christoffer Dall @ 2013-01-24 16:05 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124113935.GA1658@localhost.cambridge.arm.com>
On Thu, Jan 24, 2013 at 6:39 AM, Catalin Marinas
<catalin.marinas@arm.com> wrote:
> Hi Christoffer,
>
> On Wed, Jan 16, 2013 at 05:57:26PM +0000, Christoffer Dall wrote:
>> diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h
>> index a3f3792..6ef8afd 100644
>> --- a/arch/arm/include/asm/pgtable-3level.h
>> +++ b/arch/arm/include/asm/pgtable-3level.h
>> @@ -104,11 +104,29 @@
>> */
>> #define L_PGD_SWAPPER (_AT(pgdval_t, 1) << 55) /* swapper_pg_dir entry */
>>
>> +/*
>> + * 2nd stage PTE definitions for LPAE.
>> + */
>> +#define L_PTE_S2_MT_UNCACHED (_AT(pteval_t, 0x5) << 2) /* MemAttr[3:0] */
>> +#define L_PTE_S2_MT_WRITETHROUGH (_AT(pteval_t, 0xa) << 2) /* MemAttr[3:0] */
>> +#define L_PTE_S2_MT_WRITEBACK (_AT(pteval_t, 0xf) << 2) /* MemAttr[3:0] */
>> +#define L_PTE_S2_RDONLY (_AT(pteval_t, 1) << 6) /* HAP[1] */
>> +#define L_PTE_S2_RDWR (_AT(pteval_t, 2) << 6) /* HAP[2:1] */
>
> Why is this called L_PTE_S2_RDWR? The ARM ARM shows HAP[2:1] as 0b11 for
> read/write and 0b10 for WRONLY.
>
it should be
+#define L_PTE_S2_RDWR (_AT(pteval_t, 3) << 6) /* HAP[2:1] */
>> --- a/arch/arm/include/asm/pgtable.h
>> +++ b/arch/arm/include/asm/pgtable.h
>> @@ -70,6 +70,9 @@ extern void __pgd_error(const char *file, int line, pgd_t);
>>
>> extern pgprot_t pgprot_user;
>> extern pgprot_t pgprot_kernel;
>> +extern pgprot_t pgprot_hyp_device;
>> +extern pgprot_t pgprot_s2;
>> +extern pgprot_t pgprot_s2_device;
>>
>> #define _MOD_PROT(p, b) __pgprot(pgprot_val(p) | (b))
>>
>> @@ -82,6 +85,10 @@ extern pgprot_t pgprot_kernel;
>> #define PAGE_READONLY_EXEC _MOD_PROT(pgprot_user, L_PTE_USER | L_PTE_RDONLY)
>> #define PAGE_KERNEL _MOD_PROT(pgprot_kernel, L_PTE_XN)
>> #define PAGE_KERNEL_EXEC pgprot_kernel
>> +#define PAGE_HYP _MOD_PROT(pgprot_kernel, L_PTE_HYP)
>> +#define PAGE_HYP_DEVICE _MOD_PROT(pgprot_hyp_device, L_PTE_HYP)
>> +#define PAGE_S2 _MOD_PROT(pgprot_s2, L_PTE_S2_RDONLY)
>> +#define PAGE_S2_DEVICE _MOD_PROT(pgprot_s2_device, L_PTE_USER | L_PTE_S2_RDONLY)
>
> Are these S2 read-only by default?
>
not sure I understand what you're asking here?
^ 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