Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'loongarch-fixes-6.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson

Pull LoongArch fixes from Huacai Chen:
"Fix boot failure on machines with more than 8 nodes, and fix two build
errors about KVM"

* tag 'loongarch-fixes-6.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson:
LoongArch: KVM: Add returns to SIMD stubs
LoongArch: KVM: Fix build due to API changes
LoongArch/smp: Call rcutree_report_cpu_starting() at tlb_init()

+14 -11
+2 -2
arch/loongarch/include/asm/kvm_vcpu.h
··· 60 60 void kvm_save_lsx(struct loongarch_fpu *fpu); 61 61 void kvm_restore_lsx(struct loongarch_fpu *fpu); 62 62 #else 63 - static inline int kvm_own_lsx(struct kvm_vcpu *vcpu) { } 63 + static inline int kvm_own_lsx(struct kvm_vcpu *vcpu) { return -EINVAL; } 64 64 static inline void kvm_save_lsx(struct loongarch_fpu *fpu) { } 65 65 static inline void kvm_restore_lsx(struct loongarch_fpu *fpu) { } 66 66 #endif ··· 70 70 void kvm_save_lasx(struct loongarch_fpu *fpu); 71 71 void kvm_restore_lasx(struct loongarch_fpu *fpu); 72 72 #else 73 - static inline int kvm_own_lasx(struct kvm_vcpu *vcpu) { } 73 + static inline int kvm_own_lasx(struct kvm_vcpu *vcpu) { return -EINVAL; } 74 74 static inline void kvm_save_lasx(struct loongarch_fpu *fpu) { } 75 75 static inline void kvm_restore_lasx(struct loongarch_fpu *fpu) { } 76 76 #endif
-1
arch/loongarch/kernel/smp.c
··· 509 509 sync_counter(); 510 510 cpu = raw_smp_processor_id(); 511 511 set_my_cpu_offset(per_cpu_offset(cpu)); 512 - rcutree_report_cpu_starting(cpu); 513 512 514 513 cpu_probe(); 515 514 constant_clockevent_init();
+2 -2
arch/loongarch/kvm/mmu.c
··· 675 675 * 676 676 * There are several ways to safely use this helper: 677 677 * 678 - * - Check mmu_invalidate_retry_hva() after grabbing the mapping level, before 678 + * - Check mmu_invalidate_retry_gfn() after grabbing the mapping level, before 679 679 * consuming it. In this case, mmu_lock doesn't need to be held during the 680 680 * lookup, but it does need to be held while checking the MMU notifier. 681 681 * ··· 855 855 856 856 /* Check if an invalidation has taken place since we got pfn */ 857 857 spin_lock(&kvm->mmu_lock); 858 - if (mmu_invalidate_retry_hva(kvm, mmu_seq, hva)) { 858 + if (mmu_invalidate_retry_gfn(kvm, mmu_seq, gfn)) { 859 859 /* 860 860 * This can happen when mappings are changed asynchronously, but 861 861 * also synchronously if a COW is triggered by
+10 -6
arch/loongarch/mm/tlb.c
··· 284 284 set_handler(EXCCODE_TLBNR * VECSIZE, handle_tlb_protect, VECSIZE); 285 285 set_handler(EXCCODE_TLBNX * VECSIZE, handle_tlb_protect, VECSIZE); 286 286 set_handler(EXCCODE_TLBPE * VECSIZE, handle_tlb_protect, VECSIZE); 287 - } 287 + } else { 288 + int vec_sz __maybe_unused; 289 + void *addr __maybe_unused; 290 + struct page *page __maybe_unused; 291 + 292 + /* Avoid lockdep warning */ 293 + rcutree_report_cpu_starting(cpu); 294 + 288 295 #ifdef CONFIG_NUMA 289 - else { 290 - void *addr; 291 - struct page *page; 292 - const int vec_sz = sizeof(exception_handlers); 296 + vec_sz = sizeof(exception_handlers); 293 297 294 298 if (pcpu_handlers[cpu]) 295 299 return; ··· 309 305 csr_write64(pcpu_handlers[cpu], LOONGARCH_CSR_EENTRY); 310 306 csr_write64(pcpu_handlers[cpu], LOONGARCH_CSR_MERRENTRY); 311 307 csr_write64(pcpu_handlers[cpu] + 80*VECSIZE, LOONGARCH_CSR_TLBRENTRY); 312 - } 313 308 #endif 309 + } 314 310 } 315 311 316 312 void tlb_init(int cpu)