Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1631713 > unrolled thread
| Started by | Radim Krčmář <rkrcmar@redhat.com> |
|---|---|
| First post | 2017-04-26 22:40 +0200 |
| Last post | 2017-04-27 13:40 +0200 |
| Articles | 8 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH v2 0/9] KVM: towards maintainable kvm_make_all_cpus_request() Radim Krčmář <rkrcmar@redhat.com> - 2017-04-26 22:40 +0200
[PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request Radim Krčmář <rkrcmar@redhat.com> - 2017-04-26 22:40 +0200
Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request Andrew Jones <drjones@redhat.com> - 2017-04-27 13:40 +0200
Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request Cornelia Huck <cornelia.huck@de.ibm.com> - 2017-04-27 14:10 +0200
Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request Paolo Bonzini <pbonzini@redhat.com> - 2017-04-27 14:20 +0200
[PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace {test,clear}_bit Radim Krčmář <rkrcmar@redhat.com> - 2017-04-26 22:40 +0200
Re: [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace {test,clear}_bit Cornelia Huck <cornelia.huck@de.ibm.com> - 2017-04-27 13:40 +0200
Re: [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace {test,clear}_bit Andrew Jones <drjones@redhat.com> - 2017-04-27 13:40 +0200
| From | Radim Krčmář <rkrcmar@redhat.com> |
|---|---|
| Date | 2017-04-26 22:40 +0200 |
| Subject | [PATCH v2 0/9] KVM: towards maintainable kvm_make_all_cpus_request() |
| Message-ID | <tABTb-7dC-3@gated-at.bofh.it> |
v2 doesn't use kvm_arch_vcpu_should_kick() and hence avoids the big bug
discovered by James. Instead, the last just exposes the synchronization
behavior and prepares it for future merging with
kvm_arch_vcpu_should_kick().
v2 also constains two patches from Andrew that applied without any
changes and a simple optimization for wakeups.
v1: http://www.spinics.net/lists/kvm/msg147898.html
Andrew Jones (2):
KVM: add explicit barrier to kvm_vcpu_kick
KVM: improve arch vcpu request defining
Radim Krčmář (7):
KVM: add kvm_{test,clear}_request to replace {test,clear}_bit
KVM: x86: always use kvm_make_request instead of set_bit
KVM: remove #ifndef CONFIG_S390 around kvm_vcpu_wake_up
KVM: mark requests that do not need a wakeup
KVM: perform a wake_up in kvm_make_all_cpus_request
KVM: return if kvm_vcpu_wake_up() did wake up the VCPU
KVM: mark requests that need synchronization
arch/arm/include/asm/kvm_host.h | 2 +-
arch/arm64/include/asm/kvm_host.h | 2 +-
arch/mips/kvm/emulate.c | 2 +-
arch/powerpc/include/asm/kvm_host.h | 4 ++--
arch/powerpc/kvm/book3s_pr.c | 2 +-
arch/powerpc/kvm/book3s_pr_papr.c | 2 +-
arch/powerpc/kvm/booke.c | 4 ++--
arch/powerpc/kvm/powerpc.c | 2 +-
arch/s390/include/asm/kvm_host.h | 6 ++---
arch/s390/kvm/kvm-s390.c | 2 +-
arch/x86/include/asm/kvm_host.h | 44 ++++++++++++++++++-------------------
arch/x86/kvm/vmx.c | 2 +-
arch/x86/kvm/x86.c | 20 ++++++-----------
include/linux/kvm_host.h | 42 ++++++++++++++++++++++++++++++-----
virt/kvm/kvm_main.c | 30 +++++++++++++++++--------
15 files changed, 101 insertions(+), 65 deletions(-)
--
2.12.2
[toc] | [next] | [standalone]
| From | Radim Krčmář <rkrcmar@redhat.com> |
|---|---|
| Date | 2017-04-26 22:40 +0200 |
| Subject | [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request |
| Message-ID | <tABTc-7dC-29@gated-at.bofh.it> |
| In reply to | #1631713 |
We want to have kvm_make_all_cpus_request() to be an optmized version of
kvm_for_each_vcpu(i, vcpu, kvm) {
kvm_make_request(vcpu, request);
kvm_vcpu_kick(vcpu);
}
and kvm_vcpu_kick() wakes up the target vcpu. We know which requests do
not need the wake up and use it to optimize the loop.
Thanks to that, this patch doesn't change the behavior of current users
(the all don't need the wake up) and only prepares for future where the
wake up is going to be needed.
I think that most requests do not need the wake up, so we would flip the
bit then.
kvm_vcpu_kick() will get this condition after it is merged with
kvm_make_request() because we currently don't know which request is being
kicked.
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
virt/kvm/kvm_main.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index e5d52b46b531..3772f7dcc72d 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -186,6 +186,9 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
/* Set ->requests bit before we read ->mode. */
smp_mb__after_atomic();
+ if (!(req & KVM_REQUEST_NO_WAKEUP))
+ kvm_vcpu_wake_up(vcpu);
+
if (cpus != NULL && cpu != -1 && cpu != me &&
kvm_vcpu_exiting_guest_mode(vcpu) != OUTSIDE_GUEST_MODE)
cpumask_set_cpu(cpu, cpus);
--
2.12.2
[toc] | [prev] | [next] | [standalone]
| From | Andrew Jones <drjones@redhat.com> |
|---|---|
| Date | 2017-04-27 13:40 +0200 |
| Subject | Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request |
| Message-ID | <tAPW9-8ku-1@gated-at.bofh.it> |
| In reply to | #1631714 |
On Wed, Apr 26, 2017 at 10:32:23PM +0200, Radim Krčmář wrote:
> We want to have kvm_make_all_cpus_request() to be an optmized version of
>
> kvm_for_each_vcpu(i, vcpu, kvm) {
> kvm_make_request(vcpu, request);
> kvm_vcpu_kick(vcpu);
> }
>
> and kvm_vcpu_kick() wakes up the target vcpu. We know which requests do
> not need the wake up and use it to optimize the loop.
>
> Thanks to that, this patch doesn't change the behavior of current users
> (the all don't need the wake up) and only prepares for future where the
> wake up is going to be needed.
>
> I think that most requests do not need the wake up, so we would flip the
> bit then.
>
> kvm_vcpu_kick() will get this condition after it is merged with
> kvm_make_request() because we currently don't know which request is being
> kicked.
>
> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
> ---
> virt/kvm/kvm_main.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index e5d52b46b531..3772f7dcc72d 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -186,6 +186,9 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
> /* Set ->requests bit before we read ->mode. */
> smp_mb__after_atomic();
>
> + if (!(req & KVM_REQUEST_NO_WAKEUP))
> + kvm_vcpu_wake_up(vcpu);
> +
> if (cpus != NULL && cpu != -1 && cpu != me &&
> kvm_vcpu_exiting_guest_mode(vcpu) != OUTSIDE_GUEST_MODE)
> cpumask_set_cpu(cpu, cpus);
> --
> 2.12.2
>
Reviewed-by: Andrew Jones <drjones@redhat.com>
[toc] | [prev] | [next] | [standalone]
| From | Cornelia Huck <cornelia.huck@de.ibm.com> |
|---|---|
| Date | 2017-04-27 14:10 +0200 |
| Subject | Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request |
| Message-ID | <tAQpc-ol-27@gated-at.bofh.it> |
| In reply to | #1631714 |
On Wed, 26 Apr 2017 22:32:23 +0200
Radim Krčmář <rkrcmar@redhat.com> wrote:
> We want to have kvm_make_all_cpus_request() to be an optmized version of
>
> kvm_for_each_vcpu(i, vcpu, kvm) {
> kvm_make_request(vcpu, request);
> kvm_vcpu_kick(vcpu);
> }
>
> and kvm_vcpu_kick() wakes up the target vcpu. We know which requests do
> not need the wake up and use it to optimize the loop.
>
> Thanks to that, this patch doesn't change the behavior of current users
> (the all don't need the wake up) and only prepares for future where the
s/the all/they all/
> wake up is going to be needed.
>
> I think that most requests do not need the wake up, so we would flip the
> bit then.
>
> kvm_vcpu_kick() will get this condition after it is merged with
> kvm_make_request() because we currently don't know which request is being
> kicked.
I find this sentence confusing: not all kicks are directly related to
requests.
>
> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
> ---
> virt/kvm/kvm_main.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index e5d52b46b531..3772f7dcc72d 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -186,6 +186,9 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
> /* Set ->requests bit before we read ->mode. */
> smp_mb__after_atomic();
>
> + if (!(req & KVM_REQUEST_NO_WAKEUP))
> + kvm_vcpu_wake_up(vcpu);
> +
> if (cpus != NULL && cpu != -1 && cpu != me &&
> kvm_vcpu_exiting_guest_mode(vcpu) != OUTSIDE_GUEST_MODE)
> cpumask_set_cpu(cpu, cpus);
The code change looks good to me.
[toc] | [prev] | [next] | [standalone]
| From | Paolo Bonzini <pbonzini@redhat.com> |
|---|---|
| Date | 2017-04-27 14:20 +0200 |
| Subject | Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request |
| Message-ID | <tAQyR-tm-3@gated-at.bofh.it> |
| In reply to | #1632061 |
On 27/04/2017 14:06, Cornelia Huck wrote:
> On Wed, 26 Apr 2017 22:32:23 +0200
> Radim Krčmář <rkrcmar@redhat.com> wrote:
>
>> We want to have kvm_make_all_cpus_request() to be an optmized version of
>>
>> kvm_for_each_vcpu(i, vcpu, kvm) {
>> kvm_make_request(vcpu, request);
>> kvm_vcpu_kick(vcpu);
>> }
>>
>> and kvm_vcpu_kick() wakes up the target vcpu. We know which requests do
>> not need the wake up and use it to optimize the loop.
>>
>> Thanks to that, this patch doesn't change the behavior of current users
>> (the all don't need the wake up) and only prepares for future where the
>
> s/the all/they all/
>
>> wake up is going to be needed.
>>
>> I think that most requests do not need the wake up, so we would flip the
>> bit then.
>>
>> kvm_vcpu_kick() will get this condition after it is merged with
>> kvm_make_request() because we currently don't know which request is being
>> kicked.
>
> I find this sentence confusing: not all kicks are directly related to
> requests.
I agree, it is backwards. Changing to "Later on, kvm_make_request()
will take care of kicking too, using this bit to make the decision
whether to kick or not".
Paolo
>>
>> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
>> ---
>> virt/kvm/kvm_main.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
>> index e5d52b46b531..3772f7dcc72d 100644
>> --- a/virt/kvm/kvm_main.c
>> +++ b/virt/kvm/kvm_main.c
>> @@ -186,6 +186,9 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
>> /* Set ->requests bit before we read ->mode. */
>> smp_mb__after_atomic();
>>
>> + if (!(req & KVM_REQUEST_NO_WAKEUP))
>> + kvm_vcpu_wake_up(vcpu);
>> +
>> if (cpus != NULL && cpu != -1 && cpu != me &&
>> kvm_vcpu_exiting_guest_mode(vcpu) != OUTSIDE_GUEST_MODE)
>> cpumask_set_cpu(cpu, cpus);
>
> The code change looks good to me.
>
[toc] | [prev] | [next] | [standalone]
| From | Radim Krčmář <rkrcmar@redhat.com> |
|---|---|
| Date | 2017-04-26 22:40 +0200 |
| Subject | [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace {test,clear}_bit |
| Message-ID | <tABTd-7dC-33@gated-at.bofh.it> |
| In reply to | #1631713 |
Users were expected to use kvm_check_request() for testing and clearing,
but request have expanded their use since then and some users want to
only test or do a faster clear.
Make sure that requests are not directly accessed with bit operations.
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
arch/mips/kvm/emulate.c | 2 +-
arch/powerpc/kvm/book3s_pr.c | 2 +-
arch/powerpc/kvm/book3s_pr_papr.c | 2 +-
arch/powerpc/kvm/booke.c | 4 ++--
arch/powerpc/kvm/powerpc.c | 2 +-
arch/s390/kvm/kvm-s390.c | 2 +-
arch/x86/kvm/vmx.c | 2 +-
arch/x86/kvm/x86.c | 8 ++++----
include/linux/kvm_host.h | 14 ++++++++++++--
9 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/arch/mips/kvm/emulate.c b/arch/mips/kvm/emulate.c
index 34e78a3ee9d7..4144bfaef137 100644
--- a/arch/mips/kvm/emulate.c
+++ b/arch/mips/kvm/emulate.c
@@ -982,7 +982,7 @@ enum emulation_result kvm_mips_emul_wait(struct kvm_vcpu *vcpu)
* check if any I/O interrupts are pending.
*/
if (kvm_check_request(KVM_REQ_UNHALT, vcpu)) {
- clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_UNHALT, vcpu);
vcpu->run->exit_reason = KVM_EXIT_IRQ_WINDOW_OPEN;
}
}
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index f026b062c0ed..69a09444d46e 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -349,7 +349,7 @@ static void kvmppc_set_msr_pr(struct kvm_vcpu *vcpu, u64 msr)
if (msr & MSR_POW) {
if (!vcpu->arch.pending_exceptions) {
kvm_vcpu_block(vcpu);
- clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_UNHALT, vcpu);
vcpu->stat.halt_wakeup++;
/* Unset POW bit after we woke up */
diff --git a/arch/powerpc/kvm/book3s_pr_papr.c b/arch/powerpc/kvm/book3s_pr_papr.c
index f102616febc7..bcbeeb62dd13 100644
--- a/arch/powerpc/kvm/book3s_pr_papr.c
+++ b/arch/powerpc/kvm/book3s_pr_papr.c
@@ -344,7 +344,7 @@ int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd)
case H_CEDE:
kvmppc_set_msr_fast(vcpu, kvmppc_get_msr(vcpu) | MSR_EE);
kvm_vcpu_block(vcpu);
- clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_UNHALT, vcpu);
vcpu->stat.halt_wakeup++;
return EMULATE_DONE;
case H_LOGICAL_CI_LOAD:
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 3c296c2eacf8..3eaac3809977 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -584,7 +584,7 @@ static void arm_next_watchdog(struct kvm_vcpu *vcpu)
* userspace, so clear the KVM_REQ_WATCHDOG request.
*/
if ((vcpu->arch.tsr & (TSR_ENW | TSR_WIS)) != (TSR_ENW | TSR_WIS))
- clear_bit(KVM_REQ_WATCHDOG, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_WATCHDOG, vcpu);
spin_lock_irqsave(&vcpu->arch.wdt_lock, flags);
nr_jiffies = watchdog_next_timeout(vcpu);
@@ -695,7 +695,7 @@ int kvmppc_core_prepare_to_enter(struct kvm_vcpu *vcpu)
if (vcpu->arch.shared->msr & MSR_WE) {
local_irq_enable();
kvm_vcpu_block(vcpu);
- clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_UNHALT, vcpu);
hard_irq_disable();
kvmppc_set_exit_type(vcpu, EMULATED_MTMSRWE_EXITS);
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index cf725c580fc5..1ee22a910074 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -233,7 +233,7 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu)
case EV_HCALL_TOKEN(EV_IDLE):
r = EV_SUCCESS;
kvm_vcpu_block(vcpu);
- clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_UNHALT, vcpu);
break;
default:
r = EV_UNIMPLEMENTED;
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 8771fef112a1..71a5f4023f3f 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -2492,7 +2492,7 @@ static int kvm_s390_handle_requests(struct kvm_vcpu *vcpu)
}
/* nothing to do, just clear the request */
- clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_UNHALT, vcpu);
return 0;
}
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index a4ef63718101..b003b8dfb20c 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -6299,7 +6299,7 @@ static int handle_invalid_guest_state(struct kvm_vcpu *vcpu)
if (intr_window_requested && vmx_interrupt_allowed(vcpu))
return handle_interrupt_window(&vmx->vcpu);
- if (test_bit(KVM_REQ_EVENT, &vcpu->requests))
+ if (kvm_test_request(KVM_REQ_EVENT, vcpu))
return 1;
err = emulate_instruction(vcpu, EMULTYPE_NO_REEXECUTE);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index f68c5b2ba627..2de54c20fa9e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1753,7 +1753,7 @@ static void kvm_gen_update_masterclock(struct kvm *kvm)
/* guest entries allowed */
kvm_for_each_vcpu(i, vcpu, kvm)
- clear_bit(KVM_REQ_MCLOCK_INPROGRESS, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_MCLOCK_INPROGRESS, vcpu);
spin_unlock(&ka->pvclock_gtod_sync_lock);
#endif
@@ -7041,7 +7041,7 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
if (r <= 0)
break;
- clear_bit(KVM_REQ_PENDING_TIMER, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_PENDING_TIMER, vcpu);
if (kvm_cpu_has_pending_timer(vcpu))
kvm_inject_pending_timer_irqs(vcpu);
@@ -7169,7 +7169,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) {
kvm_vcpu_block(vcpu);
kvm_apic_accept_events(vcpu);
- clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
+ kvm_clear_request(KVM_REQ_UNHALT, vcpu);
r = -EAGAIN;
goto out;
}
@@ -8382,7 +8382,7 @@ static inline bool kvm_vcpu_has_events(struct kvm_vcpu *vcpu)
if (atomic_read(&vcpu->arch.nmi_queued))
return true;
- if (test_bit(KVM_REQ_SMI, &vcpu->requests))
+ if (kvm_test_request(KVM_REQ_SMI, vcpu))
return true;
if (kvm_arch_interrupt_allowed(vcpu) &&
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 397b7b5b1933..374fa92c7657 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -1079,10 +1079,20 @@ static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu)
set_bit(req, &vcpu->requests);
}
+static inline bool kvm_test_request(int req, struct kvm_vcpu *vcpu)
+{
+ return test_bit(req, &vcpu->requests);
+}
+
+static inline void kvm_clear_request(int req, struct kvm_vcpu *vcpu)
+{
+ clear_bit(req, &vcpu->requests);
+}
+
static inline bool kvm_check_request(int req, struct kvm_vcpu *vcpu)
{
- if (test_bit(req, &vcpu->requests)) {
- clear_bit(req, &vcpu->requests);
+ if (kvm_test_request(req, vcpu)) {
+ kvm_clear_request(req, vcpu);
/*
* Ensure the rest of the request is visible to kvm_check_request's
--
2.12.2
[toc] | [prev] | [next] | [standalone]
| From | Cornelia Huck <cornelia.huck@de.ibm.com> |
|---|---|
| Date | 2017-04-27 13:40 +0200 |
| Subject | Re: [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace {test,clear}_bit |
| Message-ID | <tAPWa-8ku-13@gated-at.bofh.it> |
| In reply to | #1631716 |
On Wed, 26 Apr 2017 22:32:19 +0200 Radim Krčmář <rkrcmar@redhat.com> wrote: > Users were expected to use kvm_check_request() for testing and clearing, > but request have expanded their use since then and some users want to > only test or do a faster clear. > > Make sure that requests are not directly accessed with bit operations. > > Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> > Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> > --- > arch/mips/kvm/emulate.c | 2 +- > arch/powerpc/kvm/book3s_pr.c | 2 +- > arch/powerpc/kvm/book3s_pr_papr.c | 2 +- > arch/powerpc/kvm/booke.c | 4 ++-- > arch/powerpc/kvm/powerpc.c | 2 +- > arch/s390/kvm/kvm-s390.c | 2 +- > arch/x86/kvm/vmx.c | 2 +- > arch/x86/kvm/x86.c | 8 ++++---- > include/linux/kvm_host.h | 14 ++++++++++++-- > 9 files changed, 24 insertions(+), 14 deletions(-) Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
[toc] | [prev] | [next] | [standalone]
| From | Andrew Jones <drjones@redhat.com> |
|---|---|
| Date | 2017-04-27 13:40 +0200 |
| Subject | Re: [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace {test,clear}_bit |
| Message-ID | <tAPWa-8ku-21@gated-at.bofh.it> |
| In reply to | #1631716 |
On Wed, Apr 26, 2017 at 10:32:19PM +0200, Radim Krčmář wrote: > Users were expected to use kvm_check_request() for testing and clearing, > but request have expanded their use since then and some users want to > only test or do a faster clear. > > Make sure that requests are not directly accessed with bit operations. This isn't 100% accurate, as the set_bit changes are made in the next patch. > > Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> > Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> Otherwise Reviewed-by: Andrew Jones <drjones@redhat.com>
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web