Print this page
3605 Xen HVM hangs during boot if apix is enabled
@@ -276,10 +276,11 @@
tmp_hdl.ih_type = type;
tmp_hdl.ih_inum = inum;
tmp_hdl.ih_scratch1 = count;
tmp_hdl.ih_scratch2 = (void *)(uintptr_t)behavior;
tmp_hdl.ih_dip = dip;
+ tmp_hdl.ih_irq = -1;
if (i_ddi_intr_ops(dip, dip, DDI_INTROP_ALLOC,
&tmp_hdl, (void *)actualp) != DDI_SUCCESS) {
DDI_INTR_APIDBG((CE_CONT, "ddi_intr_alloc: allocation "
"failed\n"));
@@ -322,14 +323,18 @@
hdlp->ih_cap = cap;
hdlp->ih_ver = DDI_INTR_VERSION;
hdlp->ih_state = DDI_IHDL_STATE_ALLOC;
hdlp->ih_dip = dip;
hdlp->ih_inum = i;
+ hdlp->ih_irq = -1;
i_ddi_alloc_intr_phdl(hdlp);
- if (type & DDI_INTR_TYPE_FIXED)
+ if (type & DDI_INTR_TYPE_FIXED) {
+ if (tmp_hdl.ih_irq != -1)
+ hdlp->ih_irq = tmp_hdl.ih_irq;
i_ddi_set_intr_handle(dip, hdlp->ih_inum,
(ddi_intr_handle_t)hdlp);
+ }
DDI_INTR_APIDBG((CE_CONT, "ddi_intr_alloc: hdlp = 0x%p\n",
(void *)h_array[i]));
}