* [PATCH 0/3] x86/pv: Trivial improvements to callback handling
@ 2018-03-15 11:58 Andrew Cooper
2018-03-15 11:58 ` [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback() Andrew Cooper
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Andrew Cooper @ 2018-03-15 11:58 UTC (permalink / raw)
To: Xen-devel; +Cc: Andrew Cooper
Andrew Cooper (3):
x86/pv: Avoid locked bit manipulation in register_guest_callback()
x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart
x86/pv: Minor tweaks to {,compat_}register_guest_callback()
xen/arch/x86/pv/callback.c | 103 +++++++++++++++------------------------------
1 file changed, 34 insertions(+), 69 deletions(-)
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback()
2018-03-15 11:58 [PATCH 0/3] x86/pv: Trivial improvements to callback handling Andrew Cooper
@ 2018-03-15 11:58 ` Andrew Cooper
2018-03-19 16:59 ` Jan Beulich
2018-03-20 12:30 ` Roger Pau Monné
2018-03-15 11:58 ` [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart Andrew Cooper
2018-03-15 11:58 ` [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback() Andrew Cooper
2 siblings, 2 replies; 10+ messages in thread
From: Andrew Cooper @ 2018-03-15 11:58 UTC (permalink / raw)
To: Xen-devel; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, Roger Pau Monné
Changes to arch.vgc_flags are made to current in syncrhonous context only, and
don't need to be locked. (The only other changes are via
arch_set_info_guest(), which operates on descheduled vcpus only).
Replace the {set,clear}_bit() calls with compiler-visible bitwise operations.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/pv/callback.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/xen/arch/x86/pv/callback.c b/xen/arch/x86/pv/callback.c
index 29ae692..e6a17c5 100644
--- a/xen/arch/x86/pv/callback.c
+++ b/xen/arch/x86/pv/callback.c
@@ -88,21 +88,17 @@ static long register_guest_callback(struct callback_register *reg)
case CALLBACKTYPE_failsafe:
curr->arch.pv_vcpu.failsafe_callback_eip = reg->address;
if ( reg->flags & CALLBACKF_mask_events )
- set_bit(_VGCF_failsafe_disables_events,
- &curr->arch.vgc_flags);
+ curr->arch.vgc_flags |= VGCF_failsafe_disables_events;
else
- clear_bit(_VGCF_failsafe_disables_events,
- &curr->arch.vgc_flags);
+ curr->arch.vgc_flags &= ~VGCF_failsafe_disables_events;
break;
case CALLBACKTYPE_syscall:
curr->arch.pv_vcpu.syscall_callback_eip = reg->address;
if ( reg->flags & CALLBACKF_mask_events )
- set_bit(_VGCF_syscall_disables_events,
- &curr->arch.vgc_flags);
+ curr->arch.vgc_flags |= VGCF_syscall_disables_events;
else
- clear_bit(_VGCF_syscall_disables_events,
- &curr->arch.vgc_flags);
+ curr->arch.vgc_flags &= ~VGCF_syscall_disables_events;
break;
case CALLBACKTYPE_syscall32:
@@ -236,11 +232,9 @@ static long compat_register_guest_callback(struct compat_callback_register *reg)
curr->arch.pv_vcpu.failsafe_callback_cs = reg->address.cs;
curr->arch.pv_vcpu.failsafe_callback_eip = reg->address.eip;
if ( reg->flags & CALLBACKF_mask_events )
- set_bit(_VGCF_failsafe_disables_events,
- &curr->arch.vgc_flags);
+ curr->arch.vgc_flags |= VGCF_failsafe_disables_events;
else
- clear_bit(_VGCF_failsafe_disables_events,
- &curr->arch.vgc_flags);
+ curr->arch.vgc_flags &= ~VGCF_failsafe_disables_events;
break;
case CALLBACKTYPE_syscall32:
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart
2018-03-15 11:58 [PATCH 0/3] x86/pv: Trivial improvements to callback handling Andrew Cooper
2018-03-15 11:58 ` [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback() Andrew Cooper
@ 2018-03-15 11:58 ` Andrew Cooper
2018-03-19 17:05 ` Jan Beulich
2018-03-20 12:33 ` Roger Pau Monné
2018-03-15 11:58 ` [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback() Andrew Cooper
2 siblings, 2 replies; 10+ messages in thread
From: Andrew Cooper @ 2018-03-15 11:58 UTC (permalink / raw)
To: Xen-devel; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, Roger Pau Monné
These functions are almost identical. They differ only in the error emitted
for the use of CALLBACKTYPE_syscall (which is inconsequential to guests), and
the type of their argument.
Have the callers pass the unreg.type parameter directly, avoiding the need for
differently typed parameters.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/pv/callback.c | 37 +++++--------------------------------
1 file changed, 5 insertions(+), 32 deletions(-)
diff --git a/xen/arch/x86/pv/callback.c b/xen/arch/x86/pv/callback.c
index e6a17c5..866c835 100644
--- a/xen/arch/x86/pv/callback.c
+++ b/xen/arch/x86/pv/callback.c
@@ -125,11 +125,11 @@ static long register_guest_callback(struct callback_register *reg)
return ret;
}
-static long unregister_guest_callback(struct callback_unregister *unreg)
+static int unregister_guest_callback(unsigned int type)
{
- long ret;
+ int ret;
- switch ( unreg->type )
+ switch ( type )
{
case CALLBACKTYPE_event:
case CALLBACKTYPE_failsafe:
@@ -178,7 +178,7 @@ long do_callback_op(int cmd, XEN_GUEST_HANDLE_PARAM(const_void) arg)
if ( copy_from_guest(&unreg, arg, 1) )
break;
- ret = unregister_guest_callback(&unreg);
+ ret = unregister_guest_callback(unreg.type);
}
break;
@@ -263,33 +263,6 @@ static long compat_register_guest_callback(struct compat_callback_register *reg)
return ret;
}
-static long compat_unregister_guest_callback(
- struct compat_callback_unregister *unreg)
-{
- long ret;
-
- switch ( unreg->type )
- {
- case CALLBACKTYPE_event:
- case CALLBACKTYPE_failsafe:
- case CALLBACKTYPE_syscall32:
- case CALLBACKTYPE_sysenter:
- ret = -EINVAL;
- break;
-
- case CALLBACKTYPE_nmi:
- unregister_guest_nmi_callback();
- ret = 0;
- break;
-
- default:
- ret = -ENOSYS;
- break;
- }
-
- return ret;
-}
-
long compat_callback_op(int cmd, XEN_GUEST_HANDLE(void) arg)
{
long ret;
@@ -316,7 +289,7 @@ long compat_callback_op(int cmd, XEN_GUEST_HANDLE(void) arg)
if ( copy_from_guest(&unreg, arg, 1) )
break;
- ret = compat_unregister_guest_callback(&unreg);
+ ret = unregister_guest_callback(unreg.type);
}
break;
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback()
2018-03-15 11:58 [PATCH 0/3] x86/pv: Trivial improvements to callback handling Andrew Cooper
2018-03-15 11:58 ` [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback() Andrew Cooper
2018-03-15 11:58 ` [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart Andrew Cooper
@ 2018-03-15 11:58 ` Andrew Cooper
2018-03-20 10:06 ` Jan Beulich
2018-03-20 12:38 ` Roger Pau Monné
2 siblings, 2 replies; 10+ messages in thread
From: Andrew Cooper @ 2018-03-15 11:58 UTC (permalink / raw)
To: Xen-devel; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, Roger Pau Monné
* Being internal functions, use int rather than long for the return value
* Factor out pv_vcpu into a local variable. Reduces code volume, and removes
some split lines.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/pv/callback.c | 48 ++++++++++++++++++++++------------------------
1 file changed, 23 insertions(+), 25 deletions(-)
diff --git a/xen/arch/x86/pv/callback.c b/xen/arch/x86/pv/callback.c
index 866c835..362197b 100644
--- a/xen/arch/x86/pv/callback.c
+++ b/xen/arch/x86/pv/callback.c
@@ -71,10 +71,11 @@ static void unregister_guest_nmi_callback(void)
memset(t, 0, sizeof(*t));
}
-static long register_guest_callback(struct callback_register *reg)
+static int register_guest_callback(struct callback_register *reg)
{
- long ret = 0;
struct vcpu *curr = current;
+ struct pv_vcpu *pv = &curr->arch.pv_vcpu;
+ int ret = 0;
if ( !is_canonical_address(reg->address) )
return -EINVAL;
@@ -82,11 +83,11 @@ static long register_guest_callback(struct callback_register *reg)
switch ( reg->type )
{
case CALLBACKTYPE_event:
- curr->arch.pv_vcpu.event_callback_eip = reg->address;
+ pv->event_callback_eip = reg->address;
break;
case CALLBACKTYPE_failsafe:
- curr->arch.pv_vcpu.failsafe_callback_eip = reg->address;
+ pv->failsafe_callback_eip = reg->address;
if ( reg->flags & CALLBACKF_mask_events )
curr->arch.vgc_flags |= VGCF_failsafe_disables_events;
else
@@ -94,7 +95,7 @@ static long register_guest_callback(struct callback_register *reg)
break;
case CALLBACKTYPE_syscall:
- curr->arch.pv_vcpu.syscall_callback_eip = reg->address;
+ pv->syscall_callback_eip = reg->address;
if ( reg->flags & CALLBACKF_mask_events )
curr->arch.vgc_flags |= VGCF_syscall_disables_events;
else
@@ -102,15 +103,13 @@ static long register_guest_callback(struct callback_register *reg)
break;
case CALLBACKTYPE_syscall32:
- curr->arch.pv_vcpu.syscall32_callback_eip = reg->address;
- curr->arch.pv_vcpu.syscall32_disables_events =
- !!(reg->flags & CALLBACKF_mask_events);
+ pv->syscall32_callback_eip = reg->address;
+ pv->syscall32_disables_events = reg->flags & CALLBACKF_mask_events;
break;
case CALLBACKTYPE_sysenter:
- curr->arch.pv_vcpu.sysenter_callback_eip = reg->address;
- curr->arch.pv_vcpu.sysenter_disables_events =
- !!(reg->flags & CALLBACKF_mask_events);
+ pv->sysenter_callback_eip = reg->address;
+ pv->sysenter_disables_events = reg->flags & CALLBACKF_mask_events;
break;
case CALLBACKTYPE_nmi:
@@ -214,23 +213,24 @@ long do_set_callbacks(unsigned long event_address,
return 0;
}
-static long compat_register_guest_callback(struct compat_callback_register *reg)
+static int compat_register_guest_callback(struct compat_callback_register *reg)
{
- long ret = 0;
struct vcpu *curr = current;
+ struct pv_vcpu *pv = &curr->arch.pv_vcpu;
+ int ret = 0;
fixup_guest_code_selector(curr->domain, reg->address.cs);
switch ( reg->type )
{
case CALLBACKTYPE_event:
- curr->arch.pv_vcpu.event_callback_cs = reg->address.cs;
- curr->arch.pv_vcpu.event_callback_eip = reg->address.eip;
+ pv->event_callback_cs = reg->address.cs;
+ pv->event_callback_eip = reg->address.eip;
break;
case CALLBACKTYPE_failsafe:
- curr->arch.pv_vcpu.failsafe_callback_cs = reg->address.cs;
- curr->arch.pv_vcpu.failsafe_callback_eip = reg->address.eip;
+ pv->failsafe_callback_cs = reg->address.cs;
+ pv->failsafe_callback_eip = reg->address.eip;
if ( reg->flags & CALLBACKF_mask_events )
curr->arch.vgc_flags |= VGCF_failsafe_disables_events;
else
@@ -238,17 +238,15 @@ static long compat_register_guest_callback(struct compat_callback_register *reg)
break;
case CALLBACKTYPE_syscall32:
- curr->arch.pv_vcpu.syscall32_callback_cs = reg->address.cs;
- curr->arch.pv_vcpu.syscall32_callback_eip = reg->address.eip;
- curr->arch.pv_vcpu.syscall32_disables_events =
- (reg->flags & CALLBACKF_mask_events) != 0;
+ pv->syscall32_callback_cs = reg->address.cs;
+ pv->syscall32_callback_eip = reg->address.eip;
+ pv->syscall32_disables_events = reg->flags & CALLBACKF_mask_events;
break;
case CALLBACKTYPE_sysenter:
- curr->arch.pv_vcpu.sysenter_callback_cs = reg->address.cs;
- curr->arch.pv_vcpu.sysenter_callback_eip = reg->address.eip;
- curr->arch.pv_vcpu.sysenter_disables_events =
- (reg->flags & CALLBACKF_mask_events) != 0;
+ pv->sysenter_callback_cs = reg->address.cs;
+ pv->sysenter_callback_eip = reg->address.eip;
+ pv->sysenter_disables_events = reg->flags & CALLBACKF_mask_events;
break;
case CALLBACKTYPE_nmi:
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback()
2018-03-15 11:58 ` [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback() Andrew Cooper
@ 2018-03-19 16:59 ` Jan Beulich
2018-03-20 12:30 ` Roger Pau Monné
1 sibling, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2018-03-19 16:59 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Wei Liu, Roger Pau Monné
>>> On 15.03.18 at 12:58, <andrew.cooper3@citrix.com> wrote:
> Changes to arch.vgc_flags are made to current in syncrhonous context only, and
> don't need to be locked. (The only other changes are via
> arch_set_info_guest(), which operates on descheduled vcpus only).
>
> Replace the {set,clear}_bit() calls with compiler-visible bitwise
> operations.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart
2018-03-15 11:58 ` [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart Andrew Cooper
@ 2018-03-19 17:05 ` Jan Beulich
2018-03-20 12:33 ` Roger Pau Monné
1 sibling, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2018-03-19 17:05 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Wei Liu, Roger Pau Monné
>>> On 15.03.18 at 12:58, <andrew.cooper3@citrix.com> wrote:
> These functions are almost identical. They differ only in the error emitted
> for the use of CALLBACKTYPE_syscall (which is inconsequential to guests),
I'm not entirely convinced - so far there's been a match here between
map and unmap, i.e. with the change it may be advisable for
compat_register_guest_callback() to also return -EINVAL for
CALLBACKTYPE_syscall. However, I don't feel strongly about this, so
either way ...
> and
> the type of their argument.
>
> Have the callers pass the unreg.type parameter directly, avoiding the need for
> differently typed parameters.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback()
2018-03-15 11:58 ` [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback() Andrew Cooper
@ 2018-03-20 10:06 ` Jan Beulich
2018-03-20 12:38 ` Roger Pau Monné
1 sibling, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2018-03-20 10:06 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Wei Liu, Roger Pau Monné
>>> On 15.03.18 at 12:58, <andrew.cooper3@citrix.com> wrote:
> --- a/xen/arch/x86/pv/callback.c
> +++ b/xen/arch/x86/pv/callback.c
> @@ -71,10 +71,11 @@ static void unregister_guest_nmi_callback(void)
> memset(t, 0, sizeof(*t));
> }
>
> -static long register_guest_callback(struct callback_register *reg)
> +static int register_guest_callback(struct callback_register *reg)
> {
> - long ret = 0;
> struct vcpu *curr = current;
> + struct pv_vcpu *pv = &curr->arch.pv_vcpu;
> + int ret = 0;
Instead of altering ret's type, why don't you drop it altogether?
Same actually for the unregister function in patch 2. Preferably
with that done
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback()
2018-03-15 11:58 ` [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback() Andrew Cooper
2018-03-19 16:59 ` Jan Beulich
@ 2018-03-20 12:30 ` Roger Pau Monné
1 sibling, 0 replies; 10+ messages in thread
From: Roger Pau Monné @ 2018-03-20 12:30 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Wei Liu, Jan Beulich, Xen-devel
On Thu, Mar 15, 2018 at 11:58:40AM +0000, Andrew Cooper wrote:
> Changes to arch.vgc_flags are made to current in syncrhonous context only, and
> don't need to be locked. (The only other changes are via
> arch_set_info_guest(), which operates on descheduled vcpus only).
>
> Replace the {set,clear}_bit() calls with compiler-visible bitwise operations.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Thanks, Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart
2018-03-15 11:58 ` [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart Andrew Cooper
2018-03-19 17:05 ` Jan Beulich
@ 2018-03-20 12:33 ` Roger Pau Monné
1 sibling, 0 replies; 10+ messages in thread
From: Roger Pau Monné @ 2018-03-20 12:33 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Wei Liu, Jan Beulich, Xen-devel
On Thu, Mar 15, 2018 at 11:58:41AM +0000, Andrew Cooper wrote:
> These functions are almost identical. They differ only in the error emitted
> for the use of CALLBACKTYPE_syscall (which is inconsequential to guests), and
> the type of their argument.
>
> Have the callers pass the unreg.type parameter directly, avoiding the need for
> differently typed parameters.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Thanks, Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback()
2018-03-15 11:58 ` [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback() Andrew Cooper
2018-03-20 10:06 ` Jan Beulich
@ 2018-03-20 12:38 ` Roger Pau Monné
1 sibling, 0 replies; 10+ messages in thread
From: Roger Pau Monné @ 2018-03-20 12:38 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Wei Liu, Jan Beulich, Xen-devel
On Thu, Mar 15, 2018 at 11:58:42AM +0000, Andrew Cooper wrote:
> * Being internal functions, use int rather than long for the return value
> * Factor out pv_vcpu into a local variable. Reduces code volume, and removes
> some split lines.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
register_guest_callback and compat_register_guest_callback are fairly
similar, I wonder if we could translate compat_callback_register into
callback_register and pass an extra compat parameter to
register_guest_callback in order to get rid of
compat_register_guest_callback.
Thanks, Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2018-03-20 12:38 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-15 11:58 [PATCH 0/3] x86/pv: Trivial improvements to callback handling Andrew Cooper
2018-03-15 11:58 ` [PATCH 1/3] x86/pv: Avoid locked bit manipulation in register_guest_callback() Andrew Cooper
2018-03-19 16:59 ` Jan Beulich
2018-03-20 12:30 ` Roger Pau Monné
2018-03-15 11:58 ` [PATCH 2/3] x86/pv: Fold {compat_}unregister_guest_callback() into its non-compat counterpart Andrew Cooper
2018-03-19 17:05 ` Jan Beulich
2018-03-20 12:33 ` Roger Pau Monné
2018-03-15 11:58 ` [PATCH 3/3] x86/pv: Minor tweaks to {, compat_}register_guest_callback() Andrew Cooper
2018-03-20 10:06 ` Jan Beulich
2018-03-20 12:38 ` Roger Pau Monné
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.