From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:15
Hi Paolo,
Happy New Year!
Here's a first set of fixes for 5.11, most of which are just
cleanups. I may have some more meaty stuff next week, but let's ease
back into it as gently as possible...
Please pull,
M.
The following changes since commit 3a514592b698588326924625b6948a10c35fadd5:
Merge remote-tracking branch 'origin/kvm-arm64/psci-relay' into kvmarm-master/next (2020-12-09 10:00:24 +0000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-fixes-5.11-1
for you to fetch changes up to 45ba7b195a369f35cb39094fdb32efe5908b34ad:
arm64: cpufeature: remove non-exist CONFIG_KVM_ARM_HOST (2021-01-05 13:22:07 +0000)
----------------------------------------------------------------
KVM/arm64 fixes for 5.11, take #1
- VM init cleanups
- PSCI relay cleanups
- Kill CONFIG_KVM_ARM_PMU
- Fixup __init annotations
- Fixup reg_to_encoding()
- Fix spurious PMCR_EL0 access
----------------------------------------------------------------
Alexandru Elisei (5):
KVM: Documentation: Add arm64 KVM_RUN error codes
KVM: arm64: arch_timer: Remove VGIC initialization check
KVM: arm64: Move double-checked lock to kvm_vgic_map_resources()
KVM: arm64: Update comment in kvm_vgic_map_resources()
KVM: arm64: Remove redundant call to kvm_pmu_vcpu_reset()
David Brazdil (6):
KVM: arm64: Prevent use of invalid PSCI v0.1 function IDs
KVM: arm64: Use lm_alias in nVHE-only VA conversion
KVM: arm64: Skip computing hyp VA layout for VHE
KVM: arm64: Minor cleanup of hyp variables used in host
KVM: arm64: Remove unused includes in psci-relay.c
KVM: arm64: Move skip_host_instruction to adjust_pc.h
Marc Zyngier (6):
KVM: arm64: Don't access PMCR_EL0 when no PMU is available
KVM: arm64: Declutter host PSCI 0.1 handling
KVM: arm64: Consolidate dist->ready setting into kvm_vgic_map_resources()
KVM: arm64: Fix hyp_cpu_pm_{init,exit} __init annotation
KVM: arm64: Remove spurious semicolon in reg_to_encoding()
KVM: arm64: Replace KVM_ARM_PMU with HW_PERF_EVENTS
Shannon Zhao (1):
arm64: cpufeature: remove non-exist CONFIG_KVM_ARM_HOST
Documentation/virt/kvm/api.rst | 9 ++++-
arch/arm64/include/asm/kvm_host.h | 23 ++++++++++++
arch/arm64/kernel/cpufeature.c | 2 +-
arch/arm64/kernel/smp.c | 2 +-
arch/arm64/kvm/Kconfig | 8 ----
arch/arm64/kvm/Makefile | 2 +-
arch/arm64/kvm/arch_timer.c | 7 ++--
arch/arm64/kvm/arm.c | 32 +++++++++-------
arch/arm64/kvm/hyp/include/hyp/adjust_pc.h | 9 +++++
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 12 +-----
arch/arm64/kvm/hyp/nvhe/hyp-smp.c | 6 +--
arch/arm64/kvm/hyp/nvhe/psci-relay.c | 59 +++++++++++-------------------
arch/arm64/kvm/pmu-emul.c | 2 -
arch/arm64/kvm/sys_regs.c | 6 ++-
arch/arm64/kvm/va_layout.c | 7 ++--
arch/arm64/kvm/vgic/vgic-init.c | 11 +++++-
arch/arm64/kvm/vgic/vgic-v2.c | 20 +++-------
arch/arm64/kvm/vgic/vgic-v3.c | 21 +++--------
include/kvm/arm_pmu.h | 2 +-
19 files changed, 122 insertions(+), 118 deletions(-)
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:14
We reset the guest's view of PMCR_EL0 unconditionally, based on
the host's view of this register. It is however legal for an
implementation not to provide any PMU, resulting in an UNDEF.
The obvious fix is to skip the reset of this shadow register
when no PMU is available, sidestepping the issue entirely.
If no PMU is available, the guest is not able to request
a virtual PMU anyway, so not doing nothing is the right thing
to do!
It is unlikely that this bug can hit any HW implementation
though, as they all provide a PMU. It has been found using nested
virt with the host KVM not implementing the PMU itself.
Fixes: ab9468340d2bc ("arm64: KVM: Add access handler for PMCR register")
Reviewed-by: Alexandru Elisei <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201210083059.1277162-1-maz@kernel.org
---
arch/arm64/kvm/sys_regs.c | 4 ++++
1 file changed, 4 insertions(+)
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:14
From: David Brazdil <redacted>
PSCI driver exposes a struct containing the PSCI v0.1 function IDs
configured in the DT. However, the struct does not convey the
information whether these were set from DT or contain the default value
zero. This could be a problem for PSCI proxy in KVM protected mode.
Extend config passed to KVM with a bit mask with individual bits set
depending on whether the corresponding function pointer in psci_ops is
set, eg. set bit for PSCI_CPU_SUSPEND if psci_ops.cpu_suspend != NULL.
Previously config was split into multiple global variables. Put
everything into a single struct for convenience.
Reported-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: David Brazdil <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201208142452.87237-2-dbrazdil@google.com
---
arch/arm64/include/asm/kvm_host.h | 20 +++++++++++
arch/arm64/kvm/arm.c | 14 +++++---
arch/arm64/kvm/hyp/nvhe/psci-relay.c | 53 +++++++++++++++++++++-------
3 files changed, 70 insertions(+), 17 deletions(-)
@@ -240,6 +241,25 @@ struct kvm_host_data {structkvm_pmu_eventspmu_events;};+#define KVM_HOST_PSCI_0_1_CPU_SUSPEND BIT(0)+#define KVM_HOST_PSCI_0_1_CPU_ON BIT(1)+#define KVM_HOST_PSCI_0_1_CPU_OFF BIT(2)+#define KVM_HOST_PSCI_0_1_MIGRATE BIT(3)++structkvm_host_psci_config{+/* PSCI version used by host. */+u32version;++/* Function IDs used by host if version is v0.1. */+structpsci_0_1_function_idsfunction_ids_0_1;++/* Bitmask of functions enabled for v0.1, bits KVM_HOST_PSCI_0_1_*. */+unsignedintenabled_functions_0_1;+};++externstructkvm_host_psci_configkvm_nvhe_sym(kvm_host_psci_config);+#define kvm_host_psci_config CHOOSE_NVHE_SYM(kvm_host_psci_config)+structvcpu_reset_state{unsignedlongpc;unsignedlongr0;
@@ -22,9 +22,8 @@ void kvm_hyp_cpu_resume(unsigned long r0);void__noreturn__host_enter(structkvm_cpu_context*host_ctxt);/* Config options set by the host. */-__ro_after_initu32kvm_host_psci_version;-__ro_after_initstructpsci_0_1_function_idskvm_host_psci_0_1_function_ids;-__ro_after_inits64hyp_physvirt_offset;+structkvm_host_psci_config__ro_after_initkvm_host_psci_config;+s64__ro_after_inithyp_physvirt_offset;#define __hyp_pa(x) ((phys_addr_t)((x)) + hyp_physvirt_offset)
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:14
From: David Brazdil <redacted>
Computing the hyp VA layout is redundant when the kernel runs in EL2 and
hyp shares its VA mappings. Make calling kvm_compute_layout()
conditional on not just CONFIG_KVM but also !is_kernel_in_hyp_mode().
Signed-off-by: David Brazdil <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201208142452.87237-4-dbrazdil@google.com
---
arch/arm64/kernel/smp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -434,7 +434,7 @@ static void __init hyp_mode_check(void)"CPU: CPUs started in inconsistent modes");elsepr_info("CPU: All CPU(s) started at EL1\n");-if(IS_ENABLED(CONFIG_KVM))+if(IS_ENABLED(CONFIG_KVM)&&!is_kernel_in_hyp_mode())kvm_compute_layout();}
--
2.29.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:15
From: David Brazdil <redacted>
init_hyp_physvirt_offset() computes PA from a kernel VA. Conversion to
kernel linear-map is required first but the code used kvm_ksym_ref() for
this purpose. Under VHE that is a NOP and resulted in a runtime warning.
Replace kvm_ksym_ref with lm_alias.
Reported-by: Qian Cai <redacted>
Signed-off-by: David Brazdil <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201208142452.87237-3-dbrazdil@google.com
---
arch/arm64/kvm/va_layout.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -42,7 +42,7 @@ static void init_hyp_physvirt_offset(void)u64kern_va,hyp_va;/* Compute the offset from the hyp VA and PA of a random symbol. */-kern_va=(u64)kvm_ksym_ref(__hyp_text_start);+kern_va=(u64)lm_alias(__hyp_text_start);hyp_va=__early_kern_hyp_va(kern_va);CHOOSE_NVHE_SYM(hyp_physvirt_offset)=(s64)__pa(kern_va)-(s64)hyp_va;}
--
2.29.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:18
From: David Brazdil <redacted>
Move function for skipping host instruction in the host trap handler to
a header file containing analogical helpers for guests.
Signed-off-by: David Brazdil <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201208142452.87237-7-dbrazdil@google.com
---
arch/arm64/kvm/hyp/include/hyp/adjust_pc.h | 9 +++++++++
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 12 ++----------
2 files changed, 11 insertions(+), 10 deletions(-)
@@ -170,11 +165,8 @@ static void handle_host_smc(struct kvm_cpu_context *host_ctxt)if(!handled)default_host_smc_handler(host_ctxt);-/*-*UnlikeHVC,thereturnaddressofanSMCistheinstruction'sPC.-*Movethereturnaddresspasttheinstruction.-*/-skip_host_instruction();+/* SMC was trapped, move ELR past the current PC. */+kvm_skip_host_instr();}voidhandle_trap(structkvm_cpu_context*host_ctxt)
--
2.29.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:26
From: David Brazdil <redacted>
Small cleanup moving declarations of hyp-exported variables to
kvm_host.h and using macros to avoid having to refer to them with
kvm_nvhe_sym() in host.
No functional change intended.
Signed-off-by: David Brazdil <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201208142452.87237-5-dbrazdil@google.com
---
arch/arm64/include/asm/kvm_host.h | 6 ++++++
arch/arm64/kvm/arm.c | 4 +---
arch/arm64/kvm/hyp/nvhe/hyp-smp.c | 6 +++---
arch/arm64/kvm/va_layout.c | 5 ++---
4 files changed, 12 insertions(+), 9 deletions(-)
@@ -34,17 +34,16 @@ static u64 __early_kern_hyp_va(u64 addr)}/*-*StoreahypVA<->PAoffsetintoahyp-ownedvariable.+*StoreahypVA<->PAoffsetintoaEL2-ownedvariable.*/staticvoidinit_hyp_physvirt_offset(void){-externs64kvm_nvhe_sym(hyp_physvirt_offset);u64kern_va,hyp_va;/* Compute the offset from the hyp VA and PA of a random symbol. */kern_va=(u64)lm_alias(__hyp_text_start);hyp_va=__early_kern_hyp_va(kern_va);-CHOOSE_NVHE_SYM(hyp_physvirt_offset)=(s64)__pa(kern_va)-(s64)hyp_va;+hyp_physvirt_offset=(s64)__pa(kern_va)-(s64)hyp_va;}/*
--
2.29.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:27
From: Alexandru Elisei <redacted>
The API documentation states that general error codes are not detailed, but
errors with specific meanings are. On arm64, KVM_RUN can return error
numbers with a different meaning than what is described by POSIX or the C99
standard (as taken from man 3 errno).
Absent from the newly documented error codes is ERANGE which can be
returned when making a change to the EL2 stage 1 tables if the address is
larger than the largest supported input address. Assuming no bugs in the
implementation, that is not possible because the input addresses which are
mapped are the result of applying the macro kern_hyp_va() on kernel virtual
addresses.
CC: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexandru Elisei <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201201150157.223625-2-alexandru.elisei@arm.com
---
Documentation/virt/kvm/api.rst | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
@@ -380,9 +380,14 @@ This ioctl is obsolete and has been removed. Errors:- ===== =============================+ ======= ============================================================== EINTR an unmasked signal is pending- ===== =============================+ ENOEXEC the vcpu hasn't been initialized or the guest tried to execute+ instructions from device memory (arm64)+ ENOSYS data abort outside memslots with no syndrome info and+ KVM_CAP_ARM_NISV_TO_USER not enabled (arm64)+ EPERM SVE feature set but not finalized (arm64)+ ======= ============================================================== This ioctl is used to run a guest virtual cpu. While there are no explicit parameters, there is an implicit parameter block that can be
--
2.29.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:23:38
Although there is nothing wrong with the current host PSCI relay
implementation, we can clean it up and remove some of the helpers
that do not improve the overall readability of the legacy PSCI 0.1
handling.
Opportunity is taken to turn the bitmap into a set of booleans,
and creative use of preprocessor macros make init and check
more concise/readable.
Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
arch/arm64/include/asm/kvm_host.h | 11 ++--
arch/arm64/kvm/arm.c | 12 +++--
arch/arm64/kvm/hyp/nvhe/psci-relay.c | 77 +++++++---------------------
3 files changed, 30 insertions(+), 70 deletions(-)
@@ -241,11 +241,6 @@ struct kvm_host_data {structkvm_pmu_eventspmu_events;};-#define KVM_HOST_PSCI_0_1_CPU_SUSPEND BIT(0)-#define KVM_HOST_PSCI_0_1_CPU_ON BIT(1)-#define KVM_HOST_PSCI_0_1_CPU_OFF BIT(2)-#define KVM_HOST_PSCI_0_1_MIGRATE BIT(3)-structkvm_host_psci_config{/* PSCI version used by host. */u32version;
@@ -253,8 +248,10 @@ struct kvm_host_psci_config {/* Function IDs used by host if version is v0.1. */structpsci_0_1_function_idsfunction_ids_0_1;-/* Bitmask of functions enabled for v0.1, bits KVM_HOST_PSCI_0_1_*. */-unsignedintenabled_functions_0_1;+boolpsci_0_1_cpu_suspend_implemented;+boolpsci_0_1_cpu_on_implemented;+boolpsci_0_1_cpu_off_implemented;+boolpsci_0_1_migrate_implemented;};externstructkvm_host_psci_configkvm_nvhe_sym(kvm_host_psci_config);
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:51:26
From: Alexandru Elisei <redacted>
KVM_ARM_VCPU_INIT ioctl calls kvm_reset_vcpu(), which in turn resets the
PMU with a call to kvm_pmu_vcpu_reset(). The function zeroes the PMU
chained counters bitmap and stops all the counters with a perf event
attached. Because it is called before the VCPU has had the chance to run,
no perf events are in use and none are released.
kvm_arm_pmu_v3_enable(), called by kvm_vcpu_first_run_init() only if the
VCPU has been initialized, also resets the PMU. kvm_pmu_vcpu_reset() in
this case does the exact same thing as the previous call, so remove it.
Signed-off-by: Alexandru Elisei <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201201150157.223625-6-alexandru.elisei@arm.com
---
arch/arm64/kvm/pmu-emul.c | 2 --
1 file changed, 2 deletions(-)
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:51:26
From: Alexandru Elisei <redacted>
vgic_v3_map_resources() returns -EBUSY if the VGIC isn't initialized,
update the comment to kvm_vgic_map_resources() to match what the function
does.
Signed-off-by: Alexandru Elisei <redacted>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201201150157.223625-5-alexandru.elisei@arm.com
---
arch/arm64/kvm/vgic/vgic-init.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:51:39
dist->ready setting is pointlessly spread across the two vgic
backends, while it could be consolidated in kvm_vgic_map_resources().
Move it there, and slightly simplify the flows in both backends.
Suggested-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
arch/arm64/kvm/vgic/vgic-init.c | 2 ++
arch/arm64/kvm/vgic/vgic-v2.c | 17 ++++++-----------
arch/arm64/kvm/vgic/vgic-v3.c | 18 ++++++------------
3 files changed, 14 insertions(+), 23 deletions(-)
@@ -309,14 +309,12 @@ int vgic_v2_map_resources(struct kvm *kvm)if(IS_VGIC_ADDR_UNDEF(dist->vgic_dist_base)||IS_VGIC_ADDR_UNDEF(dist->vgic_cpu_base)){kvm_err("Need to set vgic cpu and dist addresses first\n");-ret=-ENXIO;-gotoout;+return-ENXIO;}if(!vgic_v2_check_base(dist->vgic_dist_base,dist->vgic_cpu_base)){kvm_err("VGIC CPU and dist frames overlap\n");-ret=-EINVAL;-gotoout;+return-EINVAL;}/*
@@ -326,13 +324,13 @@ int vgic_v2_map_resources(struct kvm *kvm)ret=vgic_init(kvm);if(ret){kvm_err("Unable to initialize VGIC dynamic data structures\n");-gotoout;+returnret;}ret=vgic_register_dist_iodev(kvm,dist->vgic_dist_base,VGIC_V2);if(ret){kvm_err("Unable to register VGIC MMIO regions\n");-gotoout;+returnret;}if(!static_branch_unlikely(&vgic_v2_cpuif_trap)){
@@ -341,14 +339,11 @@ int vgic_v2_map_resources(struct kvm *kvm)KVM_VGIC_V2_CPU_SIZE,true);if(ret){kvm_err("Unable to remap VGIC CPU to VCPU\n");-gotoout;+returnret;}}-dist->ready=true;--out:-returnret;+return0;}DEFINE_STATIC_KEY_FALSE(vgic_v2_cpuif_trap);
@@ -505,21 +505,18 @@ int vgic_v3_map_resources(struct kvm *kvm)if(IS_VGIC_ADDR_UNDEF(vgic_cpu->rd_iodev.base_addr)){kvm_debug("vcpu %d redistributor base not set\n",c);-ret=-ENXIO;-gotoout;+return-ENXIO;}}if(IS_VGIC_ADDR_UNDEF(dist->vgic_dist_base)){kvm_err("Need to set vgic distributor addresses first\n");-ret=-ENXIO;-gotoout;+return-ENXIO;}if(!vgic_v3_check_base(kvm)){kvm_err("VGIC redist and dist frames overlap\n");-ret=-EINVAL;-gotoout;+return-EINVAL;}/*
@@ -527,22 +524,19 @@ int vgic_v3_map_resources(struct kvm *kvm)*theVGICbeforeweneedtouseit.*/if(!vgic_initialized(kvm)){-ret=-EBUSY;-gotoout;+return-EBUSY;}ret=vgic_register_dist_iodev(kvm,dist->vgic_dist_base,VGIC_V3);if(ret){kvm_err("Unable to register VGICv3 dist MMIO regions\n");-gotoout;+returnret;}if(kvm_vgic_global_state.has_gicv4_1)vgic_v4_configure_vsgis(kvm);-dist->ready=true;-out:-returnret;+return0;}DEFINE_STATIC_KEY_FALSE(vgic_v3_cpuif_trap);
--
2.29.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:52:03
Although not a problem right now, it flared up while working
on some other aspects of the code-base. Remove the useless
semicolon.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
arch/arm64/kvm/sys_regs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:52:11
From: Alexandru Elisei <redacted>
kvm_vgic_map_resources() is called when a VCPU if first run and it maps all
the VGIC MMIO regions. To prevent double-initialization, the VGIC uses the
ready variable to keep track of the state of resources and the global KVM
mutex to protect against concurrent accesses. After the lock is taken, the
variable is checked again in case another VCPU took the lock between the
current VCPU reading ready equals false and taking the lock.
The double-checked lock pattern is spread across four different functions:
in kvm_vcpu_first_run_init(), in kvm_vgic_map_resource() and in
vgic_{v2,v3}_map_resources(), which makes it hard to reason about and
introduces minor code duplication. Consolidate the checks in
kvm_vgic_map_resources(), where the lock is taken.
No functional change intended.
Signed-off-by: Alexandru Elisei <redacted>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201201150157.223625-4-alexandru.elisei@arm.com
---
arch/arm64/kvm/arm.c | 8 +++-----
arch/arm64/kvm/vgic/vgic-init.c | 6 ++++++
arch/arm64/kvm/vgic/vgic-v2.c | 3 ---
arch/arm64/kvm/vgic/vgic-v3.c | 3 ---
4 files changed, 9 insertions(+), 11 deletions(-)
@@ -306,9 +306,6 @@ int vgic_v2_map_resources(struct kvm *kvm)structvgic_dist*dist=&kvm->arch.vgic;intret=0;-if(vgic_ready(kvm))-gotoout;-if(IS_VGIC_ADDR_UNDEF(dist->vgic_dist_base)||IS_VGIC_ADDR_UNDEF(dist->vgic_cpu_base)){kvm_err("Need to set vgic cpu and dist addresses first\n");
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:52:15
KVM_ARM_PMU only existed for the benefit of 32bit ARM hosts,
and makes no sense now that we are 64bit only. Get rid of it.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
arch/arm64/kvm/Kconfig | 8 --------
arch/arm64/kvm/Makefile | 2 +-
include/kvm/arm_pmu.h | 2 +-
3 files changed, 2 insertions(+), 10 deletions(-)
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:52:38
From: Alexandru Elisei <redacted>
kvm_timer_enable() is called in kvm_vcpu_first_run_init() after
kvm_vgic_map_resources() if the VGIC wasn't ready. kvm_vgic_map_resources()
is the only place where kvm->arch.vgic.ready is set to true.
For a v2 VGIC, kvm_vgic_map_resources() will attempt to initialize the VGIC
and set the initialized flag.
For a v3 VGIC, kvm_vgic_map_resources() will return an error code if the
VGIC isn't already initialized.
The end result is that if we've reached kvm_timer_enable(), the VGIC is
initialzed and ready and vgic_initialized() will always be true, so remove
this check.
Signed-off-by: Alexandru Elisei <redacted>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
[maz: added comment about vgic initialisation, as suggested by Eric]
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201201150157.223625-3-alexandru.elisei@arm.com
---
arch/arm64/kvm/arch_timer.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
From: Marc Zyngier <maz@kernel.org> Date: 2021-01-07 11:52:59
The __init annotations on hyp_cpu_pm_{init,exit} are obviously incorrect,
and the build system shouts at you if you enable DEBUG_SECTION_MISMATCH.
Nothing really bad happens as we never execute that code outside of the
init context, but we can't label the callers as __int either, as kvm_init
isn't __init itself. Oh well.
Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Nathan Chancellor <redacted>
Link: https://lore.kernel.org/r/20201223120854.255347-1-maz@kernel.org
---
arch/arm64/kvm/arm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Looks like there are issues with the upstream changes brought in by this
pull request. Unless my bisection is quick tomorrow it may not make it
into 5.11-rc3. In any case, it's in my hands.
Paolo
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Looks like there are issues with the upstream changes brought in by
this pull request. Unless my bisection is quick tomorrow it may not
make it into 5.11-rc3. In any case, it's in my hands.
I'm not sure what you mean by "upstream changes", as there is no
additional changes on top of what is describe in this pull request,
which is directly based on the tag you pulled for the merge window.
If there is an issue with any of these 18 patches themselves, please
shout as soon as you can.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Looks like there are issues with the upstream changes brought in by
this pull request. Unless my bisection is quick tomorrow it may not
make it into 5.11-rc3. In any case, it's in my hands.
I'm not sure what you mean by "upstream changes", as there is no
additional changes on top of what is describe in this pull request,
which is directly based on the tag you pulled for the merge window.
If there is an issue with any of these 18 patches themselves, please
shout as soon as you can.
You're right, it's not related to this pull request but just to Linus's
tree. It was too late yesterday, and now it's all set for sending it out.
Paolo
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel