Skip to content

Commit 4f37907

Browse files
Automatic merge of 'fixes' into merge (2026-03-16 17:27)
2 parents d99768a + f338e77 commit 4f37907

96 files changed

Lines changed: 1165 additions & 685 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/devicetree/bindings/i2c/snps,designware-i2c.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
77
title: Synopsys DesignWare APB I2C Controller
88

99
maintainers:
10-
- Jarkko Nikula <jarkko.nikula@linux.intel.com>
10+
- Mika Westerberg <mika.westerberg@linux.intel.com>
1111

1212
allOf:
1313
- $ref: /schemas/i2c/i2c-controller.yaml#

Documentation/virt/kvm/api.rst

Lines changed: 117 additions & 109 deletions
Large diffs are not rendered by default.

Documentation/virt/kvm/locking.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ The acquisition orders for mutexes are as follows:
1717

1818
- kvm->lock is taken outside kvm->slots_lock and kvm->irq_lock
1919

20+
- vcpu->mutex is taken outside kvm->slots_lock and kvm->slots_arch_lock
21+
2022
- kvm->slots_lock is taken outside kvm->irq_lock, though acquiring
2123
them together is quite rare.
2224

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
VERSION = 7
33
PATCHLEVEL = 0
44
SUBLEVEL = 0
5-
EXTRAVERSION = -rc3
5+
EXTRAVERSION = -rc4
66
NAME = Baby Opossum Posse
77

88
# *DOCUMENTATION*

arch/arm64/include/asm/kvm_host.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,6 +784,9 @@ struct kvm_host_data {
784784
/* Number of debug breakpoints/watchpoints for this CPU (minus 1) */
785785
unsigned int debug_brps;
786786
unsigned int debug_wrps;
787+
788+
/* Last vgic_irq part of the AP list recorded in an LR */
789+
struct vgic_irq *last_lr_irq;
787790
};
788791

789792
struct kvm_host_psci_config {

arch/arm64/kernel/cpufeature.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2345,6 +2345,15 @@ static bool can_trap_icv_dir_el1(const struct arm64_cpu_capabilities *entry,
23452345
!is_midr_in_range_list(has_vgic_v3))
23462346
return false;
23472347

2348+
/*
2349+
* pKVM prevents late onlining of CPUs. This means that whatever
2350+
* state the capability is in after deprivilege cannot be affected
2351+
* by a new CPU booting -- this is garanteed to be a CPU we have
2352+
* already seen, and the cap is therefore unchanged.
2353+
*/
2354+
if (system_capabilities_finalized() && is_protected_kvm_enabled())
2355+
return cpus_have_final_cap(ARM64_HAS_ICH_HCR_EL2_TDIR);
2356+
23482357
if (is_kernel_in_hyp_mode())
23492358
res.a1 = read_sysreg_s(SYS_ICH_VTR_EL2);
23502359
else

arch/arm64/kvm/at.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,8 +1504,6 @@ int __kvm_at_s1e2(struct kvm_vcpu *vcpu, u32 op, u64 vaddr)
15041504
fail = true;
15051505
}
15061506

1507-
isb();
1508-
15091507
if (!fail)
15101508
par = read_sysreg_par();
15111509

arch/arm64/kvm/guest.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
#include "trace.h"
3131

32-
const struct _kvm_stats_desc kvm_vm_stats_desc[] = {
32+
const struct kvm_stats_desc kvm_vm_stats_desc[] = {
3333
KVM_GENERIC_VM_STATS()
3434
};
3535

@@ -42,7 +42,7 @@ const struct kvm_stats_header kvm_vm_stats_header = {
4242
sizeof(kvm_vm_stats_desc),
4343
};
4444

45-
const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = {
45+
const struct kvm_stats_desc kvm_vcpu_stats_desc[] = {
4646
KVM_GENERIC_VCPU_STATS(),
4747
STATS_DESC_COUNTER(VCPU, hvc_exit_stat),
4848
STATS_DESC_COUNTER(VCPU, wfe_exit_stat),

arch/arm64/kvm/hyp/nvhe/mem_protect.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range)
518518
granule = kvm_granule_size(level);
519519
cur.start = ALIGN_DOWN(addr, granule);
520520
cur.end = cur.start + granule;
521-
if (!range_included(&cur, range))
521+
if (!range_included(&cur, range) && level < KVM_PGTABLE_LAST_LEVEL)
522522
continue;
523523
*range = cur;
524524
return 0;

arch/arm64/kvm/mmu.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,6 +1751,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
17511751

17521752
force_pte = (max_map_size == PAGE_SIZE);
17531753
vma_pagesize = min_t(long, vma_pagesize, max_map_size);
1754+
vma_shift = __ffs(vma_pagesize);
17541755
}
17551756

17561757
/*
@@ -1837,10 +1838,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
18371838
if (exec_fault && s2_force_noncacheable)
18381839
ret = -ENOEXEC;
18391840

1840-
if (ret) {
1841-
kvm_release_page_unused(page);
1842-
return ret;
1843-
}
1841+
if (ret)
1842+
goto out_put_page;
18441843

18451844
/*
18461845
* Guest performs atomic/exclusive operations on memory with unsupported
@@ -1850,7 +1849,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
18501849
*/
18511850
if (esr_fsc_is_excl_atomic_fault(kvm_vcpu_get_esr(vcpu))) {
18521851
kvm_inject_dabt_excl_atomic(vcpu, kvm_vcpu_get_hfar(vcpu));
1853-
return 1;
1852+
ret = 1;
1853+
goto out_put_page;
18541854
}
18551855

18561856
if (nested)
@@ -1936,6 +1936,10 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
19361936
mark_page_dirty_in_slot(kvm, memslot, gfn);
19371937

19381938
return ret != -EAGAIN ? ret : 0;
1939+
1940+
out_put_page:
1941+
kvm_release_page_unused(page);
1942+
return ret;
19391943
}
19401944

19411945
/* Resolve the access fault by making the page young again. */

0 commit comments

Comments
 (0)