* [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state
@ 2020-06-23 10:50 Philippe Mathieu-Daudé
2020-06-23 10:50 ` [PATCH 1/7] accel/kvm: Let kvm_check_extension use global KVM state Philippe Mathieu-Daudé
` (7 more replies)
0 siblings, 8 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw)
To: qemu-devel
Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand,
Christian Borntraeger, Aleksandar Rikalo, Richard Henderson,
qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm,
Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck,
qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti,
Thomas Huth, Philippe Mathieu-Daudé
Following Paolo's idea on kvm_check_extension():
https://www.mail-archive.com/qemu-devel@nongnu.org/msg713794.html
CI:
https://travis-ci.org/github/philmd/qemu/builds/701213438
Philippe Mathieu-Daudé (7):
accel/kvm: Let kvm_check_extension use global KVM state
accel/kvm: Simplify kvm_check_extension()
accel/kvm: Simplify kvm_check_extension_list()
accel/kvm: Simplify kvm_set_sigmask_len()
target/i386/kvm: Simplify get_para_features()
target/i386/kvm: Simplify kvm_get_mce_cap_supported()
target/i386/kvm: Simplify kvm_get_supported_[feature]_msrs()
include/sysemu/kvm.h | 4 +-
accel/kvm/kvm-all.c | 76 +++++++++++++++----------------
hw/hyperv/hyperv.c | 2 +-
hw/i386/kvm/clock.c | 2 +-
hw/i386/kvm/i8254.c | 4 +-
hw/i386/kvm/ioapic.c | 2 +-
hw/intc/arm_gic_kvm.c | 2 +-
hw/intc/openpic_kvm.c | 2 +-
hw/intc/xics_kvm.c | 2 +-
hw/s390x/s390-stattrib-kvm.c | 2 +-
target/arm/kvm.c | 13 +++---
target/arm/kvm32.c | 2 +-
target/arm/kvm64.c | 15 +++---
target/i386/kvm.c | 88 +++++++++++++++++-------------------
target/mips/kvm.c | 6 +--
target/ppc/kvm.c | 34 +++++++-------
target/s390x/cpu_models.c | 3 +-
target/s390x/kvm.c | 30 ++++++------
18 files changed, 141 insertions(+), 148 deletions(-)
--
2.21.3
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH 1/7] accel/kvm: Let kvm_check_extension use global KVM state 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé @ 2020-06-23 10:50 ` Philippe Mathieu-Daudé 2020-06-23 15:25 ` Cornelia Huck 2020-06-23 10:50 ` [PATCH 2/7] accel/kvm: Simplify kvm_check_extension() Philippe Mathieu-Daudé ` (6 subsequent siblings) 7 siblings, 1 reply; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth, Philippe Mathieu-Daudé As KVM supported extentions those should be the same for all VMs, it is safe to directly use the global kvm_state in kvm_check_extension(). Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- accel/kvm/kvm-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f24d7da783..934a7d6b24 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -913,7 +913,7 @@ int kvm_check_extension(KVMState *s, unsigned int extension) { int ret; - ret = kvm_ioctl(s, KVM_CHECK_EXTENSION, extension); + ret = kvm_ioctl(kvm_state, KVM_CHECK_EXTENSION, extension); if (ret < 0) { ret = 0; } -- 2.21.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/7] accel/kvm: Let kvm_check_extension use global KVM state 2020-06-23 10:50 ` [PATCH 1/7] accel/kvm: Let kvm_check_extension use global KVM state Philippe Mathieu-Daudé @ 2020-06-23 15:25 ` Cornelia Huck 0 siblings, 0 replies; 16+ messages in thread From: Cornelia Huck @ 2020-06-23 15:25 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth On Tue, 23 Jun 2020 12:50:46 +0200 Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > As KVM supported extentions those should be the same for > all VMs, it is safe to directly use the global kvm_state > in kvm_check_extension(). > > Suggested-by: Paolo Bonzini <pbonzini@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > accel/kvm/kvm-all.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c > index f24d7da783..934a7d6b24 100644 > --- a/accel/kvm/kvm-all.c > +++ b/accel/kvm/kvm-all.c > @@ -913,7 +913,7 @@ int kvm_check_extension(KVMState *s, unsigned int extension) > { > int ret; > > - ret = kvm_ioctl(s, KVM_CHECK_EXTENSION, extension); > + ret = kvm_ioctl(kvm_state, KVM_CHECK_EXTENSION, extension); > if (ret < 0) { > ret = 0; > } Reviewed-by: Cornelia Huck <cohuck@redhat.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/7] accel/kvm: Simplify kvm_check_extension() 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé 2020-06-23 10:50 ` [PATCH 1/7] accel/kvm: Let kvm_check_extension use global KVM state Philippe Mathieu-Daudé @ 2020-06-23 10:50 ` Philippe Mathieu-Daudé 2020-06-23 15:43 ` Cornelia Huck 2020-06-23 10:50 ` [PATCH 3/7] accel/kvm: Simplify kvm_check_extension_list() Philippe Mathieu-Daudé ` (5 subsequent siblings) 7 siblings, 1 reply; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth, Philippe Mathieu-Daudé In previous commit we let kvm_check_extension() use the global kvm_state. Since the KVMState* argument is now unused, drop it. Convert callers with this Coccinelle script: @@ expression kvm_state, extension; @@ - kvm_check_extension(kvm_state, extension) + kvm_check_extension(extension) Unused variables manually removed: - CPUState* in hyperv_enabled() - KVMState* in kvm_arm_get_max_vm_ipa_size() Inspired-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- include/sysemu/kvm.h | 2 +- accel/kvm/kvm-all.c | 64 ++++++++++++++++++------------------ hw/hyperv/hyperv.c | 2 +- hw/i386/kvm/clock.c | 2 +- hw/i386/kvm/i8254.c | 4 +-- hw/i386/kvm/ioapic.c | 2 +- hw/intc/arm_gic_kvm.c | 2 +- hw/intc/openpic_kvm.c | 2 +- hw/intc/xics_kvm.c | 2 +- hw/s390x/s390-stattrib-kvm.c | 2 +- target/arm/kvm.c | 13 ++++---- target/arm/kvm32.c | 2 +- target/arm/kvm64.c | 15 ++++----- target/i386/kvm.c | 61 ++++++++++++++++------------------ target/mips/kvm.c | 4 +-- target/ppc/kvm.c | 34 +++++++++---------- target/s390x/cpu_models.c | 3 +- target/s390x/kvm.c | 30 ++++++++--------- 18 files changed, 119 insertions(+), 127 deletions(-) diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index b4174d941c..3662641c99 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -436,7 +436,7 @@ void kvm_arch_update_guest_debug(CPUState *cpu, struct kvm_guest_debug *dbg); bool kvm_arch_stop_on_emulation_error(CPUState *cpu); -int kvm_check_extension(KVMState *s, unsigned int extension); +int kvm_check_extension(unsigned int extension); int kvm_vm_check_extension(KVMState *s, unsigned int extension); diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 934a7d6b24..b6b39b0e92 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -909,7 +909,7 @@ static MemoryListener kvm_coalesced_pio_listener = { .coalesced_io_del = kvm_coalesce_pio_del, }; -int kvm_check_extension(KVMState *s, unsigned int extension) +int kvm_check_extension(unsigned int extension) { int ret; @@ -928,7 +928,7 @@ int kvm_vm_check_extension(KVMState *s, unsigned int extension) ret = kvm_vm_ioctl(s, KVM_CHECK_EXTENSION, extension); if (ret < 0) { /* VM wide version not implemented, use global one instead */ - ret = kvm_check_extension(s, extension); + ret = kvm_check_extension(extension); } return ret; @@ -1091,7 +1091,7 @@ static const KVMCapabilityInfo * kvm_check_extension_list(KVMState *s, const KVMCapabilityInfo *list) { while (list->name) { - if (!kvm_check_extension(s, list->value)) { + if (!kvm_check_extension(list->value)) { return list; } list++; @@ -1394,7 +1394,7 @@ void kvm_init_irq_routing(KVMState *s) { int gsi_count, i; - gsi_count = kvm_check_extension(s, KVM_CAP_IRQ_ROUTING) - 1; + gsi_count = kvm_check_extension(KVM_CAP_IRQ_ROUTING) - 1; if (gsi_count > 0) { /* Round up so we can search ints using ffs */ s->used_gsi_bitmap = bitmap_new(gsi_count); @@ -1798,7 +1798,7 @@ int kvm_irqchip_add_hv_sint_route(KVMState *s, uint32_t vcpu, uint32_t sint) if (!kvm_gsi_routing_enabled()) { return -ENOSYS; } - if (!kvm_check_extension(s, KVM_CAP_HYPERV_SYNIC)) { + if (!kvm_check_extension(KVM_CAP_HYPERV_SYNIC)) { return -ENOSYS; } virq = kvm_irqchip_get_virq(s); @@ -1907,9 +1907,9 @@ static void kvm_irqchip_create(KVMState *s) int ret; assert(s->kernel_irqchip_split != ON_OFF_AUTO_AUTO); - if (kvm_check_extension(s, KVM_CAP_IRQCHIP)) { + if (kvm_check_extension(KVM_CAP_IRQCHIP)) { ; - } else if (kvm_check_extension(s, KVM_CAP_S390_IRQCHIP)) { + } else if (kvm_check_extension(KVM_CAP_S390_IRQCHIP)) { ret = kvm_vm_enable_cap(s, KVM_CAP_S390_IRQCHIP, 0); if (ret < 0) { fprintf(stderr, "Enable kernel irqchip failed: %s\n", strerror(-ret)); @@ -1959,13 +1959,13 @@ static int kvm_recommended_vcpus(KVMState *s) static int kvm_max_vcpus(KVMState *s) { - int ret = kvm_check_extension(s, KVM_CAP_MAX_VCPUS); + int ret = kvm_check_extension(KVM_CAP_MAX_VCPUS); return (ret) ? ret : kvm_recommended_vcpus(s); } static int kvm_max_vcpu_id(KVMState *s) { - int ret = kvm_check_extension(s, KVM_CAP_MAX_VCPU_ID); + int ret = kvm_check_extension(KVM_CAP_MAX_VCPU_ID); return (ret) ? ret : kvm_max_vcpus(s); } @@ -2035,15 +2035,15 @@ static int kvm_init(MachineState *ms) goto err; } - kvm_immediate_exit = kvm_check_extension(s, KVM_CAP_IMMEDIATE_EXIT); - s->nr_slots = kvm_check_extension(s, KVM_CAP_NR_MEMSLOTS); + kvm_immediate_exit = kvm_check_extension(KVM_CAP_IMMEDIATE_EXIT); + s->nr_slots = kvm_check_extension(KVM_CAP_NR_MEMSLOTS); /* If unspecified, use the default value */ if (!s->nr_slots) { s->nr_slots = 32; } - s->nr_as = kvm_check_extension(s, KVM_CAP_MULTI_ADDRESS_SPACE); + s->nr_as = kvm_check_extension(KVM_CAP_MULTI_ADDRESS_SPACE); if (s->nr_as <= 1) { s->nr_as = 1; } @@ -2116,12 +2116,12 @@ static int kvm_init(MachineState *ms) goto err; } - s->coalesced_mmio = kvm_check_extension(s, KVM_CAP_COALESCED_MMIO); + s->coalesced_mmio = kvm_check_extension(KVM_CAP_COALESCED_MMIO); s->coalesced_pio = s->coalesced_mmio && - kvm_check_extension(s, KVM_CAP_COALESCED_PIO); + kvm_check_extension(KVM_CAP_COALESCED_PIO); s->manual_dirty_log_protect = - kvm_check_extension(s, KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2); + kvm_check_extension(KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2); if (s->manual_dirty_log_protect) { ret = kvm_vm_enable_cap(s, KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2, 0, 1); if (ret) { @@ -2132,46 +2132,46 @@ static int kvm_init(MachineState *ms) } #ifdef KVM_CAP_VCPU_EVENTS - s->vcpu_events = kvm_check_extension(s, KVM_CAP_VCPU_EVENTS); + s->vcpu_events = kvm_check_extension(KVM_CAP_VCPU_EVENTS); #endif s->robust_singlestep = - kvm_check_extension(s, KVM_CAP_X86_ROBUST_SINGLESTEP); + kvm_check_extension(KVM_CAP_X86_ROBUST_SINGLESTEP); #ifdef KVM_CAP_DEBUGREGS - s->debugregs = kvm_check_extension(s, KVM_CAP_DEBUGREGS); + s->debugregs = kvm_check_extension(KVM_CAP_DEBUGREGS); #endif - s->max_nested_state_len = kvm_check_extension(s, KVM_CAP_NESTED_STATE); + s->max_nested_state_len = kvm_check_extension(KVM_CAP_NESTED_STATE); #ifdef KVM_CAP_IRQ_ROUTING - kvm_direct_msi_allowed = (kvm_check_extension(s, KVM_CAP_SIGNAL_MSI) > 0); + kvm_direct_msi_allowed = (kvm_check_extension(KVM_CAP_SIGNAL_MSI) > 0); #endif - s->intx_set_mask = kvm_check_extension(s, KVM_CAP_PCI_2_3); + s->intx_set_mask = kvm_check_extension(KVM_CAP_PCI_2_3); s->irq_set_ioctl = KVM_IRQ_LINE; - if (kvm_check_extension(s, KVM_CAP_IRQ_INJECT_STATUS)) { + if (kvm_check_extension(KVM_CAP_IRQ_INJECT_STATUS)) { s->irq_set_ioctl = KVM_IRQ_LINE_STATUS; } kvm_readonly_mem_allowed = - (kvm_check_extension(s, KVM_CAP_READONLY_MEM) > 0); + (kvm_check_extension(KVM_CAP_READONLY_MEM) > 0); kvm_eventfds_allowed = - (kvm_check_extension(s, KVM_CAP_IOEVENTFD) > 0); + (kvm_check_extension(KVM_CAP_IOEVENTFD) > 0); kvm_irqfds_allowed = - (kvm_check_extension(s, KVM_CAP_IRQFD) > 0); + (kvm_check_extension(KVM_CAP_IRQFD) > 0); kvm_resamplefds_allowed = - (kvm_check_extension(s, KVM_CAP_IRQFD_RESAMPLE) > 0); + (kvm_check_extension(KVM_CAP_IRQFD_RESAMPLE) > 0); kvm_vm_attributes_allowed = - (kvm_check_extension(s, KVM_CAP_VM_ATTRIBUTES) > 0); + (kvm_check_extension(KVM_CAP_VM_ATTRIBUTES) > 0); kvm_ioeventfd_any_length_allowed = - (kvm_check_extension(s, KVM_CAP_IOEVENTFD_ANY_LENGTH) > 0); + (kvm_check_extension(KVM_CAP_IOEVENTFD_ANY_LENGTH) > 0); kvm_state = s; @@ -2264,7 +2264,7 @@ static int kvm_handle_internal_error(CPUState *cpu, struct kvm_run *run) fprintf(stderr, "KVM internal error. Suberror: %d\n", run->internal.suberror); - if (kvm_check_extension(kvm_state, KVM_CAP_INTERNAL_ERROR_DATA)) { + if (kvm_check_extension(KVM_CAP_INTERNAL_ERROR_DATA)) { int i; for (i = 0; i < run->internal.ndata; ++i) { @@ -2733,7 +2733,7 @@ int kvm_has_many_ioeventfds(void) int kvm_has_gsi_routing(void) { #ifdef KVM_CAP_IRQ_ROUTING - return kvm_check_extension(kvm_state, KVM_CAP_IRQ_ROUTING); + return kvm_check_extension(KVM_CAP_IRQ_ROUTING); #else return false; #endif @@ -2746,7 +2746,7 @@ int kvm_has_intx_set_mask(void) bool kvm_arm_supports_user_irq(void) { - return kvm_check_extension(kvm_state, KVM_CAP_ARM_USER_IRQ); + return kvm_check_extension(KVM_CAP_ARM_USER_IRQ); } #ifdef KVM_CAP_SET_GUEST_DEBUG @@ -3019,7 +3019,7 @@ int kvm_create_device(KVMState *s, uint64_t type, bool test) create_dev.fd = -1; create_dev.flags = test ? KVM_CREATE_DEVICE_TEST : 0; - if (!kvm_check_extension(s, KVM_CAP_DEVICE_CTRL)) { + if (!kvm_check_extension(KVM_CAP_DEVICE_CTRL)) { return -ENOTSUP; } diff --git a/hw/hyperv/hyperv.c b/hw/hyperv/hyperv.c index 844d00776d..92720efc3d 100644 --- a/hw/hyperv/hyperv.c +++ b/hw/hyperv/hyperv.c @@ -605,7 +605,7 @@ static bool process_event_flags_userspace; int hyperv_set_event_flag_handler(uint32_t conn_id, EventNotifier *notifier) { if (!process_event_flags_userspace && - !kvm_check_extension(kvm_state, KVM_CAP_HYPERV_EVENTFD)) { + !kvm_check_extension(KVM_CAP_HYPERV_EVENTFD)) { process_event_flags_userspace = true; warn_report("Hyper-V event signaling is not supported by this kernel; " diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c index 64283358f9..c0bfc69349 100644 --- a/hw/i386/kvm/clock.c +++ b/hw/i386/kvm/clock.c @@ -166,7 +166,7 @@ static void kvmclock_vm_state_change(void *opaque, int running, { KVMClockState *s = opaque; CPUState *cpu; - int cap_clock_ctrl = kvm_check_extension(kvm_state, KVM_CAP_KVMCLOCK_CTRL); + int cap_clock_ctrl = kvm_check_extension(KVM_CAP_KVMCLOCK_CTRL); int ret; if (running) { diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c index 876f5aa6fa..90532df071 100644 --- a/hw/i386/kvm/i8254.c +++ b/hw/i386/kvm/i8254.c @@ -264,7 +264,7 @@ static void kvm_pit_realizefn(DeviceState *dev, Error **errp) }; int ret; - if (kvm_check_extension(kvm_state, KVM_CAP_PIT2)) { + if (kvm_check_extension(KVM_CAP_PIT2)) { ret = kvm_vm_ioctl(kvm_state, KVM_CREATE_PIT2, &config); } else { ret = kvm_vm_ioctl(kvm_state, KVM_CREATE_PIT); @@ -278,7 +278,7 @@ static void kvm_pit_realizefn(DeviceState *dev, Error **errp) case LOST_TICK_POLICY_DELAY: break; /* enabled by default */ case LOST_TICK_POLICY_DISCARD: - if (kvm_check_extension(kvm_state, KVM_CAP_REINJECT_CONTROL)) { + if (kvm_check_extension(KVM_CAP_REINJECT_CONTROL)) { struct kvm_reinject_control control = { .pit_reinject = 0 }; ret = kvm_vm_ioctl(kvm_state, KVM_REINJECT_CONTROL, &control); diff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c index 4ba8e47251..718ed8ec6f 100644 --- a/hw/i386/kvm/ioapic.c +++ b/hw/i386/kvm/ioapic.c @@ -25,7 +25,7 @@ void kvm_pc_setup_irq_routing(bool pci_enabled) KVMState *s = kvm_state; int i; - if (kvm_check_extension(s, KVM_CAP_IRQ_ROUTING)) { + if (kvm_check_extension(KVM_CAP_IRQ_ROUTING)) { for (i = 0; i < 8; ++i) { if (i == 2) { continue; diff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c index d7df423a7a..b98437b265 100644 --- a/hw/intc/arm_gic_kvm.c +++ b/hw/intc/arm_gic_kvm.c @@ -551,7 +551,7 @@ static void kvm_arm_gic_realize(DeviceState *dev, Error **errp) KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true, &error_abort); } - } else if (kvm_check_extension(kvm_state, KVM_CAP_DEVICE_CTRL)) { + } else if (kvm_check_extension(KVM_CAP_DEVICE_CTRL)) { error_setg_errno(errp, -ret, "error creating in-kernel VGIC"); error_append_hint(errp, "Perhaps the host CPU does not support GICv2?\n"); diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c index e4bf47d885..b02e914f5f 100644 --- a/hw/intc/openpic_kvm.c +++ b/hw/intc/openpic_kvm.c @@ -203,7 +203,7 @@ static void kvm_openpic_realize(DeviceState *dev, Error **errp) struct kvm_create_device cd = {0}; int ret, i; - if (!kvm_check_extension(s, KVM_CAP_DEVICE_CTRL)) { + if (!kvm_check_extension(KVM_CAP_DEVICE_CTRL)) { error_setg(errp, "Kernel is lacking Device Control API"); return; } diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c index 8d6156578f..054648d16b 100644 --- a/hw/intc/xics_kvm.c +++ b/hw/intc/xics_kvm.c @@ -365,7 +365,7 @@ int xics_kvm_connect(SpaprInterruptController *intc, uint32_t nr_servers, return 0; } - if (!kvm_enabled() || !kvm_check_extension(kvm_state, KVM_CAP_IRQ_XICS)) { + if (!kvm_enabled() || !kvm_check_extension(KVM_CAP_IRQ_XICS)) { error_setg(errp, "KVM and IRQ_XICS capability must be present for in-kernel XICS"); return -1; diff --git a/hw/s390x/s390-stattrib-kvm.c b/hw/s390x/s390-stattrib-kvm.c index f89d8d9d16..77f536f15a 100644 --- a/hw/s390x/s390-stattrib-kvm.c +++ b/hw/s390x/s390-stattrib-kvm.c @@ -22,7 +22,7 @@ Object *kvm_s390_stattrib_create(void) { if (kvm_enabled() && - kvm_check_extension(kvm_state, KVM_CAP_S390_CMMA_MIGRATION)) { + kvm_check_extension(KVM_CAP_S390_CMMA_MIGRATION)) { return object_new(TYPE_KVM_S390_STATTRIB); } return NULL; diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 7c672c78b8..dcdd01916b 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -60,7 +60,7 @@ int kvm_arm_vcpu_finalize(CPUState *cs, int feature) void kvm_arm_init_serror_injection(CPUState *cs) { - cap_has_inject_serror_esr = kvm_check_extension(cs->kvm_state, + cap_has_inject_serror_esr = kvm_check_extension( KVM_CAP_ARM_INJECT_SERROR_ESR); } @@ -210,15 +210,14 @@ void kvm_arm_add_vcpu_properties(Object *obj) bool kvm_arm_pmu_supported(void) { - return kvm_check_extension(kvm_state, KVM_CAP_ARM_PMU_V3); + return kvm_check_extension(KVM_CAP_ARM_PMU_V3); } int kvm_arm_get_max_vm_ipa_size(MachineState *ms) { - KVMState *s = KVM_STATE(ms->accelerator); int ret; - ret = kvm_check_extension(s, KVM_CAP_ARM_VM_IPA_SIZE); + ret = kvm_check_extension(KVM_CAP_ARM_VM_IPA_SIZE); return ret > 0 ? ret : 40; } @@ -236,10 +235,10 @@ int kvm_arch_init(MachineState *ms, KVMState *s) */ kvm_halt_in_kernel_allowed = true; - cap_has_mp_state = kvm_check_extension(s, KVM_CAP_MP_STATE); + cap_has_mp_state = kvm_check_extension(KVM_CAP_MP_STATE); if (ms->smp.cpus > 256 && - !kvm_check_extension(s, KVM_CAP_ARM_IRQ_LINE_LAYOUT_2)) { + !kvm_check_extension(KVM_CAP_ARM_IRQ_LINE_LAYOUT_2)) { error_report("Using more than 256 vcpus requires a host kernel " "with KVM_CAP_ARM_IRQ_LINE_LAYOUT_2"); ret = -EINVAL; @@ -870,7 +869,7 @@ int kvm_arch_irqchip_create(KVMState *s) /* If we can create the VGIC using the newer device control API, we * let the device do this when it initializes itself, otherwise we * fall back to the old API */ - return kvm_check_extension(s, KVM_CAP_DEVICE_CTRL); + return kvm_check_extension(KVM_CAP_DEVICE_CTRL); } int kvm_arm_vgic_probe(void) diff --git a/target/arm/kvm32.c b/target/arm/kvm32.c index 7b3a19e9ae..eff0176c8f 100644 --- a/target/arm/kvm32.c +++ b/target/arm/kvm32.c @@ -221,7 +221,7 @@ int kvm_arch_init_vcpu(CPUState *cs) if (cpu->start_powered_off) { cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_POWER_OFF; } - if (kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PSCI_0_2)) { + if (kvm_check_extension(KVM_CAP_ARM_PSCI_0_2)) { cpu->psci_version = 2; cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PSCI_0_2; } diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c index 3dc494aaa7..49ef8ef15f 100644 --- a/target/arm/kvm64.c +++ b/target/arm/kvm64.c @@ -84,14 +84,13 @@ GArray *hw_breakpoints, *hw_watchpoints; */ static void kvm_arm_init_debug(CPUState *cs) { - have_guest_debug = kvm_check_extension(cs->kvm_state, - KVM_CAP_SET_GUEST_DEBUG); + have_guest_debug = kvm_check_extension(KVM_CAP_SET_GUEST_DEBUG); - max_hw_wps = kvm_check_extension(cs->kvm_state, KVM_CAP_GUEST_DEBUG_HW_WPS); + max_hw_wps = kvm_check_extension(KVM_CAP_GUEST_DEBUG_HW_WPS); hw_watchpoints = g_array_sized_new(true, true, sizeof(HWWatchpoint), max_hw_wps); - max_hw_bps = kvm_check_extension(cs->kvm_state, KVM_CAP_GUEST_DEBUG_HW_BPS); + max_hw_bps = kvm_check_extension(KVM_CAP_GUEST_DEBUG_HW_BPS); hw_breakpoints = g_array_sized_new(true, true, sizeof(HWBreakpoint), max_hw_bps); return; @@ -654,12 +653,12 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf) bool kvm_arm_aarch32_supported(void) { - return kvm_check_extension(kvm_state, KVM_CAP_ARM_EL1_32BIT); + return kvm_check_extension(KVM_CAP_ARM_EL1_32BIT); } bool kvm_arm_sve_supported(void) { - return kvm_check_extension(kvm_state, KVM_CAP_ARM_SVE); + return kvm_check_extension(KVM_CAP_ARM_SVE); } QEMU_BUILD_BUG_ON(KVM_ARM64_SVE_VQ_MIN != 1); @@ -778,14 +777,14 @@ int kvm_arch_init_vcpu(CPUState *cs) if (cpu->start_powered_off) { cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_POWER_OFF; } - if (kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PSCI_0_2)) { + if (kvm_check_extension(KVM_CAP_ARM_PSCI_0_2)) { cpu->psci_version = 2; cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PSCI_0_2; } if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_EL1_32BIT; } - if (!kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PMU_V3)) { + if (!kvm_check_extension(KVM_CAP_ARM_PMU_V3)) { cpu->has_pmu = false; } if (cpu->has_pmu) { diff --git a/target/i386/kvm.c b/target/i386/kvm.c index b3c13cb898..03df6ac3b4 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -133,12 +133,12 @@ int kvm_has_pit_state2(void) bool kvm_has_smm(void) { - return kvm_check_extension(kvm_state, KVM_CAP_X86_SMM); + return kvm_check_extension(KVM_CAP_X86_SMM); } bool kvm_has_adjust_clock_stable(void) { - int ret = kvm_check_extension(kvm_state, KVM_CAP_ADJUST_CLOCK); + int ret = kvm_check_extension(KVM_CAP_ADJUST_CLOCK); return (ret == KVM_CLOCK_TSC_STABLE); } @@ -294,7 +294,7 @@ static int get_para_features(KVMState *s) int i, features = 0; for (i = 0; i < ARRAY_SIZE(para_features); i++) { - if (kvm_check_extension(s, para_features[i].cap)) { + if (kvm_check_extension(para_features[i].cap)) { features |= (1 << para_features[i].feature); } } @@ -386,7 +386,7 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function, * and the irqchip is in the kernel. */ if (kvm_irqchip_in_kernel() && - kvm_check_extension(s, KVM_CAP_TSC_DEADLINE_TIMER)) { + kvm_check_extension(KVM_CAP_TSC_DEADLINE_TIMER)) { ret |= CPUID_EXT_TSC_DEADLINE_TIMER; } @@ -398,8 +398,7 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function, } if (enable_cpu_pm) { - int disable_exits = kvm_check_extension(s, - KVM_CAP_X86_DISABLE_EXITS); + int disable_exits = kvm_check_extension(KVM_CAP_X86_DISABLE_EXITS); if (disable_exits & KVM_X86_DISABLE_EXITS_MWAIT) { ret |= CPUID_EXT_MONITOR; @@ -542,7 +541,7 @@ static int kvm_get_mce_cap_supported(KVMState *s, uint64_t *mce_cap, { int r; - r = kvm_check_extension(s, KVM_CAP_MCE); + r = kvm_check_extension(KVM_CAP_MCE); if (r > 0) { *max_banks = r; return kvm_ioctl(s, KVM_X86_GET_MCE_CAP_SUPPORTED, mce_cap); @@ -734,8 +733,7 @@ unsigned long kvm_arch_vcpu_id(CPUState *cs) static bool hyperv_enabled(X86CPU *cpu) { - CPUState *cs = CPU(cpu); - return kvm_check_extension(cs->kvm_state, KVM_CAP_HYPERV) > 0 && + return kvm_check_extension(KVM_CAP_HYPERV) > 0 && ((cpu->hyperv_spinlock_attempts != HYPERV_SPINLOCK_NEVER_RETRY) || cpu->hyperv_features || cpu->hyperv_passthrough); } @@ -750,14 +748,14 @@ static int kvm_arch_set_tsc_khz(CPUState *cs) return 0; } - r = kvm_check_extension(cs->kvm_state, KVM_CAP_TSC_CONTROL) ? + r = kvm_check_extension(KVM_CAP_TSC_CONTROL) ? kvm_vcpu_ioctl(cs, KVM_SET_TSC_KHZ, env->tsc_khz) : -ENOTSUP; if (r < 0) { /* When KVM_SET_TSC_KHZ fails, it's an error only if the current * TSC frequency doesn't match the one we want. */ - int cur_freq = kvm_check_extension(cs->kvm_state, KVM_CAP_GET_TSC_KHZ) ? + int cur_freq = kvm_check_extension(KVM_CAP_GET_TSC_KHZ) ? kvm_vcpu_ioctl(cs, KVM_GET_TSC_KHZ) : -ENOTSUP; if (cur_freq <= 0 || cur_freq != env->tsc_khz) { @@ -978,7 +976,7 @@ static struct kvm_cpuid2 *get_supported_hv_cpuid_legacy(CPUState *cs) entry_recomm->function = HV_CPUID_ENLIGHTMENT_INFO; entry_recomm->ebx = cpu->hyperv_spinlock_attempts; - if (kvm_check_extension(cs->kvm_state, KVM_CAP_HYPERV) > 0) { + if (kvm_check_extension(KVM_CAP_HYPERV) > 0) { entry_feat->eax |= HV_HYPERCALL_AVAILABLE; entry_feat->eax |= HV_APIC_ACCESS_AVAILABLE; entry_feat->edx |= HV_CPU_DYNAMIC_PARTITIONING_AVAILABLE; @@ -986,7 +984,7 @@ static struct kvm_cpuid2 *get_supported_hv_cpuid_legacy(CPUState *cs) entry_recomm->eax |= HV_APIC_ACCESS_RECOMMENDED; } - if (kvm_check_extension(cs->kvm_state, KVM_CAP_HYPERV_TIME) > 0) { + if (kvm_check_extension(KVM_CAP_HYPERV_TIME) > 0) { entry_feat->eax |= HV_TIME_REF_COUNT_AVAILABLE; entry_feat->eax |= HV_REFERENCE_TSC_AVAILABLE; } @@ -1020,7 +1018,7 @@ static struct kvm_cpuid2 *get_supported_hv_cpuid_legacy(CPUState *cs) unsigned int cap = cpu->hyperv_synic_kvm_only ? KVM_CAP_HYPERV_SYNIC : KVM_CAP_HYPERV_SYNIC2; - if (kvm_check_extension(cs->kvm_state, cap) > 0) { + if (kvm_check_extension(cap) > 0) { entry_feat->eax |= HV_SYNIC_AVAILABLE; } } @@ -1029,19 +1027,16 @@ static struct kvm_cpuid2 *get_supported_hv_cpuid_legacy(CPUState *cs) entry_feat->eax |= HV_SYNTIMERS_AVAILABLE; } - if (kvm_check_extension(cs->kvm_state, - KVM_CAP_HYPERV_TLBFLUSH) > 0) { + if (kvm_check_extension(KVM_CAP_HYPERV_TLBFLUSH) > 0) { entry_recomm->eax |= HV_REMOTE_TLB_FLUSH_RECOMMENDED; entry_recomm->eax |= HV_EX_PROCESSOR_MASKS_RECOMMENDED; } - if (kvm_check_extension(cs->kvm_state, - KVM_CAP_HYPERV_ENLIGHTENED_VMCS) > 0) { + if (kvm_check_extension(KVM_CAP_HYPERV_ENLIGHTENED_VMCS) > 0) { entry_recomm->eax |= HV_ENLIGHTENED_VMCS_RECOMMENDED; } - if (kvm_check_extension(cs->kvm_state, - KVM_CAP_HYPERV_SEND_IPI) > 0) { + if (kvm_check_extension(KVM_CAP_HYPERV_SEND_IPI) > 0) { entry_recomm->eax |= HV_CLUSTER_IPI_RECOMMENDED; entry_recomm->eax |= HV_EX_PROCESSOR_MASKS_RECOMMENDED; } @@ -1185,7 +1180,7 @@ static int hyperv_handle_properties(CPUState *cs, } } - if (kvm_check_extension(cs->kvm_state, KVM_CAP_HYPERV_CPUID) > 0) { + if (kvm_check_extension(KVM_CAP_HYPERV_CPUID) > 0) { cpuid = get_supported_hv_cpuid(cs); } else { cpuid = get_supported_hv_cpuid_legacy(cs); @@ -1466,7 +1461,7 @@ int kvm_arch_init_vcpu(CPUState *cs) * so that vcpu's TSC frequency can be migrated later via this field. */ if (!env->tsc_khz) { - r = kvm_check_extension(cs->kvm_state, KVM_CAP_GET_TSC_KHZ) ? + r = kvm_check_extension(KVM_CAP_GET_TSC_KHZ) ? kvm_vcpu_ioctl(cs, KVM_GET_TSC_KHZ) : -ENOTSUP; if (r > 0) { @@ -1707,7 +1702,7 @@ int kvm_arch_init_vcpu(CPUState *cs) if (((env->cpuid_version >> 8)&0xF) >= 6 && (env->features[FEAT_1_EDX] & (CPUID_MCE | CPUID_MCA)) == (CPUID_MCE | CPUID_MCA) - && kvm_check_extension(cs->kvm_state, KVM_CAP_MCE) > 0) { + && kvm_check_extension(KVM_CAP_MCE) > 0) { uint64_t mcg_cap, unsupported_caps; int banks; int ret; @@ -1900,7 +1895,7 @@ static int kvm_get_supported_feature_msrs(KVMState *s) return 0; } - if (!kvm_check_extension(s, KVM_CAP_GET_MSR_FEATURES)) { + if (!kvm_check_extension(KVM_CAP_GET_MSR_FEATURES)) { return 0; } @@ -2096,13 +2091,13 @@ int kvm_arch_init(MachineState *ms, KVMState *s) int ret; struct utsname utsname; - has_xsave = kvm_check_extension(s, KVM_CAP_XSAVE); - has_xcrs = kvm_check_extension(s, KVM_CAP_XCRS); - has_pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2); + has_xsave = kvm_check_extension(KVM_CAP_XSAVE); + has_xcrs = kvm_check_extension(KVM_CAP_XCRS); + has_pit_state2 = kvm_check_extension(KVM_CAP_PIT_STATE2); - hv_vpindex_settable = kvm_check_extension(s, KVM_CAP_HYPERV_VP_INDEX); + hv_vpindex_settable = kvm_check_extension(KVM_CAP_HYPERV_VP_INDEX); - has_exception_payload = kvm_check_extension(s, KVM_CAP_EXCEPTION_PAYLOAD); + has_exception_payload = kvm_check_extension(KVM_CAP_EXCEPTION_PAYLOAD); if (has_exception_payload) { ret = kvm_vm_enable_cap(s, KVM_CAP_EXCEPTION_PAYLOAD, 0, true); if (ret < 0) { @@ -2133,7 +2128,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) * that case we need to stick with the default, i.e. a 256K maximum BIOS * size. */ - if (kvm_check_extension(s, KVM_CAP_SET_IDENTITY_MAP_ADDR)) { + if (kvm_check_extension(KVM_CAP_SET_IDENTITY_MAP_ADDR)) { /* Allows up to 16M BIOSes. */ identity_base = 0xfeffc000; @@ -2165,7 +2160,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } } - if (kvm_check_extension(s, KVM_CAP_X86_SMM) && + if (kvm_check_extension(KVM_CAP_X86_SMM) && object_dynamic_cast(OBJECT(ms), TYPE_X86_MACHINE) && x86_machine_is_smm_enabled(X86_MACHINE(ms))) { smram_machine_done.notify = register_smram_listener; @@ -2173,7 +2168,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } if (enable_cpu_pm) { - int disable_exits = kvm_check_extension(s, KVM_CAP_X86_DISABLE_EXITS); + int disable_exits = kvm_check_extension(KVM_CAP_X86_DISABLE_EXITS); int ret; /* Work around for kernel header with a typo. TODO: fix header and drop. */ @@ -4490,7 +4485,7 @@ bool kvm_arch_stop_on_emulation_error(CPUState *cs) void kvm_arch_init_irq_routing(KVMState *s) { - if (!kvm_check_extension(s, KVM_CAP_IRQ_ROUTING)) { + if (!kvm_check_extension(KVM_CAP_IRQ_ROUTING)) { /* If kernel can't do irq routing, interrupt source * override 0->2 cannot be set up as required by HPET. * So we have to disable it. diff --git a/target/mips/kvm.c b/target/mips/kvm.c index 96cfa10cf2..0adfa70210 100644 --- a/target/mips/kvm.c +++ b/target/mips/kvm.c @@ -50,8 +50,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s) /* MIPS has 128 signals */ kvm_set_sigmask_len(s, 16); - kvm_mips_fpu_cap = kvm_check_extension(s, KVM_CAP_MIPS_FPU); - kvm_mips_msa_cap = kvm_check_extension(s, KVM_CAP_MIPS_MSA); + kvm_mips_fpu_cap = kvm_check_extension(KVM_CAP_MIPS_FPU); + kvm_mips_msa_cap = kvm_check_extension(KVM_CAP_MIPS_MSA); DPRINTF("%s\n", __func__); return 0; diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 2692f76130..ace44d9fc7 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -110,24 +110,24 @@ static int kvmppc_get_dec_bits(void); int kvm_arch_init(MachineState *ms, KVMState *s) { - cap_interrupt_unset = kvm_check_extension(s, KVM_CAP_PPC_UNSET_IRQ); - cap_segstate = kvm_check_extension(s, KVM_CAP_PPC_SEGSTATE); - cap_booke_sregs = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_SREGS); + cap_interrupt_unset = kvm_check_extension(KVM_CAP_PPC_UNSET_IRQ); + cap_segstate = kvm_check_extension(KVM_CAP_PPC_SEGSTATE); + cap_booke_sregs = kvm_check_extension(KVM_CAP_PPC_BOOKE_SREGS); cap_ppc_smt_possible = kvm_vm_check_extension(s, KVM_CAP_PPC_SMT_POSSIBLE); - cap_spapr_tce = kvm_check_extension(s, KVM_CAP_SPAPR_TCE); - cap_spapr_tce_64 = kvm_check_extension(s, KVM_CAP_SPAPR_TCE_64); - cap_spapr_multitce = kvm_check_extension(s, KVM_CAP_SPAPR_MULTITCE); + cap_spapr_tce = kvm_check_extension(KVM_CAP_SPAPR_TCE); + cap_spapr_tce_64 = kvm_check_extension(KVM_CAP_SPAPR_TCE_64); + cap_spapr_multitce = kvm_check_extension(KVM_CAP_SPAPR_MULTITCE); cap_spapr_vfio = kvm_vm_check_extension(s, KVM_CAP_SPAPR_TCE_VFIO); - cap_one_reg = kvm_check_extension(s, KVM_CAP_ONE_REG); - cap_hior = kvm_check_extension(s, KVM_CAP_PPC_HIOR); - cap_epr = kvm_check_extension(s, KVM_CAP_PPC_EPR); - cap_ppc_watchdog = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_WATCHDOG); + cap_one_reg = kvm_check_extension(KVM_CAP_ONE_REG); + cap_hior = kvm_check_extension(KVM_CAP_PPC_HIOR); + cap_epr = kvm_check_extension(KVM_CAP_PPC_EPR); + cap_ppc_watchdog = kvm_check_extension(KVM_CAP_PPC_BOOKE_WATCHDOG); /* * Note: we don't set cap_papr here, because this capability is * only activated after this by kvmppc_set_papr() */ cap_htab_fd = kvm_vm_check_extension(s, KVM_CAP_PPC_HTAB_FD); - cap_fixup_hcalls = kvm_check_extension(s, KVM_CAP_PPC_FIXUP_HCALL); + cap_fixup_hcalls = kvm_check_extension(KVM_CAP_PPC_FIXUP_HCALL); cap_ppc_smt = kvm_vm_check_extension(s, KVM_CAP_PPC_SMT); cap_htm = kvm_vm_check_extension(s, KVM_CAP_PPC_HTM); cap_mmu_radix = kvm_vm_check_extension(s, KVM_CAP_PPC_MMU_RADIX); @@ -147,7 +147,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) */ cap_ppc_pvr_compat = false; - if (!kvm_check_extension(s, KVM_CAP_PPC_IRQ_LEVEL)) { + if (!kvm_check_extension(KVM_CAP_PPC_IRQ_LEVEL)) { error_report("KVM: Host kernel doesn't have level irq capability"); exit(1); } @@ -205,7 +205,7 @@ static int kvm_booke206_tlb_init(PowerPCCPU *cpu) int ret, i; if (!kvm_enabled() || - !kvm_check_extension(cs->kvm_state, KVM_CAP_SW_TLB)) { + !kvm_check_extension(KVM_CAP_SW_TLB)) { return 0; } @@ -246,7 +246,7 @@ static void kvm_get_smmu_info(struct kvm_ppc_smmu_info *info, Error **errp) assert(kvm_state != NULL); - if (!kvm_check_extension(kvm_state, KVM_CAP_PPC_GET_SMMU_INFO)) { + if (!kvm_check_extension(KVM_CAP_PPC_GET_SMMU_INFO)) { error_setg(errp, "KVM doesn't expose the MMU features it supports"); error_append_hint(errp, "Consider switching to a newer KVM\n"); return; @@ -268,7 +268,7 @@ struct ppc_radix_page_info *kvm_get_radix_page_info(void) struct kvm_ppc_rmmu_info rmmu_info; int i; - if (!kvm_check_extension(s, KVM_CAP_PPC_MMU_RADIX)) { + if (!kvm_check_extension(KVM_CAP_PPC_MMU_RADIX)) { return NULL; } if (kvm_vm_ioctl(s, KVM_PPC_GET_RMMU_INFO, &rmmu_info)) { @@ -2611,7 +2611,7 @@ int kvmppc_define_rtas_kernel_token(uint32_t token, const char *function) .token = token, }; - if (!kvm_check_extension(kvm_state, KVM_CAP_PPC_RTAS)) { + if (!kvm_check_extension(KVM_CAP_PPC_RTAS)) { return -ENOENT; } @@ -2828,7 +2828,7 @@ int kvm_handle_nmi(PowerPCCPU *cpu, struct kvm_run *run) int kvmppc_enable_hwrng(void) { - if (!kvm_enabled() || !kvm_check_extension(kvm_state, KVM_CAP_PPC_HWRNG)) { + if (!kvm_enabled() || !kvm_check_extension(KVM_CAP_PPC_HWRNG)) { return -1; } diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 2fa609bffe..4b6185bb44 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -222,8 +222,7 @@ bool s390_has_feat(S390Feat feat) #ifdef CONFIG_KVM if (kvm_enabled()) { if (feat == S390_FEAT_VECTOR) { - return kvm_check_extension(kvm_state, - KVM_CAP_S390_VECTOR_REGISTERS); + return kvm_check_extension(KVM_CAP_S390_VECTOR_REGISTERS); } if (feat == S390_FEAT_RUNTIME_INSTRUMENTATION) { return kvm_s390_get_ri(); diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index f2f75d2a57..710f353fb0 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -342,21 +342,21 @@ int kvm_arch_init(MachineState *ms, KVMState *s) object_class_foreach(ccw_machine_class_foreach, TYPE_S390_CCW_MACHINE, false, NULL); - if (!kvm_check_extension(kvm_state, KVM_CAP_DEVICE_CTRL)) { + if (!kvm_check_extension(KVM_CAP_DEVICE_CTRL)) { error_report("KVM is missing capability KVM_CAP_DEVICE_CTRL - " "please use kernel 3.15 or newer"); return -1; } - cap_sync_regs = kvm_check_extension(s, KVM_CAP_SYNC_REGS); - cap_async_pf = kvm_check_extension(s, KVM_CAP_ASYNC_PF); - cap_mem_op = kvm_check_extension(s, KVM_CAP_S390_MEM_OP); - cap_s390_irq = kvm_check_extension(s, KVM_CAP_S390_INJECT_IRQ); - cap_vcpu_resets = kvm_check_extension(s, KVM_CAP_S390_VCPU_RESETS); - cap_protected = kvm_check_extension(s, KVM_CAP_S390_PROTECTED); + cap_sync_regs = kvm_check_extension(KVM_CAP_SYNC_REGS); + cap_async_pf = kvm_check_extension(KVM_CAP_ASYNC_PF); + cap_mem_op = kvm_check_extension(KVM_CAP_S390_MEM_OP); + cap_s390_irq = kvm_check_extension(KVM_CAP_S390_INJECT_IRQ); + cap_vcpu_resets = kvm_check_extension(KVM_CAP_S390_VCPU_RESETS); + cap_protected = kvm_check_extension(KVM_CAP_S390_PROTECTED); - if (!kvm_check_extension(s, KVM_CAP_S390_GMAP) - || !kvm_check_extension(s, KVM_CAP_S390_COW)) { + if (!kvm_check_extension(KVM_CAP_S390_GMAP) + || !kvm_check_extension(KVM_CAP_S390_COW)) { phys_mem_set_alloc(legacy_s390_alloc); } @@ -381,7 +381,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) * newer machine types if KVM_CAP_S390_AIS_MIGRATION is available. */ if (cpu_model_allowed() && kvm_kernel_irqchip_allowed() && - kvm_check_extension(s, KVM_CAP_S390_AIS_MIGRATION)) { + kvm_check_extension(KVM_CAP_S390_AIS_MIGRATION)) { kvm_vm_enable_cap(s, KVM_CAP_S390_AIS, 0); } @@ -1996,7 +1996,7 @@ void kvm_arch_init_irq_routing(KVMState *s) * are handled in-kernel, it is not true for s390 (yet); therefore, we * have to override the common code kvm_halt_in_kernel_allowed setting. */ - if (kvm_check_extension(s, KVM_CAP_IRQ_ROUTING)) { + if (kvm_check_extension(KVM_CAP_IRQ_ROUTING)) { kvm_gsi_routing_allowed = true; kvm_halt_in_kernel_allowed = false; } @@ -2015,7 +2015,7 @@ int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, uint32_t sch, }; trace_kvm_assign_subch_ioeventfd(kick.fd, kick.addr, assign, kick.datamatch); - if (!kvm_check_extension(kvm_state, KVM_CAP_IOEVENTFD)) { + if (!kvm_check_extension(KVM_CAP_IOEVENTFD)) { return -ENOSYS; } if (!assign) { @@ -2082,7 +2082,7 @@ void kvm_s390_vcpu_interrupt_pre_save(S390CPU *cpu) CPUState *cs = CPU(cpu); int32_t bytes; - if (!kvm_check_extension(kvm_state, KVM_CAP_S390_IRQ_STATE)) { + if (!kvm_check_extension(KVM_CAP_S390_IRQ_STATE)) { return; } @@ -2109,7 +2109,7 @@ int kvm_s390_vcpu_interrupt_post_load(S390CPU *cpu) return 0; } - if (!kvm_check_extension(kvm_state, KVM_CAP_S390_IRQ_STATE)) { + if (!kvm_check_extension(KVM_CAP_S390_IRQ_STATE)) { return -ENOSYS; } @@ -2421,7 +2421,7 @@ void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error **errp) } /* bpb needs kernel support for migration, VSIE and reset */ - if (!kvm_check_extension(kvm_state, KVM_CAP_S390_BPB)) { + if (!kvm_check_extension(KVM_CAP_S390_BPB)) { clear_bit(S390_FEAT_BPB, model->features); } -- 2.21.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/7] accel/kvm: Simplify kvm_check_extension() 2020-06-23 10:50 ` [PATCH 2/7] accel/kvm: Simplify kvm_check_extension() Philippe Mathieu-Daudé @ 2020-06-23 15:43 ` Cornelia Huck 0 siblings, 0 replies; 16+ messages in thread From: Cornelia Huck @ 2020-06-23 15:43 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth On Tue, 23 Jun 2020 12:50:47 +0200 Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > In previous commit we let kvm_check_extension() use the > global kvm_state. Since the KVMState* argument is now > unused, drop it. > > Convert callers with this Coccinelle script: > > @@ > expression kvm_state, extension; > @@ > - kvm_check_extension(kvm_state, extension) > + kvm_check_extension(extension) > > Unused variables manually removed: > - CPUState* in hyperv_enabled() > - KVMState* in kvm_arm_get_max_vm_ipa_size() > > Inspired-by: Paolo Bonzini <pbonzini@redhat.com> 🌟💡🌟 > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > include/sysemu/kvm.h | 2 +- > accel/kvm/kvm-all.c | 64 ++++++++++++++++++------------------ > hw/hyperv/hyperv.c | 2 +- > hw/i386/kvm/clock.c | 2 +- > hw/i386/kvm/i8254.c | 4 +-- > hw/i386/kvm/ioapic.c | 2 +- > hw/intc/arm_gic_kvm.c | 2 +- > hw/intc/openpic_kvm.c | 2 +- > hw/intc/xics_kvm.c | 2 +- > hw/s390x/s390-stattrib-kvm.c | 2 +- > target/arm/kvm.c | 13 ++++---- > target/arm/kvm32.c | 2 +- > target/arm/kvm64.c | 15 ++++----- > target/i386/kvm.c | 61 ++++++++++++++++------------------ > target/mips/kvm.c | 4 +-- > target/ppc/kvm.c | 34 +++++++++---------- > target/s390x/cpu_models.c | 3 +- > target/s390x/kvm.c | 30 ++++++++--------- > 18 files changed, 119 insertions(+), 127 deletions(-) Reviewed-by: Cornelia Huck <cohuck@redhat.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/7] accel/kvm: Simplify kvm_check_extension_list() 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé 2020-06-23 10:50 ` [PATCH 1/7] accel/kvm: Let kvm_check_extension use global KVM state Philippe Mathieu-Daudé 2020-06-23 10:50 ` [PATCH 2/7] accel/kvm: Simplify kvm_check_extension() Philippe Mathieu-Daudé @ 2020-06-23 10:50 ` Philippe Mathieu-Daudé 2020-06-23 15:50 ` Cornelia Huck 2020-06-23 10:50 ` [RFC PATCH 4/7] accel/kvm: Simplify kvm_set_sigmask_len() Philippe Mathieu-Daudé ` (4 subsequent siblings) 7 siblings, 1 reply; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth, Philippe Mathieu-Daudé The KVMState* argument is now unused, drop it. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- accel/kvm/kvm-all.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index b6b39b0e92..afd14492a0 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1088,7 +1088,7 @@ static int kvm_check_many_ioeventfds(void) } static const KVMCapabilityInfo * -kvm_check_extension_list(KVMState *s, const KVMCapabilityInfo *list) +kvm_check_extension_list(const KVMCapabilityInfo *list) { while (list->name) { if (!kvm_check_extension(list->value)) { @@ -2104,10 +2104,10 @@ static int kvm_init(MachineState *ms) nc++; } - missing_cap = kvm_check_extension_list(s, kvm_required_capabilites); + missing_cap = kvm_check_extension_list(kvm_required_capabilites); if (!missing_cap) { missing_cap = - kvm_check_extension_list(s, kvm_arch_required_capabilities); + kvm_check_extension_list(kvm_arch_required_capabilities); } if (missing_cap) { ret = -EINVAL; -- 2.21.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 3/7] accel/kvm: Simplify kvm_check_extension_list() 2020-06-23 10:50 ` [PATCH 3/7] accel/kvm: Simplify kvm_check_extension_list() Philippe Mathieu-Daudé @ 2020-06-23 15:50 ` Cornelia Huck 0 siblings, 0 replies; 16+ messages in thread From: Cornelia Huck @ 2020-06-23 15:50 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth On Tue, 23 Jun 2020 12:50:48 +0200 Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > The KVMState* argument is now unused, drop it. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > accel/kvm/kvm-all.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) Reviewed-by: Cornelia Huck <cohuck@redhat.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* [RFC PATCH 4/7] accel/kvm: Simplify kvm_set_sigmask_len() 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé ` (2 preceding siblings ...) 2020-06-23 10:50 ` [PATCH 3/7] accel/kvm: Simplify kvm_check_extension_list() Philippe Mathieu-Daudé @ 2020-06-23 10:50 ` Philippe Mathieu-Daudé 2020-07-05 7:12 ` Paolo Bonzini 2020-06-23 10:50 ` [PATCH 5/7] target/i386/kvm: Simplify get_para_features() Philippe Mathieu-Daudé ` (3 subsequent siblings) 7 siblings, 1 reply; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth, Philippe Mathieu-Daudé The sigmask_len is a property of the accelerator, not the VM. Simplify by directly using the global kvm_state, remove the unnecessary KVMState* argument. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- include/sysemu/kvm.h | 2 +- accel/kvm/kvm-all.c | 4 ++-- target/mips/kvm.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index 3662641c99..44c1767a7f 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -469,7 +469,7 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, uint64_t kvm_arch_get_supported_msr_feature(KVMState *s, uint32_t index); -void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len); +void kvm_set_sigmask_len(unsigned int sigmask_len); #if !defined(CONFIG_USER_ONLY) int kvm_physical_memory_addr_from_host(KVMState *s, void *ram_addr, diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index afd14492a0..7b3f76f23d 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2240,9 +2240,9 @@ err: return ret; } -void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len) +void kvm_set_sigmask_len(unsigned int sigmask_len) { - s->sigmask_len = sigmask_len; + kvm_state->sigmask_len = sigmask_len; } static void kvm_handle_io(uint16_t port, MemTxAttrs attrs, void *data, int direction, diff --git a/target/mips/kvm.c b/target/mips/kvm.c index 0adfa70210..cc3e09bdef 100644 --- a/target/mips/kvm.c +++ b/target/mips/kvm.c @@ -48,7 +48,7 @@ unsigned long kvm_arch_vcpu_id(CPUState *cs) int kvm_arch_init(MachineState *ms, KVMState *s) { /* MIPS has 128 signals */ - kvm_set_sigmask_len(s, 16); + kvm_set_sigmask_len(16); kvm_mips_fpu_cap = kvm_check_extension(KVM_CAP_MIPS_FPU); kvm_mips_msa_cap = kvm_check_extension(KVM_CAP_MIPS_MSA); -- 2.21.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [RFC PATCH 4/7] accel/kvm: Simplify kvm_set_sigmask_len() 2020-06-23 10:50 ` [RFC PATCH 4/7] accel/kvm: Simplify kvm_set_sigmask_len() Philippe Mathieu-Daudé @ 2020-07-05 7:12 ` Paolo Bonzini 2020-07-05 9:57 ` Philippe Mathieu-Daudé 0 siblings, 1 reply; 16+ messages in thread From: Paolo Bonzini @ 2020-07-05 7:12 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Marcelo Tosatti, Thomas Huth On 23/06/20 12:50, Philippe Mathieu-Daudé wrote: > The sigmask_len is a property of the accelerator, not the VM. > Simplify by directly using the global kvm_state, remove the > unnecessary KVMState* argument. This is not entirely true, if there were multiple KVMStates how would you know which one to read from? So it would have to be a global variable. Paolo > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > include/sysemu/kvm.h | 2 +- > accel/kvm/kvm-all.c | 4 ++-- > target/mips/kvm.c | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h > index 3662641c99..44c1767a7f 100644 > --- a/include/sysemu/kvm.h > +++ b/include/sysemu/kvm.h > @@ -469,7 +469,7 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, > uint64_t kvm_arch_get_supported_msr_feature(KVMState *s, uint32_t index); > > > -void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len); > +void kvm_set_sigmask_len(unsigned int sigmask_len); > > #if !defined(CONFIG_USER_ONLY) > int kvm_physical_memory_addr_from_host(KVMState *s, void *ram_addr, > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c > index afd14492a0..7b3f76f23d 100644 > --- a/accel/kvm/kvm-all.c > +++ b/accel/kvm/kvm-all.c > @@ -2240,9 +2240,9 @@ err: > return ret; > } > > -void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len) > +void kvm_set_sigmask_len(unsigned int sigmask_len) > { > - s->sigmask_len = sigmask_len; > + kvm_state->sigmask_len = sigmask_len; > } > > static void kvm_handle_io(uint16_t port, MemTxAttrs attrs, void *data, int direction, > diff --git a/target/mips/kvm.c b/target/mips/kvm.c > index 0adfa70210..cc3e09bdef 100644 > --- a/target/mips/kvm.c > +++ b/target/mips/kvm.c > @@ -48,7 +48,7 @@ unsigned long kvm_arch_vcpu_id(CPUState *cs) > int kvm_arch_init(MachineState *ms, KVMState *s) > { > /* MIPS has 128 signals */ > - kvm_set_sigmask_len(s, 16); > + kvm_set_sigmask_len(16); > > kvm_mips_fpu_cap = kvm_check_extension(KVM_CAP_MIPS_FPU); > kvm_mips_msa_cap = kvm_check_extension(KVM_CAP_MIPS_MSA); > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC PATCH 4/7] accel/kvm: Simplify kvm_set_sigmask_len() 2020-07-05 7:12 ` Paolo Bonzini @ 2020-07-05 9:57 ` Philippe Mathieu-Daudé 0 siblings, 0 replies; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-07-05 9:57 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Marcelo Tosatti, Thomas Huth On 7/5/20 9:12 AM, Paolo Bonzini wrote: > On 23/06/20 12:50, Philippe Mathieu-Daudé wrote: >> The sigmask_len is a property of the accelerator, not the VM. >> Simplify by directly using the global kvm_state, remove the >> unnecessary KVMState* argument. > > This is not entirely true, if there were multiple KVMStates how would > you know which one to read from? So it would have to be a global variable. Ah I guess I understand. Thanks for reviewing and queuing the rest! > > Paolo > >> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> --- >> include/sysemu/kvm.h | 2 +- >> accel/kvm/kvm-all.c | 4 ++-- >> target/mips/kvm.c | 2 +- >> 3 files changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h >> index 3662641c99..44c1767a7f 100644 >> --- a/include/sysemu/kvm.h >> +++ b/include/sysemu/kvm.h >> @@ -469,7 +469,7 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, >> uint64_t kvm_arch_get_supported_msr_feature(KVMState *s, uint32_t index); >> >> >> -void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len); >> +void kvm_set_sigmask_len(unsigned int sigmask_len); >> >> #if !defined(CONFIG_USER_ONLY) >> int kvm_physical_memory_addr_from_host(KVMState *s, void *ram_addr, >> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c >> index afd14492a0..7b3f76f23d 100644 >> --- a/accel/kvm/kvm-all.c >> +++ b/accel/kvm/kvm-all.c >> @@ -2240,9 +2240,9 @@ err: >> return ret; >> } >> >> -void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len) >> +void kvm_set_sigmask_len(unsigned int sigmask_len) >> { >> - s->sigmask_len = sigmask_len; >> + kvm_state->sigmask_len = sigmask_len; >> } >> >> static void kvm_handle_io(uint16_t port, MemTxAttrs attrs, void *data, int direction, >> diff --git a/target/mips/kvm.c b/target/mips/kvm.c >> index 0adfa70210..cc3e09bdef 100644 >> --- a/target/mips/kvm.c >> +++ b/target/mips/kvm.c >> @@ -48,7 +48,7 @@ unsigned long kvm_arch_vcpu_id(CPUState *cs) >> int kvm_arch_init(MachineState *ms, KVMState *s) >> { >> /* MIPS has 128 signals */ >> - kvm_set_sigmask_len(s, 16); >> + kvm_set_sigmask_len(16); >> >> kvm_mips_fpu_cap = kvm_check_extension(KVM_CAP_MIPS_FPU); >> kvm_mips_msa_cap = kvm_check_extension(KVM_CAP_MIPS_MSA); >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 5/7] target/i386/kvm: Simplify get_para_features() 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé ` (3 preceding siblings ...) 2020-06-23 10:50 ` [RFC PATCH 4/7] accel/kvm: Simplify kvm_set_sigmask_len() Philippe Mathieu-Daudé @ 2020-06-23 10:50 ` Philippe Mathieu-Daudé 2020-06-23 15:56 ` Cornelia Huck 2020-06-23 10:50 ` [RFC PATCH 6/7] target/i386/kvm: Simplify kvm_get_mce_cap_supported() Philippe Mathieu-Daudé ` (2 subsequent siblings) 7 siblings, 1 reply; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth, Philippe Mathieu-Daudé The KVMState* argument is now unused, drop it. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- target/i386/kvm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 03df6ac3b4..19d3db657a 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -289,7 +289,7 @@ static const struct kvm_para_features { { KVM_CAP_ASYNC_PF, KVM_FEATURE_ASYNC_PF }, }; -static int get_para_features(KVMState *s) +static int get_para_features(void) { int i, features = 0; @@ -452,7 +452,7 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function, /* fallback for older kernels */ if ((function == KVM_CPUID_FEATURES) && !found) { - ret = get_para_features(s); + ret = get_para_features(); } return ret; -- 2.21.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 5/7] target/i386/kvm: Simplify get_para_features() 2020-06-23 10:50 ` [PATCH 5/7] target/i386/kvm: Simplify get_para_features() Philippe Mathieu-Daudé @ 2020-06-23 15:56 ` Cornelia Huck 0 siblings, 0 replies; 16+ messages in thread From: Cornelia Huck @ 2020-06-23 15:56 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth On Tue, 23 Jun 2020 12:50:50 +0200 Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > The KVMState* argument is now unused, drop it. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > target/i386/kvm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Reviewed-by: Cornelia Huck <cohuck@redhat.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* [RFC PATCH 6/7] target/i386/kvm: Simplify kvm_get_mce_cap_supported() 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé ` (4 preceding siblings ...) 2020-06-23 10:50 ` [PATCH 5/7] target/i386/kvm: Simplify get_para_features() Philippe Mathieu-Daudé @ 2020-06-23 10:50 ` Philippe Mathieu-Daudé 2020-06-23 10:50 ` [RFC PATCH 7/7] target/i386/kvm: Simplify kvm_get_supported_[feature]_msrs() Philippe Mathieu-Daudé 2020-07-04 16:50 ` [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé 7 siblings, 0 replies; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth, Philippe Mathieu-Daudé As the MCE supported capabilities should be the same for all VMs, it is safe to directly use the global kvm_state. Remove the unnecessary KVMState* argument. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- target/i386/kvm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 19d3db657a..626cb04d88 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -536,7 +536,7 @@ uint64_t kvm_arch_get_supported_msr_feature(KVMState *s, uint32_t index) } } -static int kvm_get_mce_cap_supported(KVMState *s, uint64_t *mce_cap, +static int kvm_get_mce_cap_supported(uint64_t *mce_cap, int *max_banks) { int r; @@ -544,7 +544,7 @@ static int kvm_get_mce_cap_supported(KVMState *s, uint64_t *mce_cap, r = kvm_check_extension(KVM_CAP_MCE); if (r > 0) { *max_banks = r; - return kvm_ioctl(s, KVM_X86_GET_MCE_CAP_SUPPORTED, mce_cap); + return kvm_ioctl(kvm_state, KVM_X86_GET_MCE_CAP_SUPPORTED, mce_cap); } return -ENOSYS; } @@ -1707,7 +1707,7 @@ int kvm_arch_init_vcpu(CPUState *cs) int banks; int ret; - ret = kvm_get_mce_cap_supported(cs->kvm_state, &mcg_cap, &banks); + ret = kvm_get_mce_cap_supported(&mcg_cap, &banks); if (ret < 0) { fprintf(stderr, "kvm_get_mce_cap_supported: %s", strerror(-ret)); return ret; -- 2.21.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [RFC PATCH 7/7] target/i386/kvm: Simplify kvm_get_supported_[feature]_msrs() 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé ` (5 preceding siblings ...) 2020-06-23 10:50 ` [RFC PATCH 6/7] target/i386/kvm: Simplify kvm_get_mce_cap_supported() Philippe Mathieu-Daudé @ 2020-06-23 10:50 ` Philippe Mathieu-Daudé 2020-07-04 16:50 ` [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé 7 siblings, 0 replies; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-06-23 10:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth, Philippe Mathieu-Daudé As the MSR supported features should be the same for all VMs, it is safe to directly use the global kvm_state. Remove the unnecessary KVMState* argument. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- target/i386/kvm.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 626cb04d88..988ed3c238 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -1887,7 +1887,7 @@ void kvm_arch_do_init_vcpu(X86CPU *cpu) } } -static int kvm_get_supported_feature_msrs(KVMState *s) +static int kvm_get_supported_feature_msrs(void) { int ret = 0; @@ -1902,7 +1902,7 @@ static int kvm_get_supported_feature_msrs(KVMState *s) struct kvm_msr_list msr_list; msr_list.nmsrs = 0; - ret = kvm_ioctl(s, KVM_GET_MSR_FEATURE_INDEX_LIST, &msr_list); + ret = kvm_ioctl(kvm_state, KVM_GET_MSR_FEATURE_INDEX_LIST, &msr_list); if (ret < 0 && ret != -E2BIG) { error_report("Fetch KVM feature MSR list failed: %s", strerror(-ret)); @@ -1915,7 +1915,8 @@ static int kvm_get_supported_feature_msrs(KVMState *s) msr_list.nmsrs * sizeof(msr_list.indices[0])); kvm_feature_msrs->nmsrs = msr_list.nmsrs; - ret = kvm_ioctl(s, KVM_GET_MSR_FEATURE_INDEX_LIST, kvm_feature_msrs); + ret = kvm_ioctl(kvm_state, KVM_GET_MSR_FEATURE_INDEX_LIST, + kvm_feature_msrs); if (ret < 0) { error_report("Fetch KVM feature MSR list failed: %s", @@ -1928,7 +1929,7 @@ static int kvm_get_supported_feature_msrs(KVMState *s) return 0; } -static int kvm_get_supported_msrs(KVMState *s) +static int kvm_get_supported_msrs(void) { int ret = 0; struct kvm_msr_list msr_list, *kvm_msr_list; @@ -1938,7 +1939,7 @@ static int kvm_get_supported_msrs(KVMState *s) * save/restore. */ msr_list.nmsrs = 0; - ret = kvm_ioctl(s, KVM_GET_MSR_INDEX_LIST, &msr_list); + ret = kvm_ioctl(kvm_state, KVM_GET_MSR_INDEX_LIST, &msr_list); if (ret < 0 && ret != -E2BIG) { return ret; } @@ -1951,7 +1952,7 @@ static int kvm_get_supported_msrs(KVMState *s) sizeof(msr_list.indices[0]))); kvm_msr_list->nmsrs = msr_list.nmsrs; - ret = kvm_ioctl(s, KVM_GET_MSR_INDEX_LIST, kvm_msr_list); + ret = kvm_ioctl(kvm_state, KVM_GET_MSR_INDEX_LIST, kvm_msr_list); if (ret >= 0) { int i; @@ -2107,12 +2108,12 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } } - ret = kvm_get_supported_msrs(s); + ret = kvm_get_supported_msrs(); if (ret < 0) { return ret; } - kvm_get_supported_feature_msrs(s); + kvm_get_supported_feature_msrs(); uname(&utsname); lm_capable_kernel = strcmp(utsname.machine, "x86_64") == 0; -- 2.21.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé ` (6 preceding siblings ...) 2020-06-23 10:50 ` [RFC PATCH 7/7] target/i386/kvm: Simplify kvm_get_supported_[feature]_msrs() Philippe Mathieu-Daudé @ 2020-07-04 16:50 ` Philippe Mathieu-Daudé 2020-07-05 6:16 ` Paolo Bonzini 7 siblings, 1 reply; 16+ messages in thread From: Philippe Mathieu-Daudé @ 2020-07-04 16:50 UTC (permalink / raw) To: qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Paolo Bonzini, Marcelo Tosatti, Thomas Huth kind ping :) On 6/23/20 12:50 PM, Philippe Mathieu-Daudé wrote: > Following Paolo's idea on kvm_check_extension(): > https://www.mail-archive.com/qemu-devel@nongnu.org/msg713794.html > > CI: > https://travis-ci.org/github/philmd/qemu/builds/701213438 > > Philippe Mathieu-Daudé (7): > accel/kvm: Let kvm_check_extension use global KVM state > accel/kvm: Simplify kvm_check_extension() > accel/kvm: Simplify kvm_check_extension_list() > accel/kvm: Simplify kvm_set_sigmask_len() > target/i386/kvm: Simplify get_para_features() > target/i386/kvm: Simplify kvm_get_mce_cap_supported() > target/i386/kvm: Simplify kvm_get_supported_[feature]_msrs() > > include/sysemu/kvm.h | 4 +- > accel/kvm/kvm-all.c | 76 +++++++++++++++---------------- > hw/hyperv/hyperv.c | 2 +- > hw/i386/kvm/clock.c | 2 +- > hw/i386/kvm/i8254.c | 4 +- > hw/i386/kvm/ioapic.c | 2 +- > hw/intc/arm_gic_kvm.c | 2 +- > hw/intc/openpic_kvm.c | 2 +- > hw/intc/xics_kvm.c | 2 +- > hw/s390x/s390-stattrib-kvm.c | 2 +- > target/arm/kvm.c | 13 +++--- > target/arm/kvm32.c | 2 +- > target/arm/kvm64.c | 15 +++--- > target/i386/kvm.c | 88 +++++++++++++++++------------------- > target/mips/kvm.c | 6 +-- > target/ppc/kvm.c | 34 +++++++------- > target/s390x/cpu_models.c | 3 +- > target/s390x/kvm.c | 30 ++++++------ > 18 files changed, 141 insertions(+), 148 deletions(-) > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state 2020-07-04 16:50 ` [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé @ 2020-07-05 6:16 ` Paolo Bonzini 0 siblings, 0 replies; 16+ messages in thread From: Paolo Bonzini @ 2020-07-05 6:16 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Aleksandar Markovic, Aurelien Jarno, David Hildenbrand, Christian Borntraeger, Aleksandar Rikalo, Richard Henderson, qemu-s390x, David Gibson, Peter Maydell, Eduardo Habkost, kvm, Michael S. Tsirkin, Halil Pasic, qemu-arm, Cornelia Huck, qemu-ppc, Marcel Apfelbaum, Marcelo Tosatti, Thomas Huth On 04/07/20 18:50, Philippe Mathieu-Daudé wrote: > kind ping :) Queued all except 4. Paolo > On 6/23/20 12:50 PM, Philippe Mathieu-Daudé wrote: >> Following Paolo's idea on kvm_check_extension(): >> https://www.mail-archive.com/qemu-devel@nongnu.org/msg713794.html >> >> CI: >> https://travis-ci.org/github/philmd/qemu/builds/701213438 >> >> Philippe Mathieu-Daudé (7): >> accel/kvm: Let kvm_check_extension use global KVM state >> accel/kvm: Simplify kvm_check_extension() >> accel/kvm: Simplify kvm_check_extension_list() >> accel/kvm: Simplify kvm_set_sigmask_len() >> target/i386/kvm: Simplify get_para_features() >> target/i386/kvm: Simplify kvm_get_mce_cap_supported() >> target/i386/kvm: Simplify kvm_get_supported_[feature]_msrs() >> >> include/sysemu/kvm.h | 4 +- >> accel/kvm/kvm-all.c | 76 +++++++++++++++---------------- >> hw/hyperv/hyperv.c | 2 +- >> hw/i386/kvm/clock.c | 2 +- >> hw/i386/kvm/i8254.c | 4 +- >> hw/i386/kvm/ioapic.c | 2 +- >> hw/intc/arm_gic_kvm.c | 2 +- >> hw/intc/openpic_kvm.c | 2 +- >> hw/intc/xics_kvm.c | 2 +- >> hw/s390x/s390-stattrib-kvm.c | 2 +- >> target/arm/kvm.c | 13 +++--- >> target/arm/kvm32.c | 2 +- >> target/arm/kvm64.c | 15 +++--- >> target/i386/kvm.c | 88 +++++++++++++++++------------------- >> target/mips/kvm.c | 6 +-- >> target/ppc/kvm.c | 34 +++++++------- >> target/s390x/cpu_models.c | 3 +- >> target/s390x/kvm.c | 30 ++++++------ >> 18 files changed, 141 insertions(+), 148 deletions(-) >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2020-07-05 9:57 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-06-23 10:50 [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé 2020-06-23 10:50 ` [PATCH 1/7] accel/kvm: Let kvm_check_extension use global KVM state Philippe Mathieu-Daudé 2020-06-23 15:25 ` Cornelia Huck 2020-06-23 10:50 ` [PATCH 2/7] accel/kvm: Simplify kvm_check_extension() Philippe Mathieu-Daudé 2020-06-23 15:43 ` Cornelia Huck 2020-06-23 10:50 ` [PATCH 3/7] accel/kvm: Simplify kvm_check_extension_list() Philippe Mathieu-Daudé 2020-06-23 15:50 ` Cornelia Huck 2020-06-23 10:50 ` [RFC PATCH 4/7] accel/kvm: Simplify kvm_set_sigmask_len() Philippe Mathieu-Daudé 2020-07-05 7:12 ` Paolo Bonzini 2020-07-05 9:57 ` Philippe Mathieu-Daudé 2020-06-23 10:50 ` [PATCH 5/7] target/i386/kvm: Simplify get_para_features() Philippe Mathieu-Daudé 2020-06-23 15:56 ` Cornelia Huck 2020-06-23 10:50 ` [RFC PATCH 6/7] target/i386/kvm: Simplify kvm_get_mce_cap_supported() Philippe Mathieu-Daudé 2020-06-23 10:50 ` [RFC PATCH 7/7] target/i386/kvm: Simplify kvm_get_supported_[feature]_msrs() Philippe Mathieu-Daudé 2020-07-04 16:50 ` [PATCH 0/7] accel/kvm: Simplify few functions that can use global kvm_state Philippe Mathieu-Daudé 2020-07-05 6:16 ` Paolo Bonzini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox