1. 27 Feb, 2024 2 commits
    • Oliver Upton's avatar
      KVM: arm64: Don't initialize idreg debugfs w/ preemption disabled · 5c1ebe9a
      Oliver Upton authored
      Testing KVM with DEBUG_ATOMIC_SLEEP enabled doesn't get far before hitting the
      first splat:
      
        BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:1578
        in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 13062, name: vgic_lpi_stress
        preempt_count: 1, expected: 0
        2 locks held by vgic_lpi_stress/13062:
         #0: ffff080084553240 (&vcpu->mutex){+.+.}-{3:3}, at: kvm_vcpu_ioctl+0xc0/0x13f0
         #1: ffff800080485f08 (&kvm->arch.config_lock){+.+.}-{3:3}, at: kvm_arch_vcpu_ioctl+0xd60/0x1788
        CPU: 19 PID: 13062 Comm: vgic_lpi_stress Tainted: G        W  O       6.8.0-dbg-DEV #1
        Call trace:
         dump_backtrace+0xf8/0x148
         show_stack+0x20/0x38
         dump_stack_lvl+0xb4/0xf8
         dump_stack+0x18/0x40
         __might_resched+0x248/0x2a0
         __might_sleep+0x50/0x88
         down_write+0x30/0x150
         start_creating+0x90/0x1a0
         __debugfs_create_file+0x5c/0x1b0
         debugfs_create_file+0x34/0x48
         kvm_reset_sys_regs+0x120/0x1e8
         kvm_reset_vcpu+0x148/0x270
         kvm_arch_vcpu_ioctl+0xddc/0x1788
         kvm_vcpu_ioctl+0xb6c/0x13f0
         __arm64_sys_ioctl+0x98/0xd8
         invoke_syscall+0x48/0x108
         el0_svc_common+0xb4/0xf0
         do_el0_svc+0x24/0x38
         el0_svc+0x54/0x128
         el0t_64_sync_handler+0x68/0xc0
         el0t_64_sync+0x1a8/0x1b0
      
      kvm_reset_vcpu() disables preemption as it needs to unload vCPU state
      from the CPU to twiddle with it, which subsequently explodes when
      taking the parent inode's rwsem while creating the idreg debugfs file.
      
      Fix it by moving the initialization to kvm_arch_create_vm_debugfs().
      
      Fixes: 89176658 ("KVM: arm64: Add debugfs file for guest's ID registers")
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20240227094115.1723330-3-oliver.upton@linux.devSigned-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
      5c1ebe9a
    • Oliver Upton's avatar
      KVM: arm64: Fail the idreg iterator if idregs aren't initialized · 29ef55ce
      Oliver Upton authored
      Return an error to userspace if the VM's ID register values haven't been
      initialized in preparation for changing the debugfs file initialization
      order.
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20240227094115.1723330-2-oliver.upton@linux.devSigned-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
      29ef55ce
  2. 22 Feb, 2024 1 commit
  3. 19 Feb, 2024 26 commits
  4. 15 Feb, 2024 1 commit
  5. 12 Feb, 2024 2 commits
  6. 08 Feb, 2024 8 commits