@@ -106,7 +106,7 @@ static inline int pic_set_irq1(struct kvm_kpic_state *s, int irq, int level)
{
int mask, ret = 1;
mask = 1<< irq;
- if (s->elcr& mask) /* level triggered */
+ if (s->elcr& mask) /* level triggered */ {
if (level) {
ret = !(s->irr& mask);
s->irr |= mask;
@@ -115,7 +115,10 @@ static inline int pic_set_irq1(struct kvm_kpic_state *s, int irq, int level)
s->irr&= ~mask;
s->last_irr&= ~mask;
}
- else /* edge triggered */
+if (irq == 3)
+ printk("%s %d: level=%d, irr = %x\n", __FUNCTION__,__LINE__,level, s->irr);
+ }
+ else /* edge triggered */ {
if (level) {
if ((s->last_irr& mask) == 0) {
ret = !(s->irr& mask);
@@ -124,7 +127,9 @@ static inline int pic_set_irq1(struct kvm_kpic_state *s, int irq, int level)
s->last_irr |= mask;
} else
s->last_irr&= ~mask;
-
+if (irq == 3)
+ printk("%s %d: level=%d, irr = %x\n", __FUNCTION__,__LINE__,level, s->irr);
+ }
return (s->imr& mask) ? -1 : ret;
}
@@ -206,6 +211,8 @@ int kvm_pic_set_irq(void *opaque, int irq, int level)
pic_lock(s);
if (irq>= 0&& irq< PIC_NUM_PINS) {
+if (irq == 3)
+printk("%s\n", __FUNCTION__);
ret = pic_set_irq1(&s->pics[irq>> 3], irq& 7, level);
pic_update_irq(s);
trace_kvm_pic_set_irq(irq>> 3, irq& 7, s->pics[irq>> 3].elcr,