VirtualBox

Changeset 59354 in vbox


Ignore:
Timestamp:
Jan 14, 2016 10:16:15 PM (9 years ago)
Author:
vboxsync
Message:

BIOS: Report I/O and local APIC ranges in E820h memory map.

Location:
trunk/src/VBox/Devices/PC/BIOS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/notes.txt

    r49286 r59354  
    8080  executed on 386+ processors.
    8181
     82- Windows NT 3.5 and 3.51 with MPS HAL requires that INT 15h/E820h return the
     83  I/O APIC range as reserved, or not return any ranges at all just below 4GB.
     84  Otherwise the NT kernel will crash early during init due to confusion about
     85  the top of memory.
     86
    8287
    8388 Notes on BIOS implementation
  • trunk/src/VBox/Devices/PC/BIOS/system.c

    r56292 r59354  
    715715                        break;
    716716                    case 5:
     717                        set_e820_range(ES, DI,
     718                                       0xfec00000,
     719                                       0xfec00000 + 0x1000, 0, 0, 2); // I/O APIC
     720                        EBX = 6;
     721                        break;
     722                    case 6:
     723                        set_e820_range(ES, DI,
     724                                       0xfee00000,
     725                                       0xfee00000 + 0x1000, 0, 0, 2); // Local APIC
     726                        EBX = 7;
     727                        break;
     728                    case 7:
    717729                        /* 256KB BIOS area at the end of 4 GB */
    718730#ifdef VBOX
     
    723735                                       0xfffc0000L, 0x00000000L, 0, 0, 2);
    724736                        if (mcfgStart != 0)
    725                             EBX = 6;
     737                            EBX = 8;
    726738                        else
    727739                        {
    728740                            if (extra_highbits_memory_size || extra_lowbits_memory_size)
    729                                 EBX = 7;
     741                                EBX = 9;
    730742                            else
    731743                                EBX = 0;
    732744                        }
    733745                        break;
    734                      case 6:
     746                     case 8:
    735747                        /* PCI MMIO config space (MCFG) */
    736748                        set_e820_range(ES, DI,
     
    738750
    739751                        if (extra_highbits_memory_size || extra_lowbits_memory_size)
    740                             EBX = 7;
     752                            EBX = 9;
    741753                        else
    742754                            EBX = 0;
    743755                        break;
    744                     case 7:
     756                    case 9:
    745757#ifdef VBOX /* Don't succeeded if no memory above 4 GB.  */
    746758                        /* Mapping of memory above 4 GB if present.
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette