Print this page
8626 make pcplusmp and apix warning-free
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
@@ -106,10 +106,12 @@
static int apic_disable_intr(processorid_t cpun);
static void apic_enable_intr(processorid_t cpun);
static int apic_get_ipivect(int ipl, int type);
static void apic_post_cyclic_setup(void *arg);
+#define UCHAR_MAX UINT8_MAX
+
/*
* The following vector assignments influence the value of ipltopri and
* vectortoipl. Note that vectors 0 - 0x1f are not used. We can program
* idle to 0 and IPL 0 to 0xf to differentiate idle in case
* we care to do so in future. Note some IPLs which are rarely used
@@ -1066,11 +1068,11 @@
apic_alloc_msi_vectors(dev_info_t *dip, int inum, int count, int pri,
int behavior)
{
int rcount, i;
uchar_t start, irqno;
- uint32_t cpu;
+ uint32_t cpu = 0;
major_t major;
apic_irq_t *irqptr;
DDI_INTR_IMPLDBG((CE_CONT, "apic_alloc_msi_vectors: dip=0x%p "
"inum=0x%x pri=0x%x count=0x%x behavior=%d\n",
@@ -1138,11 +1140,12 @@
apic_vector_to_irq[start + i] = (uchar_t)irqno;
irqptr->airq_vector = (uchar_t)(start + i);
irqptr->airq_ioapicindex = (uchar_t)inum; /* start */
irqptr->airq_intin_no = (uchar_t)rcount;
- irqptr->airq_ipl = pri;
+ ASSERT(pri >= 0 && pri <= UCHAR_MAX);
+ irqptr->airq_ipl = (uchar_t)pri;
irqptr->airq_vector = start + i;
irqptr->airq_origirq = (uchar_t)(inum + i);
irqptr->airq_share_id = 0;
irqptr->airq_mps_intr_index = MSI_INDEX;
irqptr->airq_dip = dip;
@@ -1215,11 +1218,12 @@
}
apic_max_device_irq = max(irqno, apic_max_device_irq);
apic_min_device_irq = min(irqno, apic_min_device_irq);
irqptr = apic_irq_table[irqno];
irqptr->airq_vector = (uchar_t)vector;
- irqptr->airq_ipl = pri;
+ ASSERT(pri >= 0 && pri <= UCHAR_MAX);
+ irqptr->airq_ipl = (uchar_t)pri;
irqptr->airq_origirq = (uchar_t)(inum + i);
irqptr->airq_share_id = 0;
irqptr->airq_mps_intr_index = MSIX_INDEX;
irqptr->airq_dip = dip;
irqptr->airq_major = major;
@@ -1257,11 +1261,12 @@
for (i = lowest; i <= highest; i++) {
if (APIC_CHECK_RESERVE_VECTORS(i))
continue;
if (apic_vector_to_irq[i] == APIC_RESV_IRQ) {
apic_vector_to_irq[i] = (uchar_t)irq;
- return (i);
+ ASSERT(i >= 0 && i <= UCHAR_MAX);
+ return ((uchar_t)i);
}
}
return (0);
}