* [PATCH 0/2] ia64: make use of new extable.h header @ 2016-08-16 15:14 Paul Gortmaker 2016-08-16 15:14 ` Paul Gortmaker 2016-08-16 15:14 ` Paul Gortmaker 0 siblings, 2 replies; 9+ messages in thread From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw) To: linux-kernel; +Cc: Paul Gortmaker We forked the exception table content out of module.h into a new extable.h file[1]. We temporarily include extable.h into the module.h itself. Now we work our way across the arch independent and arch specific files needing just exception table content, and move them off module.h and onto extable.h Once that is done, we can remove the extable.h from module.h and in doing it like this, we avoid introducing build failures into the git history. Here we move ia64 onto using the new header, and in doing so also macro-ize something in uaccess.h to make it more consistent with the rest of that file. Paul. [1] https://lkml.org/lkml/2016/7/24/224 -- Paul Gortmaker (2): ia64: macro-ize ia64_done_with_exception in asm/uaccess.h ia64: ensure exception table search users include extable.h arch/ia64/include/asm/uaccess.h | 28 ++++++++++++++-------------- arch/ia64/kernel/kprobes.c | 2 +- arch/ia64/kernel/traps.c | 3 ++- arch/ia64/kernel/unaligned.c | 1 + arch/ia64/mm/fault.c | 1 + 5 files changed, 19 insertions(+), 16 deletions(-) -- 2.8.4 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h 2016-08-16 15:14 [PATCH 0/2] ia64: make use of new extable.h header Paul Gortmaker @ 2016-08-16 15:14 ` Paul Gortmaker 2016-08-16 15:14 ` Paul Gortmaker 1 sibling, 0 replies; 9+ messages in thread From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw) To: linux-kernel; +Cc: Paul Gortmaker, Tony Luck, Fenghua Yu, linux-ia64 Most of the other C content in this file is already implemented in macro form. Doing the same for this function will allow us to get rid of the duplicated search_exception_tables prototype. We will bring it in as required via <linux/extable.h> inclusion. Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: linux-ia64@vger.kernel.org Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> --- arch/ia64/include/asm/uaccess.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h index 465c70982f40..4b52b79213a3 100644 --- a/arch/ia64/include/asm/uaccess.h +++ b/arch/ia64/include/asm/uaccess.h @@ -363,17 +363,17 @@ struct exception_table_entry { extern void ia64_handle_exception (struct pt_regs *regs, const struct exception_table_entry *e); extern const struct exception_table_entry *search_exception_tables (unsigned long addr); -static inline int -ia64_done_with_exception (struct pt_regs *regs) -{ - const struct exception_table_entry *e; - e = search_exception_tables(regs->cr_iip + ia64_psr(regs)->ri); - if (e) { - ia64_handle_exception(regs, e); - return 1; - } - return 0; -} +#define ia64_done_with_exception(regs) \ +({ \ + int __ex_ret = 0; \ + const struct exception_table_entry *e; \ + e = search_exception_tables((regs)->cr_iip + ia64_psr(regs)->ri); \ + if (e) { \ + ia64_handle_exception(regs, e); \ + __ex_ret = 1; \ + } \ + __ex_ret; \ +}) #define ARCH_HAS_TRANSLATE_MEM_PTR 1 static __inline__ void * -- 2.8.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h @ 2016-08-16 15:14 ` Paul Gortmaker 0 siblings, 0 replies; 9+ messages in thread From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw) To: linux-kernel; +Cc: Paul Gortmaker, Tony Luck, Fenghua Yu, linux-ia64 Most of the other C content in this file is already implemented in macro form. Doing the same for this function will allow us to get rid of the duplicated search_exception_tables prototype. We will bring it in as required via <linux/extable.h> inclusion. Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: linux-ia64@vger.kernel.org Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> --- arch/ia64/include/asm/uaccess.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h index 465c70982f40..4b52b79213a3 100644 --- a/arch/ia64/include/asm/uaccess.h +++ b/arch/ia64/include/asm/uaccess.h @@ -363,17 +363,17 @@ struct exception_table_entry { extern void ia64_handle_exception (struct pt_regs *regs, const struct exception_table_entry *e); extern const struct exception_table_entry *search_exception_tables (unsigned long addr); -static inline int -ia64_done_with_exception (struct pt_regs *regs) -{ - const struct exception_table_entry *e; - e = search_exception_tables(regs->cr_iip + ia64_psr(regs)->ri); - if (e) { - ia64_handle_exception(regs, e); - return 1; - } - return 0; -} +#define ia64_done_with_exception(regs) \ +({ \ + int __ex_ret = 0; \ + const struct exception_table_entry *e; \ + e = search_exception_tables((regs)->cr_iip + ia64_psr(regs)->ri); \ + if (e) { \ + ia64_handle_exception(regs, e); \ + __ex_ret = 1; \ + } \ + __ex_ret; \ +}) #define ARCH_HAS_TRANSLATE_MEM_PTR 1 static __inline__ void * -- 2.8.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h 2016-08-16 15:14 ` Paul Gortmaker @ 2016-08-17 17:15 ` Al Viro -1 siblings, 0 replies; 9+ messages in thread From: Al Viro @ 2016-08-17 17:15 UTC (permalink / raw) To: Paul Gortmaker; +Cc: linux-kernel, Tony Luck, Fenghua Yu, linux-ia64 On Tue, Aug 16, 2016 at 11:14:42AM -0400, Paul Gortmaker wrote: > Most of the other C content in this file is already implemented > in macro form. Doing the same for this function will allow us > to get rid of the duplicated search_exception_tables prototype. > We will bring it in as required via <linux/extable.h> inclusion. What is it doing in uaccess.h in the first place? ia64_done_with_exception() is used only in the guts of arch/ia64 (2 in kernel, 1 in mm), so why dump it into a widely-used header? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h @ 2016-08-17 17:15 ` Al Viro 0 siblings, 0 replies; 9+ messages in thread From: Al Viro @ 2016-08-17 17:15 UTC (permalink / raw) To: Paul Gortmaker; +Cc: linux-kernel, Tony Luck, Fenghua Yu, linux-ia64 On Tue, Aug 16, 2016 at 11:14:42AM -0400, Paul Gortmaker wrote: > Most of the other C content in this file is already implemented > in macro form. Doing the same for this function will allow us > to get rid of the duplicated search_exception_tables prototype. > We will bring it in as required via <linux/extable.h> inclusion. What is it doing in uaccess.h in the first place? ia64_done_with_exception() is used only in the guts of arch/ia64 (2 in kernel, 1 in mm), so why dump it into a widely-used header? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h 2016-08-17 17:15 ` Al Viro @ 2016-08-18 15:14 ` Paul Gortmaker -1 siblings, 0 replies; 9+ messages in thread From: Paul Gortmaker @ 2016-08-18 15:14 UTC (permalink / raw) To: Al Viro; +Cc: linux-kernel, Tony Luck, Fenghua Yu, linux-ia64 [Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h] On 17/08/2016 (Wed 18:15) Al Viro wrote: > On Tue, Aug 16, 2016 at 11:14:42AM -0400, Paul Gortmaker wrote: > > Most of the other C content in this file is already implemented > > in macro form. Doing the same for this function will allow us > > to get rid of the duplicated search_exception_tables prototype. > > We will bring it in as required via <linux/extable.h> inclusion. > > What is it doing in uaccess.h in the first place? ia64_done_with_exception() > is used only in the guts of arch/ia64 (2 in kernel, 1 in mm), so why dump it > into a widely-used header? Looking at arm and alpha, it seems there are other arch that have exception stuff in their own arch specific uaccess.h file, so I'm guessing it got there in ia64 just by happenstance of copying existing implementations. THere is a precedent for arch specific asm/exception.h -- we could create one for ia64 and move the chunks over there if folks thought that was worthwhile I suppose. Paul. -- ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h @ 2016-08-18 15:14 ` Paul Gortmaker 0 siblings, 0 replies; 9+ messages in thread From: Paul Gortmaker @ 2016-08-18 15:14 UTC (permalink / raw) To: Al Viro; +Cc: linux-kernel, Tony Luck, Fenghua Yu, linux-ia64 [Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h] On 17/08/2016 (Wed 18:15) Al Viro wrote: > On Tue, Aug 16, 2016 at 11:14:42AM -0400, Paul Gortmaker wrote: > > Most of the other C content in this file is already implemented > > in macro form. Doing the same for this function will allow us > > to get rid of the duplicated search_exception_tables prototype. > > We will bring it in as required via <linux/extable.h> inclusion. > > What is it doing in uaccess.h in the first place? ia64_done_with_exception() > is used only in the guts of arch/ia64 (2 in kernel, 1 in mm), so why dump it > into a widely-used header? Looking at arm and alpha, it seems there are other arch that have exception stuff in their own arch specific uaccess.h file, so I'm guessing it got there in ia64 just by happenstance of copying existing implementations. THere is a precedent for arch specific asm/exception.h -- we could create one for ia64 and move the chunks over there if folks thought that was worthwhile I suppose. Paul. -- ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] ia64: ensure exception table search users include extable.h 2016-08-16 15:14 [PATCH 0/2] ia64: make use of new extable.h header Paul Gortmaker @ 2016-08-16 15:14 ` Paul Gortmaker 2016-08-16 15:14 ` Paul Gortmaker 1 sibling, 0 replies; 9+ messages in thread From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw) To: linux-kernel; +Cc: Paul Gortmaker, Tony Luck, Fenghua Yu, linux-ia64 We start with a delete of a duplicate prototype in asm/uaccess.h that doesn't need to exist, as it duplicates content in extable.h and since that header is so small, there is no point trying to avoid using it. Then we make sure anyone using search_exception_tables directly or via the ia64_done_with_exception macro has included extable.h In the process, we remove an include of moduleloader.h that was apparently not really required; it would have been fetching in module.h and hence the previous location of the exception search function prototypes, but we need not rely on that anymore. Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: linux-ia64@vger.kernel.org Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> --- arch/ia64/include/asm/uaccess.h | 4 ++-- arch/ia64/kernel/kprobes.c | 2 +- arch/ia64/kernel/traps.c | 3 ++- arch/ia64/kernel/unaligned.c | 1 + arch/ia64/mm/fault.c | 1 + 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h index 4b52b79213a3..647e43d0a157 100644 --- a/arch/ia64/include/asm/uaccess.h +++ b/arch/ia64/include/asm/uaccess.h @@ -360,8 +360,8 @@ struct exception_table_entry { int fixup; /* location-relative continuation addr.; if bit 2 is set, r9 is set to 0 */ }; -extern void ia64_handle_exception (struct pt_regs *regs, const struct exception_table_entry *e); -extern const struct exception_table_entry *search_exception_tables (unsigned long addr); +extern void ia64_handle_exception(struct pt_regs *regs, + const struct exception_table_entry *e); #define ia64_done_with_exception(regs) \ ({ \ diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index c7c51445c3be..671389430e90 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c @@ -28,7 +28,7 @@ #include <linux/string.h> #include <linux/slab.h> #include <linux/preempt.h> -#include <linux/moduleloader.h> +#include <linux/extable.h> #include <linux/kdebug.h> #include <asm/pgtable.h> diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index 77edd68c5161..f36d3c9e1961 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c @@ -12,7 +12,8 @@ #include <linux/sched.h> #include <linux/tty.h> #include <linux/vt_kern.h> /* For unblank_screen() */ -#include <linux/module.h> /* for EXPORT_SYMBOL */ +#include <linux/export.h> +#include <linux/extable.h> #include <linux/hardirq.h> #include <linux/kprobes.h> #include <linux/delay.h> /* for ssleep() */ diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c index 7f0d31656b4d..7224890ea311 100644 --- a/arch/ia64/kernel/unaligned.c +++ b/arch/ia64/kernel/unaligned.c @@ -17,6 +17,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/tty.h> +#include <linux/extable.h> #include <linux/ratelimit.h> #include <asm/intrinsics.h> diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index fa6ad95e992e..702f4b0845ab 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c @@ -7,6 +7,7 @@ #include <linux/sched.h> #include <linux/kernel.h> #include <linux/mm.h> +#include <linux/extable.h> #include <linux/interrupt.h> #include <linux/kprobes.h> #include <linux/kdebug.h> -- 2.8.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] ia64: ensure exception table search users include extable.h @ 2016-08-16 15:14 ` Paul Gortmaker 0 siblings, 0 replies; 9+ messages in thread From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw) To: linux-kernel; +Cc: Paul Gortmaker, Tony Luck, Fenghua Yu, linux-ia64 We start with a delete of a duplicate prototype in asm/uaccess.h that doesn't need to exist, as it duplicates content in extable.h and since that header is so small, there is no point trying to avoid using it. Then we make sure anyone using search_exception_tables directly or via the ia64_done_with_exception macro has included extable.h In the process, we remove an include of moduleloader.h that was apparently not really required; it would have been fetching in module.h and hence the previous location of the exception search function prototypes, but we need not rely on that anymore. Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: linux-ia64@vger.kernel.org Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> --- arch/ia64/include/asm/uaccess.h | 4 ++-- arch/ia64/kernel/kprobes.c | 2 +- arch/ia64/kernel/traps.c | 3 ++- arch/ia64/kernel/unaligned.c | 1 + arch/ia64/mm/fault.c | 1 + 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h index 4b52b79213a3..647e43d0a157 100644 --- a/arch/ia64/include/asm/uaccess.h +++ b/arch/ia64/include/asm/uaccess.h @@ -360,8 +360,8 @@ struct exception_table_entry { int fixup; /* location-relative continuation addr.; if bit 2 is set, r9 is set to 0 */ }; -extern void ia64_handle_exception (struct pt_regs *regs, const struct exception_table_entry *e); -extern const struct exception_table_entry *search_exception_tables (unsigned long addr); +extern void ia64_handle_exception(struct pt_regs *regs, + const struct exception_table_entry *e); #define ia64_done_with_exception(regs) \ ({ \ diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index c7c51445c3be..671389430e90 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c @@ -28,7 +28,7 @@ #include <linux/string.h> #include <linux/slab.h> #include <linux/preempt.h> -#include <linux/moduleloader.h> +#include <linux/extable.h> #include <linux/kdebug.h> #include <asm/pgtable.h> diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index 77edd68c5161..f36d3c9e1961 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c @@ -12,7 +12,8 @@ #include <linux/sched.h> #include <linux/tty.h> #include <linux/vt_kern.h> /* For unblank_screen() */ -#include <linux/module.h> /* for EXPORT_SYMBOL */ +#include <linux/export.h> +#include <linux/extable.h> #include <linux/hardirq.h> #include <linux/kprobes.h> #include <linux/delay.h> /* for ssleep() */ diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c index 7f0d31656b4d..7224890ea311 100644 --- a/arch/ia64/kernel/unaligned.c +++ b/arch/ia64/kernel/unaligned.c @@ -17,6 +17,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/tty.h> +#include <linux/extable.h> #include <linux/ratelimit.h> #include <asm/intrinsics.h> diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index fa6ad95e992e..702f4b0845ab 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c @@ -7,6 +7,7 @@ #include <linux/sched.h> #include <linux/kernel.h> #include <linux/mm.h> +#include <linux/extable.h> #include <linux/interrupt.h> #include <linux/kprobes.h> #include <linux/kdebug.h> -- 2.8.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-08-19 3:22 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-08-16 15:14 [PATCH 0/2] ia64: make use of new extable.h header Paul Gortmaker 2016-08-16 15:14 ` [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h Paul Gortmaker 2016-08-16 15:14 ` Paul Gortmaker 2016-08-17 17:15 ` Al Viro 2016-08-17 17:15 ` Al Viro 2016-08-18 15:14 ` Paul Gortmaker 2016-08-18 15:14 ` Paul Gortmaker 2016-08-16 15:14 ` [PATCH 2/2] ia64: ensure exception table search users include extable.h Paul Gortmaker 2016-08-16 15:14 ` Paul Gortmaker
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.