hw/timer: Revert "hpet: inverse polarity when pin above ISA_NUM_IRQS"
This reverts commit 0d63b2dd31
.
This change was originally intended to correct the HPET behavior
in conjunction with Linux, however the behavior that it actually creates
is not compatible with the ioapic.c implementation; it used to be
compatible with KVM's own IOAPIC but it is not anymore.
Signed-off-by: Bill Paul <wpaul@windriver.com>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <201604051558.20070.wpaul@windriver.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
089adafdc6
commit
ecba19935a
@ -201,12 +201,7 @@ static void update_irq(struct HPETTimer *timer, int set)
|
|||||||
if (!set || !timer_enabled(timer) || !hpet_enabled(timer->state)) {
|
if (!set || !timer_enabled(timer) || !hpet_enabled(timer->state)) {
|
||||||
s->isr &= ~mask;
|
s->isr &= ~mask;
|
||||||
if (!timer_fsb_route(timer)) {
|
if (!timer_fsb_route(timer)) {
|
||||||
/* fold the ICH PIRQ# pin's internal inversion logic into hpet */
|
qemu_irq_lower(s->irqs[route]);
|
||||||
if (route >= ISA_NUM_IRQS) {
|
|
||||||
qemu_irq_raise(s->irqs[route]);
|
|
||||||
} else {
|
|
||||||
qemu_irq_lower(s->irqs[route]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (timer_fsb_route(timer)) {
|
} else if (timer_fsb_route(timer)) {
|
||||||
address_space_stl_le(&address_space_memory, timer->fsb >> 32,
|
address_space_stl_le(&address_space_memory, timer->fsb >> 32,
|
||||||
@ -214,12 +209,7 @@ static void update_irq(struct HPETTimer *timer, int set)
|
|||||||
NULL);
|
NULL);
|
||||||
} else if (timer->config & HPET_TN_TYPE_LEVEL) {
|
} else if (timer->config & HPET_TN_TYPE_LEVEL) {
|
||||||
s->isr |= mask;
|
s->isr |= mask;
|
||||||
/* fold the ICH PIRQ# pin's internal inversion logic into hpet */
|
qemu_irq_raise(s->irqs[route]);
|
||||||
if (route >= ISA_NUM_IRQS) {
|
|
||||||
qemu_irq_lower(s->irqs[route]);
|
|
||||||
} else {
|
|
||||||
qemu_irq_raise(s->irqs[route]);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
s->isr &= ~mask;
|
s->isr &= ~mask;
|
||||||
qemu_irq_pulse(s->irqs[route]);
|
qemu_irq_pulse(s->irqs[route]);
|
||||||
|
Loading…
Reference in New Issue
Block a user