1. 19 Jul, 2022 4 commits
  2. 15 Jul, 2022 1 commit
  3. 14 Jul, 2022 7 commits
    • Vitaly Kuznetsov's avatar
      KVM: x86: Fully initialize 'struct kvm_lapic_irq' in kvm_pv_kick_cpu_op() · 8a414f94
      Vitaly Kuznetsov authored
      'vector' and 'trig_mode' fields of 'struct kvm_lapic_irq' are left
      uninitialized in kvm_pv_kick_cpu_op(). While these fields are normally
      not needed for APIC_DM_REMRD, they're still referenced by
      __apic_accept_irq() for trace_kvm_apic_accept_irq(). Fully initialize
      the structure to avoid consuming random stack memory.
      
      Fixes: a183b638 ("KVM: x86: make apic_accept_irq tracepoint more generic")
      Reported-by: syzbot+d6caa905917d353f0d07@syzkaller.appspotmail.com
      Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220708125147.593975-1-vkuznets@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      8a414f94
    • Paolo Bonzini's avatar
      Merge commit 'kvm-vmx-nested-tsc-fix' into kvm-master · cca3f338
      Paolo Bonzini authored
      Merge bugfix needed in both 5.19 (because it's bad) and 5.20 (because
      it is a prerequisite to test new features).
      cca3f338
    • Paolo Bonzini's avatar
      Documentation: kvm: clarify histogram units · 942d9e89
      Paolo Bonzini authored
      In the case of histogram statistics, the values are always sample
      counts; the unit instead applies to the bucket range.  For example,
      halt_poll_success_hist is a nanosecond statistic because the buckets are
      for 0ns, 1ns, 2-3ns, 4-7ns etc.  There isn't really any other sensible
      interpretation, but clarify this anyway in the Documentation.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      942d9e89
    • Paolo Bonzini's avatar
      kvm: stats: tell userspace which values are boolean · 1b870fa5
      Paolo Bonzini authored
      Some of the statistics values exported by KVM are always only 0 or 1.
      It can be useful to export this fact to userspace so that it can track
      them specially (for example by polling the value every now and then to
      compute a % of time spent in a specific state).
      
      Therefore, add "boolean value" as a new "unit".  While it is not exactly
      a unit, it walks and quacks like one.  In particular, using the type
      would be wrong because boolean values could be instantaneous or peak
      values (e.g. "is the rmap allocated?") or even two-bucket histograms
      (e.g. "number of posted vs. non-posted interrupt injections").
      Suggested-by: default avatarAmneesh Singh <natto@weirdnatto.in>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      1b870fa5
    • Thadeu Lima de Souza Cascardo's avatar
      x86/kvm: fix FASTOP_SIZE when return thunks are enabled · 84e7051c
      Thadeu Lima de Souza Cascardo authored
      The return thunk call makes the fastop functions larger, just like IBT
      does. Consider a 16-byte FASTOP_SIZE when CONFIG_RETHUNK is enabled.
      
      Otherwise, functions will be incorrectly aligned and when computing their
      position for differently sized operators, they will executed in the middle
      or end of a function, which may as well be an int3, leading to a crash
      like:
      
      [   36.091116] int3: 0000 [#1] SMP NOPTI
      [   36.091119] CPU: 3 PID: 1371 Comm: qemu-system-x86 Not tainted 5.15.0-41-generic #44
      [   36.091120] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014
      [   36.091121] RIP: 0010:xaddw_ax_dx+0x9/0x10 [kvm]
      [   36.091185] Code: 00 0f bb d0 c3 cc cc cc cc 48 0f bb d0 c3 cc cc cc cc 0f 1f 80 00 00 00 00 0f c0 d0 c3 cc cc cc cc 66 0f c1 d0 c3 cc cc cc cc <0f> 1f 80 00 00 00 00 0f c1 d0 c3 cc cc cc cc 48 0f c1 d0 c3 cc cc
      [   36.091186] RSP: 0018:ffffb1f541143c98 EFLAGS: 00000202
      [   36.091188] RAX: 0000000089abcdef RBX: 0000000000000001 RCX: 0000000000000000
      [   36.091188] RDX: 0000000076543210 RSI: ffffffffc073c6d0 RDI: 0000000000000200
      [   36.091189] RBP: ffffb1f541143ca0 R08: ffff9f1803350a70 R09: 0000000000000002
      [   36.091190] R10: ffff9f1803350a70 R11: 0000000000000000 R12: ffff9f1803350a70
      [   36.091190] R13: ffffffffc077fee0 R14: 0000000000000000 R15: 0000000000000000
      [   36.091191] FS:  00007efdfce8d640(0000) GS:ffff9f187dd80000(0000) knlGS:0000000000000000
      [   36.091192] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   36.091192] CR2: 0000000000000000 CR3: 0000000009b62002 CR4: 0000000000772ee0
      [   36.091195] PKRU: 55555554
      [   36.091195] Call Trace:
      [   36.091197]  <TASK>
      [   36.091198]  ? fastop+0x5a/0xa0 [kvm]
      [   36.091222]  x86_emulate_insn+0x7b8/0xe90 [kvm]
      [   36.091244]  x86_emulate_instruction+0x2f4/0x630 [kvm]
      [   36.091263]  ? kvm_arch_vcpu_load+0x7c/0x230 [kvm]
      [   36.091283]  ? vmx_prepare_switch_to_host+0xf7/0x190 [kvm_intel]
      [   36.091290]  complete_emulated_mmio+0x297/0x320 [kvm]
      [   36.091310]  kvm_arch_vcpu_ioctl_run+0x32f/0x550 [kvm]
      [   36.091330]  kvm_vcpu_ioctl+0x29e/0x6d0 [kvm]
      [   36.091344]  ? kvm_vcpu_ioctl+0x120/0x6d0 [kvm]
      [   36.091357]  ? __fget_files+0x86/0xc0
      [   36.091362]  ? __fget_files+0x86/0xc0
      [   36.091363]  __x64_sys_ioctl+0x92/0xd0
      [   36.091366]  do_syscall_64+0x59/0xc0
      [   36.091369]  ? syscall_exit_to_user_mode+0x27/0x50
      [   36.091370]  ? do_syscall_64+0x69/0xc0
      [   36.091371]  ? syscall_exit_to_user_mode+0x27/0x50
      [   36.091372]  ? __x64_sys_writev+0x1c/0x30
      [   36.091374]  ? do_syscall_64+0x69/0xc0
      [   36.091374]  ? exit_to_user_mode_prepare+0x37/0xb0
      [   36.091378]  ? syscall_exit_to_user_mode+0x27/0x50
      [   36.091379]  ? do_syscall_64+0x69/0xc0
      [   36.091379]  ? do_syscall_64+0x69/0xc0
      [   36.091380]  ? do_syscall_64+0x69/0xc0
      [   36.091381]  ? do_syscall_64+0x69/0xc0
      [   36.091381]  entry_SYSCALL_64_after_hwframe+0x61/0xcb
      [   36.091384] RIP: 0033:0x7efdfe6d1aff
      [   36.091390] Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
      [   36.091391] RSP: 002b:00007efdfce8c460 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      [   36.091393] RAX: ffffffffffffffda RBX: 000000000000ae80 RCX: 00007efdfe6d1aff
      [   36.091393] RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 000000000000000c
      [   36.091394] RBP: 0000558f1609e220 R08: 0000558f13fb8190 R09: 00000000ffffffff
      [   36.091394] R10: 0000558f16b5e950 R11: 0000000000000246 R12: 0000000000000000
      [   36.091394] R13: 0000000000000001 R14: 0000000000000000 R15: 0000000000000000
      [   36.091396]  </TASK>
      [   36.091397] Modules linked in: isofs nls_iso8859_1 kvm_intel joydev kvm input_leds serio_raw sch_fq_codel dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua ipmi_devintf ipmi_msghandler drm msr ip_tables x_tables autofs4 btrfs blake2b_generic zstd_compress raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel virtio_net net_failover crypto_simd ahci xhci_pci cryptd psmouse virtio_blk libahci xhci_pci_renesas failover
      [   36.123271] ---[ end trace db3c0ab5a48fabcc ]---
      [   36.123272] RIP: 0010:xaddw_ax_dx+0x9/0x10 [kvm]
      [   36.123319] Code: 00 0f bb d0 c3 cc cc cc cc 48 0f bb d0 c3 cc cc cc cc 0f 1f 80 00 00 00 00 0f c0 d0 c3 cc cc cc cc 66 0f c1 d0 c3 cc cc cc cc <0f> 1f 80 00 00 00 00 0f c1 d0 c3 cc cc cc cc 48 0f c1 d0 c3 cc cc
      [   36.123320] RSP: 0018:ffffb1f541143c98 EFLAGS: 00000202
      [   36.123321] RAX: 0000000089abcdef RBX: 0000000000000001 RCX: 0000000000000000
      [   36.123321] RDX: 0000000076543210 RSI: ffffffffc073c6d0 RDI: 0000000000000200
      [   36.123322] RBP: ffffb1f541143ca0 R08: ffff9f1803350a70 R09: 0000000000000002
      [   36.123322] R10: ffff9f1803350a70 R11: 0000000000000000 R12: ffff9f1803350a70
      [   36.123323] R13: ffffffffc077fee0 R14: 0000000000000000 R15: 0000000000000000
      [   36.123323] FS:  00007efdfce8d640(0000) GS:ffff9f187dd80000(0000) knlGS:0000000000000000
      [   36.123324] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   36.123325] CR2: 0000000000000000 CR3: 0000000009b62002 CR4: 0000000000772ee0
      [   36.123327] PKRU: 55555554
      [   36.123328] Kernel panic - not syncing: Fatal exception in interrupt
      [   36.123410] Kernel Offset: 0x1400000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
      [   36.135305] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
      
      Fixes: aa3d4803 ("x86: Use return-thunk in asm code")
      Signed-off-by: default avatarThadeu Lima de Souza Cascardo <cascardo@canonical.com>
      Co-developed-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Josh Poimboeuf <jpoimboe@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Reported-by: default avatarLinux Kernel Functional Testing <lkft@linaro.org>
      Message-Id: <20220713171241.184026-1-cascardo@canonical.com>
      Tested-by: default avatarJack Wang <jinpu.wang@ionos.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      84e7051c
    • Vitaly Kuznetsov's avatar
      KVM: nVMX: Always enable TSC scaling for L2 when it was enabled for L1 · 99482726
      Vitaly Kuznetsov authored
      Windows 10/11 guests with Hyper-V role (WSL2) enabled are observed to
      hang upon boot or shortly after when a non-default TSC frequency was
      set for L1. The issue is observed on a host where TSC scaling is
      supported. The problem appears to be that Windows doesn't use TSC
      frequency for its guests even when the feature is advertised and KVM
      filters SECONDARY_EXEC_TSC_SCALING out when creating L2 controls from
      L1's. This leads to L2 running with the default frequency (matching
      host's) while L1 is running with an altered one.
      
      Keep SECONDARY_EXEC_TSC_SCALING in secondary exec controls for L2 when
      it was set for L1. TSC_MULTIPLIER is already correctly computed and
      written by prepare_vmcs02().
      Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Reviewed-by: default avatarMaxim Levitsky <mlevitsk@redhat.com>
      Message-Id: <20220712135009.952805-1-vkuznets@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      99482726
    • Paolo Bonzini's avatar
      Merge tag 'kvm-riscv-fixes-5.19-2' of https://github.com/kvm-riscv/linux into HEAD · d13122ca
      Paolo Bonzini authored
       KVM/riscv fixes for 5.19, take #2
      
      - Fix missing PAGE_PFN_MASK
      
      - Fix SRCU deadlock caused by kvm_riscv_check_vcpu_requests()
      d13122ca
  4. 13 Jul, 2022 3 commits
  5. 12 Jul, 2022 15 commits
  6. 11 Jul, 2022 9 commits
  7. 10 Jul, 2022 1 commit