Print this page
4443 apic_intrmap_init comment could use an update

*** 1497,1513 **** void apic_intrmap_init(int apic_mode) { int suppress_brdcst_eoi = 0; - if (psm_vt_ops != NULL) { /* ! * Since X2APIC requires the use of interrupt remapping ! * (though this is not documented explicitly in the Intel ! * documentation (yet)), initialize interrupt remapping ! * support before initializing the X2APIC unit. */ if (((apic_intrmap_ops_t *)psm_vt_ops)-> apic_intrmap_init(apic_mode) == DDI_SUCCESS) { apic_vt_ops = psm_vt_ops; --- 1497,1526 ---- void apic_intrmap_init(int apic_mode) { int suppress_brdcst_eoi = 0; /* ! * Intel Software Developer's Manual 3A, 10.12.7: ! * ! * Routing of device interrupts to local APIC units operating in ! * x2APIC mode requires use of the interrupt-remapping architecture ! * specified in the Intel Virtualization Technology for Directed ! * I/O, Revision 1.3. Because of this, BIOS must enumerate support ! * for and software must enable this interrupt remapping with ! * Extended Interrupt Mode Enabled before it enabling x2APIC mode in ! * the local APIC units. ! * ! * ! * In other words, to use the APIC in x2APIC mode, we need interrupt ! * remapping. Since we don't start up the IOMMU by default, we ! * won't be able to do any interrupt remapping and therefore have to ! * use the APIC in traditional 'local APIC' mode with memory mapped ! * I/O. */ + + if (psm_vt_ops != NULL) { if (((apic_intrmap_ops_t *)psm_vt_ops)-> apic_intrmap_init(apic_mode) == DDI_SUCCESS) { apic_vt_ops = psm_vt_ops;