Commit Graph

85 Commits

Author SHA1 Message Date
Volker Ruppert
eeefe369d7 Some PCI IRQ roouting changes for i440BX chipset support.
- Bochs BIOS: Improved calculating PCI slot number from device number to handle
  the i440BX case correctly.
- Memory code: Detect and modify the PCI IRQ roouting table of the Bochs BIOS
  for the i440BX chipset (TODO: this could be done by the BIOS itself after
  copying to shadow RAM).
2018-04-29 16:20:58 +00:00
Volker Ruppert
00ac6013f0 Started preparing the Bochs BIOS for i440BX chipset support.
- Added symbols for the i440BX host bridge device ID.
- Probe and search for devices on PCI bus #1 (AGP).
- Set up memory and i/o regions only for header type 0.
- Set AGP aperture size to 64 MB.
- TODO: PCI IRQ routing, i440BX specific register setup.
2018-04-24 21:29:41 +00:00
Volker Ruppert
1d27d67ccd Added initial version of the High Precision Event Timer (HPET) ported from Qemu.
- Created framework based on our I/O APIC code and ported HPET core from Qemu
  with some required changes for the Bochs timer and IRQ handling.
- Enabled HPET-specific code in the ACPI and rombios32 sources and generated
  new ACPI table with iasl.
- The HPET device plugin is now always loaded if the i440FX chipset is selected
  (same as ACPI). We have to rethink this when we have implemented a more
  modern chipset.
- TODO: Rewrite of the virtual timer code for nanosecond support to make the
  realtime synchronization possible with HPET.
2017-04-17 07:26:00 +00:00
Volker Ruppert
3fe496a3ff Fixed MP config table entry count and added some comments. 2017-03-02 18:38:48 +00:00
Volker Ruppert
8df02880f8 Align PCI memory regions at 64k boundary to make Bochs memory handlers work
correctly (registering small MMIO regions of USB controllers could fail otherwise).
2015-11-02 16:59:50 +00:00
Volker Ruppert
9596717f3c Fixed MTRR setup for memory size > 4 GB. 2015-08-22 06:17:39 +00:00
Volker Ruppert
f169c68174 The RSDT table may be detected incorrectly within the rombios32 string table.
Split copying signature and the check for in to parts to fix this ACPI issue.
2015-04-18 13:18:01 +00:00
Stanislav Shwartsman
055da948a0 fixed problems found by cppcheck tool (patch by Maxim Derbasov) - second round 2015-01-07 16:17:40 +00:00
Volker Ruppert
cc56245407 started implementing the i430FX chipset
- renamed config parameter "i440fx_support" to "enabled"
- new config parameter "chipset" added (current choices "i430FX" and "i440FX")
- don't load ACPI support if the i430FX chipset is selected
- select register values for the core PCI devices depending on the chipset
- USB UHCI must be connected to a PCI slot if the i430FX chipset is used
- rombios changes to make the i430FX chipset work
- TODO #1: implement limitation to 1 cpu and 128 MB RAM for the i430FX chipset
- TODO #2: verify register behaviour of both chipsets
2012-11-11 08:11:17 +00:00
Volker Ruppert
7b51b829f5 - added missing MADT interrupt source override and fixed MP table
(patches by Sebastian Herbszt)
2012-05-13 20:06:51 +00:00
Volker Ruppert
40052509d2 - PCI ROM handling fixes
- fixed tmpsize (patch by Sebastian Herbszt)
  - disable PCI ROM access after copying to shadow RAM (same as SeaBIOS)
2011-12-22 07:53:25 +00:00
Volker Ruppert
46d5caa98d - added PCI ROM init code that copies to shadow RAM and use it for both VGA
and other boot ROMs
- define and use PCI constants (patch by Sebastian Herbszt)
2011-12-20 19:34:05 +00:00
Volker Ruppert
4ce12047a9 - added PCI ROM support to the Bochs BIOS (works with both pcivga and cirrus)
- scan for VGABIOS ROM after rombios32 init
  - copy PCI ROM to shadow RAM at 0xc0000 and enable it
  - NOTE: this feature does not work with BIOS-bochs-legacy, so we should recommend to use the
    default BIOS for PCI display adapters
  - TODO: load VGABIOS ROM from the vga code instead of main.cc if PCI is disabled
2011-07-03 08:10:16 +00:00
Stanislav Shwartsman
00981cd7a6 Adding Id and Rev property to all files 2011-02-24 22:05:47 +00:00
Stanislav Shwartsman
bfac0dd6c6 Move some defines from rombios32.c to rombios.h
Sebastian
2010-05-16 14:35:22 +00:00
Stanislav Shwartsman
bcc5747abe Handle tables correctly if BX_USE_EBDA_TABLES is set.
- Sebastian
2010-04-04 19:38:02 +00:00
Stanislav Shwartsman
969eb42454 Fixes by Sebastian 2010-04-04 19:33:50 +00:00
Stanislav Shwartsman
bd9e7d3a1f The default i440_pcidev values represent a valid bus and devfn. Set it to invalid values to make failed detection noticable.
- Sebastian
2010-02-09 21:23:17 +00:00
Stanislav Shwartsman
9070f65d32 BIOS updates by Sebastian 2010-02-01 21:05:42 +00:00
Stanislav Shwartsman
9b40d6fe47 Set bios_starting_address_segment to 0xe000 and bios_rom_size to 128 kB.
- Sebastian
2010-01-29 21:09:38 +00:00
Stanislav Shwartsman
6de20a6cae Introduce BX_APPVENDOR and set it to "The Bochs Project".
- Sebastian
2010-01-29 20:57:07 +00:00
Stanislav Shwartsman
a060d16845 SMBIOS patches by Sebastian 2010-01-26 07:41:49 +00:00
Stanislav Shwartsman
327a4ab5db Mark 1 GB instead of 512 MB at 3 GB as UC.
Add PNP BIOS dummy support
by Sebsatian
2010-01-18 20:04:44 +00:00
Stanislav Shwartsman
d548442c48 ROM BIOS patches by Sebastia 2010-01-14 07:04:40 +00:00
Stanislav Shwartsman
fcfac5f993 BIOS fixes from Sebastian 2010-01-05 08:20:05 +00:00
Stanislav Shwartsman
0e57ef4cee With BX_USE_EBDA_TABLES memory used by the MP table should be marked as reserved.
This should fix bug #1947249.

- Sebastian
2010-01-03 19:23:02 +00:00
Stanislav Shwartsman
8733e9a8e1 Remove support for BX_USE_EBDA_TABLES from smbios_init().
The SMBIOS spec says that at least the entry point should be between 0xf0000 and 0xfffff. Since the EBDA is currently limited to 1 KB disallow putting the SMBIOS tables there.
This should fix bug #1933859.

- Sebastian
2010-01-02 22:35:45 +00:00
Stanislav Shwartsman
aa07cd0324 Tables generated in rombios32 were overwriten by the IPL code in rombios.
This should partially fix bug #1933859.

- Sebastian
2009-12-30 19:21:46 +00:00
Stanislav Shwartsman
631a806036 The EBDA overflow check should not depend on bios_table_cur_addr.
- Sebastian
2009-12-28 20:08:30 +00:00
Stanislav Shwartsman
ea2be842a2 Fix PCI memory hole by Sebastian 2009-12-20 16:43:50 +00:00
Stanislav Shwartsman
4ef233daae Remove pci_bios_bigmem_addr. It seems no longer necessary because pci_bios_mem_addr now starts at 3GB.
- Sebastian
2009-12-19 17:31:43 +00:00
Stanislav Shwartsman
ed1de5d327 Commit "fix for BIOS bug" changed MSR_MTRRdefType to MTRR_MEMTYPE_UC.
Change it back to MTRR_MEMTYPE_WB.
2009-12-11 07:44:48 +00:00
Volker Ruppert
e14f643741 - fixed MTRR mask write bug and enabled check in msr.cc 2009-10-25 10:25:38 +00:00
Stanislav Shwartsman
489b3ddbcb fix for BIOS bug 2009-10-23 15:32:45 +00:00
Stanislav Shwartsman
2f65d8dfe8 patch from QEMU 2009-09-27 09:03:02 +00:00
Stanislav Shwartsman
bc9a191e2d bios patches by Sebastian 2009-04-26 17:17:07 +00:00
Volker Ruppert
f5facef1ef - applied non-ACPI timer interrupt routing fix from the Qemu bios patch queue
(Bochs now uses the original code of rev. 1.229 again)
2009-04-18 07:29:48 +00:00
Volker Ruppert
e012c3530e - applied some patches from Qemu's bios patch queue and the Qemu ML 2009-04-12 12:48:48 +00:00
Volker Ruppert
3b0fb9f28a - removed special case for the Bochs VBE LFB base address (it can be treated
like other PCI devices now)
- changed base address for the PCI memory space to 0xc0000000
- rombios32: fixed a warning
- fixed timeout flag for serial i/o functions
2009-04-10 16:37:02 +00:00
Stanislav Shwartsman
36518ba6c6 Patch by Sebastian [Bochs-developers] [PATCH] rombios32: use cpuid info in mptable processor entry 2009-02-20 15:36:29 +00:00
Volker Ruppert
4b4f80e6cb - implemented MTRR support in the bios. This is a combination of the individual
patches from the kvm tree. The code was written by Avi Kivity and Alex
  Williamson. Sebastian Herbszt added checks for CPUID_MTRR and CPUID_MSR.
2009-01-26 09:21:38 +00:00
Stanislav Shwartsman
817bbc6435 [Bochs-developers] [PATCH] rombios32: fix SMBIOS end address range reporting
The -1 seems to be in the wrong place here.

Patch by Alex Williamson from the kvm tree [1].

[1] http://git.kernel.org/?p=virt/kvm/kvm-userspace.git;a=commitdiff;h=dd0f27d08ce415da6a5215f0901e7d98ab084f79

- Sebastian
2009-01-11 19:52:36 +00:00
Volker Ruppert
ab1da2f8f3 - the HPET merge from QEMU introduced new structures which need packing (Sebastian Herbszt) 2008-12-27 16:28:49 +00:00
Volker Ruppert
f2f5d5c915 - applied 3 patches from the Qemu project
* added support for memory above the PCI hole (Izik Eidus)
  * smp_probe: instead of timimg out, wait until all cpus are up (Avi Kivity)
  * Bochs BIOS changes to support HPET in Qemu (Beth Kon)
- added documentation about CMOS registers set by Qemu
2008-12-25 16:58:44 +00:00
Volker Ruppert
c3b6fc563f - use "__attribute__((__packed__))" instead of "#pragma pack" (Sebastian Herbszt) 2008-12-23 09:20:43 +00:00
Volker Ruppert
13822e151e - applied 3 patches from the Qemu project (Anthony Liguori)
* disable stack protector for BIOS
  * make ACPI tables byte-aligned
  * fix Bochs BIOS build from a separate directory
2008-12-20 14:27:22 +00:00
Stanislav Shwartsman
02e21074a0 Don't power down vga card on entering S3 state.
Patch by Gleb Natapov
2008-12-04 18:48:33 +00:00
Stanislav Shwartsman
dcf68cca6d Don't use unreserved memory in BIOS.
Patch by Gleb Natapov
2008-12-04 18:46:55 +00:00
Stanislav Shwartsman
4bc2d5b4e9 Execute rombios32 code from rom address 0xe0000.
Patch by Gleb Natapov
2008-12-04 18:44:14 +00:00
Stanislav Shwartsman
3692baf4bb Preserve memory content during SMM iniT.
Patch by Gleb Natapov
2008-12-04 18:42:32 +00:00