* [PATCH 0/2] Support ARMv8R
@ 2018-07-09 9:50 Vladimir Murzin
2018-07-09 9:50 ` [PATCH 1/2] ARM: NOMMU: Extend check for VBAR support Vladimir Murzin
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Vladimir Murzin @ 2018-07-09 9:50 UTC (permalink / raw)
To: linux-arm-kernel
ARMv8R brings set of new features. Some of them, like PMSAv8, have
already been merged, so these patches add missing features for bare
minimimum support of ARMv8R.
Thanks!
Vladimir Murzin (2):
ARM: NOMMU: Extend check for VBAR support
ARM: NOMMU: Allow enter in Hyp mode
arch/arm/kernel/head-nommu.S | 12 ++++++++++--
arch/arm/mm/Kconfig | 1 -
arch/arm/mm/nommu.c | 3 ++-
3 files changed, 12 insertions(+), 4 deletions(-)
--
2.0.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] ARM: NOMMU: Extend check for VBAR support
2018-07-09 9:50 [PATCH 0/2] Support ARMv8R Vladimir Murzin
@ 2018-07-09 9:50 ` Vladimir Murzin
2018-07-09 9:50 ` [PATCH 2/2] ARM: NOMMU: Allow enter in Hyp mode Vladimir Murzin
2018-07-16 9:34 ` [PATCH 0/2] Support ARMv8R Vladimir Murzin
2 siblings, 0 replies; 4+ messages in thread
From: Vladimir Murzin @ 2018-07-09 9:50 UTC (permalink / raw)
To: linux-arm-kernel
ARMv8R adds support for VBAR and updates ID_PFR1 with the new filed
Sec_frac (bits [23:20]):
Security fractional field. When the Security field is 0000, determines
the support for features from the ARMv7 Security Extensions. Permitted
values are:
0000 No features from the ARMv7 Security Extensions are implemented.
This value is not supported in ARMv8 if ID_PFR1 bits [7:4] are zero.
0001 The implementation includes the VBAR, and the TCR.PD0 and TCR.PD1
bits.
0010 As for 0001, plus the ability to access Secure or Non-secure
physical memory is supported.
All other values are reserved.
This field is only valid when ID_PFR1[7:4] == 0, otherwise it holds
the value 0000.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
---
arch/arm/mm/nommu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
index 5dd6c58..7d67c70 100644
--- a/arch/arm/mm/nommu.c
+++ b/arch/arm/mm/nommu.c
@@ -53,7 +53,8 @@ static inline bool security_extensions_enabled(void)
{
/* Check CPUID Identification Scheme before ID_PFR1 read */
if ((read_cpuid_id() & 0x000f0000) == 0x000f0000)
- return !!cpuid_feature_extract(CPUID_EXT_PFR1, 4);
+ return cpuid_feature_extract(CPUID_EXT_PFR1, 4) ||
+ cpuid_feature_extract(CPUID_EXT_PFR1, 20);
return 0;
}
--
2.0.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] ARM: NOMMU: Allow enter in Hyp mode
2018-07-09 9:50 [PATCH 0/2] Support ARMv8R Vladimir Murzin
2018-07-09 9:50 ` [PATCH 1/2] ARM: NOMMU: Extend check for VBAR support Vladimir Murzin
@ 2018-07-09 9:50 ` Vladimir Murzin
2018-07-16 9:34 ` [PATCH 0/2] Support ARMv8R Vladimir Murzin
2 siblings, 0 replies; 4+ messages in thread
From: Vladimir Murzin @ 2018-07-09 9:50 UTC (permalink / raw)
To: linux-arm-kernel
ARMv8R adds support for virtualisation extension (with some deviation
from v8A). With this patch hyp-unaware boot code can offload to kernel
setting up HYP stuff in a sane state.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
---
arch/arm/kernel/head-nommu.S | 12 ++++++++++--
arch/arm/mm/Kconfig | 1 -
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index dd546d6..7247340 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -53,7 +53,11 @@ ENTRY(stext)
THUMB(1: )
#endif
- setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode
+#ifdef CONFIG_ARM_VIRT_EXT
+ bl __hyp_stub_install
+#endif
+ @ ensure svc mode and all interrupts masked
+ safe_svcmode_maskall r9
@ and irqs disabled
#if defined(CONFIG_CPU_CP15)
mrc p15, 0, r9, c0, c0 @ get processor id
@@ -89,7 +93,11 @@ ENTRY(secondary_startup)
* the processor type - there is no need to check the machine type
* as it has already been validated by the primary processor.
*/
- setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9
+#ifdef CONFIG_ARM_VIRT_EXT
+ bl __hyp_stub_install_secondary
+#endif
+ safe_svcmode_maskall r9
+
#ifndef CONFIG_CPU_CP15
ldr r9, =CONFIG_PROCESSOR_ID
#else
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 96a7b6c..b169e58 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -702,7 +702,6 @@ config ARM_THUMBEE
config ARM_VIRT_EXT
bool
- depends on MMU
default y if CPU_V7
help
Enable the kernel to make use of the ARM Virtualization
--
2.0.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 0/2] Support ARMv8R
2018-07-09 9:50 [PATCH 0/2] Support ARMv8R Vladimir Murzin
2018-07-09 9:50 ` [PATCH 1/2] ARM: NOMMU: Extend check for VBAR support Vladimir Murzin
2018-07-09 9:50 ` [PATCH 2/2] ARM: NOMMU: Allow enter in Hyp mode Vladimir Murzin
@ 2018-07-16 9:34 ` Vladimir Murzin
2 siblings, 0 replies; 4+ messages in thread
From: Vladimir Murzin @ 2018-07-16 9:34 UTC (permalink / raw)
To: linux-arm-kernel
On 09/07/18 10:50, Vladimir Murzin wrote:
> ARMv8R brings set of new features. Some of them, like PMSAv8, have
> already been merged, so these patches add missing features for bare
> minimimum support of ARMv8R.
>
Ok for patch tracker?
> Thanks!
>
> Vladimir Murzin (2):
> ARM: NOMMU: Extend check for VBAR support
> ARM: NOMMU: Allow enter in Hyp mode
>
> arch/arm/kernel/head-nommu.S | 12 ++++++++++--
> arch/arm/mm/Kconfig | 1 -
> arch/arm/mm/nommu.c | 3 ++-
> 3 files changed, 12 insertions(+), 4 deletions(-)
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-07-16 9:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-09 9:50 [PATCH 0/2] Support ARMv8R Vladimir Murzin
2018-07-09 9:50 ` [PATCH 1/2] ARM: NOMMU: Extend check for VBAR support Vladimir Murzin
2018-07-09 9:50 ` [PATCH 2/2] ARM: NOMMU: Allow enter in Hyp mode Vladimir Murzin
2018-07-16 9:34 ` [PATCH 0/2] Support ARMv8R Vladimir Murzin
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.