Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-18 Thread Bjorn Andersson
On Wed 18 Mar 09:45 PDT 2015, Lina Iyer wrote:

> On Wed, Mar 18 2015 at 09:56 -0600, Bjorn Andersson wrote:
> >On Thu 12 Mar 12:31 PDT 2015, Lina Iyer wrote:
> >
> >> On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
[..]
> >> >+#define QCOM_MUTEX_NUM_LOCKS 32
> >>
> >> Also, talking to Jeff it seems like that out of the 32 locks defined
> >> only 8 is accessible from Linux. So its unnecessary and probably
> >> incorrect to assume that there are 32 locks available.
> >>
> >
> >The hardware block have 32 locks and the decision regarding which locks
> >this particular Linux system is allowed to access is configuration.
> >
> Understood. But while the hardware may support it, it may be right for
> Linux to be allowed to configure, giving a false sense of number of
> locks.
> 

You're not just randomly allocating these locks, the "sense of number of
locks" is most likely carried in an Excel sheet within Qualcomm.

Obviously the number 8 is arbitrary and a change of it is a question of
"system configuration" and not a matter of changing the implementation
of this device driver.

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-18 Thread Lina Iyer

On Wed, Mar 18 2015 at 10:12 -0600, Bjorn Andersson wrote:

On Thu 12 Mar 15:29 PDT 2015, Lina Iyer wrote:


On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
>Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
>SoCs.
>
>Based on initial effort by Kumar Gala 
>
>Signed-off-by: Bjorn Andersson 
>+config HWSPINLOCK_QCOM
>+   tristate "Qualcomm Hardware Spinlock device"

Any reason, why this is tristate and not a bool?


>+   depends on ARCH_QCOM
>+   select HWSPINLOCK

select MFD_SYSCON as well, perhaps?
We seem to be dependent on it.



Right, missed that. Thanks!

Will resend with that addition.

Regards,
Bjorn


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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-18 Thread Lina Iyer

On Wed, Mar 18 2015 at 09:56 -0600, Bjorn Andersson wrote:

On Thu 12 Mar 12:31 PDT 2015, Lina Iyer wrote:


On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
>Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
>SoCs.
>
>Based on initial effort by Kumar Gala 
>
>Signed-off-by: Bjorn Andersson 
>---
>

[...]

>+#include "hwspinlock_internal.h"
>+
>+#define QCOM_MUTEX_APPS_PROC_ID1
Hi Bjorn,

Not all locks use 1 to indicate its locked. For example lock index 7 is
used by cpuidle driver between HLOS and SCM. It uses a write value of
(128 + smp_processor_id()) to lock.



In other words, it's a magic number that will make sure that not more
than one cpu enters TZ sleep code at a time.


Right, its a magic number of sorts.


A cpu acquires the remote spin lock, and calls into SCM to terminate the
power down sequence while passing the state of the L2. The lock help
guarantee the last core to hold the spinlock to have the most up to date
value for the L2 flush flag.



Yeah, I remember having to dig out the deadlock related to the
introduction of that logic on my side (turned out to have an old TZ).

There's already mutual exclusion and reference counting within TZ to
make sure we're not turning off the caches unless this is the last core
going down.


Yes, there is. But the perception of the last core in Linux and the last
core going down in TZ may be incorrect. Say for example, two cpus are
going down from linux - cpu0 & cpu1. cpu0 was the last core calling into
TZ from Linux and cpu1 had already done so. However, cpu1 started
handling an FIQ and therefore was blocked doing that while cpu0, went
through TZ. When each cpu calls into TZ, we provide the TZ with the L2
flush flag so as to allow TZ to also flush its secure lines before
powering the L2 down. The L2 flush flag that the cpu submits is its own
version of the system state. To get TZ to recognize the last valid l2
flush flag value from Linux, we need the hwmutex.


I presume that the reason behind the hwmutex logic is to make sure that
with multiple cores racing to sleep only one of them will flush the
caches in Linux and will be the last entering TZ. Can you confirm this?


Its more for passing the flush flag than flushing the cache itself per-se.


>+#define QCOM_MUTEX_NUM_LOCKS   32

Also, talking to Jeff it seems like that out of the 32 locks defined
only 8 is accessible from Linux. So its unnecessary and probably
incorrect to assume that there are 32 locks available.



The hardware block have 32 locks and the decision regarding which locks
this particular Linux system is allowed to access is configuration.


Understood. But while the hardware may support it, it may be right for
Linux to be allowed to configure, giving a false sense of number of
locks.


Regards,
Bjorn

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-18 Thread Bjorn Andersson
On Thu 12 Mar 15:29 PDT 2015, Lina Iyer wrote:

> On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
> >Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
> >SoCs.
> >
> >Based on initial effort by Kumar Gala 
> >
> >Signed-off-by: Bjorn Andersson 
> >+config HWSPINLOCK_QCOM
> >+tristate "Qualcomm Hardware Spinlock device"
> >+depends on ARCH_QCOM
> >+select HWSPINLOCK
> 
> select MFD_SYSCON as well, perhaps?
> We seem to be dependent on it.
> 

Right, missed that. Thanks!

Will resend with that addition.

Regards,
Bjorn

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-18 Thread Bjorn Andersson
On Thu 12 Mar 12:55 PDT 2015, Lina Iyer wrote:

> On Thu, Mar 12 2015 at 13:43 -0600, Andy Gross wrote:
> >On Thu, Mar 12, 2015 at 01:31:50PM -0600, Lina Iyer wrote:
> >> On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
[..]
> >> Also, talking to Jeff it seems like that out of the 32 locks defined
> >> only 8 is accessible from Linux. So its unnecessary and probably
> >> incorrect to assume that there are 32 locks available.
> >
> >Out of curiosity, this is a TZ thing?  If so, we'd expect issues if someone
> >decides to utilize resources that, while technically are present, are 
> >unusable
> >by that processor.  This is not that much different from someone 
> >misconfiguring
> >an EE on a DMA controller.
> >
> Per Jeff, the protection unit doesnt generally allow access to locks > 8
> and shouldnt be allowed and in some SoC's where they dont have the
> protection, it might still be a bad idea. It would be safer to restrict to
> 8, than allow all 32 and hope somebody doesnt do the wrong thing.
> 

You have the same problem with all peripherals that are shared between
the various subsystems; e.g. the BLSPs used by the sensor DSP shouldn't
be touched by the Linux system.

But what if Linux runs on the sensor DSP?


The driver should support the hardware and the system configuration (DT)
should make sure the valid resources are accessed.

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-18 Thread Bjorn Andersson
On Thu 12 Mar 12:31 PDT 2015, Lina Iyer wrote:

> On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
> >Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
> >SoCs.
> >
> >Based on initial effort by Kumar Gala 
> >
> >Signed-off-by: Bjorn Andersson 
> >---
> >
> 
> [...]
> 
> >+#include "hwspinlock_internal.h"
> >+
> >+#define QCOM_MUTEX_APPS_PROC_ID 1
> Hi Bjorn,
> 
> Not all locks use 1 to indicate its locked. For example lock index 7 is
> used by cpuidle driver between HLOS and SCM. It uses a write value of
> (128 + smp_processor_id()) to lock.
> 

In other words, it's a magic number that will make sure that not more
than one cpu enters TZ sleep code at a time.

> A cpu acquires the remote spin lock, and calls into SCM to terminate the
> power down sequence while passing the state of the L2. The lock help
> guarantee the last core to hold the spinlock to have the most up to date
> value for the L2 flush flag.
> 

Yeah, I remember having to dig out the deadlock related to the
introduction of that logic on my side (turned out to have an old TZ).

There's already mutual exclusion and reference counting within TZ to
make sure we're not turning off the caches unless this is the last core
going down.
I presume that the reason behind the hwmutex logic is to make sure that
with multiple cores racing to sleep only one of them will flush the
caches in Linux and will be the last entering TZ. Can you confirm this?

> >+#define QCOM_MUTEX_NUM_LOCKS32
> 
> Also, talking to Jeff it seems like that out of the 32 locks defined
> only 8 is accessible from Linux. So its unnecessary and probably
> incorrect to assume that there are 32 locks available.
> 

The hardware block have 32 locks and the decision regarding which locks
this particular Linux system is allowed to access is configuration.

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-16 Thread Jeffrey Hugo

On 2/27/2015 3:30 PM, Bjorn Andersson wrote:

Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
SoCs.

Based on initial effort by Kumar Gala 

Signed-off-by: Bjorn Andersson 
---


Reviewed-by: Jeffrey Hugo 

I don't see any reason to hold up this patch.  We can come to a 
conclusion on the number of locks and how to handle the lock 7 special 
case as an independent follow up.


Thanks sticking with this and getting it finalized.

--
Jeffrey Hugo
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora 
Forum, a Linux Foundation Collaborative Project

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-12 Thread Lina Iyer

On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:

Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
SoCs.

Based on initial effort by Kumar Gala 

Signed-off-by: Bjorn Andersson 
+config HWSPINLOCK_QCOM
+   tristate "Qualcomm Hardware Spinlock device"
+   depends on ARCH_QCOM
+   select HWSPINLOCK


select MFD_SYSCON as well, perhaps?
We seem to be dependent on it.


+   help
+ Say y here to support the Qualcomm Hardware Mutex functionality, which
+ provides a synchronisation mechanism for the various processors on
+ the SoC.
+
+ If unsure, say N.
+


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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-12 Thread Lina Iyer

On Thu, Mar 12 2015 at 13:43 -0600, Andy Gross wrote:

On Thu, Mar 12, 2015 at 01:31:50PM -0600, Lina Iyer wrote:

On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
>Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
>SoCs.
>
>Based on initial effort by Kumar Gala 
>
>Signed-off-by: Bjorn Andersson 
>---
>

[...]

>+#include "hwspinlock_internal.h"
>+
>+#define QCOM_MUTEX_APPS_PROC_ID1
Hi Bjorn,

Not all locks use 1 to indicate its locked. For example lock index 7 is
used by cpuidle driver between HLOS and SCM. It uses a write value of
(128 + smp_processor_id()) to lock.


So this was the lock_rlock_id API?


Correct.


A cpu acquires the remote spin lock, and calls into SCM to terminate the
power down sequence while passing the state of the L2. The lock help
guarantee the last core to hold the spinlock to have the most up to date
value for the L2 flush flag.

>+#define QCOM_MUTEX_NUM_LOCKS   32

Also, talking to Jeff it seems like that out of the 32 locks defined
only 8 is accessible from Linux. So its unnecessary and probably
incorrect to assume that there are 32 locks available.


Out of curiosity, this is a TZ thing?  If so, we'd expect issues if someone
decides to utilize resources that, while technically are present, are unusable
by that processor.  This is not that much different from someone misconfiguring
an EE on a DMA controller.


Per Jeff, the protection unit doesnt generally allow access to locks > 8
and shouldnt be allowed and in some SoC's where they dont have the
protection, it might still be a bad idea. It would be safer to restrict to
8, than allow all 32 and hope somebody doesnt do the wrong thing.


>+{
>+   struct regmap_field *field = lock->priv;
>+   u32 lock_owner;
>+   int ret;
>+
>+   ret = regmap_field_write(field, QCOM_MUTEX_APPS_PROC_ID);
>+   if (ret)
>+   return ret;
>+
>+   ret = regmap_field_read(field, &lock_owner);
>+   if (ret)
>+   return ret;
>+
>+   return lock_owner == QCOM_MUTEX_APPS_PROC_ID;
>+}
>+



--
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-12 Thread Andy Gross
On Thu, Mar 12, 2015 at 01:31:50PM -0600, Lina Iyer wrote:
> On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:
> >Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
> >SoCs.
> >
> >Based on initial effort by Kumar Gala 
> >
> >Signed-off-by: Bjorn Andersson 
> >---
> >
> 
> [...]
> 
> >+#include "hwspinlock_internal.h"
> >+
> >+#define QCOM_MUTEX_APPS_PROC_ID 1
> Hi Bjorn,
> 
> Not all locks use 1 to indicate its locked. For example lock index 7 is
> used by cpuidle driver between HLOS and SCM. It uses a write value of
> (128 + smp_processor_id()) to lock.

So this was the lock_rlock_id API?

> 
> A cpu acquires the remote spin lock, and calls into SCM to terminate the
> power down sequence while passing the state of the L2. The lock help
> guarantee the last core to hold the spinlock to have the most up to date
> value for the L2 flush flag.
> 
> >+#define QCOM_MUTEX_NUM_LOCKS32
> 
> Also, talking to Jeff it seems like that out of the 32 locks defined
> only 8 is accessible from Linux. So its unnecessary and probably
> incorrect to assume that there are 32 locks available.

Out of curiosity, this is a TZ thing?  If so, we'd expect issues if someone
decides to utilize resources that, while technically are present, are unusable
by that processor.  This is not that much different from someone misconfiguring
an EE on a DMA controller.

> >+{
> >+struct regmap_field *field = lock->priv;
> >+u32 lock_owner;
> >+int ret;
> >+
> >+ret = regmap_field_write(field, QCOM_MUTEX_APPS_PROC_ID);
> >+if (ret)
> >+return ret;
> >+
> >+ret = regmap_field_read(field, &lock_owner);
> >+if (ret)
> >+return ret;
> >+
> >+return lock_owner == QCOM_MUTEX_APPS_PROC_ID;
> >+}
> >+
> 

-- 
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-12 Thread Lina Iyer

On Fri, Feb 27 2015 at 15:30 -0700, Bjorn Andersson wrote:

Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
SoCs.

Based on initial effort by Kumar Gala 

Signed-off-by: Bjorn Andersson 
---



[...]


+#include "hwspinlock_internal.h"
+
+#define QCOM_MUTEX_APPS_PROC_ID1

Hi Bjorn,

Not all locks use 1 to indicate its locked. For example lock index 7 is
used by cpuidle driver between HLOS and SCM. It uses a write value of
(128 + smp_processor_id()) to lock.

A cpu acquires the remote spin lock, and calls into SCM to terminate the
power down sequence while passing the state of the L2. The lock help
guarantee the last core to hold the spinlock to have the most up to date
value for the L2 flush flag.


+#define QCOM_MUTEX_NUM_LOCKS   32


Also, talking to Jeff it seems like that out of the 32 locks defined
only 8 is accessible from Linux. So its unnecessary and probably
incorrect to assume that there are 32 locks available.

Thanks,
Lina


+{
+   struct regmap_field *field = lock->priv;
+   u32 lock_owner;
+   int ret;
+
+   ret = regmap_field_write(field, QCOM_MUTEX_APPS_PROC_ID);
+   if (ret)
+   return ret;
+
+   ret = regmap_field_read(field, &lock_owner);
+   if (ret)
+   return ret;
+
+   return lock_owner == QCOM_MUTEX_APPS_PROC_ID;
+}
+


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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW, Mutex block

2015-03-12 Thread Tim Bird


On 03/12/2015 01:16 AM, Ohad Ben-Cohen wrote:
> On Thu, Mar 12, 2015 at 12:15 AM, Andy Gross  wrote:
>> On Wed, Mar 11, 2015 at 01:42:38PM -0700, Tim Bird wrote:
>>
>> 
>>
>>> I'm pretty anxious about this one, as my current work has a dependency on 
>>> it.
>>> Virtually the entirety of the QualComm SOC work is dependent on this
>>> because it's needed by the interprocessor communication framework
>>> and the regulator driver.
>>>
>>> I assume we're waiting on the response from Ohad about getting this 
>>> upstream?
>>> It's been almost 2 weeks with no reply.
>>>
>>> Ohad - do you plan to do anything with this patch?  We seem to be at an 
>>> impasse
>>> (once again).
>>
>> With Suman's patches and this, the ball is in Ohad's court.   I believe Ohad
>> does this work in his off time as it is unpaid work.
> 
> I definitely plan to get this and Suman's work merged upstream.
> 
> As Andy mentioned I'm doing this in my off time and unfortunately this
> means I'm sometimes less available than I wish I was. Not too long ago
> this activity (as well as the maintainership of remoteproc and rpmsg)
> was graciously sponsored by one of the silicon vendors but that is no
> longer the case.
> 
> Anyway I plan to get to this in the weekend, hope to push things forward.

Thanks for the response.  It's helpful to know your status.
 -- Tim

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW, Mutex block

2015-03-12 Thread Ohad Ben-Cohen
On Thu, Mar 12, 2015 at 12:15 AM, Andy Gross  wrote:
> On Wed, Mar 11, 2015 at 01:42:38PM -0700, Tim Bird wrote:
>
> 
>
>> I'm pretty anxious about this one, as my current work has a dependency on it.
>> Virtually the entirety of the QualComm SOC work is dependent on this
>> because it's needed by the interprocessor communication framework
>> and the regulator driver.
>>
>> I assume we're waiting on the response from Ohad about getting this upstream?
>> It's been almost 2 weeks with no reply.
>>
>> Ohad - do you plan to do anything with this patch?  We seem to be at an 
>> impasse
>> (once again).
>
> With Suman's patches and this, the ball is in Ohad's court.   I believe Ohad
> does this work in his off time as it is unpaid work.

I definitely plan to get this and Suman's work merged upstream.

As Andy mentioned I'm doing this in my off time and unfortunately this
means I'm sometimes less available than I wish I was. Not too long ago
this activity (as well as the maintainership of remoteproc and rpmsg)
was graciously sponsored by one of the silicon vendors but that is no
longer the case.

Anyway I plan to get to this in the weekend, hope to push things forward.

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW, Mutex block

2015-03-11 Thread Andy Gross
On Wed, Mar 11, 2015 at 01:42:38PM -0700, Tim Bird wrote:



> I'm pretty anxious about this one, as my current work has a dependency on it.
> Virtually the entirety of the QualComm SOC work is dependent on this
> because it's needed by the interprocessor communication framework
> and the regulator driver.
> 
> I assume we're waiting on the response from Ohad about getting this upstream?
> It's been almost 2 weeks with no reply.
> 
> Ohad - do you plan to do anything with this patch?  We seem to be at an 
> impasse
> (once again).

With Suman's patches and this, the ball is in Ohad's court.   I believe Ohad
does this work in his off time as it is unpaid work.

> 
> This is the 6th attempt over the course of the last year and a half to get
> this hwspinlock code mainlined.  Should we just not use the hwspinlock
> framework?
> 
> What are our options going forward?

Not sure, aside from landing this somewhere else.  But that has it's own
inherent issues.

-- 
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW Mutex block

2015-03-11 Thread Andy Gross
On Fri, Feb 27, 2015 at 02:30:17PM -0800, Bjorn Andersson wrote:
> Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
> SoCs.
> 
> Based on initial effort by Kumar Gala 
> 
> Signed-off-by: Bjorn Andersson 

Reviewed-by: Andy Gross 

-- 
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

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


Re: [PATCH v6 2/2] hwspinlock: qcom: Add support for Qualcomm HW, Mutex block

2015-03-11 Thread Tim Bird
My apologies for the dup.  gmail somehow added html to my original message and
it got rejected by multiple maillists.

> On Fri, Feb 27, 2015 at 2:30 PM, Bjorn Andersson 
>  wrote:
> 
> Add driver for Qualcomm Hardware Mutex block found in many Qualcomm
> SoCs.
> 
> Based on initial effort by Kumar Gala 
> 
> Signed-off-by: Bjorn Andersson 
> ---
> 
> As Andy Gross introduced the tcsr syscon we can no longer just ioremap the
> memory directly, so rework the driver to run ontop of syscon.
> 
> Changes since v5:
> - Dropped all but hwspinlock specific dt bindings
> - Hardcoded the number of locks (there is 32)
> - Rework to sit ontop of syscon
> 
> Changes since v4:
> - Aligned with devicetree support in hwlock framework and hence depends on [1]
> 
> Changes since v3:
> - Reverted back to getting stride from of_match, per Kumars request
> 
> Changes since v2:
> - MODULE_DEVICE_TABLE
> - Changed prefix to qcom
> - Cleaned up includes
> - Rely on reg and num-locks to figure out stride, instead of of_match data
> 
> Changes since v1:
> - Added the pm_runtime calls needed to be able to boot a kernel with
>   pm_runtime and this driver, patch from Courtney.
> - Added sfpb-mutex compatible, for re-use of the driver in family A platforms.
> - Updated formatting of DT binding documentation, while adding the extra
>   compatible.
> - Dropped Stephen Boyds Reviewed-by due to these changes.
> 
>  drivers/hwspinlock/Kconfig   |  11 +++
>  drivers/hwspinlock/Makefile  |   1 +
>  drivers/hwspinlock/qcom_hwspinlock.c | 181 
> +++
>  3 files changed, 193 insertions(+)
>  create mode 100644 drivers/hwspinlock/qcom_hwspinlock.c
> 
> diff --git a/drivers/hwspinlock/Kconfig b/drivers/hwspinlock/Kconfig
> index 3612cb5..762216d 100644
> --- a/drivers/hwspinlock/Kconfig
> +++ b/drivers/hwspinlock/Kconfig
> @@ -18,6 +18,17 @@ config HWSPINLOCK_OMAP
> 
>   If unsure, say N.
> 
> +config HWSPINLOCK_QCOM
> +   tristate "Qualcomm Hardware Spinlock device"
> +   depends on ARCH_QCOM
> +   select HWSPINLOCK
> +   help
> + Say y here to support the Qualcomm Hardware Mutex functionality, 
> which
> + provides a synchronisation mechanism for the various processors on
> + the SoC.
> +
> + If unsure, say N.
> +
>  config HSEM_U8500
> tristate "STE Hardware Semaphore functionality"
> depends on ARCH_U8500
> diff --git a/drivers/hwspinlock/Makefile b/drivers/hwspinlock/Makefile
> index 93eb64b..68f95d9 100644
> --- a/drivers/hwspinlock/Makefile
> +++ b/drivers/hwspinlock/Makefile
> @@ -4,4 +4,5 @@
> 
>  obj-$(CONFIG_HWSPINLOCK)   += hwspinlock_core.o
>  obj-$(CONFIG_HWSPINLOCK_OMAP)  += omap_hwspinlock.o
> +obj-$(CONFIG_HWSPINLOCK_QCOM)  += qcom_hwspinlock.o
>  obj-$(CONFIG_HSEM_U8500)   += u8500_hsem.o
> diff --git a/drivers/hwspinlock/qcom_hwspinlock.c
> b/drivers/hwspinlock/qcom_hwspinlock.c
> new file mode 100644
> index 000..93b62e0
> --- /dev/null
> +++ b/drivers/hwspinlock/qcom_hwspinlock.c
> @@ -0,0 +1,181 @@
> +/*
> + * Copyright (c) 2013, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2015, Sony Mobile Communications AB
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * 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.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include "hwspinlock_internal.h"
> +
> +#define QCOM_MUTEX_APPS_PROC_ID1
> +#define QCOM_MUTEX_NUM_LOCKS   32
> +
> +static int qcom_hwspinlock_trylock(struct hwspinlock *lock)
> +{
> +   struct regmap_field *field = lock->priv;
> +   u32 lock_owner;
> +   int ret;
> +
> +   ret = regmap_field_write(field, QCOM_MUTEX_APPS_PROC_ID);
> +   if (ret)
> +   return ret;
> +
> +   ret = regmap_field_read(field, &lock_owner);
> +   if (ret)
> +   return ret;
> +
> +   return lock_owner == QCOM_MUTEX_APPS_PROC_ID;
> +}
> +
> +static void qcom_hwspinlock_unlock(struct hwspinlock *lock)
> +{
> +   struct regmap_field *field = lock->priv;
> +   u32 lock_owner;
> +   int ret;
> +
> +   ret = regmap_field_read(field, &lock_owner);
> +   if (ret) {
> +   pr_err("%s: unable to query spinlock owner\n", __func__);
> +   return;
> +   }
> +
> +   if (lock_owner != QCOM_MUTEX_APPS_PROC_ID) {
> +   pr_err("%s: spinlock not owned by us (actual owner is %d)\n",
> +   __func__, lock_owner);