|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/pv: Improve code generation in async_exception_cleanup()
Use new helper functions to simplfiy the logic. This removes an alternative
behind the scenes.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <jbeulich@xxxxxxxx>
CC: Roger Pau Monné <roger@xxxxxxxxxxxxxx>
CC: Teddy Astie <teddy.astie@xxxxxxxxxx>
async_exception_cleanup() is complete nonsense. It's not remotely close to
how interupt blocking works in x86.
---
xen/arch/x86/pv/iret.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/xen/arch/x86/pv/iret.c b/xen/arch/x86/pv/iret.c
index 39ce316b8d91..0efc0c7f12f3 100644
--- a/xen/arch/x86/pv/iret.c
+++ b/xen/arch/x86/pv/iret.c
@@ -31,8 +31,8 @@ static void async_exception_cleanup(struct vcpu *curr)
if ( !curr->arch.async_exception_mask )
return;
- if ( !(curr->arch.async_exception_mask & (curr->arch.async_exception_mask
- 1)) )
- trap = __scanbit(curr->arch.async_exception_mask, VCPU_TRAP_NONE);
+ if ( !multiple_bits_set(curr->arch.async_exception_mask) )
+ trap = ffs(curr->arch.async_exception_mask) + 1;
else
for ( trap = VCPU_TRAP_NONE + 1; trap <= VCPU_TRAP_LAST; ++trap )
if ( (curr->arch.async_exception_mask ^
--
2.39.5
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |