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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/i86pc/i86hvm/io/xpv/evtchn.c
          +++ new/usr/src/uts/i86pc/i86hvm/io/xpv/evtchn.c
↓ open down ↓ 367 lines elided ↑ open up ↑
 368  368                  return (-1);
 369  369          }
 370  370          evtchn_ihp = ihp;
 371  371  
 372  372          if (ddi_intr_enable(*ihp) != DDI_SUCCESS) {
 373  373                  cmn_err(CE_WARN, "Could not enable evtchn interrupts\n");
 374  374                  return (-1);
 375  375          }
 376  376  
 377  377          /* Tell the hypervisor which interrupt we're waiting on. */
 378      -        evtchn_callback_irq = ((ddi_intr_handle_impl_t *)*ihp)->ih_vector;
      378 +        evtchn_callback_irq = ((ddi_intr_handle_impl_t *)*ihp)->ih_irq;
 379  379  
 380  380          if (set_hvm_callback(evtchn_callback_irq) != 0) {
 381  381                  cmn_err(CE_WARN, "Couldn't register evtchn callback");
 382  382                  return (-1);
 383  383          }
 384  384          return (0);
 385  385  }
 386  386  
 387  387  void
 388  388  ec_resume(void)
 389  389  {
 390  390          int i;
 391  391  
 392  392          /* New event-channel space is not 'live' yet. */
 393  393          for (i = 0; i < NR_EVENT_CHANNELS; i++)
 394  394                  (void) hypervisor_mask_event(i);
 395  395          if (set_hvm_callback(evtchn_callback_irq) != 0)
 396  396                  cmn_err(CE_WARN, "Couldn't register evtchn callback");
 397  397  
 398  398  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX