Print this page
3605 Xen HVM hangs during boot if apix is enabled

*** 276,285 **** --- 276,286 ---- 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,335 **** 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; i_ddi_alloc_intr_phdl(hdlp); ! if (type & DDI_INTR_TYPE_FIXED) 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])); } --- 323,340 ---- 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 (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])); }