Skip to contentSkip to conversation

VMX: inject high priority interrupts first

PATCH In review Dor Laor 3 participants 3 messages Dec 13, 2007 2 messages not in the archive KVM

lore
Share & tools
lore

Dor Laor

author
#0 lore raw

PATCH 1/1 VMX: inject high priority interrupts first

From 2e80a9eb15769443716ebd87eb2567cd0de9c84e Mon Sep 17 00:00:00 2001
From: Dor Laor <dor.laor-atKUWr5tajBWk0Htik3J/[email protected]>
Date: Thu, 13 Dec 2007 15:07:08 +0200
Subject: [PATCH] This patch changes the order in which interrupts are injected when the
in-kernel APIC is disabled. Now the IRQ with the highest priority is
injected
first. Noted by Joerg Roedel for SVM.

---
 drivers/kvm/vmx.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/kvm/vmx.c +0 -0
index 8e43feb..8375eea 100644
@@ -1736,8 +1736,8 @@ static void vmx_inject_irq(struct kvm_vcpu *vcpu, 

int irq)

static void kvm_do_inject_irq(struct kvm_vcpu *vcpu) {

-    int word_index = __ffs(vcpu->irq_summary);
-    int bit_index = __ffs(vcpu->irq_pending[word_index]);
+    int word_index = __fls(vcpu->irq_summary);
+    int bit_index = __fls(vcpu->irq_pending[word_index]);
     int irq = word_index * BITS_PER_LONG + bit_index;
 
     clear_bit(bit_index, &vcpu->irq_pending[word_index]);
Signature · 9 lines
1.5.3.3


-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace

A message that is not in the archive (sent off-list or not yet received): 47613102.1020200-atKUWr5tajBWk0Htik3J/[email protected]

#2 lore raw

This is not necessary, vector doesn;t mean priority.

Remember I ever had a talk with Avi that user level irqchip could only support one vector pending in kernel like you mentioned too. On the other hand, if we have multiple pending vectors, we will lose priority. The point here is that vector doesn;t stand for priority for example slave PIC has higher priority than IRQ3-7 of master PIC. Using ffs or fls doesn;t matter here.

But I think we'd better clean the code to just use pending_vector instead of bitmap to reduce those kind of unnecessary bit scan/set/clear etc. Eddie

Quoted 37 lines

-----Original Message-----
From: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of Dor Laor
Sent: 2007年12月13日 21:18
To: kvm-devel
Subject: [kvm-devel] [PATCH] VMX: inject high priority interrupts first

From 2e80a9eb15769443716ebd87eb2567cd0de9c84e Mon Sep 17 00:00:00 2001
From: Dor Laor <dor.laor-atKUWr5tajBWk0Htik3J/[email protected]>
Date: Thu, 13 Dec 2007 15:07:08 +0200
Subject: [PATCH] This patch changes the order in which interrupts are injected when the
in-kernel APIC is disabled. Now the IRQ with the highest priority is injected
first. Noted by Joerg Roedel for SVM.

---
drivers/kvm/vmx.c | 4 ++--

1 files changed, 2 insertions(+), 2 deletions(-)
drivers/kvm/vmx.c +2 -2
index 8e43feb..8375eea 100644
@@ -1736,8 +1736,8 @@ static void vmx_inject_irq(struct 
 kvm_vcpu *vcpu, 
 int irq)
 
 static void kvm_do_inject_irq(struct kvm_vcpu *vcpu)
 {
-    int word_index = __ffs(vcpu->irq_summary);
-    int bit_index = __ffs(vcpu->irq_pending[word_index]);
+    int word_index = __fls(vcpu->irq_summary);
+    int bit_index = __fls(vcpu->irq_pending[word_index]);
    int irq = word_index * BITS_PER_LONG + bit_index;
Quoted 18 lines
    clear_bit(bit_index, &vcpu->irq_pending[word_index]);
Signature · 15 lines
1.5.3.3


---------------------------------------------------------------
----------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.ne
t/marketplace
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A0281F361-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

#4 lore raw
Quoted 9 lines · Eddie

This is not necessary, vector doesn;t mean priority.

Remember I ever had a talk with Avi that user level irqchip could only support one vector pending in kernel like you mentioned too. On the other hand, if we have multiple pending vectors, we will lose priority. The point here is that vector doesn;t stand for priority for example slave PIC has higher priority than IRQ3-7 of master PIC. Using ffs or fls doesn;t matter here.

Yes.

Quoted 3 lines

But I think we'd better clean the code to just use pending_vector instead of bitmap to reduce those kind of unnecessary bit scan/set/clear etc.

That's my plan; use a pending vector and put it in subarch independent code.

Signature · 1 line
error compiling committee.c: too many arguments to function

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel