Kevin O'Connor [Fri, 11 Dec 2009 02:35:49 +0000 (21:35 -0500)]
Move stack manipulation code from util.c to new file stacks.c.
Move the threading and stack_hop code to a new file.
Kevin O'Connor [Fri, 11 Dec 2009 02:16:07 +0000 (21:16 -0500)]
Refactor __call16_from32 - introduce transition16.
Add a transition16 call that just jumps into 16bit mode.
__call16_from32 (and call16big) just uses transition16 and __call16.
Kevin O'Connor [Fri, 11 Dec 2009 02:15:04 +0000 (21:15 -0500)]
Minor - use wait_irq() instead of irq_enable()/hlt() in apm.
Kevin O'Connor [Fri, 11 Dec 2009 01:13:57 +0000 (20:13 -0500)]
Make SMBIOS table pass MS SVVP test
Microsoft SVVP (Server Virtualization Validation Program) expects
arbitrary SMBIOS field to have certain values otherwise it fails.
We all want to make Microsoft happy don't we? So lets put values MS
expects in there.
Values modified by the patch:
Type 0:
Bit 2 of byte 2 must be 1
Type 1:
Manufacturer/product string should not be empty
Type 3:
Manufacturer string should not be empty
Type 4:
Processor manufacturer should no be empty
Max/current CPU speed shouldn't be unknown
Type 16:
Memory should have error correction.
---
v1->v2:
Use CONFIG_APPNAME instead of open coding strings
Use snprintf.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Thu, 10 Dec 2009 02:15:59 +0000 (21:15 -0500)]
Unify ps2 port data processing.
Unify the code for mouse and keyboard irq handling.
Support case where mouse irq fires but keyboard data present and
vice-versa.
Support data in i8042 queue while ps2 command being processed.
Kevin O'Connor [Thu, 10 Dec 2009 02:00:41 +0000 (21:00 -0500)]
Move ps2 specific keyboard and mouse code to ps2port.c.
Kevin O'Connor [Thu, 10 Dec 2009 01:18:31 +0000 (20:18 -0500)]
Add experimental feature to run vga optionrom in parallel with init.
Add option (default disabled) that allows the vga rom to run while
hardware init is still in progress.
Kevin O'Connor [Thu, 10 Dec 2009 01:04:54 +0000 (20:04 -0500)]
Clear thread info on each boot.
Fix potential issue of threads being incorrect if ctrl+alt+del is
pressed during POST.
Kevin O'Connor [Sat, 5 Dec 2009 23:51:53 +0000 (18:51 -0500)]
Introduce optimized iomemcpy function for copying from io memory.
Reading from IO memory (pci rom or flash) is very slow, so add
iomemcpy() which will yield during copy. Use a 4 byte copy to
optimize accesses.
Also, decompress cbfs data files from a temp memory buffer so that
ulzma doesn't read from slow IO memory.
Kevin O'Connor [Sat, 5 Dec 2009 19:23:27 +0000 (14:23 -0500)]
Fix timing in readserial.py - use 10 bits per byte.
There is also a start bit, so 8N1 serial should use 10 bits to a byte.
Kevin O'Connor [Sat, 5 Dec 2009 18:44:39 +0000 (13:44 -0500)]
Enhance readserial.py to note when resetting timer.
Kevin O'Connor [Sat, 5 Dec 2009 18:36:18 +0000 (13:36 -0500)]
Fix ATA iobase2 access on PCI native mode interfaces.
The ctrl register is iorange + 2 not iorange + 6.
Rework port definitions to be based on PCI offsets instead of ISA.
Also, properly define ATA irqs when in PCI compatibility mode.
Kevin O'Connor [Sat, 5 Dec 2009 16:25:09 +0000 (11:25 -0500)]
Support ISA ATA devices for qemu's "-M isapc" mode.
Add probing for ISA ATA devices when no pci devices found.
Also, add defines for common ATA ports.
Also, make sure irq and pci_bdf are defined for both pci ata controllers.
Kevin O'Connor [Thu, 3 Dec 2009 02:19:30 +0000 (21:19 -0500)]
Fail PS2 port commands when receiving a NAK.
Fail the command on a nak - don't ignore it.
Kevin O'Connor [Thu, 26 Nov 2009 00:35:01 +0000 (19:35 -0500)]
Misc updates.
Update todo list.
Fix spelling errors in acpi debug messages.
Don't call DISK_STUB() in format - use debug_stub() instead.
Kevin O'Connor [Thu, 26 Nov 2009 00:05:04 +0000 (19:05 -0500)]
Reorganize main init order and add comments.
Try to organize the main init by class of hardware initialized.
Kevin O'Connor [Wed, 25 Nov 2009 23:53:52 +0000 (18:53 -0500)]
Clear unused parts of f-segment.
On coreboot, the unused parts of the f-segment could contain leftover
bios tables which may confuse an OS. So clear unused parts of
f-segment.
Kevin O'Connor [Wed, 25 Nov 2009 23:51:46 +0000 (18:51 -0500)]
Clear PMMAllocs even if CONFIG_PMM not set.
The pmm based allocations are used for internal allocations now, so be
sure to do a full reset even if external PMM not configured.
Kevin O'Connor [Wed, 25 Nov 2009 23:49:06 +0000 (18:49 -0500)]
Add floppy and cdrom drives in sorted order.
With threads a cdrom could be found in random order - so always add to
the idmap in a defined manor.
Kevin O'Connor [Tue, 24 Nov 2009 14:41:06 +0000 (09:41 -0500)]
Set MaxCountCPUs even if no APIC found.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Tue, 24 Nov 2009 14:37:53 +0000 (09:37 -0500)]
Update snprintf to return the number of bytes used.
Kevin O'Connor [Fri, 20 Nov 2009 22:28:19 +0000 (17:28 -0500)]
Make sure to reenable ata interrupts even on error.
If the ata command fails, be sure to reenable errors.
This fixes a report of MS Vista not seeing a cdrom drive.
Kevin O'Connor [Fri, 20 Nov 2009 14:22:19 +0000 (09:22 -0500)]
Move SeaBIOS post/boot stack to avoid conflict with gPXE.
It appears gPXE also uses a stack at 0x7c00. gPXE probably shouldn't
do that, but for now, move SeaBIOS stack to 0x7000.
Kevin O'Connor [Fri, 20 Nov 2009 14:19:28 +0000 (09:19 -0500)]
Test for broken gcc -combine on FC12.
The Fedora Core 12 distro throws an internal compiler error due to a
bug in gcc. Look for this case and avoid using -combine if found.
Kevin O'Connor [Sat, 14 Nov 2009 18:49:06 +0000 (13:49 -0500)]
Add MPS entries for LINT interrupts.
Signed-off-by: Magnus Christensson <mch@virtutech.com>
Kevin O'Connor [Sat, 14 Nov 2009 18:43:01 +0000 (13:43 -0500)]
Initialize the LINT LVTs on the local APIC of the BSP.
Since the APIC is enabled, we need to initialize LINT0 to ExtINT and LINT1 to NMI.
For now, only do this on non-coreboot configurations.
Signed-off-by: Magnus Christensson <mch@virtutech.com>
Kevin O'Connor [Sat, 14 Nov 2009 18:34:27 +0000 (13:34 -0500)]
Fixes for mptable generation.
Rework cpu iteration to simplify. Also fixes sparse table generation
when multiple cores found.
Rework entrycount generation to fix irq0override code.
Move fls() to util.h.
Add free calls when allocation fails.
Kevin O'Connor [Tue, 10 Nov 2009 00:30:17 +0000 (19:30 -0500)]
Properly mask value for MTRR mask.
Signed-off-by: Magnus Christensson <mch@virtutech.com>
Kevin O'Connor [Tue, 10 Nov 2009 00:21:44 +0000 (19:21 -0500)]
Remove cmos access from cpu detect loop to make it faster.
Signed-off-by: Magnus Christensson <mch@virtutech.com>
Kevin O'Connor [Tue, 10 Nov 2009 00:20:21 +0000 (19:20 -0500)]
Only add the first logical CPU in each physical CPU to the MPS tables.
Signed-off-by: Magnus Christensson <mch@virtutech.com>
Kevin O'Connor [Tue, 10 Nov 2009 00:18:22 +0000 (19:18 -0500)]
Fix cpuflag in mptable (| has higher priority than ?:)
Signed-off-by: Magnus Christensson <mch@virtutech.com>
Kevin O'Connor [Tue, 10 Nov 2009 00:15:50 +0000 (19:15 -0500)]
Fix compiler warning in setup_translation().
Assign 'desc' just to silence compiler warning.
Kevin O'Connor [Tue, 10 Nov 2009 00:15:08 +0000 (19:15 -0500)]
Fix typo in pci_bios_init_device() causing use before set error.
The 'val' variable is used before being set - 'old' was intended.
Kevin O'Connor [Wed, 4 Nov 2009 00:52:04 +0000 (19:52 -0500)]
Verify 16bit code doesn't rely on any "discarded" sections.
Add linker rule to catch cases where 16bit code tries to access a
non-existent 32bit variable defined with VAR32VISIBLE.
Kevin O'Connor [Wed, 4 Nov 2009 00:50:52 +0000 (19:50 -0500)]
Reorder source code to work around weird -combine issue.
Seeing an odd issue with ZoneTmpHigh not being declared global - for
now, work around by reordering the soruce files.
Also, remove the ".comment" section from the final .elf file.
Kevin O'Connor [Sat, 31 Oct 2009 17:55:59 +0000 (13:55 -0400)]
Call yield() while waiting for USB control transfers to complete.
Kevin O'Connor [Sat, 31 Oct 2009 03:16:07 +0000 (23:16 -0400)]
Improve debugging info on USB UHCI qh timeout.
Kevin O'Connor [Sat, 24 Oct 2009 23:56:11 +0000 (19:56 -0400)]
Improve debugging output from threads.
Show the "thread id" on each debug message sent from a thread.
Also, cleanup translation dprintf() so it looks nicer withe thread output.
Kevin O'Connor [Sat, 24 Oct 2009 21:57:29 +0000 (17:57 -0400)]
Add simple cooperative threading scheme to allow parallel hw init.
Enable system for running hardware initialization in parallel.
The yield() call can now round-robin between "threads".
Rework ata controller init to use a thread per controller.
Make sure internal drives are registered in a defined order.
Run keyboard initialization in a thread.
Rework usb init to use a thread per controller.
Kevin O'Connor [Sat, 24 Oct 2009 21:54:06 +0000 (17:54 -0400)]
Enable ins/outs functions to use 32bit addresses.
Kevin O'Connor [Sat, 24 Oct 2009 15:06:08 +0000 (11:06 -0400)]
Replace irq_enable() regions with explicit calls to check for irqs.
Add new function yield() which will permit irqs to trigger.
The yield() call enables irqs to occur in 32bit mode.
Add [num]sleep calls that yield instead of just spinning.
Rename existing int 1586 usleep call to biosusleep.
Convert many calls to mdelay to msleep.
Kevin O'Connor [Fri, 23 Oct 2009 02:30:37 +0000 (22:30 -0400)]
Handle tsc rollover.
Handle case where timetamp counter overflows while waiting.
Kevin O'Connor [Fri, 23 Oct 2009 01:48:39 +0000 (21:48 -0400)]
Pass 'drive_s' pointer instead of driveid.
Pass a pointer to the drive_s struct instead of a driveid array offset.
Don't allocate ata drive's until a real drive found.
Introduce getDrive() and allocDrive() functions.
Kevin O'Connor [Tue, 20 Oct 2009 02:13:11 +0000 (22:13 -0400)]
Update TODO list.
Kevin O'Connor [Sun, 18 Oct 2009 13:49:59 +0000 (09:49 -0400)]
Move smbios definitions to header file; fix compile on older gcc.
The build with old versions of gcc can't handle duplicate struct
definitions. So, move smbios defs to common header.
Kevin O'Connor [Sun, 18 Oct 2009 03:53:32 +0000 (23:53 -0400)]
Expand USB OHCI support.
Get UHCI support to point where it works with (a modified) qemu.
Kevin O'Connor [Wed, 14 Oct 2009 23:28:04 +0000 (19:28 -0400)]
fix low bits in ROM and I/O sizing
This cleans up handling of low bits during BAR sizing,
to match PCI spec requirements, and to use symbolic
constants from pci_regs.h
Issues fixed:
For ROM BARs, bit 0 is writeable (enable bit), which we not
only don't want to set, but it will stick and make us think
it's an I/O port resource.
Further, PCI spec defines the following bits as reserved:
- bit 1 in I/O BAR
- bits 10:1 in ROM BAR
and we should be careful and preserve any values there,
and should ignore anything we read from these registers.
Bits 3:2 in I/O BAR might be writeable, so it
is wrong to mask them when calculating BAR size.
Spec references:
See 6.2.5.1 for I/O and memory, and 6.2.5.2 for ROM,
6.1 for reserved bit handling;
pages 225, 228 and 214 in PCI spec revision 3.0.
See also Qemu pcbios commit
6ddb9f5c742b2b82b1755d7ec2a127f6e20e3806
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Kevin O'Connor [Mon, 12 Oct 2009 16:54:56 +0000 (12:54 -0400)]
Use pmm_malloc() for internal allocations.
Using pmm_malloc permits free() to be used on internal allocations.
Rework low zone expanding so that it doesn't cause gcc v4.3 error.
Allow pmm_malloc to use ZoneTmpLow if ZoneTmpHigh isn't available.
Kevin O'Connor [Mon, 12 Oct 2009 16:02:33 +0000 (12:02 -0400)]
Provide correct value for QEMU_CFG_IRQ0_OVERRIDE
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Mon, 12 Oct 2009 14:34:51 +0000 (10:34 -0400)]
enable io/memory unconditionally
VGA adapters need to claim memory and i/o
transactions even if they do not have any
i/o or memory bars. E.g. PCI spec, page 297,
gives an example of such a device:
Programming interface 0000 0000b
VGA-compatible controller. Memory
addresses 0A 0000h through 0B
FFFFh. I/O addresses 3B0h to 3BBh
and 3C0h to 3DFh and all aliases of
these addresses.
While we could check for these devices and special-case them, it is
easier to fix this by enabling i/o and memory space unconditionally:
devices that do not support it will just ignore this setting.
Original-by: Michael S. Tsirkin <mst@redhat.com>
Kevin O'Connor [Mon, 12 Oct 2009 14:22:45 +0000 (10:22 -0400)]
Set the PCI base address to 0xf0000000.
Qemu starts PCI hole at 0xe0000000, but lets set it to the same value as
pcbios uses for now.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Mon, 12 Oct 2009 14:21:48 +0000 (10:21 -0400)]
Enable power button event generation.
Qemu pcbios commit
4f5a9a84ff32e2445bf1c854e33b0b32f4459428
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Mon, 12 Oct 2009 14:20:46 +0000 (10:20 -0400)]
Generate mptable unconditionally.
VMware ESX requires an mptable even for uniprocessor guests.
Qemu pcbios commit
9869338791ca6f44e628b88e6335ffd66e1ed86b
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Mon, 12 Oct 2009 14:09:15 +0000 (10:09 -0400)]
Add stubs for USB OHCI support.
Enable USB wrapper functions to call either ohci or ehci helpers.
Implement pci_config_maskw in place of pci_set_bus_master.
Introduce 'struct usb_pipe' in place of 'void *' for pipes.
Kevin O'Connor [Mon, 12 Oct 2009 13:49:27 +0000 (09:49 -0400)]
Move read/write[bwl] from smp.c to util.h.
Move them to the header so other code can use them.
Kevin O'Connor [Mon, 12 Oct 2009 13:48:12 +0000 (09:48 -0400)]
Cleanup 'debuginfo' variable in output; add comment.
Kevin O'Connor [Fri, 9 Oct 2009 13:42:11 +0000 (09:42 -0400)]
Use MaxCountCPUs during building of per cpu tables.
Preparation for hot pluggable CPUs.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:16:04 +0000 (22:16 -0400)]
Update acpi-dsdt.hex with latest changes from acpi-dsdt.dsl.
Kevin O'Connor [Fri, 9 Oct 2009 02:14:50 +0000 (22:14 -0400)]
Move qemu cfg init before smp init.
We will need to read qemu config during smp init.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:13:15 +0000 (22:13 -0400)]
Read max number of cpus from VM.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:09:02 +0000 (22:09 -0400)]
Add SRAT ACPI table support.
Take NUMA topology info from the QEMU firmware configuration interface
(number of nodes, node for each (V)CPU and amount of memory) and build
a SRAT table describing this topology for the guest OS. Handles more than
4 GB of RAM by including a hole for 32bit PCI memory mapping.
Qemu pcbios commit
444f1226c11082d374b7e1361c6f5696e479642a
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:06:06 +0000 (22:06 -0400)]
Add 26 pci slots, bringing the total to 32.
Lack of pci slots causes Windows to complain when installing too many
device.
Qemu pcbios commit
001fd46e3b551de05c62590ba5ed4cbf6cbe3510
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:05:21 +0000 (22:05 -0400)]
HPET support.
Part of qemu pcbios commit
e04da91178f0e11febbbd61d9795e49cc27e9ad4
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:04:05 +0000 (22:04 -0400)]
Pci hotplug support.
Qemy pcbios commit
e88ec0d97b464915281d27d5714784d2215cbdef
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:03:28 +0000 (22:03 -0400)]
Provide gpe _L0x methods.
Provide methods for gpe blk 0, even though they do nothing atm.
Qemu pcbios commit
37c3845e38cb8ee4a98960bf1fc31563d071838d
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:02:33 +0000 (22:02 -0400)]
Remove irq 9 from the pci interrupt link resources.
qemu can't share isa irqs (which is how the acpi sci interrupt is implemente
with the pci irqs, so remove the sci interrupt from the pci link interrupt
candidate list.
Qemu pcbios commit
713939c93b9caa1a31c49211fe83525bcbee5948
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:01:52 +0000 (22:01 -0400)]
Use extended interrupt descriptor for pci irqs.
This is necessary to allow freebsd to boot; freebsd chokes if a regular
interrupt descriptor specifies an active high pic irq.
Qemu pcbios commit
aaff1cc0ce8de3c45eec49b9b0e7624576058eda
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 02:01:06 +0000 (22:01 -0400)]
Restrict pci interrupts to irq 5/9/10/11
we need to specify the pci interrupts as active high; this reduces
the number of override entries we have to add.
Qemu pcbios commit
0f79abf26ff3e61dab712dbccdbc08a04619e7c0
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:59:51 +0000 (21:59 -0400)]
Advertise pci irqs as active high in DSDT
Now that kvm emulates the ioapic polarity correctly, we must describe
the polarity correctly in the acpi tables. Otherwise pci interrupts won't
be delivered correctly.
Qemu pcbios commit
0c8d4b40a1eec2369c016b9be1c9175607e64a4b
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:59:13 +0000 (21:59 -0400)]
Use preprocessor for pci link routing.
Qemu pcbios commit
297a5cd68d2883215571634b2f8c627364c87f2c
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:57:15 +0000 (21:57 -0400)]
Add rule to compile DSDT to make file.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:52:11 +0000 (21:52 -0400)]
Remove CONFIG_KVM compile option.
Qemu and KVM should use the same bios build. All differences should be
handled in runtime.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:50:31 +0000 (21:50 -0400)]
Check at runtime if VM is KVM.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:37:21 +0000 (21:37 -0400)]
irq0override provided by qemu.
Read it instead of relying on compile time flag.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:34:45 +0000 (21:34 -0400)]
Correct default pci irq links
The hardware uses irqs 10 and 11, so change the bios to reflect that.
Qemu pcbios commit
b0a155cfddc57e93b641a24fb198fdd8d738f143
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:33:26 +0000 (21:33 -0400)]
Always create PCI interrupt override acpi tables.
This is what qemu pcbios does since commit
da5ff65dc9473e3f069736d38b9a189ea14a67eb.
Qemu implements PCI interrupts as active high, but OSes assume
that they are active low as per PCI spec. Qemu works without override
only because ioapic there doesn't implement polarity bit.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:21:59 +0000 (21:21 -0400)]
Load SMBIOS entries and files from qemu
Allow SMBIOS fields to be overridden and entries replaced by those
read from qemu.
This is port of commit
f4a09e759469be74e2598758bfae623b555c4cae
from qemu pc-bios tree.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Fri, 9 Oct 2009 01:18:41 +0000 (21:18 -0400)]
Add support for passing additional acpi tables from qemu.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Thu, 8 Oct 2009 12:51:24 +0000 (08:51 -0400)]
Really fix linker issue with "debuginfo" variable.
The 16bit and 32bit code can't share debuginfo because it points to
code and must point to 16bit code in 16bit mode. Introduce two
separate variables - one for 32bit mode and one for 16bit mode.
Kevin O'Connor [Thu, 8 Oct 2009 12:13:13 +0000 (08:13 -0400)]
Add VAR16VISIBLE to debuginfo - older gcc doesn't optimize out.
Kevin O'Connor [Thu, 8 Oct 2009 01:41:08 +0000 (21:41 -0400)]
Add snprintf support.
Extend bvprintf() code to support building a string.
Don't flush the serial port from printf if CONFIG_SCREEN_AND_DEBUG not
set.
Kevin O'Connor [Thu, 8 Oct 2009 00:59:45 +0000 (20:59 -0400)]
Silence gcc asm deprectation warning in output.c.
gcc prefers asm parameters not be casts.
Kevin O'Connor [Wed, 7 Oct 2009 23:44:23 +0000 (19:44 -0400)]
resolve memory device roll over reporting issues with >32G guests
The field within the Memory Device type 17 is only a word with the MSB being
used to report MB/KB. Thereby, a guest with 32G and greater would report
incorrect memory device information rolling over to 0.
This presents more than one memory device and associated memory structures
if the memory is larger than 16G
This is port of commit
e65bb0d2bd3a156408996674965555979de3a61b
from qemu pc-bios tree.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Wed, 7 Oct 2009 23:42:07 +0000 (19:42 -0400)]
Cleanup acpi table creation.
Makes dynamic number of acpi table possible.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Sun, 4 Oct 2009 16:06:59 +0000 (12:06 -0400)]
Workaround gcc4.3 compiler error - disable pmm low mem allocations.
For some unknown reason, the 16bit version of low memory expansion is
confusing gcc4.3. For now, just disable it as it isn't used in
practice.
Kevin O'Connor [Sun, 4 Oct 2009 14:05:16 +0000 (10:05 -0400)]
Move qemu config code from smbios.c to its own files. Add support for
-boot menu=on|off qemu option.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Kevin O'Connor [Tue, 29 Sep 2009 01:32:08 +0000 (21:32 -0400)]
Initial support for USB, UHCI, and USB Keyboards.
This adds preliminary support for USB controllers and keyboards.
Add support for UHCI controllers.
Add support for "HID" USB keyboards.
Also, fix bug in hexdump() - len need not be power of 4.
Kevin O'Connor [Mon, 28 Sep 2009 00:07:40 +0000 (20:07 -0400)]
Replace clock conversion constants with defines.
Simplify and name the clock multiplier constants.
Kevin O'Connor [Fri, 25 Sep 2009 01:01:16 +0000 (21:01 -0400)]
Interrupts should be enabled when calling 16bit code.
Set most code paths to have interrupts on when calling 16bit code.
This fixes at least one optionrom that needed irqs on.
Kevin O'Connor [Fri, 25 Sep 2009 00:51:55 +0000 (20:51 -0400)]
Add support for permanent low memory allocations.
Support pmm style permanent low-memory allocations.
When used, relocate ebda and store permanent memory at top of 640K.
Kevin O'Connor [Mon, 21 Sep 2009 00:04:06 +0000 (20:04 -0400)]
Fix bug in fdpt filling - driveid is not hdid.
Make sure driveid is used properly.
Kevin O'Connor [Sun, 20 Sep 2009 23:47:45 +0000 (19:47 -0400)]
Allow rom to grow beyond 64K.
If rom is over 64K then use part of e-segment for 32bit code.
Push 32bit code as high as it can go in the f-segment.
Do version building before layoutrom.py - this way layoutrom knows
full size of rom.
Make layoutrom.py build the full ld script - remove now unused ld
scripts that just imported the output of layoutrom.py.
Also, use "objdump" instead of "nm" - reduce toolchain requirements.
Enhance tools/checkrom.py so that it can pad bios.bin to size qemu is
happy with.
Also, add dependencies to build rules for local tools - if tool
changes automatically rerun it.
Make sure option roms don't overwrite the 32bit code (should the 32bit
code be in the e-segment).
Make sure shadow code works even if part of the code is in the
e-segment.
Kevin O'Connor [Sun, 20 Sep 2009 19:42:39 +0000 (15:42 -0400)]
Fix uninitialized variable in cbfs menu code.
Kevin O'Connor [Sun, 20 Sep 2009 19:33:08 +0000 (15:33 -0400)]
Support sleeping until an irq fires, and use where applicable.
Add wait_irq() - it's more efficient than looping with cpu_relax().
Also, move kbd irq enables down - only kbd_command needs it.
Also, make some minor code layout improvements to kbd.c.
Kevin O'Connor [Sun, 13 Sep 2009 14:46:57 +0000 (10:46 -0400)]
Do PCI initialization before vga init.
The VGA init could depend on the PCI init.
Kevin O'Connor [Sat, 12 Sep 2009 23:35:04 +0000 (19:35 -0400)]
Unify cd emulation access and main disk access code.
Add a new backend driver for cd emulation (DTYPE_CDEMU). This backend
driver now does the work of scheduling mis-sized reads.
Add mechanism for obtaining emulated drive geometry.
Extend disk_1308() to support cdrom emulation.
Use regular disk_13*() calls even for cdemu.
Also, unify the X_SECTOR_SIZE definitions.
Kevin O'Connor [Sat, 12 Sep 2009 17:20:14 +0000 (13:20 -0400)]
Add mechanism for describing internal drives in boot menu.
Allow each drive type to describe itself on the boot menu.
This fixes a bug where driveid was used in place of ataid in the boot
menu.
Also, expand descriptions for each drive type.
Don't overload the IPL type for BCVs - instead introduce new types.
Kevin O'Connor [Fri, 11 Sep 2009 21:00:31 +0000 (17:00 -0400)]
Separate out pause key processing in process_key().
Kevin O'Connor [Fri, 11 Sep 2009 06:06:02 +0000 (02:06 -0400)]
Define bit names for keyboard shift flags.
Also, move setting of bit flags to the end of process_key().
Kevin O'Connor [Wed, 9 Sep 2009 15:34:39 +0000 (11:34 -0400)]
Replace common segment/offset pairs with struct segoff_s.
Introduce 'struct segoff_s' to more places.