mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-24 10:17:28 +00:00
irq: convert irq/vector numbers to unsigned
Currently irq and vector numbers are used inconsistently. * Sometimes vector or irq ids is used in bit operations, indicating that they should be unsigned (which is required by MISRA C). * At the same time we use -1 to indicate an unknown irq (in common_register_handler()) or unavailable irq (in alloc_irq()). Also (irq < 0) or (vector < 0) are used for error checking. These indicate that irq or vector ids should be signed. This patch converts irq and vector numbers to unsigned 32-bit integers, and replace the previous -1 with IRQ_INVALID or VECTOR_INVALID. The branch conditions are updated accordingly. Signed-off-by: Junjie Mao <junjie.mao@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
@@ -99,7 +99,7 @@ int create_vcpu(int cpu_id, struct vm *vm, struct vcpu **rtn_vcpu_handle)
|
||||
memset(vcpu->arch_vcpu.vmcs, 0, CPU_PAGE_SIZE);
|
||||
|
||||
/* Initialize exception field in VCPU context */
|
||||
vcpu->arch_vcpu.exception_info.exception = -1;
|
||||
vcpu->arch_vcpu.exception_info.exception = VECTOR_INVALID;
|
||||
|
||||
/* Initialize cur context */
|
||||
vcpu->arch_vcpu.cur_context = NORMAL_WORLD;
|
||||
|
@@ -137,11 +137,11 @@ enum irqstate {
|
||||
};
|
||||
|
||||
static int
|
||||
vioapic_set_irqstate(struct vm *vm, int irq, enum irqstate irqstate)
|
||||
vioapic_set_irqstate(struct vm *vm, uint32_t irq, enum irqstate irqstate)
|
||||
{
|
||||
struct vioapic *vioapic;
|
||||
|
||||
if (irq < 0 || irq >= vioapic_pincount(vm))
|
||||
if (irq >= (uint32_t)vioapic_pincount(vm))
|
||||
return -EINVAL;
|
||||
|
||||
vioapic = vm_ioapic(vm);
|
||||
@@ -167,19 +167,19 @@ vioapic_set_irqstate(struct vm *vm, int irq, enum irqstate irqstate)
|
||||
}
|
||||
|
||||
int
|
||||
vioapic_assert_irq(struct vm *vm, int irq)
|
||||
vioapic_assert_irq(struct vm *vm, uint32_t irq)
|
||||
{
|
||||
return vioapic_set_irqstate(vm, irq, IRQSTATE_ASSERT);
|
||||
}
|
||||
|
||||
int
|
||||
vioapic_deassert_irq(struct vm *vm, int irq)
|
||||
vioapic_deassert_irq(struct vm *vm, uint32_t irq)
|
||||
{
|
||||
return vioapic_set_irqstate(vm, irq, IRQSTATE_DEASSERT);
|
||||
}
|
||||
|
||||
int
|
||||
vioapic_pulse_irq(struct vm *vm, int irq)
|
||||
vioapic_pulse_irq(struct vm *vm, uint32_t irq)
|
||||
{
|
||||
return vioapic_set_irqstate(vm, irq, IRQSTATE_PULSE);
|
||||
}
|
||||
@@ -258,7 +258,7 @@ vioapic_read(struct vioapic *vioapic, uint32_t addr)
|
||||
* register to clear related IRR.
|
||||
*/
|
||||
static void
|
||||
vioapic_write_eoi(struct vioapic *vioapic, int32_t vector)
|
||||
vioapic_write_eoi(struct vioapic *vioapic, uint32_t vector)
|
||||
{
|
||||
struct vm *vm = vioapic->vm;
|
||||
int pin;
|
||||
@@ -477,7 +477,7 @@ vioapic_mmio_write(void *vm, uint64_t gpa, uint64_t wval,
|
||||
}
|
||||
|
||||
void
|
||||
vioapic_process_eoi(struct vm *vm, int vector)
|
||||
vioapic_process_eoi(struct vm *vm, uint32_t vector)
|
||||
{
|
||||
struct vioapic *vioapic;
|
||||
int pin;
|
||||
|
@@ -83,13 +83,13 @@ do { \
|
||||
static void *apicv_apic_access_addr;
|
||||
|
||||
static int
|
||||
apicv_set_intr_ready(struct vlapic *vlapic, int vector, bool level);
|
||||
apicv_set_intr_ready(struct vlapic *vlapic, uint32_t vector, bool level);
|
||||
|
||||
static int
|
||||
apicv_pending_intr(struct vlapic *vlapic, int *vecptr);
|
||||
apicv_pending_intr(struct vlapic *vlapic, uint32_t *vecptr);
|
||||
|
||||
static void
|
||||
apicv_set_tmr(struct vlapic *vlapic, int vector, bool level);
|
||||
apicv_set_tmr(struct vlapic *vlapic, uint32_t vector, bool level);
|
||||
|
||||
static void
|
||||
apicv_batch_set_tmr(struct vlapic *vlapic);
|
||||
@@ -366,14 +366,14 @@ vlapic_esr_write_handler(struct vlapic *vlapic)
|
||||
* Returns 1 if the vcpu needs to be notified of the interrupt and 0 otherwise.
|
||||
*/
|
||||
static int
|
||||
vlapic_set_intr_ready(struct vlapic *vlapic, int vector, bool level)
|
||||
vlapic_set_intr_ready(struct vlapic *vlapic, uint32_t vector, bool level)
|
||||
{
|
||||
struct lapic *lapic;
|
||||
struct lapic_reg *irrptr, *tmrptr;
|
||||
uint32_t mask;
|
||||
int idx;
|
||||
|
||||
ASSERT((vector >= 0) && (vector <= NR_MAX_VECTOR),
|
||||
ASSERT(vector <= NR_MAX_VECTOR,
|
||||
"invalid vector %d", vector);
|
||||
|
||||
lapic = vlapic->apic_page;
|
||||
@@ -742,7 +742,7 @@ vlapic_set_error(struct vlapic *vlapic, uint32_t mask)
|
||||
}
|
||||
|
||||
static int
|
||||
vlapic_trigger_lvt(struct vlapic *vlapic, int vector)
|
||||
vlapic_trigger_lvt(struct vlapic *vlapic, uint32_t vector)
|
||||
{
|
||||
uint32_t lvt;
|
||||
|
||||
@@ -1081,7 +1081,7 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic)
|
||||
}
|
||||
|
||||
int
|
||||
vlapic_pending_intr(struct vlapic *vlapic, int *vecptr)
|
||||
vlapic_pending_intr(struct vlapic *vlapic, uint32_t *vecptr)
|
||||
{
|
||||
struct lapic *lapic = vlapic->apic_page;
|
||||
int i, bitpos;
|
||||
@@ -1111,7 +1111,7 @@ vlapic_pending_intr(struct vlapic *vlapic, int *vecptr)
|
||||
}
|
||||
|
||||
void
|
||||
vlapic_intr_accepted(struct vlapic *vlapic, int vector)
|
||||
vlapic_intr_accepted(struct vlapic *vlapic, uint32_t vector)
|
||||
{
|
||||
struct lapic *lapic = vlapic->apic_page;
|
||||
struct lapic_reg *irrptr, *isrptr;
|
||||
@@ -1584,7 +1584,7 @@ vlapic_enabled(struct vlapic *vlapic)
|
||||
}
|
||||
|
||||
void
|
||||
vlapic_set_tmr(struct vlapic *vlapic, int vector, bool level)
|
||||
vlapic_set_tmr(struct vlapic *vlapic, uint32_t vector, bool level)
|
||||
{
|
||||
struct lapic *lapic;
|
||||
struct lapic_reg *tmrptr;
|
||||
@@ -1613,7 +1613,7 @@ vlapic_apicv_batch_set_tmr(struct vlapic *vlapic)
|
||||
}
|
||||
|
||||
void
|
||||
vlapic_apicv_set_tmr(struct vlapic *vlapic, int vector, bool level)
|
||||
vlapic_apicv_set_tmr(struct vlapic *vlapic, uint32_t vector, bool level)
|
||||
{
|
||||
if (vlapic->ops.apicv_set_tmr != NULL)
|
||||
vlapic->ops.apicv_set_tmr(vlapic, vector, level);
|
||||
@@ -1622,7 +1622,7 @@ vlapic_apicv_set_tmr(struct vlapic *vlapic, int vector, bool level)
|
||||
void
|
||||
vlapic_reset_tmr(struct vlapic *vlapic)
|
||||
{
|
||||
int vector;
|
||||
uint32_t vector;
|
||||
|
||||
dev_dbg(ACRN_DBG_LAPIC,
|
||||
"vlapic resetting all vectors to edge-triggered");
|
||||
@@ -1635,9 +1635,9 @@ vlapic_reset_tmr(struct vlapic *vlapic)
|
||||
|
||||
void
|
||||
vlapic_set_tmr_one_vec(struct vlapic *vlapic, __unused int delmode,
|
||||
int vector, bool level)
|
||||
uint32_t vector, bool level)
|
||||
{
|
||||
ASSERT((vector >= 0) && (vector <= NR_MAX_VECTOR),
|
||||
ASSERT(vector <= NR_MAX_VECTOR,
|
||||
"invalid vector %d", vector);
|
||||
|
||||
/*
|
||||
@@ -1662,7 +1662,7 @@ vlapic_set_tmr_one_vec(struct vlapic *vlapic, __unused int delmode,
|
||||
}
|
||||
|
||||
int
|
||||
vlapic_set_intr(struct vcpu *vcpu, int vector, bool level)
|
||||
vlapic_set_intr(struct vcpu *vcpu, uint32_t vector, bool level)
|
||||
{
|
||||
struct vlapic *vlapic;
|
||||
int ret = 0;
|
||||
@@ -1687,7 +1687,7 @@ vlapic_set_intr(struct vcpu *vcpu, int vector, bool level)
|
||||
}
|
||||
|
||||
int
|
||||
vlapic_set_local_intr(struct vm *vm, int cpu_id, int vector)
|
||||
vlapic_set_local_intr(struct vm *vm, int cpu_id, uint32_t vector)
|
||||
{
|
||||
struct vlapic *vlapic;
|
||||
uint64_t dmask = 0;
|
||||
@@ -2013,7 +2013,7 @@ void vlapic_free(struct vcpu *vcpu)
|
||||
* APIC-v functions
|
||||
* **/
|
||||
static int
|
||||
apicv_set_intr_ready(struct vlapic *vlapic, int vector, __unused bool level)
|
||||
apicv_set_intr_ready(struct vlapic *vlapic, uint32_t vector, __unused bool level)
|
||||
{
|
||||
struct pir_desc *pir_desc;
|
||||
uint64_t mask;
|
||||
@@ -2030,7 +2030,7 @@ apicv_set_intr_ready(struct vlapic *vlapic, int vector, __unused bool level)
|
||||
}
|
||||
|
||||
static int
|
||||
apicv_pending_intr(struct vlapic *vlapic, __unused int *vecptr)
|
||||
apicv_pending_intr(struct vlapic *vlapic, __unused uint32_t *vecptr)
|
||||
{
|
||||
struct pir_desc *pir_desc;
|
||||
struct lapic *lapic;
|
||||
@@ -2061,7 +2061,7 @@ apicv_pending_intr(struct vlapic *vlapic, __unused int *vecptr)
|
||||
}
|
||||
|
||||
static void
|
||||
apicv_set_tmr(__unused struct vlapic *vlapic, int vector, bool level)
|
||||
apicv_set_tmr(__unused struct vlapic *vlapic, uint32_t vector, bool level)
|
||||
{
|
||||
uint64_t mask, val;
|
||||
|
||||
@@ -2234,7 +2234,7 @@ int veoi_vmexit_handler(struct vcpu *vcpu)
|
||||
{
|
||||
struct vlapic *vlapic = NULL;
|
||||
|
||||
int vector;
|
||||
uint32_t vector;
|
||||
struct lapic *lapic;
|
||||
struct lapic_reg *tmrptr;
|
||||
uint32_t idx, mask;
|
||||
|
@@ -99,11 +99,11 @@ struct pir_desc {
|
||||
|
||||
struct vlapic_ops {
|
||||
int (*apicv_set_intr_ready)
|
||||
(struct vlapic *vlapic, int vector, bool level);
|
||||
int (*apicv_pending_intr)(struct vlapic *vlapic, int *vecptr);
|
||||
void (*apicv_intr_accepted)(struct vlapic *vlapic, int vector);
|
||||
(struct vlapic *vlapic, uint32_t vector, bool level);
|
||||
int (*apicv_pending_intr)(struct vlapic *vlapic, uint32_t *vecptr);
|
||||
void (*apicv_intr_accepted)(struct vlapic *vlapic, uint32_t vector);
|
||||
void (*apicv_post_intr)(struct vlapic *vlapic, int hostcpu);
|
||||
void (*apicv_set_tmr)(struct vlapic *vlapic, int vector, bool level);
|
||||
void (*apicv_set_tmr)(struct vlapic *vlapic, uint32_t vector, bool level);
|
||||
void (*apicv_batch_set_tmr)(struct vlapic *vlapic);
|
||||
void (*enable_x2apic_mode)(struct vlapic *vlapic);
|
||||
};
|
||||
|
@@ -58,7 +58,7 @@ struct pic {
|
||||
bool rotate;
|
||||
bool sfn; /* special fully-nested mode */
|
||||
|
||||
int irq_base;
|
||||
uint32_t irq_base;
|
||||
uint8_t request; /* Interrupt Request Register (IIR) */
|
||||
uint8_t service; /* Interrupt Service (ISR) */
|
||||
uint8_t mask; /* Interrupt Mask Register (IMR) */
|
||||
@@ -489,12 +489,12 @@ static void vpic_set_pinstate(struct vpic *vpic, int pin, bool newstate)
|
||||
vpic_notify_intr(vpic);
|
||||
}
|
||||
|
||||
static int vpic_set_irqstate(struct vm *vm, int irq, enum irqstate irqstate)
|
||||
static int vpic_set_irqstate(struct vm *vm, uint32_t irq, enum irqstate irqstate)
|
||||
{
|
||||
struct vpic *vpic;
|
||||
struct pic *pic;
|
||||
|
||||
if (irq < 0 || irq > 15)
|
||||
if (irq > 15)
|
||||
return -EINVAL;
|
||||
|
||||
vpic = vm_pic(vm);
|
||||
@@ -524,26 +524,26 @@ static int vpic_set_irqstate(struct vm *vm, int irq, enum irqstate irqstate)
|
||||
}
|
||||
|
||||
/* hypervisor interface: assert/deassert/pulse irq */
|
||||
int vpic_assert_irq(struct vm *vm, int irq)
|
||||
int vpic_assert_irq(struct vm *vm, uint32_t irq)
|
||||
{
|
||||
return vpic_set_irqstate(vm, irq, IRQSTATE_ASSERT);
|
||||
}
|
||||
|
||||
int vpic_deassert_irq(struct vm *vm, int irq)
|
||||
int vpic_deassert_irq(struct vm *vm, uint32_t irq)
|
||||
{
|
||||
return vpic_set_irqstate(vm, irq, IRQSTATE_DEASSERT);
|
||||
}
|
||||
|
||||
int vpic_pulse_irq(struct vm *vm, int irq)
|
||||
int vpic_pulse_irq(struct vm *vm, uint32_t irq)
|
||||
{
|
||||
return vpic_set_irqstate(vm, irq, IRQSTATE_PULSE);
|
||||
}
|
||||
|
||||
int vpic_set_irq_trigger(struct vm *vm, int irq, enum vpic_trigger trigger)
|
||||
int vpic_set_irq_trigger(struct vm *vm, uint32_t irq, enum vpic_trigger trigger)
|
||||
{
|
||||
struct vpic *vpic;
|
||||
|
||||
if (irq < 0 || irq > 15)
|
||||
if (irq > 15)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
@@ -575,11 +575,11 @@ int vpic_set_irq_trigger(struct vm *vm, int irq, enum vpic_trigger trigger)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int vpic_get_irq_trigger(struct vm *vm, int irq, enum vpic_trigger *trigger)
|
||||
int vpic_get_irq_trigger(struct vm *vm, uint32_t irq, enum vpic_trigger *trigger)
|
||||
{
|
||||
struct vpic *vpic;
|
||||
|
||||
if (irq < 0 || irq > 15)
|
||||
if (irq > 15)
|
||||
return -EINVAL;
|
||||
|
||||
vpic = vm_pic(vm);
|
||||
@@ -593,7 +593,7 @@ int vpic_get_irq_trigger(struct vm *vm, int irq, enum vpic_trigger *trigger)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void vpic_pending_intr(struct vm *vm, int *vecptr)
|
||||
void vpic_pending_intr(struct vm *vm, uint32_t *vecptr)
|
||||
{
|
||||
struct vpic *vpic;
|
||||
struct pic *pic;
|
||||
@@ -616,7 +616,7 @@ void vpic_pending_intr(struct vm *vm, int *vecptr)
|
||||
* interrupt vector instead.
|
||||
*/
|
||||
if (pin == -1) {
|
||||
*vecptr = -1;
|
||||
*vecptr = VECTOR_INVALID;
|
||||
VPIC_UNLOCK(vpic);
|
||||
return;
|
||||
}
|
||||
@@ -646,7 +646,7 @@ static void vpic_pin_accepted(struct pic *pic, int pin)
|
||||
}
|
||||
}
|
||||
|
||||
void vpic_intr_accepted(struct vm *vm, int vector)
|
||||
void vpic_intr_accepted(struct vm *vm, uint32_t vector)
|
||||
{
|
||||
struct vpic *vpic;
|
||||
int pin;
|
||||
|
Reference in New Issue
Block a user