22 Jun, 2019

1 commit

  • Pull still more SPDX updates from Greg KH:
    "Another round of SPDX updates for 5.2-rc6

    Here is what I am guessing is going to be the last "big" SPDX update
    for 5.2. It contains all of the remaining GPLv2 and GPLv2+ updates
    that were "easy" to determine by pattern matching. The ones after this
    are going to be a bit more difficult and the people on the spdx list
    will be discussing them on a case-by-case basis now.

    Another 5000+ files are fixed up, so our overall totals are:
    Files checked: 64545
    Files with SPDX: 45529

    Compared to the 5.1 kernel which was:
    Files checked: 63848
    Files with SPDX: 22576

    This is a huge improvement.

    Also, we deleted another 20000 lines of boilerplate license crud,
    always nice to see in a diffstat"

    * tag 'spdx-5.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx: (65 commits)
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 507
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 506
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 505
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 504
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 503
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 502
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 501
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 498
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 497
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 496
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 495
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 491
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 490
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 489
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 488
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 487
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 486
    treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 485
    ...

    Linus Torvalds
     

21 Jun, 2019

2 commits

  • Pull kvm fixes from Paolo Bonzini:
    "Fixes for ARM and x86, plus selftest patches and nicer structs for
    nested state save/restore"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: nVMX: reorganize initial steps of vmx_set_nested_state
    KVM: arm/arm64: Fix emulated ptimer irq injection
    tests: kvm: Check for a kernel warning
    kvm: tests: Sort tests in the Makefile alphabetically
    KVM: x86/mmu: Allocate PAE root array when using SVM's 32-bit NPT
    KVM: x86: Modify struct kvm_nested_state to have explicit fields for data
    KVM: fix typo in documentation
    KVM: nVMX: use correct clean fields when copying from eVMCS
    KVM: arm/arm64: vgic: Fix kvm_device leak in vgic_its_destroy
    KVM: arm64: Filter out invalid core register IDs in KVM_GET_REG_LIST
    KVM: arm64: Implement vq_present() as a macro

    Linus Torvalds
     
  • …git/kvmarm/kvmarm into HEAD

    KVM/arm fixes for 5.2, take #2

    - SVE cleanup killing a warning with ancient GCC versions
    - Don't report non-existent system registers to userspace
    - Fix memory leak when freeing the vgic ITS
    - Properly lower the interrupt on the emulated physical timer

    Paolo Bonzini
     

19 Jun, 2019

5 commits

  • Based on 1 normalized pattern(s):

    this file is free software you can redistribute it and or modify it
    under the terms of version 2 of the gnu general public license as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not write to the free
    software foundation inc 51 franklin st fifth floor boston ma 02110
    1301 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 8 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081207.443595178@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this work is licensed under the terms of the gnu gpl version 2 see
    the copying file in the top level directory

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 35 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Kate Stewart
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.797835076@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not see http www gnu org
    licenses

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 503 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Alexios Zavras
    Reviewed-by: Allison Randal
    Reviewed-by: Enrico Weigelt
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190602204653.811534538@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • The emulated ptimer needs to track the level changes, otherwise the
    the interrupt will never get deasserted, resulting in the guest getting
    stuck in an interrupt storm if it enables ptimer interrupts. This was
    found with kvm-unit-tests; the ptimer tests hung as soon as interrupts
    were enabled. Typical Linux guests don't have a problem as they prefer
    using the virtual timer.

    Fixes: bee038a674875 ("KVM: arm/arm64: Rework the timer code to use a timer_map")
    Signed-off-by: Andrew Jones
    [Simplified the patch to res we only care about emulated timers here]
    Signed-off-by: Marc Zyngier

    Andrew Jones
     

12 Jun, 2019

1 commit

  • kvm_device->destroy() seems to be supposed to free its kvm_device
    struct, but vgic_its_destroy() is not currently doing this,
    resulting in a memory leak, resulting in kmemleak reports such as
    the following:

    unreferenced object 0xffff800aeddfe280 (size 128):
    comm "qemu-system-aar", pid 13799, jiffies 4299827317 (age 1569.844s)
    [...]
    backtrace:
    [] kmem_cache_alloc+0x178/0x208
    [] kvm_vm_ioctl+0x350/0xbc0

    Fix it.

    Cc: Andre Przywara
    Fixes: 1085fdc68c60 ("KVM: arm64: vgic-its: Introduce new KVM ITS device")
    Signed-off-by: Dave Martin
    Signed-off-by: Marc Zyngier

    Dave Martin
     

05 Jun, 2019

3 commits

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not write to the free
    software foundation inc 59 temple place suite 330 boston ma 02111
    1307 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 136 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Alexios Zavras
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190530000436.384967451@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms and conditions of the gnu general public license
    version 2 as published by the free software foundation this program
    is distributed in the hope it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not write to the free
    software foundation inc 59 temple place suite 330 boston ma 02111
    1307 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 33 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Kate Stewart
    Reviewed-by: Alexios Zavras
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190530000435.254582722@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not write to the free
    software foundation 51 franklin street fifth floor boston ma 02110
    1301 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 67 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Richard Fontana
    Reviewed-by: Alexios Zavras
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190529141333.953658117@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

03 Jun, 2019

1 commit

  • Pull KVM fixes from Paolo Bonzini:
    "Fixes for PPC and s390"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: PPC: Book3S HV: Restore SPRG3 in kvmhv_p9_guest_entry()
    KVM: PPC: Book3S HV: Fix lockdep warning when entering guest on POWER9
    KVM: PPC: Book3S HV: XIVE: Fix page offset when clearing ESB pages
    KVM: PPC: Book3S HV: XIVE: Take the srcu read lock when accessing memslots
    KVM: PPC: Book3S HV: XIVE: Do not clear IRQ data of passthrough interrupts
    KVM: PPC: Book3S HV: XIVE: Introduce a new mutex for the XIVE device
    KVM: PPC: Book3S HV: XIVE: Fix the enforced limit on the vCPU identifier
    KVM: PPC: Book3S HV: XIVE: Do not test the EQ flag validity when resetting
    KVM: PPC: Book3S HV: XIVE: Clear file mapping when device is released
    KVM: PPC: Book3S HV: Don't take kvm->lock around kvm_for_each_vcpu
    KVM: PPC: Book3S: Use new mutex to synchronize access to rtas token list
    KVM: PPC: Book3S HV: Use new mutex to synchronize MMU setup
    KVM: PPC: Book3S HV: Avoid touching arch.mmu_ready in XIVE release functions
    KVM: s390: Do not report unusabled IDs via KVM_CAP_MAX_VCPU_ID
    kvm: fix compile on s390 part 2

    Linus Torvalds
     

31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 655 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Kate Stewart
    Reviewed-by: Richard Fontana
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070034.575739538@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

28 May, 2019

2 commits

  • KVM_CAP_MAX_VCPU_ID is currently always reporting KVM_MAX_VCPU_ID on all
    architectures. However, on s390x, the amount of usable CPUs is determined
    during runtime - it is depending on the features of the machine the code
    is running on. Since we are using the vcpu_id as an index into the SCA
    structures that are defined by the hardware (see e.g. the sca_add_vcpu()
    function), it is not only the amount of CPUs that is limited by the hard-
    ware, but also the range of IDs that we can use.
    Thus KVM_CAP_MAX_VCPU_ID must be determined during runtime on s390x, too.
    So the handling of KVM_CAP_MAX_VCPU_ID has to be moved from the common
    code into the architecture specific code, and on s390x we have to return
    the same value here as for KVM_CAP_MAX_VCPUS.
    This problem has been discovered with the kvm_create_max_vcpus selftest.
    With this change applied, the selftest now passes on s390x, too.

    Reviewed-by: Andrew Jones
    Reviewed-by: Cornelia Huck
    Reviewed-by: David Hildenbrand
    Signed-off-by: Thomas Huth
    Message-Id:
    Cc: stable@vger.kernel.org
    Signed-off-by: Christian Borntraeger

    Thomas Huth
     
  • We also need to fence the memunmap part.

    Fixes: e45adf665a53 ("KVM: Introduce a new guest mapping API")
    Fixes: d30b214d1d0a (kvm: fix compilation on s390)
    Cc: Michal Kubecek
    Cc: KarimAllah Ahmed
    Signed-off-by: Christian Borntraeger

    Christian Borntraeger
     

27 May, 2019

1 commit

  • Pull KVM fixes from Paolo Bonzini:
    "The usual smattering of fixes and tunings that came in too late for
    the merge window, but should not wait four months before they appear
    in a release.

    I also travelled a bit more than usual in the first part of May, which
    didn't help with picking up patches and reports promptly"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (33 commits)
    KVM: x86: fix return value for reserved EFER
    tools/kvm_stat: fix fields filter for child events
    KVM: selftests: Wrap vcpu_nested_state_get/set functions with x86 guard
    kvm: selftests: aarch64: compile with warnings on
    kvm: selftests: aarch64: fix default vm mode
    kvm: selftests: aarch64: dirty_log_test: fix unaligned memslot size
    KVM: s390: fix memory slot handling for KVM_SET_USER_MEMORY_REGION
    KVM: x86/pmu: do not mask the value that is written to fixed PMUs
    KVM: x86/pmu: mask the result of rdpmc according to the width of the counters
    x86/kvm/pmu: Set AMD's virt PMU version to 1
    KVM: x86: do not spam dmesg with VMCS/VMCB dumps
    kvm: Check irqchip mode before assign irqfd
    kvm: svm/avic: fix off-by-one in checking host APIC ID
    KVM: selftests: do not blindly clobber registers in guest asm
    KVM: selftests: Remove duplicated TEST_ASSERT in hyperv_cpuid.c
    KVM: LAPIC: Expose per-vCPU timer_advance_ns to userspace
    KVM: LAPIC: Fix lapic_timer_advance_ns parameter overflow
    kvm: vmx: Fix -Wmissing-prototypes warnings
    KVM: nVMX: Fix using __this_cpu_read() in preemptible context
    kvm: fix compilation on s390
    ...

    Linus Torvalds
     

25 May, 2019

3 commits

  • When assigning kvm irqfd we didn't check the irqchip mode but we allow
    KVM_IRQFD to succeed with all the irqchip modes. However it does not
    make much sense to create irqfd even without the kernel chips. Let's
    provide a arch-dependent helper to check whether a specific irqfd is
    allowed by the arch. At least for x86, it should make sense to check:

    - when irqchip mode is NONE, all irqfds should be disallowed, and,

    - when irqchip mode is SPLIT, irqfds that are with resamplefd should
    be disallowed.

    For either of the case, previously we'll silently ignore the irq or
    the irq ack event if the irqchip mode is incorrect. However that can
    cause misterious guest behaviors and it can be hard to triage. Let's
    fail KVM_IRQFD even earlier to detect these incorrect configurations.

    CC: Paolo Bonzini
    CC: Radim Krčmář
    CC: Alex Williamson
    CC: Eduardo Habkost
    Signed-off-by: Peter Xu
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini

    Peter Xu
     
  • s390 does not have memremap, even though in this particular case it
    would be useful.

    Signed-off-by: Paolo Bonzini

    Paolo Bonzini
     
  • WARNING: CPU: 0 PID: 13554 at kvm/arch/x86/kvm//../../../virt/kvm/kvm_main.c:4183 kvm_resume+0x3c/0x40 [kvm]
    CPU: 0 PID: 13554 Comm: step_after_susp Tainted: G OE 5.1.0-rc4+ #1
    RIP: 0010:kvm_resume+0x3c/0x40 [kvm]
    Call Trace:
    syscore_resume+0x63/0x2d0
    suspend_devices_and_enter+0x9d1/0xa40
    pm_suspend+0x33a/0x3b0
    state_store+0x82/0xf0
    kobj_attr_store+0x12/0x20
    sysfs_kf_write+0x4b/0x60
    kernfs_fop_write+0x120/0x1a0
    __vfs_write+0x1b/0x40
    vfs_write+0xcd/0x1d0
    ksys_write+0x5f/0xe0
    __x64_sys_write+0x1a/0x20
    do_syscall_64+0x6f/0x6c0
    entry_SYSCALL_64_after_hwframe+0x49/0xbe

    Commit ca84d1a24 (KVM: x86: Add clock sync request to hardware enable) mentioned
    that "we always hold kvm_lock when hardware_enable is called. The one place that
    doesn't need to worry about it is resume, as resuming a frozen CPU, the spinlock
    won't be taken." However, commit 6706dae9 (virt/kvm: Replace spin_is_locked() with
    lockdep) introduces a bug, it asserts when the lock is not held which is contrary
    to the original goal.

    This patch fixes it by WARN_ON when the lock is held.

    Cc: Paolo Bonzini
    Cc: Radim Krčmář
    Cc: Paul E. McKenney
    Signed-off-by: Wanpeng Li
    Fixes: 6706dae9 ("virt/kvm: Replace spin_is_locked() with lockdep")
    [Wrap with #ifdef CONFIG_LOCKDEP - Paolo]
    Signed-off-by: Paolo Bonzini

    Wanpeng Li
     

24 May, 2019

1 commit

  • KVM has helpers to handle the condition codes of trapped aarch32
    instructions. These are marked __hyp_text and used from HYP, but they
    aren't built by the 'hyp' Makefile, which has all the runes to avoid ASAN
    and KCOV instrumentation.

    Move this code to a new hyp/aarch32.c to avoid a hyp-panic when starting
    an aarch32 guest on a host built with the ASAN/KCOV debug options.

    Fixes: 021234ef3752f ("KVM: arm64: Make kvm_condition_valid32() accessible from EL2")
    Fixes: 8cebe750c4d9a ("arm64: KVM: Make kvm_skip_instr32 available to HYP")
    Signed-off-by: James Morse
    Signed-off-by: Marc Zyngier

    James Morse
     

21 May, 2019

1 commit


18 May, 2019

1 commit

  • Pull KVM updates from Paolo Bonzini:
    "ARM:
    - support for SVE and Pointer Authentication in guests
    - PMU improvements

    POWER:
    - support for direct access to the POWER9 XIVE interrupt controller
    - memory and performance optimizations

    x86:
    - support for accessing memory not backed by struct page
    - fixes and refactoring

    Generic:
    - dirty page tracking improvements"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (155 commits)
    kvm: fix compilation on aarch64
    Revert "KVM: nVMX: Expose RDPMC-exiting only when guest supports PMU"
    kvm: x86: Fix L1TF mitigation for shadow MMU
    KVM: nVMX: Disable intercept for FS/GS base MSRs in vmcs02 when possible
    KVM: PPC: Book3S: Remove useless checks in 'release' method of KVM device
    KVM: PPC: Book3S HV: XIVE: Fix spelling mistake "acessing" -> "accessing"
    KVM: PPC: Book3S HV: Make sure to load LPID for radix VCPUs
    kvm: nVMX: Set nested_run_pending in vmx_set_nested_state after checks complete
    tests: kvm: Add tests for KVM_SET_NESTED_STATE
    KVM: nVMX: KVM_SET_NESTED_STATE - Tear down old EVMCS state before setting new state
    tests: kvm: Add tests for KVM_CAP_MAX_VCPUS and KVM_CAP_MAX_CPU_ID
    tests: kvm: Add tests to .gitignore
    KVM: Introduce KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2
    KVM: Fix kvm_clear_dirty_log_protect off-by-(minus-)one
    KVM: Fix the bitmap range to copy during clear dirty
    KVM: arm64: Fix ptrauth ID register masking logic
    KVM: x86: use direct accessors for RIP and RSP
    KVM: VMX: Use accessors for GPRs outside of dedicated caching logic
    KVM: x86: Omit caching logic for always-available GPRs
    kvm, x86: Properly check whether a pfn is an MMIO or not
    ...

    Linus Torvalds
     

17 May, 2019

1 commit

  • Commit e45adf665a53 ("KVM: Introduce a new guest mapping API", 2019-01-31)
    introduced a build failure on aarch64 defconfig:

    $ make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=out defconfig \
    Image.gz
    ...
    ../arch/arm64/kvm/../../../virt/kvm/kvm_main.c:
    In function '__kvm_map_gfn':
    ../arch/arm64/kvm/../../../virt/kvm/kvm_main.c:1763:9: error:
    implicit declaration of function 'memremap'; did you mean 'memset_p'?
    ../arch/arm64/kvm/../../../virt/kvm/kvm_main.c:1763:46: error:
    'MEMREMAP_WB' undeclared (first use in this function)
    ../arch/arm64/kvm/../../../virt/kvm/kvm_main.c:
    In function 'kvm_vcpu_unmap':
    ../arch/arm64/kvm/../../../virt/kvm/kvm_main.c:1795:3: error:
    implicit declaration of function 'memunmap'; did you mean 'vm_munmap'?

    because these functions are declared in rather than ,
    and the former was being pulled in already on x86 but not on aarch64.

    Reported-by: Nathan Chancellor
    Signed-off-by: Paolo Bonzini

    Paolo Bonzini
     

16 May, 2019

2 commits


15 May, 2019

1 commit

  • Use the mmu_notifier_range_blockable() helper function instead of directly
    dereferencing the range->blockable field. This is done to make it easier
    to change the mmu_notifier range field.

    This patch is the outcome of the following coccinelle patch:

    %blockable
    +mmu_notifier_range_blockable(I1)
    ...>
    }
    ------------------------------------------------------------------->%

    spatch --in-place --sp-file blockable.spatch --dir .

    Link: http://lkml.kernel.org/r/20190326164747.24405-3-jglisse@redhat.com
    Signed-off-by: Jérôme Glisse
    Reviewed-by: Ralph Campbell
    Reviewed-by: Ira Weiny
    Cc: Christian König
    Cc: Joonas Lahtinen
    Cc: Jani Nikula
    Cc: Rodrigo Vivi
    Cc: Jan Kara
    Cc: Andrea Arcangeli
    Cc: Peter Xu
    Cc: Felix Kuehling
    Cc: Jason Gunthorpe
    Cc: Ross Zwisler
    Cc: Dan Williams
    Cc: Paolo Bonzini
    Cc: Radim Krcmar
    Cc: Michal Hocko
    Cc: Christian Koenig
    Cc: John Hubbard
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jérôme Glisse
     

14 May, 2019

1 commit


08 May, 2019

3 commits

  • The previous KVM_CAP_MANUAL_DIRTY_LOG_PROTECT has some problem which
    blocks the correct usage from userspace. Obsolete the old one and
    introduce a new capability bit for it.

    Suggested-by: Paolo Bonzini
    Signed-off-by: Peter Xu
    Signed-off-by: Paolo Bonzini

    Peter Xu
     
  • Just imaging the case where num_pages < BITS_PER_LONG, then the loop
    will be skipped while it shouldn't.

    Signed-off-by: Peter Xu
    Fixes: 2a31b9db153530df4aa02dac8c32837bf5f47019
    Signed-off-by: Paolo Bonzini

    Peter Xu
     
  • kvm_dirty_bitmap_bytes() will return the size of the dirty bitmap of
    the memslot rather than the size of bitmap passed over from the ioctl.
    Here for KVM_CLEAR_DIRTY_LOG we should only copy exactly the size of
    bitmap that covers kvm_clear_dirty_log.num_pages.

    Signed-off-by: Peter Xu
    Cc: stable@vger.kernel.org
    Fixes: 2a31b9db153530df4aa02dac8c32837bf5f47019
    Signed-off-by: Paolo Bonzini

    Peter Xu
     

07 May, 2019

1 commit

  • Pull arm64 updates from Will Deacon:
    "Mostly just incremental improvements here:

    - Introduce AT_HWCAP2 for advertising CPU features to userspace

    - Expose SVE2 availability to userspace

    - Support for "data cache clean to point of deep persistence" (DC PODP)

    - Honour "mitigations=off" on the cmdline and advertise status via
    sysfs

    - CPU timer erratum workaround (Neoverse-N1 #1188873)

    - Introduce perf PMU driver for the SMMUv3 performance counters

    - Add config option to disable the kuser helpers page for AArch32 tasks

    - Futex modifications to ensure liveness under contention

    - Rework debug exception handling to seperate kernel and user
    handlers

    - Non-critical fixes and cleanup"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (92 commits)
    Documentation: Add ARM64 to kernel-parameters.rst
    arm64/speculation: Support 'mitigations=' cmdline option
    arm64: ssbs: Don't treat CPUs with SSBS as unaffected by SSB
    arm64: enable generic CPU vulnerabilites support
    arm64: add sysfs vulnerability show for speculative store bypass
    arm64: Fix size of __early_cpu_boot_status
    clocksource/arm_arch_timer: Use arch_timer_read_counter to access stable counters
    clocksource/arm_arch_timer: Remove use of workaround static key
    clocksource/arm_arch_timer: Drop use of static key in arch_timer_reg_read_stable
    clocksource/arm_arch_timer: Direcly assign set_next_event workaround
    arm64: Use arch_timer_read_counter instead of arch_counter_get_cntvct
    watchdog/sbsa: Use arch_timer_read_counter instead of arch_counter_get_cntvct
    ARM: vdso: Remove dependency with the arch_timer driver internals
    arm64: Apply ARM64_ERRATUM_1188873 to Neoverse-N1
    arm64: Add part number for Neoverse N1
    arm64: Make ARM64_ERRATUM_1188873 depend on COMPAT
    arm64: Restrict ARM64_ERRATUM_1188873 mitigation to AArch32
    arm64: mm: Remove pte_unmap_nested()
    arm64: Fix compiler warning from pte_unmap() with -Wunused-but-set-variable
    arm64: compat: Reduce address limit for 64K pages
    ...

    Linus Torvalds
     

01 May, 2019

6 commits

  • In KVM, specially for nested guests, there is a dominant pattern of:

    => map guest memory -> do_something -> unmap guest memory

    In addition to all this unnecessarily noise in the code due to boiler plate
    code, most of the time the mapping function does not properly handle memory
    that is not backed by "struct page". This new guest mapping API encapsulate
    most of this boiler plate code and also handles guest memory that is not
    backed by "struct page".

    The current implementation of this API is using memremap for memory that is
    not backed by a "struct page" which would lead to a huge slow-down if it
    was used for high-frequency mapping operations. The API does not have any
    effect on current setups where guest memory is backed by a "struct page".
    Further patches are going to also introduce a pfn-cache which would
    significantly improve the performance of the memremap case.

    Signed-off-by: KarimAllah Ahmed
    Reviewed-by: Konrad Rzeszutek Wilk
    Signed-off-by: Paolo Bonzini

    KarimAllah Ahmed
     
  • is_dirty has been renamed to flush, but the comment for it is
    outdated. And the description about @flush parameter for
    kvm_clear_dirty_log_protect() is missing, add it in this patch
    as well.

    Signed-off-by: Jiang Biao
    Reviewed-by: Cornelia Huck
    Signed-off-by: Paolo Bonzini

    Jiang Biao
     
  • If a memory slot's size is not a multiple of 64 pages (256K), then
    the KVM_CLEAR_DIRTY_LOG API is unusable: clearing the final 64 pages
    either requires the requested page range to go beyond memslot->npages,
    or requires log->num_pages to be unaligned, and kvm_clear_dirty_log_protect
    requires log->num_pages to be both in range and aligned.

    To allow this case, allow log->num_pages not to be a multiple of 64 if
    it ends exactly on the last page of the slot.

    Reported-by: Peter Xu
    Fixes: 98938aa8edd6 ("KVM: validate userspace input in kvm_clear_dirty_log_protect()", 2019-01-02)
    Signed-off-by: Paolo Bonzini

    Paolo Bonzini
     
  • …/kvms390/linux into HEAD

    KVM: s390: Features and fixes for 5.2

    - VSIE crypto fixes
    - new guest features for gen15
    - disable halt polling for nested virtualization with overcommit

    Paolo Bonzini
     
  • …git/kvmarm/kvmarm into kvm-master

    KVM/ARM fixes for 5.1, take #2:

    - Don't try to emulate timers on userspace access
    - Fix unaligned huge mappings, again
    - Properly reset a vcpu that fails to reset(!)
    - Properly retire pending LPIs on reset
    - Fix computation of emulated CNTP_TVAL

    Paolo Bonzini
     
  • If a memory slot's size is not a multiple of 64 pages (256K), then
    the KVM_CLEAR_DIRTY_LOG API is unusable: clearing the final 64 pages
    either requires the requested page range to go beyond memslot->npages,
    or requires log->num_pages to be unaligned, and kvm_clear_dirty_log_protect
    requires log->num_pages to be both in range and aligned.

    To allow this case, allow log->num_pages not to be a multiple of 64 if
    it ends exactly on the last page of the slot.

    Reported-by: Peter Xu
    Fixes: 98938aa8edd6 ("KVM: validate userspace input in kvm_clear_dirty_log_protect()", 2019-01-02)
    Signed-off-by: Paolo Bonzini

    Paolo Bonzini
     

30 Apr, 2019

2 commits

  • When a P9 sPAPR VM boots, the CAS negotiation process determines which
    interrupt mode to use (XICS legacy or XIVE native) and invokes a
    machine reset to activate the chosen mode.

    To be able to switch from one interrupt mode to another, we introduce
    the capability to release a KVM device without destroying the VM. The
    KVM device interface is extended with a new 'release' method which is
    called when the file descriptor of the device is closed.

    Once 'release' is called, the 'destroy' method will not be called
    anymore as the device is removed from the device list of the VM.

    Cc: Paolo Bonzini
    Signed-off-by: Cédric Le Goater
    Reviewed-by: David Gibson
    Signed-off-by: Paul Mackerras

    Cédric Le Goater
     
  • Some KVM devices will want to handle special mappings related to the
    underlying HW. For instance, the XIVE interrupt controller of the
    POWER9 processor has MMIO pages for thread interrupt management and
    for interrupt source control that need to be exposed to the guest when
    the OS has the required support.

    Cc: Paolo Bonzini
    Signed-off-by: Cédric Le Goater
    Reviewed-by: David Gibson
    Signed-off-by: Paul Mackerras

    Cédric Le Goater