|
|
9ae3a8 |
From 96d75583baef53a94ed53eec99f14951669f4155 Mon Sep 17 00:00:00 2001
|
|
|
9ae3a8 |
From: Kevin Wolf <kwolf@redhat.com>
|
|
|
9ae3a8 |
Date: Wed, 6 Nov 2013 14:41:06 +0100
|
|
|
9ae3a8 |
Subject: [PATCH 30/81] apic: rename apic specific bitopts
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
|
|
9ae3a8 |
Message-id: <1383748882-22831-2-git-send-email-kwolf@redhat.com>
|
|
|
9ae3a8 |
Patchwork-id: 55527
|
|
|
9ae3a8 |
O-Subject: [RHEL-7.0 qemu-kvm PATCH v2 01/17] apic: rename apic specific bitopts
|
|
|
9ae3a8 |
Bugzilla: 1001216
|
|
|
9ae3a8 |
RH-Acked-by: Marcel Apfelbaum <marcel.a@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
From: "Michael S. Tsirkin" <mst@redhat.com>
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
apic has its own version of bitops, with the
|
|
|
9ae3a8 |
difference that it works on u32 and not long.
|
|
|
9ae3a8 |
Add apic_ prefix to avoid namespace clashes.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
We should look into reusing standard bitops long-term,
|
|
|
9ae3a8 |
but that's not entirely trivial.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
|
|
9ae3a8 |
(cherry picked from commit edf9735e40841298874ee308fdecca2ac2aa5bdf)
|
|
|
9ae3a8 |
Signed-off-by: Markus Armbruster <armbru@redhat.com>
|
|
|
9ae3a8 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
9ae3a8 |
---
|
|
|
9ae3a8 |
hw/intc/apic.c | 42 +++++++++++++++++++++---------------------
|
|
|
9ae3a8 |
1 file changed, 21 insertions(+), 21 deletions(-)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9ae3a8 |
---
|
|
|
9ae3a8 |
hw/intc/apic.c | 42 +++++++++++++++++++++---------------------
|
|
|
9ae3a8 |
1 files changed, 21 insertions(+), 21 deletions(-)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
diff --git a/hw/intc/apic.c b/hw/intc/apic.c
|
|
|
9ae3a8 |
index 756dff0..46cb097 100644
|
|
|
9ae3a8 |
--- a/hw/intc/apic.c
|
|
|
9ae3a8 |
+++ b/hw/intc/apic.c
|
|
|
9ae3a8 |
@@ -40,18 +40,18 @@ static void apic_get_delivery_bitmask(uint32_t *deliver_bitmask,
|
|
|
9ae3a8 |
uint8_t dest, uint8_t dest_mode);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/* Find first bit starting from msb */
|
|
|
9ae3a8 |
-static int fls_bit(uint32_t value)
|
|
|
9ae3a8 |
+static int apic_fls_bit(uint32_t value)
|
|
|
9ae3a8 |
{
|
|
|
9ae3a8 |
return 31 - clz32(value);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/* Find first bit starting from lsb */
|
|
|
9ae3a8 |
-static int ffs_bit(uint32_t value)
|
|
|
9ae3a8 |
+static int apic_ffs_bit(uint32_t value)
|
|
|
9ae3a8 |
{
|
|
|
9ae3a8 |
return ctz32(value);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
-static inline void set_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
+static inline void apic_set_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
{
|
|
|
9ae3a8 |
int i, mask;
|
|
|
9ae3a8 |
i = index >> 5;
|
|
|
9ae3a8 |
@@ -59,7 +59,7 @@ static inline void set_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
tab[i] |= mask;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
-static inline void reset_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
+static inline void apic_reset_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
{
|
|
|
9ae3a8 |
int i, mask;
|
|
|
9ae3a8 |
i = index >> 5;
|
|
|
9ae3a8 |
@@ -67,7 +67,7 @@ static inline void reset_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
tab[i] &= ~mask;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
-static inline int get_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
+static inline int apic_get_bit(uint32_t *tab, int index)
|
|
|
9ae3a8 |
{
|
|
|
9ae3a8 |
int i, mask;
|
|
|
9ae3a8 |
i = index >> 5;
|
|
|
9ae3a8 |
@@ -81,7 +81,7 @@ static int get_highest_priority_int(uint32_t *tab)
|
|
|
9ae3a8 |
int i;
|
|
|
9ae3a8 |
for (i = 7; i >= 0; i--) {
|
|
|
9ae3a8 |
if (tab[i] != 0) {
|
|
|
9ae3a8 |
- return i * 32 + fls_bit(tab[i]);
|
|
|
9ae3a8 |
+ return i * 32 + apic_fls_bit(tab[i]);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
return -1;
|
|
|
9ae3a8 |
@@ -184,7 +184,7 @@ void apic_deliver_pic_intr(DeviceState *d, int level)
|
|
|
9ae3a8 |
case APIC_DM_FIXED:
|
|
|
9ae3a8 |
if (!(lvt & APIC_LVT_LEVEL_TRIGGER))
|
|
|
9ae3a8 |
break;
|
|
|
9ae3a8 |
- reset_bit(s->irr, lvt & 0xff);
|
|
|
9ae3a8 |
+ apic_reset_bit(s->irr, lvt & 0xff);
|
|
|
9ae3a8 |
/* fall through */
|
|
|
9ae3a8 |
case APIC_DM_EXTINT:
|
|
|
9ae3a8 |
cpu_reset_interrupt(CPU(s->cpu), CPU_INTERRUPT_HARD);
|
|
|
9ae3a8 |
@@ -230,7 +230,7 @@ static void apic_bus_deliver(const uint32_t *deliver_bitmask,
|
|
|
9ae3a8 |
d = -1;
|
|
|
9ae3a8 |
for(i = 0; i < MAX_APIC_WORDS; i++) {
|
|
|
9ae3a8 |
if (deliver_bitmask[i]) {
|
|
|
9ae3a8 |
- d = i * 32 + ffs_bit(deliver_bitmask[i]);
|
|
|
9ae3a8 |
+ d = i * 32 + apic_ffs_bit(deliver_bitmask[i]);
|
|
|
9ae3a8 |
break;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -386,13 +386,13 @@ void apic_poll_irq(DeviceState *d)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
static void apic_set_irq(APICCommonState *s, int vector_num, int trigger_mode)
|
|
|
9ae3a8 |
{
|
|
|
9ae3a8 |
- apic_report_irq_delivered(!get_bit(s->irr, vector_num));
|
|
|
9ae3a8 |
+ apic_report_irq_delivered(!apic_get_bit(s->irr, vector_num));
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- set_bit(s->irr, vector_num);
|
|
|
9ae3a8 |
+ apic_set_bit(s->irr, vector_num);
|
|
|
9ae3a8 |
if (trigger_mode)
|
|
|
9ae3a8 |
- set_bit(s->tmr, vector_num);
|
|
|
9ae3a8 |
+ apic_set_bit(s->tmr, vector_num);
|
|
|
9ae3a8 |
else
|
|
|
9ae3a8 |
- reset_bit(s->tmr, vector_num);
|
|
|
9ae3a8 |
+ apic_reset_bit(s->tmr, vector_num);
|
|
|
9ae3a8 |
if (s->vapic_paddr) {
|
|
|
9ae3a8 |
apic_sync_vapic(s, SYNC_ISR_IRR_TO_VAPIC);
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -412,8 +412,8 @@ static void apic_eoi(APICCommonState *s)
|
|
|
9ae3a8 |
isrv = get_highest_priority_int(s->isr);
|
|
|
9ae3a8 |
if (isrv < 0)
|
|
|
9ae3a8 |
return;
|
|
|
9ae3a8 |
- reset_bit(s->isr, isrv);
|
|
|
9ae3a8 |
- if (!(s->spurious_vec & APIC_SV_DIRECTED_IO) && get_bit(s->tmr, isrv)) {
|
|
|
9ae3a8 |
+ apic_reset_bit(s->isr, isrv);
|
|
|
9ae3a8 |
+ if (!(s->spurious_vec & APIC_SV_DIRECTED_IO) && apic_get_bit(s->tmr, isrv)) {
|
|
|
9ae3a8 |
ioapic_eoi_broadcast(isrv);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
apic_sync_vapic(s, SYNC_FROM_VAPIC | SYNC_TO_VAPIC);
|
|
|
9ae3a8 |
@@ -452,7 +452,7 @@ static void apic_get_delivery_bitmask(uint32_t *deliver_bitmask,
|
|
|
9ae3a8 |
int idx = apic_find_dest(dest);
|
|
|
9ae3a8 |
memset(deliver_bitmask, 0x00, MAX_APIC_WORDS * sizeof(uint32_t));
|
|
|
9ae3a8 |
if (idx >= 0)
|
|
|
9ae3a8 |
- set_bit(deliver_bitmask, idx);
|
|
|
9ae3a8 |
+ apic_set_bit(deliver_bitmask, idx);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
/* XXX: cluster mode */
|
|
|
9ae3a8 |
@@ -462,11 +462,11 @@ static void apic_get_delivery_bitmask(uint32_t *deliver_bitmask,
|
|
|
9ae3a8 |
if (apic_iter) {
|
|
|
9ae3a8 |
if (apic_iter->dest_mode == 0xf) {
|
|
|
9ae3a8 |
if (dest & apic_iter->log_dest)
|
|
|
9ae3a8 |
- set_bit(deliver_bitmask, i);
|
|
|
9ae3a8 |
+ apic_set_bit(deliver_bitmask, i);
|
|
|
9ae3a8 |
} else if (apic_iter->dest_mode == 0x0) {
|
|
|
9ae3a8 |
if ((dest & 0xf0) == (apic_iter->log_dest & 0xf0) &&
|
|
|
9ae3a8 |
(dest & apic_iter->log_dest & 0x0f)) {
|
|
|
9ae3a8 |
- set_bit(deliver_bitmask, i);
|
|
|
9ae3a8 |
+ apic_set_bit(deliver_bitmask, i);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
@@ -509,14 +509,14 @@ static void apic_deliver(DeviceState *d, uint8_t dest, uint8_t dest_mode,
|
|
|
9ae3a8 |
break;
|
|
|
9ae3a8 |
case 1:
|
|
|
9ae3a8 |
memset(deliver_bitmask, 0x00, sizeof(deliver_bitmask));
|
|
|
9ae3a8 |
- set_bit(deliver_bitmask, s->idx);
|
|
|
9ae3a8 |
+ apic_set_bit(deliver_bitmask, s->idx);
|
|
|
9ae3a8 |
break;
|
|
|
9ae3a8 |
case 2:
|
|
|
9ae3a8 |
memset(deliver_bitmask, 0xff, sizeof(deliver_bitmask));
|
|
|
9ae3a8 |
break;
|
|
|
9ae3a8 |
case 3:
|
|
|
9ae3a8 |
memset(deliver_bitmask, 0xff, sizeof(deliver_bitmask));
|
|
|
9ae3a8 |
- reset_bit(deliver_bitmask, s->idx);
|
|
|
9ae3a8 |
+ apic_reset_bit(deliver_bitmask, s->idx);
|
|
|
9ae3a8 |
break;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
@@ -573,8 +573,8 @@ int apic_get_interrupt(DeviceState *d)
|
|
|
9ae3a8 |
apic_sync_vapic(s, SYNC_TO_VAPIC);
|
|
|
9ae3a8 |
return s->spurious_vec & 0xff;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
- reset_bit(s->irr, intno);
|
|
|
9ae3a8 |
- set_bit(s->isr, intno);
|
|
|
9ae3a8 |
+ apic_reset_bit(s->irr, intno);
|
|
|
9ae3a8 |
+ apic_set_bit(s->isr, intno);
|
|
|
9ae3a8 |
apic_sync_vapic(s, SYNC_TO_VAPIC);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/* re-inject if there is still a pending PIC interrupt */
|
|
|
9ae3a8 |
--
|
|
|
9ae3a8 |
1.7.1
|
|
|
9ae3a8 |
|