Skip to contentSkip to conversation

ARM: permit relative phys-to-virt alignment of >= 2 MiB

GIT PULL Ard Biesheuvel 2 participants 6 messages Oct 28, 2020 – Nov 9, 2020

lore
Share & tools
lore
#0 lore raw

The following changes since commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec:

Linux 5.10-rc1 (2020-10-25 15:14:11 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-p2v-for-v5.11

for you to fetch changes up to 9443076e4330a14ae2c6114307668b98a8293b77:

ARM: p2v: reduce p2v alignment requirement to 2 MiB (2020-10-28 16:59:43 +0100)

Change since v1 pull request:
- rebase onto v5.10-rc1

Cc Russell King <[email protected]>
Cc Nicolas Pitre <[email protected]>
Cc Linus Walleij <[email protected]>

----------------------------------------------------------------
Implement the necessary changes in the ARM assembler boot code to permit the relative alignment of the physical and the virtual addresses of the kernel to be as little as 2 MiB, as opposed to the minimum of 16 MiB we support today.

Series was posted here, and reviewed by Nicolas Pitre and Linus Walleij:
https://lore.kernel.org/linux-arm-kernel/[email protected]/

----------------------------------------------------------------
Ard Biesheuvel (11):
ARM: p2v: fix handling of LPAE translation in BE mode
ARM: assembler: introduce adr_l, ldr_l and str_l macros
ARM: module: add support for place relative relocations
ARM: p2v: move patching code to separate assembler source file
ARM: p2v: factor out shared loop processing
ARM: p2v: factor out BE8 handling
ARM: p2v: drop redundant 'type' argument from __pv_stub
ARM: p2v: use relative references in patch site arrays
ARM: p2v: simplify __fixup_pv_table()
ARM: p2v: switch to MOVW for Thumb2 and ARM/LPAE
ARM: p2v: reduce p2v alignment requirement to 2 MiB

 arch/arm/Kconfig                 |   2 +-
 arch/arm/include/asm/assembler.h |  84 ++++++++++++++
 arch/arm/include/asm/elf.h       |   5 +
 arch/arm/include/asm/memory.h    |  57 +++++++---
 arch/arm/kernel/Makefile         |   1 +
 arch/arm/kernel/head.S           | 142 -----------------------
 arch/arm/kernel/module.c         |  20 +++-
 arch/arm/kernel/phys2virt.S      | 238 +++++++++++++++++++++++++++++++++++++++
 8 files changed, 387 insertions(+), 162 deletions(-)
 create mode 100644 arch/arm/kernel/phys2virt.S

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#1 lore raw

[GIT PULL v2 2/2] ARM assembler cleanups

The following changes since commit 9443076e4330a14ae2c6114307668b98a8293b77:

ARM: p2v: reduce p2v alignment requirement to 2 MiB (2020-10-28 16:59:43 +0100)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-adrl-replacement-for-v5.11

for you to fetch changes up to aaac3733171fca948c4fb66b78257620e3885339:

ARM: kvm: replace open coded VA->PA calculations with adr_l call (2020-10-28 17:05:40 +0100)

Change since v1 pull request:
- rebase onto v5.10-rc1 + PR 1/2

Cc Russell King <[email protected]>
Cc Nicolas Pitre <[email protected]>
Cc Linus Walleij <[email protected]>

----------------------------------------------------------------
Tidy up open coded relative references in asm

Use the newly introduced adr_l/ldr_l/str_l/mov_l assembler macros to replace open coded VA-to-PA arithmetic in various places in the code. This avoids the use of literals on v7+ CPUs, reduces the footprint of the code in most cases, and generally makes the code easier to follow.

Series was posted here, and reviewed by Nicolas Pitre:
https://lore.kernel.org/linux-arm-kernel/[email protected]/

----------------------------------------------------------------
Ard Biesheuvel (9):
ARM: efistub: replace adrl pseudo-op with adr_l macro invocation
ARM: head-common.S: use PC-relative insn sequence for __proc_info
ARM: head-common.S: use PC-relative insn sequence for idmap creation
ARM: head.S: use PC-relative insn sequence for secondary_data
ARM: kernel: use relative references for UP/SMP alternatives
ARM: head: use PC-relative insn sequence for __smp_alt
ARM: sleep.S: use PC-relative insn sequence for sleep_save_sp/mpidr_hash
ARM: head.S: use PC relative insn sequence to calculate PHYS_OFFSET
ARM: kvm: replace open coded VA->PA calculations with adr_l call

 arch/arm/boot/compressed/head.S  | 18 ++----------
 arch/arm/include/asm/assembler.h |  4 +--
 arch/arm/include/asm/processor.h |  2 +-
 arch/arm/kernel/head-common.S    | 22 ++++----------
 arch/arm/kernel/head.S           | 63 ++++++++++------------------------------
 arch/arm/kernel/hyp-stub.S       | 27 ++++++++---------
 arch/arm/kernel/sleep.S          | 19 ++++--------
 7 files changed, 44 insertions(+), 111 deletions(-)

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#2 lore raw

Re: [GIT PULL v2 2/2] ARM assembler cleanups

(to: linux+pull@)

Quoted 52 lines · Ard Biesheuvel

The following changes since commit 9443076e4330a14ae2c6114307668b98a8293b77:

ARM: p2v: reduce p2v alignment requirement to 2 MiB (2020-10-28 16:59:43 +0100)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-adrl-replacement-for-v5.11

for you to fetch changes up to aaac3733171fca948c4fb66b78257620e3885339:

ARM: kvm: replace open coded VA->PA calculations with adr_l call (2020-10-28 17:05:40 +0100)

Change since v1 pull request:
- rebase onto v5.10-rc1 + PR 1/2

Cc Russell King <[email protected]>
Cc Nicolas Pitre <[email protected]>
Cc Linus Walleij <[email protected]>

----------------------------------------------------------------
Tidy up open coded relative references in asm

Use the newly introduced adr_l/ldr_l/str_l/mov_l assembler macros to replace open coded VA-to-PA arithmetic in various places in the code. This avoids the use of literals on v7+ CPUs, reduces the footprint of the code in most cases, and generally makes the code easier to follow.

Series was posted here, and reviewed by Nicolas Pitre:
https://lore.kernel.org/linux-arm-kernel/[email protected]/

----------------------------------------------------------------
Ard Biesheuvel (9):
ARM: efistub: replace adrl pseudo-op with adr_l macro invocation
ARM: head-common.S: use PC-relative insn sequence for __proc_info
ARM: head-common.S: use PC-relative insn sequence for idmap creation
ARM: head.S: use PC-relative insn sequence for secondary_data
ARM: kernel: use relative references for UP/SMP alternatives
ARM: head: use PC-relative insn sequence for __smp_alt
ARM: sleep.S: use PC-relative insn sequence for sleep_save_sp/mpidr_hash
ARM: head.S: use PC relative insn sequence to calculate PHYS_OFFSET
ARM: kvm: replace open coded VA->PA calculations with adr_l call

 arch/arm/boot/compressed/head.S  | 18 ++----------
 arch/arm/include/asm/assembler.h |  4 +--
 arch/arm/include/asm/processor.h |  2 +-
 arch/arm/kernel/head-common.S    | 22 ++++----------
 arch/arm/kernel/head.S           | 63 ++++++++++------------------------------
 arch/arm/kernel/hyp-stub.S       | 27 ++++++++---------
 arch/arm/kernel/sleep.S          | 19 ++++--------
 7 files changed, 44 insertions(+), 111 deletions(-)
Quoted 4 lines

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#3 lore raw
In reply to Ard Biesheuvel
Quoted 43 lines · Ard Biesheuvel

The following changes since commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec:

Linux 5.10-rc1 (2020-10-25 15:14:11 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-p2v-for-v5.11

for you to fetch changes up to 9443076e4330a14ae2c6114307668b98a8293b77:

ARM: p2v: reduce p2v alignment requirement to 2 MiB (2020-10-28 16:59:43 +0100)

Change since v1 pull request:
- rebase onto v5.10-rc1

Cc Russell King <[email protected]>
Cc Nicolas Pitre <[email protected]>
Cc Linus Walleij <[email protected]>

----------------------------------------------------------------
Implement the necessary changes in the ARM assembler boot code to permit the relative alignment of the physical and the virtual addresses of the kernel to be as little as 2 MiB, as opposed to the minimum of 16 MiB we support today.

Series was posted here, and reviewed by Nicolas Pitre and Linus Walleij:
https://lore.kernel.org/linux-arm-kernel/[email protected]/

----------------------------------------------------------------
Ard Biesheuvel (11):
ARM: p2v: fix handling of LPAE translation in BE mode
ARM: assembler: introduce adr_l, ldr_l and str_l macros
ARM: module: add support for place relative relocations
ARM: p2v: move patching code to separate assembler source file
ARM: p2v: factor out shared loop processing
ARM: p2v: factor out BE8 handling
ARM: p2v: drop redundant 'type' argument from __pv_stub
ARM: p2v: use relative references in patch site arrays
ARM: p2v: simplify __fixup_pv_table()
ARM: p2v: switch to MOVW for Thumb2 and ARM/LPAE
ARM: p2v: reduce p2v alignment requirement to 2 MiB

Quoted 11 lines
 arch/arm/Kconfig                 |   2 +-
 arch/arm/include/asm/assembler.h |  84 ++++++++++++++
 arch/arm/include/asm/elf.h       |   5 +
 arch/arm/include/asm/memory.h    |  57 +++++++---
 arch/arm/kernel/Makefile         |   1 +
 arch/arm/kernel/head.S           | 142 -----------------------
 arch/arm/kernel/module.c         |  20 +++-
 arch/arm/kernel/phys2virt.S      | 238 +++++++++++++++++++++++++++++++++++++++
 8 files changed, 387 insertions(+), 162 deletions(-)
 create mode 100644 arch/arm/kernel/phys2virt.S

Ping?

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#4 lore raw
Quoted 56 lines · Ard Biesheuvel
Quoted 43 lines · Ard Biesheuvel

The following changes since commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec:

Linux 5.10-rc1 (2020-10-25 15:14:11 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-p2v-for-v5.11

for you to fetch changes up to 9443076e4330a14ae2c6114307668b98a8293b77:

ARM: p2v: reduce p2v alignment requirement to 2 MiB (2020-10-28 16:59:43 +0100)

Change since v1 pull request:
- rebase onto v5.10-rc1

Cc Russell King <[email protected]>
Cc Nicolas Pitre <[email protected]>
Cc Linus Walleij <[email protected]>

----------------------------------------------------------------
Implement the necessary changes in the ARM assembler boot code to permit the relative alignment of the physical and the virtual addresses of the kernel to be as little as 2 MiB, as opposed to the minimum of 16 MiB we support today.

Series was posted here, and reviewed by Nicolas Pitre and Linus Walleij:
https://lore.kernel.org/linux-arm-kernel/[email protected]/

----------------------------------------------------------------
Ard Biesheuvel (11):
ARM: p2v: fix handling of LPAE translation in BE mode
ARM: assembler: introduce adr_l, ldr_l and str_l macros
ARM: module: add support for place relative relocations
ARM: p2v: move patching code to separate assembler source file
ARM: p2v: factor out shared loop processing
ARM: p2v: factor out BE8 handling
ARM: p2v: drop redundant 'type' argument from __pv_stub
ARM: p2v: use relative references in patch site arrays
ARM: p2v: simplify __fixup_pv_table()
ARM: p2v: switch to MOVW for Thumb2 and ARM/LPAE
ARM: p2v: reduce p2v alignment requirement to 2 MiB

Quoted 11 lines
 arch/arm/Kconfig                 |   2 +-
 arch/arm/include/asm/assembler.h |  84 ++++++++++++++
 arch/arm/include/asm/elf.h       |   5 +
 arch/arm/include/asm/memory.h    |  57 +++++++---
 arch/arm/kernel/Makefile         |   1 +
 arch/arm/kernel/head.S           | 142 -----------------------
 arch/arm/kernel/module.c         |  20 +++-
 arch/arm/kernel/phys2virt.S      | 238 +++++++++++++++++++++++++++++++++++++++
 8 files changed, 387 insertions(+), 162 deletions(-)
 create mode 100644 arch/arm/kernel/phys2virt.S
Quoted 1 line

Ping?

Oh, you want /me/ to pull this? That's news to me, you didn't send the pull requests /to/ me, you only copied me, so they went unread.

Signature · 7 lines
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#5 lore raw
Quoted 58 lines · Russell King - ARM Linux admin
Quoted 56 lines · Ard Biesheuvel
Quoted 54 lines · Ard Biesheuvel

The following changes since commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec:

Linux 5.10-rc1 (2020-10-25 15:14:11 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-p2v-for-v5.11

for you to fetch changes up to 9443076e4330a14ae2c6114307668b98a8293b77:

ARM: p2v: reduce p2v alignment requirement to 2 MiB (2020-10-28 16:59:43 +0100)

Change since v1 pull request:
- rebase onto v5.10-rc1

Cc Russell King <[email protected]>
Cc Nicolas Pitre <[email protected]>
Cc Linus Walleij <[email protected]>

----------------------------------------------------------------
Implement the necessary changes in the ARM assembler boot code to permit the relative alignment of the physical and the virtual addresses of the kernel to be as little as 2 MiB, as opposed to the minimum of 16 MiB we support today.

Series was posted here, and reviewed by Nicolas Pitre and Linus Walleij:
https://lore.kernel.org/linux-arm-kernel/[email protected]/

----------------------------------------------------------------
Ard Biesheuvel (11):
ARM: p2v: fix handling of LPAE translation in BE mode
ARM: assembler: introduce adr_l, ldr_l and str_l macros
ARM: module: add support for place relative relocations
ARM: p2v: move patching code to separate assembler source file
ARM: p2v: factor out shared loop processing
ARM: p2v: factor out BE8 handling
ARM: p2v: drop redundant 'type' argument from __pv_stub
ARM: p2v: use relative references in patch site arrays
ARM: p2v: simplify __fixup_pv_table()
ARM: p2v: switch to MOVW for Thumb2 and ARM/LPAE
ARM: p2v: reduce p2v alignment requirement to 2 MiB

 arch/arm/Kconfig                 |   2 +-
 arch/arm/include/asm/assembler.h |  84 ++++++++++++++
 arch/arm/include/asm/elf.h       |   5 +
 arch/arm/include/asm/memory.h    |  57 +++++++---
 arch/arm/kernel/Makefile         |   1 +
 arch/arm/kernel/head.S           | 142 -----------------------
 arch/arm/kernel/module.c         |  20 +++-
 arch/arm/kernel/phys2virt.S      | 238 +++++++++++++++++++++++++++++++++++++++
 8 files changed, 387 insertions(+), 162 deletions(-)
 create mode 100644 arch/arm/kernel/phys2virt.S
Quoted 5 lines
Quoted 1 line

Ping?

Oh, you want /me/ to pull this? That's news to me, you didn't send the pull requests /to/ me, you only copied me, so they went unread.

Yep, my mistake, sorry about that.

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel