[PATCH 1/2] powerpc: export thread-tidr interfaces

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE3157d

4 messages, 2 authors, 2018-01-17 · open the first message on its own page

[PATCH 1/2] powerpc: export thread-tidr interfaces

From: Sukadev Bhattiprolu <hidden>
Date: 2018-01-17 01:50:39

Export set_thread_tidr() and clear_thread_tidr() interfaces so they
can be used by external modules.

Signed-off-by: Sukadev Bhattiprolu <redacted>
---
 arch/powerpc/kernel/process.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 2010e4c..f20c1ad 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1560,6 +1560,7 @@ void clear_thread_tidr(struct task_struct *t)
 	free_thread_tidr(t->thread.tidr);
 	t->thread.tidr = 0;
 }
+EXPORT_SYMBOL_GPL(clear_thread_tidr);
 
 void arch_release_task_struct(struct task_struct *t)
 {
@@ -1592,6 +1593,7 @@ int set_thread_tidr(struct task_struct *t)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(set_thread_tidr);
 
 #endif /* CONFIG_PPC64 */
 
-- 
2.7.4

[PATCH 2/2] powerpc: export set_thread_uses_vas()

From: Sukadev Bhattiprolu <hidden>
Date: 2018-01-17 01:50:45

Signed-off-by: Sukadev Bhattiprolu <redacted>
---
 arch/powerpc/kernel/process.c | 1 +
 1 file changed, 1 insertion(+)
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index f20c1ad..d22055b 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1475,6 +1475,7 @@ int set_thread_uses_vas(void)
 #endif /* CONFIG_PPC_BOOK3S_64 */
 	return 0;
 }
+EXPORT_SYMBOL_GPL(set_thread_uses_vas);
 
 #ifdef CONFIG_PPC64
 static DEFINE_SPINLOCK(vas_thread_id_lock);
-- 
2.7.4

Re: [PATCH 1/2] powerpc: export thread-tidr interfaces

From: Frederic Barrat <hidden>
Date: 2018-01-17 06:45:50

Hi,

quoted hunk
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 2010e4c..f20c1ad 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1560,6 +1560,7 @@ void clear_thread_tidr(struct task_struct *t)
  	free_thread_tidr(t->thread.tidr);
  	t->thread.tidr = 0;
  }
+EXPORT_SYMBOL_GPL(clear_thread_tidr);
Isn't it dangerous to export clear_thread_tidr()? Other modules may also 
have assigned the TIDR by calling set_thread_tidr(), so clearing it 
could potentially break those other modules. My understanding is that 
once the TIDR is assigned, there's no safe way to reclaim it other than 
the thread exiting. Or we would need some kind of reference counter.

quoted hunk
  void arch_release_task_struct(struct task_struct *t)
  {
@@ -1592,6 +1593,7 @@ int set_thread_tidr(struct task_struct *t)

  	return 0;
  }
+EXPORT_SYMBOL_GPL(set_thread_tidr);

FYI, there's a capi patch we hope to merge soon which is also doing this:
http://patchwork.ozlabs.org/patch/858935/

   Fred

Re: [PATCH 1/2] powerpc: export thread-tidr interfaces

From: Sukadev Bhattiprolu <hidden>
Date: 2018-01-17 17:07:32

Frederic Barrat [fbarrat@linux.vnet.ibm.com] wrote:
Hi,

quoted
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 2010e4c..f20c1ad 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1560,6 +1560,7 @@ void clear_thread_tidr(struct task_struct *t)
  	free_thread_tidr(t->thread.tidr);
  	t->thread.tidr = 0;
  }
+EXPORT_SYMBOL_GPL(clear_thread_tidr);
Isn't it dangerous to export clear_thread_tidr()? Other modules may also
have assigned the TIDR by calling set_thread_tidr(), so clearing it could
potentially break those other modules. My understanding is that once the
TIDR is assigned, there's no safe way to reclaim it other than the thread
exiting. Or we would need some kind of reference counter.
Yes the FTW driver avoids calling clear_thread_tidr() for the same reasons.
I don't have a strong case for exporting clear_thread_tidr(). Here is the
updated patch, exporting just the set_thread_tidr().

Thanks,

Sukadev
---
From 204ee3c918f8dad46c1e40d2d3730b07c10a87a3 Mon Sep 17 00:00:00 2001
From: Sukadev Bhattiprolu <redacted>
Date: Mon, 15 Jan 2018 13:43:18 -0600
Subject: [PATCH 1/2] powerpc: export set_thread_tidr()

Export set_thread_tidr() so it can be used by external modules.

Signed-off-by: Sukadev Bhattiprolu <redacted>
---
Changelog  [Frederic Barrat] Don't export clear_thread_tidr()

---
 arch/powerpc/kernel/process.c | 1 +
 1 file changed, 1 insertion(+)
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 2010e4c..20df2cb2 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1592,6 +1592,7 @@ int set_thread_tidr(struct task_struct *t)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(set_thread_tidr);
 
 #endif /* CONFIG_PPC64 */
 
-- 
1.8.3.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help