mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
KVM cleanups for 6.10:
- Misc cleanups extracted from the "exit on missing userspace mapping" series, which has been put on hold in anticipation of a "KVM Userfault" approach, which should provide a superset of functionality. - Remove kvm_make_all_cpus_request_except(), which got added to hack around an AVIC bug, and then became dead code when a more robust fix came along. - Fix a goof in the KVM_CREATE_GUEST_MEMFD documentation. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEKTobbabEP7vbhhN9OlYIJqCjN/0FAmY+oHQACgkQOlYIJqCj N/3c/w//dmgqxFGpPoCvZ2+pVarrbpsMdfO5skaMF0EN1a0Rb0oJcVYj7z1zqsjQ 4DCCANxVrcEGVBZG5I8nhk1lDlGS7zOTOBBovgVDNj7wL9p/fzOhR6UlLKG5QMMn 0nWY9raC8ubcrtKgOm/qOtSgZrL9rEWh3QUK1FRPKaF12r1CLPmJIvVvpCm8t//f YZrqpHj/JqXbc8V8toBHqvi3DaMIOA2gWRvjfwSWfCL+x7ZPYny3Q+nw9fl2fSR6 f6w1lB6VhyDudzscu4l7U4y5wI0LMmYhJ5p5tvQBB5qtbAJ7vpIUxxYh4CT/YdbH WLQCIBr2wR0Mkl0g4FwNlnnt6a5Sa6V4nVKfzkl37L0Ucyu+SpP8t6YO4nb/dJmb Sicx3qqeHC7N9Y9VVKzK3Kb33KVaBFawvzjIcc+GFXMDFZ35b33vWhYzTl3sJpLY hjfGpYTB1zHSj6f7a9mW7d15E/lyfqMKCzewZWnko0hISM8Jm1LxU3PMFJa8TR2/ yB6IUDDJnEk6fSwUwaCluAJv3kfnhs/S3fMFw+5cYkcmgW7yaE+K9nJ3aEkx5l7x 9sXjAtc7zbAwEuJZ+5C1+CgwWGKsfLKtXbjqMYAIAYep5oa+UrJ4L77aZyTV1mSD oRJs0LmNmachV5nxKFHAaijVc6vmZNhcD9ygbM5qeLGoGby+W8g= =dgM4 -----END PGP SIGNATURE----- Merge tag 'kvm-x86-generic-6.10' of https://github.com/kvm-x86/linux into HEAD KVM cleanups for 6.10: - Misc cleanups extracted from the "exit on missing userspace mapping" series, which has been put on hold in anticipation of a "KVM Userfault" approach, which should provide a superset of functionality. - Remove kvm_make_all_cpus_request_except(), which got added to hack around an AVIC bug, and then became dead code when a more robust fix came along. - Fix a goof in the KVM_CREATE_GUEST_MEMFD documentation.
This commit is contained in:
commit
f4bc1373d5
@ -6316,7 +6316,7 @@ The "flags" field is reserved for future extensions and must be '0'.
|
||||
:Architectures: none
|
||||
:Type: vm ioctl
|
||||
:Parameters: struct kvm_create_guest_memfd(in)
|
||||
:Returns: 0 on success, <0 on error
|
||||
:Returns: A file descriptor on success, <0 on error
|
||||
|
||||
KVM_CREATE_GUEST_MEMFD creates an anonymous file and returns a file descriptor
|
||||
that refers to it. guest_memfd files are roughly analogous to files created
|
||||
|
@ -193,8 +193,6 @@ static inline bool is_error_page(struct page *page)
|
||||
bool kvm_make_vcpus_request_mask(struct kvm *kvm, unsigned int req,
|
||||
unsigned long *vcpu_bitmap);
|
||||
bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req);
|
||||
bool kvm_make_all_cpus_request_except(struct kvm *kvm, unsigned int req,
|
||||
struct kvm_vcpu *except);
|
||||
|
||||
#define KVM_USERSPACE_IRQ_SOURCE_ID 0
|
||||
#define KVM_IRQFD_RESAMPLE_IRQ_SOURCE_ID 1
|
||||
|
@ -311,8 +311,7 @@ bool kvm_make_vcpus_request_mask(struct kvm *kvm, unsigned int req,
|
||||
return called;
|
||||
}
|
||||
|
||||
bool kvm_make_all_cpus_request_except(struct kvm *kvm, unsigned int req,
|
||||
struct kvm_vcpu *except)
|
||||
bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
|
||||
{
|
||||
struct kvm_vcpu *vcpu;
|
||||
struct cpumask *cpus;
|
||||
@ -325,22 +324,14 @@ bool kvm_make_all_cpus_request_except(struct kvm *kvm, unsigned int req,
|
||||
cpus = this_cpu_cpumask_var_ptr(cpu_kick_mask);
|
||||
cpumask_clear(cpus);
|
||||
|
||||
kvm_for_each_vcpu(i, vcpu, kvm) {
|
||||
if (vcpu == except)
|
||||
continue;
|
||||
kvm_for_each_vcpu(i, vcpu, kvm)
|
||||
kvm_make_vcpu_request(vcpu, req, cpus, me);
|
||||
}
|
||||
|
||||
called = kvm_kick_many_cpus(cpus, !!(req & KVM_REQUEST_WAIT));
|
||||
put_cpu();
|
||||
|
||||
return called;
|
||||
}
|
||||
|
||||
bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
|
||||
{
|
||||
return kvm_make_all_cpus_request_except(kvm, req, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvm_make_all_cpus_request);
|
||||
|
||||
void kvm_flush_remote_tlbs(struct kvm *kvm)
|
||||
@ -2932,7 +2923,7 @@ out:
|
||||
/*
|
||||
* Pin guest page in memory and return its pfn.
|
||||
* @addr: host virtual address which maps memory to the guest
|
||||
* @atomic: whether this function can sleep
|
||||
* @atomic: whether this function is forbidden from sleeping
|
||||
* @interruptible: whether the process can be interrupted by non-fatal signals
|
||||
* @async: whether this function need to wait IO complete if the
|
||||
* host page is not in the memory
|
||||
@ -3004,16 +2995,12 @@ kvm_pfn_t __gfn_to_pfn_memslot(const struct kvm_memory_slot *slot, gfn_t gfn,
|
||||
if (hva)
|
||||
*hva = addr;
|
||||
|
||||
if (addr == KVM_HVA_ERR_RO_BAD) {
|
||||
if (writable)
|
||||
*writable = false;
|
||||
return KVM_PFN_ERR_RO_FAULT;
|
||||
}
|
||||
|
||||
if (kvm_is_error_hva(addr)) {
|
||||
if (writable)
|
||||
*writable = false;
|
||||
return KVM_PFN_NOSLOT;
|
||||
|
||||
return addr == KVM_HVA_ERR_RO_BAD ? KVM_PFN_ERR_RO_FAULT :
|
||||
KVM_PFN_NOSLOT;
|
||||
}
|
||||
|
||||
/* Do not map writable pfn in the readonly memslot. */
|
||||
@ -3277,6 +3264,7 @@ static int next_segment(unsigned long len, int offset)
|
||||
return len;
|
||||
}
|
||||
|
||||
/* Copy @len bytes from guest memory at '(@gfn * PAGE_SIZE) + @offset' to @data */
|
||||
static int __kvm_read_guest_page(struct kvm_memory_slot *slot, gfn_t gfn,
|
||||
void *data, int offset, int len)
|
||||
{
|
||||
@ -3378,6 +3366,7 @@ int kvm_vcpu_read_guest_atomic(struct kvm_vcpu *vcpu, gpa_t gpa,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvm_vcpu_read_guest_atomic);
|
||||
|
||||
/* Copy @len bytes from @data into guest memory at '(@gfn * PAGE_SIZE) + @offset' */
|
||||
static int __kvm_write_guest_page(struct kvm *kvm,
|
||||
struct kvm_memory_slot *memslot, gfn_t gfn,
|
||||
const void *data, int offset, int len)
|
||||
|
Loading…
Reference in New Issue
Block a user