apic: Introduce apic_report_irq_delivered
The in-kernel i8259 and IOAPIC backends for KVM will need this, so encapsulate the shared bits. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
parent
02c091953c
commit
343270ea87
11
hw/apic.c
11
hw/apic.c
@ -413,6 +413,13 @@ static void apic_update_irq(APICState *s)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void apic_report_irq_delivered(int delivered)
|
||||||
|
{
|
||||||
|
apic_irq_delivered += delivered;
|
||||||
|
|
||||||
|
trace_apic_report_irq_delivered(apic_irq_delivered);
|
||||||
|
}
|
||||||
|
|
||||||
void apic_reset_irq_delivered(void)
|
void apic_reset_irq_delivered(void)
|
||||||
{
|
{
|
||||||
trace_apic_reset_irq_delivered(apic_irq_delivered);
|
trace_apic_reset_irq_delivered(apic_irq_delivered);
|
||||||
@ -429,9 +436,7 @@ int apic_get_irq_delivered(void)
|
|||||||
|
|
||||||
static void apic_set_irq(APICState *s, int vector_num, int trigger_mode)
|
static void apic_set_irq(APICState *s, int vector_num, int trigger_mode)
|
||||||
{
|
{
|
||||||
apic_irq_delivered += !get_bit(s->irr, vector_num);
|
apic_report_irq_delivered(!get_bit(s->irr, vector_num));
|
||||||
|
|
||||||
trace_apic_set_irq(apic_irq_delivered);
|
|
||||||
|
|
||||||
set_bit(s->irr, vector_num);
|
set_bit(s->irr, vector_num);
|
||||||
if (trigger_mode)
|
if (trigger_mode)
|
||||||
|
@ -10,6 +10,7 @@ int apic_accept_pic_intr(DeviceState *s);
|
|||||||
void apic_deliver_pic_intr(DeviceState *s, int level);
|
void apic_deliver_pic_intr(DeviceState *s, int level);
|
||||||
void apic_deliver_nmi(DeviceState *d);
|
void apic_deliver_nmi(DeviceState *d);
|
||||||
int apic_get_interrupt(DeviceState *s);
|
int apic_get_interrupt(DeviceState *s);
|
||||||
|
void apic_report_irq_delivered(int delivered);
|
||||||
void apic_reset_irq_delivered(void);
|
void apic_reset_irq_delivered(void);
|
||||||
int apic_get_irq_delivered(void);
|
int apic_get_irq_delivered(void);
|
||||||
void cpu_set_apic_base(DeviceState *s, uint64_t val);
|
void cpu_set_apic_base(DeviceState *s, uint64_t val);
|
||||||
|
@ -95,9 +95,9 @@ cpu_get_apic_base(uint64_t val) "%016"PRIx64
|
|||||||
apic_mem_readl(uint64_t addr, uint32_t val) "%"PRIx64" = %08x"
|
apic_mem_readl(uint64_t addr, uint32_t val) "%"PRIx64" = %08x"
|
||||||
apic_mem_writel(uint64_t addr, uint32_t val) "%"PRIx64" = %08x"
|
apic_mem_writel(uint64_t addr, uint32_t val) "%"PRIx64" = %08x"
|
||||||
# coalescing
|
# coalescing
|
||||||
|
apic_report_irq_delivered(int apic_irq_delivered) "coalescing %d"
|
||||||
apic_reset_irq_delivered(int apic_irq_delivered) "old coalescing %d"
|
apic_reset_irq_delivered(int apic_irq_delivered) "old coalescing %d"
|
||||||
apic_get_irq_delivered(int apic_irq_delivered) "returning coalescing %d"
|
apic_get_irq_delivered(int apic_irq_delivered) "returning coalescing %d"
|
||||||
apic_set_irq(int apic_irq_delivered) "coalescing %d"
|
|
||||||
|
|
||||||
# hw/cs4231.c
|
# hw/cs4231.c
|
||||||
cs4231_mem_readl_dreg(uint32_t reg, uint32_t ret) "read dreg %d: 0x%02x"
|
cs4231_mem_readl_dreg(uint32_t reg, uint32_t ret) "read dreg %d: 0x%02x"
|
||||||
|
Loading…
Reference in New Issue
Block a user