Skip to content

Commit a728036

Browse files
committed
Merge tag 'v6.12.88' into rpi-6.12.y
This is the 6.12.88 stable release
2 parents 5ee0d54 + a40f33e commit a728036

221 files changed

Lines changed: 1795 additions & 675 deletions

File tree

Some content is hidden

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

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 12
4-
SUBLEVEL = 87
4+
SUBLEVEL = 88
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

arch/arm64/include/asm/kvm_host.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1390,7 +1390,7 @@ static inline bool __vcpu_has_feature(const struct kvm_arch *ka, int feature)
13901390

13911391
#define vcpu_has_feature(v, f) __vcpu_has_feature(&(v)->kvm->arch, (f))
13921392

1393-
#define kvm_vcpu_initialized(v) vcpu_get_flag(vcpu, VCPU_INITIALIZED)
1393+
#define kvm_vcpu_initialized(v) vcpu_get_flag(v, VCPU_INITIALIZED)
13941394

13951395
int kvm_trng_call(struct kvm_vcpu *vcpu);
13961396
#ifdef CONFIG_KVM

arch/arm64/kvm/arm.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,11 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,
729729
int kvm_arch_vcpu_runnable(struct kvm_vcpu *v)
730730
{
731731
bool irq_lines = *vcpu_hcr(v) & (HCR_VI | HCR_VF);
732+
733+
irq_lines |= (!irqchip_in_kernel(v->kvm) &&
734+
(kvm_timer_should_notify_user(v) ||
735+
kvm_pmu_should_notify_user(v)));
736+
732737
return ((irq_lines || kvm_vgic_vcpu_pending_irq(v))
733738
&& !kvm_arm_vcpu_stopped(v) && !v->arch.pause);
734739
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,15 +307,15 @@ void __noreturn __pkvm_init_finalise(void)
307307
};
308308
pkvm_pgtable.mm_ops = &pkvm_pgtable_mm_ops;
309309

310-
ret = fix_host_ownership();
310+
ret = fix_hyp_pgtable_refcnt();
311311
if (ret)
312312
goto out;
313313

314-
ret = fix_hyp_pgtable_refcnt();
314+
ret = hyp_create_pcpu_fixmap();
315315
if (ret)
316316
goto out;
317317

318-
ret = hyp_create_pcpu_fixmap();
318+
ret = fix_host_ownership();
319319
if (ret)
320320
goto out;
321321

arch/arm64/kvm/vgic/vgic-mmio-v2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ static int vgic_mmio_uaccess_write_v2_misc(struct kvm_vcpu *vcpu,
9191
* migration from old kernels to new kernels with legacy
9292
* userspace.
9393
*/
94-
reg = FIELD_GET(GICD_IIDR_REVISION_MASK, reg);
94+
reg = FIELD_GET(GICD_IIDR_REVISION_MASK, val);
9595
switch (reg) {
9696
case KVM_VGIC_IMP_REV_2:
9797
case KVM_VGIC_IMP_REV_3:

arch/arm64/kvm/vgic/vgic-mmio-v3.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ static int vgic_mmio_uaccess_write_v3_misc(struct kvm_vcpu *vcpu,
167167
if ((reg ^ val) & ~GICD_IIDR_REVISION_MASK)
168168
return -EINVAL;
169169

170-
reg = FIELD_GET(GICD_IIDR_REVISION_MASK, reg);
170+
reg = FIELD_GET(GICD_IIDR_REVISION_MASK, val);
171171
switch (reg) {
172172
case KVM_VGIC_IMP_REV_2:
173173
case KVM_VGIC_IMP_REV_3:

arch/loongarch/include/asm/linkage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
9, 10, 11, 12, 13, 14, 15, 16, \
7070
17, 18, 19, 20, 21, 22, 23, 24, \
7171
25, 26, 27, 28, 29, 30, 31; \
72-
.cfi_offset \num, SC_REGS + \num * SZREG; \
72+
.cfi_offset \num, SC_REGS + \num * 8; \
7373
.endr; \
7474
\
7575
nop; \

arch/loongarch/kvm/exit.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ int kvm_emu_mmio_read(struct kvm_vcpu *vcpu, larch_inst inst)
371371
run->mmio.len = 8;
372372
break;
373373
default:
374+
ret = EMULATE_FAIL;
374375
break;
375376
}
376377
break;

arch/loongarch/kvm/interrupt.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ static unsigned int priority_to_irq[EXCCODE_INT_NUM] = {
2626
static int kvm_irq_deliver(struct kvm_vcpu *vcpu, unsigned int priority)
2727
{
2828
unsigned int irq = 0;
29+
unsigned long old, new;
2930

3031
clear_bit(priority, &vcpu->arch.irq_pending);
3132
if (priority < EXCCODE_INT_NUM)
@@ -36,7 +37,13 @@ static int kvm_irq_deliver(struct kvm_vcpu *vcpu, unsigned int priority)
3637
case INT_IPI:
3738
case INT_SWI0:
3839
case INT_SWI1:
40+
old = kvm_read_hw_gcsr(LOONGARCH_CSR_TVAL);
3941
set_gcsr_estat(irq);
42+
new = kvm_read_hw_gcsr(LOONGARCH_CSR_TVAL);
43+
44+
/* Inject TI if TVAL inverted */
45+
if (new > old)
46+
set_gcsr_estat(CPU_TIMER);
4047
break;
4148

4249
case INT_HWI0 ... INT_HWI7:
@@ -53,6 +60,7 @@ static int kvm_irq_deliver(struct kvm_vcpu *vcpu, unsigned int priority)
5360
static int kvm_irq_clear(struct kvm_vcpu *vcpu, unsigned int priority)
5461
{
5562
unsigned int irq = 0;
63+
unsigned long old, new;
5664

5765
clear_bit(priority, &vcpu->arch.irq_clear);
5866
if (priority < EXCCODE_INT_NUM)
@@ -63,7 +71,13 @@ static int kvm_irq_clear(struct kvm_vcpu *vcpu, unsigned int priority)
6371
case INT_IPI:
6472
case INT_SWI0:
6573
case INT_SWI1:
74+
old = kvm_read_hw_gcsr(LOONGARCH_CSR_TVAL);
6675
clear_gcsr_estat(irq);
76+
new = kvm_read_hw_gcsr(LOONGARCH_CSR_TVAL);
77+
78+
/* Inject TI if TVAL inverted */
79+
if (new > old)
80+
set_gcsr_estat(CPU_TIMER);
6781
break;
6882

6983
case INT_HWI0 ... INT_HWI7:

arch/loongarch/kvm/mmu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ static int kvm_flush_pte(kvm_pte_t *pte, phys_addr_t addr, kvm_ptw_ctx *ctx)
9595
else
9696
kvm->stat.pages--;
9797

98-
*pte = ctx->invalid_entry;
98+
kvm_set_pte(pte, ctx->invalid_entry);
9999

100100
return 1;
101101
}

0 commit comments

Comments
 (0)