On Friday 16 September 2016 03:23 PM, Nicholas Piggin wrote:
On Thu, 15 Sep 2016 18:31:54 +0530
Madhavan Srinivasan <ma...@linux.vnet.ibm.com> wrote:

Force use of soft_enabled_set() wrapper to update paca-soft_enabled
wherever possisble. Also add a new wrapper function, soft_enabled_set_return(),
added to force the paca->soft_enabled updates.

Signed-off-by: Madhavan Srinivasan <ma...@linux.vnet.ibm.com>
---
  arch/powerpc/include/asm/hw_irq.h  | 14 ++++++++++++++
  arch/powerpc/include/asm/kvm_ppc.h |  2 +-
  arch/powerpc/kernel/irq.c          |  2 +-
  arch/powerpc/kernel/setup_64.c     |  4 ++--
  arch/powerpc/kernel/time.c         |  6 +++---
  5 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/include/asm/hw_irq.h 
b/arch/powerpc/include/asm/hw_irq.h
index 8fad8c24760b..f828b8f8df02 100644
--- a/arch/powerpc/include/asm/hw_irq.h
+++ b/arch/powerpc/include/asm/hw_irq.h
@@ -53,6 +53,20 @@ static inline notrace void soft_enabled_set(unsigned long 
enable)
        : : "r" (enable), "i" (offsetof(struct paca_struct, soft_enabled)));
  }
+static inline notrace unsigned long soft_enabled_set_return(unsigned long enable)
+{
+       unsigned long flags;
+
+       asm volatile(
+               "lbz %0,%1(13); stb %2,%1(13)"
+               : "=r" (flags)
+               : "i" (offsetof(struct paca_struct, soft_enabled)),\
+                 "r" (enable)
+               : "memory");
+
+       return flags;
+}
Why do you have the "memory" clobber here while soft_enabled_set() does not?

I did change to function to include a local variable
and update the soft_enabled. But, my bad. It was in the next patch.
I should make the change here. Yes. we dont a "memory" clobber here
which is right. But, this change is not complete and I will correct it.

Maddy


Thanks,
Nick


Reply via email to