Commit 5f53fa50 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-5.16/parisc-5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

Pull parisc fixes from Helge Deller:
 "Increase the FRAME_WARN value to avoid some new warnings which showed
  up in the Linux kernel test project, revert a patch which moved the
  _stext symbol and thus tiggered errors in the hardened usercopy
  checks, and introduce an extru_safe() assembler macro to overcome
  possible unsafe usage of the extru asm statement on 64-bit PA2.0
  machines"

* tag 'for-5.16/parisc-5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  Revert "parisc: Fix backtrace to always include init funtion names"
  parisc: Convert PTE lookup to use extru_safe() macro
  parisc: Fix extraction of hash lock bits in syscall.S
  parisc: Provide an extru_safe() macro to extract unsigned bits
  parisc: Increase FRAME_WARN to 2048 bytes on parisc
parents 29889216 98400ad7
...@@ -147,6 +147,17 @@ ...@@ -147,6 +147,17 @@
extrd,u \r, 63-(\sa), 64-(\sa), \t extrd,u \r, 63-(\sa), 64-(\sa), \t
.endm .endm
/* Extract unsigned for 32- and 64-bit
* The extru instruction leaves the most significant 32 bits of the
* target register in an undefined state on PA 2.0 systems. */
.macro extru_safe r, p, len, t
#ifdef CONFIG_64BIT
extrd,u \r, 32+(\p), \len, \t
#else
extru \r, \p, \len, \t
#endif
.endm
/* load 32-bit 'value' into 'reg' compensating for the ldil /* load 32-bit 'value' into 'reg' compensating for the ldil
* sign-extension when running in wide mode. * sign-extension when running in wide mode.
* WARNING!! neither 'value' nor 'reg' can be expressions * WARNING!! neither 'value' nor 'reg' can be expressions
......
...@@ -366,17 +366,9 @@ ...@@ -366,17 +366,9 @@
*/ */
.macro L2_ptep pmd,pte,index,va,fault .macro L2_ptep pmd,pte,index,va,fault
#if CONFIG_PGTABLE_LEVELS == 3 #if CONFIG_PGTABLE_LEVELS == 3
extru \va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index extru_safe \va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index
#else #else
# if defined(CONFIG_64BIT) extru_safe \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
extrd,u \va,63-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
#else
# if PAGE_SIZE > 4096
extru \va,31-ASM_PGDIR_SHIFT,32-ASM_PGDIR_SHIFT,\index
# else
extru \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
# endif
# endif
#endif #endif
dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */ dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */
#if CONFIG_PGTABLE_LEVELS < 3 #if CONFIG_PGTABLE_LEVELS < 3
...@@ -386,7 +378,7 @@ ...@@ -386,7 +378,7 @@
bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault
dep %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ dep %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */
SHLREG \pmd,PxD_VALUE_SHIFT,\pmd SHLREG \pmd,PxD_VALUE_SHIFT,\pmd
extru \va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index extru_safe \va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index
dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */ dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */
shladd \index,BITS_PER_PTE_ENTRY,\pmd,\pmd /* pmd is now pte */ shladd \index,BITS_PER_PTE_ENTRY,\pmd,\pmd /* pmd is now pte */
.endm .endm
......
...@@ -566,7 +566,7 @@ lws_compare_and_swap: ...@@ -566,7 +566,7 @@ lws_compare_and_swap:
ldo R%lws_lock_start(%r20), %r28 ldo R%lws_lock_start(%r20), %r28
/* Extract eight bits from r26 and hash lock (Bits 3-11) */ /* Extract eight bits from r26 and hash lock (Bits 3-11) */
extru %r26, 28, 8, %r20 extru_safe %r26, 28, 8, %r20
/* Find lock to use, the hash is either one of 0 to /* Find lock to use, the hash is either one of 0 to
15, multiplied by 16 (keep it 16-byte aligned) 15, multiplied by 16 (keep it 16-byte aligned)
...@@ -751,7 +751,7 @@ cas2_lock_start: ...@@ -751,7 +751,7 @@ cas2_lock_start:
ldo R%lws_lock_start(%r20), %r28 ldo R%lws_lock_start(%r20), %r28
/* Extract eight bits from r26 and hash lock (Bits 3-11) */ /* Extract eight bits from r26 and hash lock (Bits 3-11) */
extru %r26, 28, 8, %r20 extru_safe %r26, 28, 8, %r20
/* Find lock to use, the hash is either one of 0 to /* Find lock to use, the hash is either one of 0 to
15, multiplied by 16 (keep it 16-byte aligned) 15, multiplied by 16 (keep it 16-byte aligned)
......
...@@ -57,8 +57,6 @@ SECTIONS ...@@ -57,8 +57,6 @@ SECTIONS
{ {
. = KERNEL_BINARY_TEXT_START; . = KERNEL_BINARY_TEXT_START;
_stext = .; /* start of kernel text, includes init code & data */
__init_begin = .; __init_begin = .;
HEAD_TEXT_SECTION HEAD_TEXT_SECTION
MLONGCALL_DISCARD(INIT_TEXT_SECTION(8)) MLONGCALL_DISCARD(INIT_TEXT_SECTION(8))
...@@ -82,6 +80,7 @@ SECTIONS ...@@ -82,6 +80,7 @@ SECTIONS
/* freed after init ends here */ /* freed after init ends here */
_text = .; /* Text and read-only data */ _text = .; /* Text and read-only data */
_stext = .;
MLONGCALL_KEEP(INIT_TEXT_SECTION(8)) MLONGCALL_KEEP(INIT_TEXT_SECTION(8))
.text ALIGN(PAGE_SIZE) : { .text ALIGN(PAGE_SIZE) : {
TEXT_TEXT TEXT_TEXT
......
...@@ -346,8 +346,9 @@ config FRAME_WARN ...@@ -346,8 +346,9 @@ config FRAME_WARN
int "Warn for stack frames larger than" int "Warn for stack frames larger than"
range 0 8192 range 0 8192
default 2048 if GCC_PLUGIN_LATENT_ENTROPY default 2048 if GCC_PLUGIN_LATENT_ENTROPY
default 1536 if (!64BIT && (PARISC || XTENSA)) default 2048 if PARISC
default 1024 if (!64BIT && !PARISC) default 1536 if (!64BIT && XTENSA)
default 1024 if !64BIT
default 2048 if 64BIT default 2048 if 64BIT
help help
Tell gcc to warn at build time for stack frames larger than this. Tell gcc to warn at build time for stack frames larger than this.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment