* [GIT PULL] nommu-fixes, r7 and MPU support for 3.11
@ 2013-06-07 19:21 Jonathan Austin
2013-06-07 23:51 ` Jonathan Austin
0 siblings, 1 reply; 5+ messages in thread
From: Jonathan Austin @ 2013-06-07 19:21 UTC (permalink / raw)
To: linux-arm-kernel
Hi Russell,
Please could you pull the following changes for 3.11?
This includes the following series sent earlier to the list:
- nommu-fixes
- R7 Support
- MPU support
I've left out the ARCH_MULTIPLATFORM/!MMU stuff that Arnd and I were
discussing today until we've reached a conclusion/that's had some more
review.
This is rebased (and re-tested) on your devel-stable branch because
otherwise there were going to be conflicts with Uwe's V7M work now that
you've merged that. I've included the fix for limiting MPU to CPU_V7.
Thanks,
Jonny
-----8<-----
The following changes since commit 78ecad0183bd7e49131da2b5aa82bee017db1cf0:
Merge tag '3.10-rc2-psci-ops-11-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen into devel-stable (2013-05-22 10:53:20 +0100)
are available in the git repository at:
ssh://laogit@linux-arm.org/linux-ja.git ja-nommu-for-rmk
for you to fetch changes up to 99ec449dfcd323266fa0f3d9bf1d671755d0d784:
ARM: mpu: Ensure that MPU depends on CPU_V7 (2013-06-07 19:13:33 +0100)
----------------------------------------------------------------
Jonathan Austin (14):
ARM: nommu: Don't build smp_tlb.c for !CONFIG_MMU
ARM: nommu: add stub local_flush_bp_all() for !CONFIG_MMUU
ARM: select CPU_CPU15_MMU/MPU appropriately
ARM: add Cortex-R7 Processor Info
ARM: vexpress: Add Cortex-R Series UART, selectable via DEBUG_LL
ARM: mpu: add PMSA related registers and bitfields to existing headers
ARM: mpu: add header for MPU register layouts and region data
ARM: mpu: add early bring-up code for the ARMv7 PMSA-compliant MPU
ARM: mpu: add MPU probe and initialisation functions in C
ARM: mpu: Complete initialisation of the MPU after reaching the C-world
ARM: mpu: add MPU initialisation for secondary cores
ARM: mpu: Allow enabling of the MPU via kconfig
ARM: mpu: protect the vectors page with an MPU region
ARM: mpu: Ensure that MPU depends on CPU_V7
Will Deacon (5):
ARM: nommu: add entry point for secondary CPUs to head-nommu.S
ARM: nommu: define dummy TLB operations for nommu configurations
ARM: nommu: provide dummy cpu_switch_mm implementation
ARM: nommu: do not initialise page tables in secondary_data structure
ARM: suspend: fix CPU suspend code for !CONFIG_MMU configurations
arch/arm/Kconfig | 5 +-
arch/arm/Kconfig-nommu | 12 ++
arch/arm/Kconfig.debug | 10 +-
arch/arm/include/asm/cp15.h | 5 +
arch/arm/include/asm/cputype.h | 1 +
arch/arm/include/asm/mpu.h | 76 +++++++++++
arch/arm/include/asm/proc-fns.h | 4 +
arch/arm/include/asm/smp.h | 5 +-
arch/arm/include/asm/smp_plat.h | 4 +
arch/arm/include/asm/tlbflush.h | 25 +++-
arch/arm/include/debug/vexpress.S | 10 ++
arch/arm/kernel/Makefile | 5 +-
arch/arm/kernel/head-nommu.S | 160 ++++++++++++++++++++++-
arch/arm/kernel/signal.c | 9 +-
arch/arm/kernel/smp.c | 10 +-
arch/arm/kernel/suspend.c | 64 +++++----
arch/arm/mm/Kconfig | 3 +-
arch/arm/mm/nommu.c | 257 ++++++++++++++++++++++++++++++++++++-
arch/arm/mm/proc-v6.S | 6 +-
arch/arm/mm/proc-v7.S | 27 +++-
20 files changed, 647 insertions(+), 51 deletions(-)
create mode 100644 arch/arm/include/asm/mpu.h
^ permalink raw reply [flat|nested] 5+ messages in thread
* [GIT PULL] nommu-fixes, r7 and MPU support for 3.11
2013-06-07 19:21 [GIT PULL] nommu-fixes, r7 and MPU support for 3.11 Jonathan Austin
@ 2013-06-07 23:51 ` Jonathan Austin
2013-06-17 13:19 ` Russell King - ARM Linux
0 siblings, 1 reply; 5+ messages in thread
From: Jonathan Austin @ 2013-06-07 23:51 UTC (permalink / raw)
To: linux-arm-kernel
(Resending as I had non-public git url in previous version, sorry)
Hi Russell,
Please could you pull the following changes for 3.11?
This includes the following series sent earlier to the list:
- nommu-fixes
- R7 Support
- MPU support
I've left out the ARCH_MULTIPLATFORM/!MMU stuff that Arnd and I were
discussing today until we've reached a conclusion/that's had some more
review.
This is rebased (and re-tested) on your devel-stable branch because
otherwise there were going to be conflicts with Uwe's V7M work now that
you've merged that. I've included the fix for limiting MPU to CPU_V7.
Thanks,
Jonny
-----8<-----
The following changes since commit 78ecad0183bd7e49131da2b5aa82bee017db1cf0:
Merge tag '3.10-rc2-psci-ops-11-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen into devel-stable (2013-05-22 10:53:20 +0100)
are available in the git repository at:
git://linux-arm.org/linux-ja.git ja-nommu-for-rmk
for you to fetch changes up to 99ec449dfcd323266fa0f3d9bf1d671755d0d784:
ARM: mpu: Ensure that MPU depends on CPU_V7 (2013-06-07 19:13:33 +0100)
----------------------------------------------------------------
Jonathan Austin (14):
ARM: nommu: Don't build smp_tlb.c for !CONFIG_MMU
ARM: nommu: add stub local_flush_bp_all() for !CONFIG_MMUU
ARM: select CPU_CPU15_MMU/MPU appropriately
ARM: add Cortex-R7 Processor Info
ARM: vexpress: Add Cortex-R Series UART, selectable via DEBUG_LL
ARM: mpu: add PMSA related registers and bitfields to existing headers
ARM: mpu: add header for MPU register layouts and region data
ARM: mpu: add early bring-up code for the ARMv7 PMSA-compliant MPU
ARM: mpu: add MPU probe and initialisation functions in C
ARM: mpu: Complete initialisation of the MPU after reaching the C-world
ARM: mpu: add MPU initialisation for secondary cores
ARM: mpu: Allow enabling of the MPU via kconfig
ARM: mpu: protect the vectors page with an MPU region
ARM: mpu: Ensure that MPU depends on CPU_V7
Will Deacon (5):
ARM: nommu: add entry point for secondary CPUs to head-nommu.S
ARM: nommu: define dummy TLB operations for nommu configurations
ARM: nommu: provide dummy cpu_switch_mm implementation
ARM: nommu: do not initialise page tables in secondary_data structure
ARM: suspend: fix CPU suspend code for !CONFIG_MMU configurations
arch/arm/Kconfig | 5 +-
arch/arm/Kconfig-nommu | 12 ++
arch/arm/Kconfig.debug | 10 +-
arch/arm/include/asm/cp15.h | 5 +
arch/arm/include/asm/cputype.h | 1 +
arch/arm/include/asm/mpu.h | 76 +++++++++++
arch/arm/include/asm/proc-fns.h | 4 +
arch/arm/include/asm/smp.h | 5 +-
arch/arm/include/asm/smp_plat.h | 4 +
arch/arm/include/asm/tlbflush.h | 25 +++-
arch/arm/include/debug/vexpress.S | 10 ++
arch/arm/kernel/Makefile | 5 +-
arch/arm/kernel/head-nommu.S | 160 ++++++++++++++++++++++-
arch/arm/kernel/signal.c | 9 +-
arch/arm/kernel/smp.c | 10 +-
arch/arm/kernel/suspend.c | 64 +++++----
arch/arm/mm/Kconfig | 3 +-
arch/arm/mm/nommu.c | 257 ++++++++++++++++++++++++++++++++++++-
arch/arm/mm/proc-v6.S | 6 +-
arch/arm/mm/proc-v7.S | 27 +++-
20 files changed, 647 insertions(+), 51 deletions(-)
create mode 100644 arch/arm/include/asm/mpu.h
^ permalink raw reply [flat|nested] 5+ messages in thread
* [GIT PULL] nommu-fixes, r7 and MPU support for 3.11
2013-06-07 23:51 ` Jonathan Austin
@ 2013-06-17 13:19 ` Russell King - ARM Linux
2013-06-17 15:25 ` Jonathan Austin
0 siblings, 1 reply; 5+ messages in thread
From: Russell King - ARM Linux @ 2013-06-17 13:19 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, Jun 08, 2013 at 12:51:35AM +0100, Jonathan Austin wrote:
> This is rebased (and re-tested) on your devel-stable branch because
> otherwise there were going to be conflicts with Uwe's V7M work now that
> you've merged that. I've included the fix for limiting MPU to CPU_V7.
It looks like you have some rebasing errors:
In your 75709659007e7c33153129082bd85dfb74427078:
@@ -1414,7 +1414,8 @@ config SMP
depends on CPU_V6K || CPU_V7
depends on GENERIC_CLOCKEVENTS
depends on HAVE_SMP
- depends on MMU
+ depends on MMU || ARM_MPU
+ select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
Yet, 4c3ffffdbca2e6f6f5125fa7b149d87a13f92c94 (ARM: Push selects for TWD/SCU into
machine entries), that select was removed because it was moved elsewhere:
@@ -1400,7 +1402,6 @@ config SMP
depends on GENERIC_CLOCKEVENTS
depends on HAVE_SMP
depends on MMU
- select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
In arch/arm/include/asm/tlbflush.h:
+static inline void local_flush_tlb_all(void) { }
Yes, the lines are really that long - needlessly. What's wrong with:
+static inline void local_flush_tlb_all(void)
+{
+}
?
+ if ((cpsr & MODE32_BIT) && !IS_ENABLED(CONFIG_ARM_MPU)) {
/*
* 32-bit code can use the new high-page
- * signal return code support.
+ * signal return code support except when the MPU has
+ * protected the vectors page from PL0
Note that this means you can't support NX, because you need your stack to
be executable. You need to ensure that arm_elf_read_implies_exec()
returns appropriately for MPU (it needs to return 1 for MPU.)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [GIT PULL] nommu-fixes, r7 and MPU support for 3.11
2013-06-17 13:19 ` Russell King - ARM Linux
@ 2013-06-17 15:25 ` Jonathan Austin
2013-06-17 15:48 ` Russell King - ARM Linux
0 siblings, 1 reply; 5+ messages in thread
From: Jonathan Austin @ 2013-06-17 15:25 UTC (permalink / raw)
To: linux-arm-kernel
Hi Russell,
(Adding Will to Cc as some of this covers one of his patches)
On 17/06/13 14:19, Russell King - ARM Linux wrote:
> On Sat, Jun 08, 2013 at 12:51:35AM +0100, Jonathan Austin wrote:
>> This is rebased (and re-tested) on your devel-stable branch because
>> otherwise there were going to be conflicts with Uwe's V7M work now that
>> you've merged that. I've included the fix for limiting MPU to CPU_V7.
>
> It looks like you have some rebasing errors:
>
> In your 75709659007e7c33153129082bd85dfb74427078:
>
> @@ -1414,7 +1414,8 @@ config SMP
> depends on CPU_V6K || CPU_V7
> depends on GENERIC_CLOCKEVENTS
> depends on HAVE_SMP
> - depends on MMU
> + depends on MMU || ARM_MPU
> + select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
>
> Yet, 4c3ffffdbca2e6f6f5125fa7b149d87a13f92c94 (ARM: Push selects for TWD/SCU into
> machine entries), that select was removed because it was moved elsewhere:
>
Thanks - that's a rebase error on my part, sorry.
As this one is trivial I've pushed a v2 branch (ja-nommu-for-rmk-v2) with just this
fixed (ie I fixed up that patch). There's a properly formatted pull request at the
end of this mail.
The other two comments are addressed below...
> @@ -1400,7 +1402,6 @@ config SMP
> depends on GENERIC_CLOCKEVENTS
> depends on HAVE_SMP
> depends on MMU
> - select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
>
> In arch/arm/include/asm/tlbflush.h:
>
> +static inline void local_flush_tlb_all(void) { }
>
> Yes, the lines are really that long - needlessly. What's wrong with:
>
> +static inline void local_flush_tlb_all(void)
> +{
> +}
>
Will is the author of this patch (and is away today). From memory this
formatting was intentional in and attempt to keep the location of the
"{ }"s for all the "local_flush_tlb_* operations in the same column for
tidiness - local_flush_tlb_range() seems to be the one dictating the
longer length there.
There's a later patch from me that follows that style when adding
local_flush_bp_all() too, so if you really want to change this then I
will modify that additional patch too.
Applying your suggested format (and optimistically assuming what you see
is not mangled by our mail servers) I would end up with:
----
static inline void local_flush_tlb_all(void)
{
}
static inline void local_flush_tlb_mm(struct mm_struct *mm)
{
}
static inline void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
{
}
static inline void local_flush_tlb_kernel_page(unsigned long kaddr)
{
}
static inline void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
{
}
static inline void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
{
}
static inline void local_flush_bp_all(void)
{
}
---
which to me looks kinda chunky - but there *are* fewer long lines now...
> ?
>
> + if ((cpsr & MODE32_BIT) && !IS_ENABLED(CONFIG_ARM_MPU)) {
> /*
> * 32-bit code can use the new high-page
> - * signal return code support.
> + * signal return code support except when the MPU has
> + * protected the vectors page from PL0
>
> Note that this means you can't support NX, because you need your stack to
> be executable.
Yea, this is a downside I was aware of an am I'm prepared to deal with for now,
especially as we don't have plans to extend the MPU support to cover individual
parts of userspace processes. If someone wanted to implement that level of
fine-grained MPU control then making the vectors protection sophisticated enough
to remove this restriction is just a small part of that job...
> You need to ensure that arm_elf_read_implies_exec()
> returns appropriately for MPU (it needs to return 1 for MPU.)
>
This requirement I wasn't aware of, however. Is it still relevant when we don't have
elf support (which we don't, without an MMU?)
It looks to me like binfmt_flat never uses elf_read_implies_exec()...
Thanks. Pull request for the branched with fixed rebase issue is below.
Jonny
--------8<---------
The following changes since commit 78ecad0183bd7e49131da2b5aa82bee017db1cf0:
Merge tag '3.10-rc2-psci-ops-11-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen into devel-stable (2013-05-22 10:53:20 +0100)
are available in the git repository at:
git://linux-arm.org/linux-ja.git ja-nommu-for-rmk-v2
for you to fetch changes up to de8297765def67ec40b69522f3e405a61e0217b3:
ARM: mpu: Ensure that MPU depends on CPU_V7 (2013-06-17 15:13:18 +0100)
----------------------------------------------------------------
Jonathan Austin (14):
ARM: nommu: Don't build smp_tlb.c for !CONFIG_MMU
ARM: nommu: add stub local_flush_bp_all() for !CONFIG_MMUU
ARM: select CPU_CPU15_MMU/MPU appropriately
ARM: add Cortex-R7 Processor Info
ARM: vexpress: Add Cortex-R Series UART, selectable via DEBUG_LL
ARM: mpu: add PMSA related registers and bitfields to existing headers
ARM: mpu: add header for MPU register layouts and region data
ARM: mpu: add early bring-up code for the ARMv7 PMSA-compliant MPU
ARM: mpu: add MPU probe and initialisation functions in C
ARM: mpu: Complete initialisation of the MPU after reaching the C-world
ARM: mpu: add MPU initialisation for secondary cores
ARM: mpu: Allow enabling of the MPU via kconfig
ARM: mpu: protect the vectors page with an MPU region
ARM: mpu: Ensure that MPU depends on CPU_V7
Will Deacon (5):
ARM: nommu: add entry point for secondary CPUs to head-nommu.S
ARM: nommu: define dummy TLB operations for nommu configurations
ARM: nommu: provide dummy cpu_switch_mm implementation
ARM: nommu: do not initialise page tables in secondary_data structure
ARM: suspend: fix CPU suspend code for !CONFIG_MMU configurations
arch/arm/Kconfig | 4 +-
arch/arm/Kconfig-nommu | 12 ++
arch/arm/Kconfig.debug | 10 +-
arch/arm/include/asm/cp15.h | 5 +
arch/arm/include/asm/cputype.h | 1 +
arch/arm/include/asm/mpu.h | 76 +++++++++++
arch/arm/include/asm/proc-fns.h | 4 +
arch/arm/include/asm/smp.h | 5 +-
arch/arm/include/asm/smp_plat.h | 4 +
arch/arm/include/asm/tlbflush.h | 25 +++-
arch/arm/include/debug/vexpress.S | 10 ++
arch/arm/kernel/Makefile | 5 +-
arch/arm/kernel/head-nommu.S | 160 ++++++++++++++++++++++-
arch/arm/kernel/signal.c | 9 +-
arch/arm/kernel/smp.c | 10 +-
arch/arm/kernel/suspend.c | 64 +++++----
arch/arm/mm/Kconfig | 3 +-
arch/arm/mm/nommu.c | 257 ++++++++++++++++++++++++++++++++++++-
arch/arm/mm/proc-v6.S | 6 +-
arch/arm/mm/proc-v7.S | 27 +++-
20 files changed, 646 insertions(+), 51 deletions(-)
create mode 100644 arch/arm/include/asm/mpu.h
^ permalink raw reply [flat|nested] 5+ messages in thread
* [GIT PULL] nommu-fixes, r7 and MPU support for 3.11
2013-06-17 15:25 ` Jonathan Austin
@ 2013-06-17 15:48 ` Russell King - ARM Linux
0 siblings, 0 replies; 5+ messages in thread
From: Russell King - ARM Linux @ 2013-06-17 15:48 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Jun 17, 2013 at 04:25:13PM +0100, Jonathan Austin wrote:
> > You need to ensure that arm_elf_read_implies_exec()
> > returns appropriately for MPU (it needs to return 1 for MPU.)
> >
>
> This requirement I wasn't aware of, however. Is it still relevant when we don't have
> elf support (which we don't, without an MMU?)
>
> It looks to me like binfmt_flat never uses elf_read_implies_exec()...
Well, something needs to set READ_IMPLIES_EXEC in the personality bitmask.
It's not a biggie as the hardware doesn't honour PROT_EXEC, but it's
something to bear in mind if you ever do consider adding that support.
It's interesting that the nommu code does seem to honour READ_IMPLIES_EXEC,
but I haven't found anywhere in the nommu stuff which sets this flag..
but then I haven't looked that hard.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-06-17 15:48 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-07 19:21 [GIT PULL] nommu-fixes, r7 and MPU support for 3.11 Jonathan Austin
2013-06-07 23:51 ` Jonathan Austin
2013-06-17 13:19 ` Russell King - ARM Linux
2013-06-17 15:25 ` Jonathan Austin
2013-06-17 15:48 ` Russell King - ARM Linux
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).