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


 933                 return (DDI_FAILURE);
 934         if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
 935                 ispec->intrspec_vec = inum;
 936                 ispec->intrspec_pri = hdlp->ih_pri;
 937         }
 938         ihdl_plat_datap->ip_ispecp = ispec;
 939 
 940         /* translate the interrupt if needed */
 941         if ((*psm_intr_ops)(rdip, hdlp, PSM_INTR_OP_XLATE_VECTOR, &irq) ==
 942             PSM_FAILURE)
 943                 return (DDI_FAILURE);
 944         DDI_INTR_NEXDBG((CE_CONT, "pci_enable_intr: priority=%x irq=%x\n",
 945             hdlp->ih_pri, irq));
 946 
 947         /* Add the interrupt handler */
 948         if (!add_avintr((void *)hdlp, hdlp->ih_pri, hdlp->ih_cb_func,
 949             DEVI(rdip)->devi_name, irq, hdlp->ih_cb_arg1,
 950             hdlp->ih_cb_arg2, &ihdl_plat_datap->ip_ticks, rdip))
 951                 return (DDI_FAILURE);
 952 


 953         hdlp->ih_vector = irq;
 954 
 955         return (DDI_SUCCESS);
 956 }
 957 
 958 
 959 static void
 960 pci_disable_intr(dev_info_t *pdip, dev_info_t *rdip,
 961     ddi_intr_handle_impl_t *hdlp, uint32_t inum)
 962 {
 963         int             irq;
 964         struct intrspec *ispec;
 965         ihdl_plat_t     *ihdl_plat_datap = (ihdl_plat_t *)hdlp->ih_private;
 966 
 967         DDI_INTR_NEXDBG((CE_CONT, "pci_disable_intr: \n"));
 968         ispec = (struct intrspec *)pci_intx_get_ispec(pdip, rdip, (int)inum);
 969         if (ispec == NULL)
 970                 return;
 971         if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
 972                 ispec->intrspec_vec = inum;




 933                 return (DDI_FAILURE);
 934         if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
 935                 ispec->intrspec_vec = inum;
 936                 ispec->intrspec_pri = hdlp->ih_pri;
 937         }
 938         ihdl_plat_datap->ip_ispecp = ispec;
 939 
 940         /* translate the interrupt if needed */
 941         if ((*psm_intr_ops)(rdip, hdlp, PSM_INTR_OP_XLATE_VECTOR, &irq) ==
 942             PSM_FAILURE)
 943                 return (DDI_FAILURE);
 944         DDI_INTR_NEXDBG((CE_CONT, "pci_enable_intr: priority=%x irq=%x\n",
 945             hdlp->ih_pri, irq));
 946 
 947         /* Add the interrupt handler */
 948         if (!add_avintr((void *)hdlp, hdlp->ih_pri, hdlp->ih_cb_func,
 949             DEVI(rdip)->devi_name, irq, hdlp->ih_cb_arg1,
 950             hdlp->ih_cb_arg2, &ihdl_plat_datap->ip_ticks, rdip))
 951                 return (DDI_FAILURE);
 952 
 953         if (hdlp->ih_irq == -1)
 954                 hdlp->ih_irq = irq;
 955         hdlp->ih_vector = irq;
 956 
 957         return (DDI_SUCCESS);
 958 }
 959 
 960 
 961 static void
 962 pci_disable_intr(dev_info_t *pdip, dev_info_t *rdip,
 963     ddi_intr_handle_impl_t *hdlp, uint32_t inum)
 964 {
 965         int             irq;
 966         struct intrspec *ispec;
 967         ihdl_plat_t     *ihdl_plat_datap = (ihdl_plat_t *)hdlp->ih_private;
 968 
 969         DDI_INTR_NEXDBG((CE_CONT, "pci_disable_intr: \n"));
 970         ispec = (struct intrspec *)pci_intx_get_ispec(pdip, rdip, (int)inum);
 971         if (ispec == NULL)
 972                 return;
 973         if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
 974                 ispec->intrspec_vec = inum;