]> xenbits.xensource.com Git - seabios.git/log
seabios.git
12 years agomaininit(): print machine UUID under seabios version message
Laszlo Ersek [Fri, 14 Dec 2012 11:59:39 +0000 (12:59 +0100)]
maininit(): print machine UUID under seabios version message

There are users who would like to see the UUID at startup, and it probably
won't bother others.

Related RHBZ: 876250.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
12 years agoAdd compile checking phase to build.
Kevin O'Connor [Wed, 12 Dec 2012 03:40:16 +0000 (22:40 -0500)]
Add compile checking phase to build.

The build textually includes all the code together in one unit for the
compiler in order to use gcc's -fwhole-program option.  Textually
including all the code can mask subtle code errors (eg, forgetting to
include the correct headers) and can lead to confusing error reports
from the compiler.  So, compile each file individually in addition to
the normal textually inclusive build.  This improves the error
checking while still obtaining the benefits of -fwhole-program.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoDon't use gcc's -combine option.
Kevin O'Connor [Wed, 12 Dec 2012 02:59:45 +0000 (21:59 -0500)]
Don't use gcc's -combine option.

The combine option has been deprecated from gcc for the last few
revisions.  The option doesn't add any real benefits, so there's no
real point in checking for it on the few systems that will still have
it.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoDon't recursively evaluate CFLAGS variables.
Kevin O'Connor [Wed, 12 Dec 2012 02:43:05 +0000 (21:43 -0500)]
Don't recursively evaluate CFLAGS variables.

The $(cc-option) macro was being executed multiple times for each
compiler invocation.  That's a waste of time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agovga: Minor comment spelling fix.
Kevin O'Connor [Fri, 7 Dec 2012 17:23:27 +0000 (12:23 -0500)]
vga: Minor comment spelling fix.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agofloppy: Minor - reduce handle_0e code size when CONFIG_FLOPPY is disabled.
Kevin O'Connor [Fri, 7 Dec 2012 16:25:58 +0000 (11:25 -0500)]
floppy: Minor - reduce handle_0e code size when CONFIG_FLOPPY is disabled.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoacpi: drop irq 8 from hpet ressources
Gerd Hoffmann [Thu, 6 Dec 2012 15:46:08 +0000 (16:46 +0100)]
acpi: drop irq 8 from hpet ressources

Fixes WinXP BSOD.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: Minor - merge the two dsdt ISA areas into one ISA area.
Kevin O'Connor [Tue, 4 Dec 2012 00:04:55 +0000 (19:04 -0500)]
acpi: Minor - merge the two dsdt ISA areas into one ISA area.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoacpi: fix COM2._UID
Gerd Hoffmann [Tue, 4 Dec 2012 15:26:40 +0000 (16:26 +0100)]
acpi: fix COM2._UID

Commit 8d7449771068824b8bdb51fe622c10660b373d4f broke this.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: reorder PX13 + ISA
Gerd Hoffmann [Tue, 4 Dec 2012 15:26:39 +0000 (16:26 +0100)]
acpi: reorder PX13 + ISA

Without this windows 7 BSODs, probably because
we are referencing PX13 from ISA.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: PCI routing DSDT simplifications.
Kevin O'Connor [Sun, 2 Dec 2012 07:33:33 +0000 (02:33 -0500)]
acpi: PCI routing DSDT simplifications.

Use define_link() macro in PIIX4 hardware definitions.  Now that all
remaining irq links are the same it's possible to just use a macro to
define the link.

Port several size optimizations to the q35 irq routing definitions:
define the PRQx fields in the _SB scope to reduce size of register
references, define CRS and STA methods in _SB scope to reduce code
duplication, simplify acpi code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoACPI: Delineate q35 ACSP DSL code into sections.
Kevin O'Connor [Sun, 2 Dec 2012 06:40:07 +0000 (01:40 -0500)]
ACPI: Delineate q35 ACSP DSL code into sections.

Add comments around major sections of the DSL file.  Also, add scope
declarations where needed so that each section only contains one
scope.

This is the q35 equivalent of e9fe15b86c6e98a91b30511d005ecdcc8a3e578d.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoACPI: Move q35 PCI irq definitions together.
Kevin O'Connor [Sun, 2 Dec 2012 06:30:27 +0000 (01:30 -0500)]
ACPI: Move q35 PCI irq definitions together.

Place all the q35 irq definitions close to each other.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoACPI: Move PCI0 hotplug and irq definitions to there respective areas.
Kevin O'Connor [Sun, 2 Dec 2012 06:22:23 +0000 (01:22 -0500)]
ACPI: Move PCI0 hotplug and irq definitions to there respective areas.

Group the hotplug code and definitions together along with the irq
code and definitions.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoACPI: Remove unnecessary Return(One) calls from q35 DSDT.
Kevin O'Connor [Sun, 2 Dec 2012 06:15:03 +0000 (01:15 -0500)]
ACPI: Remove unnecessary Return(One) calls from q35 DSDT.

Recent iasl compilers warn about spurious return calls.  Remove extra
return calls from the GPE event methods.  This is the q35 dsdt
equivalent of patch 475ce3f5f6a986877d637ac39f6ee23484ecc992.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoacpi: Reindent DSDT code.
Kevin O'Connor [Sun, 2 Dec 2012 06:09:17 +0000 (01:09 -0500)]
acpi: Reindent DSDT code.

This patch is purely cosmetic - no code changes should be observed.

Use a consistent indentation style with the ACPI DSDT code:
1 - Use spaces (no tabs) and 4 space indentation
2 - Place opening braces on same line as statement declaration
3 - Don't put a space between statement and opening parenthesis,
    except for control statements (If, Else, While, Return) where a
    space is always present

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoacpi: move isa devices to separate file [q35]
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:48 +0000 (10:17 +0100)]
acpi: move isa devices to separate file [q35]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoacpi: add mcfg table for mmconfig
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:35 +0000 (10:17 +0100)]
acpi: add mcfg table for mmconfig

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoq35: fix default vga address
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:49 +0000 (10:17 +0100)]
q35: fix default vga address

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move isa devices to separate file
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:47 +0000 (10:17 +0100)]
acpi: move isa devices to separate file

Stuff them parameterized into #defines, so we can (a) reuse them for
q35 and (b) don't duplicate the serial line.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: rework enable bits
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:46 +0000 (10:17 +0100)]
acpi: rework enable bits

Model the device enable bits as fields so they can be accessed
directly by name.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move cpu hotplug to separate file [q35]
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:45 +0000 (10:17 +0100)]
acpi: move cpu hotplug to separate file [q35]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move cpu hotplug to separate file
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:44 +0000 (10:17 +0100)]
acpi: move cpu hotplug to separate file

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move \_SB.PCI0._CRS to separate file [q35]
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:43 +0000 (10:17 +0100)]
acpi: move \_SB.PCI0._CRS to separate file [q35]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move \_SB.PCI0._CRS to separate file
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:42 +0000 (10:17 +0100)]
acpi: move \_SB.PCI0._CRS to separate file

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move \_SB.HPET to separate file [q35]
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:41 +0000 (10:17 +0100)]
acpi: move \_SB.HPET to separate file [q35]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move \_SB.HPET to separate file
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:40 +0000 (10:17 +0100)]
acpi: move \_SB.HPET to separate file

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move DBUG() to separate file [q35]
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:39 +0000 (10:17 +0100)]
acpi: move DBUG() to separate file [q35]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoacpi: move DBUG() to separate file
Gerd Hoffmann [Wed, 28 Nov 2012 09:17:38 +0000 (10:17 +0100)]
acpi: move DBUG() to separate file

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoseabios: q35: Register PCI IRQs as active high in APIC mode
Jan Kiszka [Wed, 28 Nov 2012 09:17:37 +0000 (10:17 +0100)]
seabios: q35: Register PCI IRQs as active high in APIC mode

Seems important for Windows.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Jason Baron <jbaron@redhat.com>
12 years agoseabios: q35: add dsdt
Isaku Yamahata [Wed, 28 Nov 2012 09:17:36 +0000 (10:17 +0100)]
seabios: q35: add dsdt

add dsdt for q35 chipset of qemu.

[jbaron: remove suspd bits since they are now auto-generated, move pci window to 0xb0000000,
    add framework for auto generated pci windows]
[kraxel: remove pci express root ports + pci bridge]

Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Jason Baron <jbaron@redhat.com>
12 years agoseabios: add q35 initialization functions.
Isaku Yamahata [Wed, 28 Nov 2012 09:17:33 +0000 (10:17 +0100)]
seabios: add q35 initialization functions.

add q35 initialization functions.

[jbaron@redhat.com: restructured to current seabios base, updated pci base to 0xb0000000]
[kraxel@redhat.com: join the two lpc init funcs into one]

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Jason Baron <jbaron@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoseabios: pci: enable SERR of normal device.
Isaku Yamahata [Wed, 28 Nov 2012 09:17:32 +0000 (10:17 +0100)]
seabios: pci: enable SERR of normal device.

enable SERR of normal device for AER.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Jason Baron <jbaron@redhat.com>
12 years agoseabios: acpi, fadt: make while fadt initialization chipset specific
Isaku Yamahata [Wed, 28 Nov 2012 09:17:31 +0000 (10:17 +0100)]
seabios: acpi, fadt: make while fadt initialization chipset specific

make while fadt initialization chipset specific.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Jason Baron <jbaron@redhat.com>
12 years agoseabios: make mttr UC area setup dynamic
Jason Baron [Wed, 28 Nov 2012 09:17:30 +0000 (10:17 +0100)]
seabios: make mttr UC area setup dynamic

Set up the UC area of mtrr dynamically based on mtrr_base. This allows
the bios to work for other chipsets that might want to set the mtrr.
Since BUILD_MAX_HIGHMEM is no longer used we can remove the config parameter.

This change reverses the order of pci_setup() and smm_init() with
mtrr_setup().

Signed-off-by: Jason Baron <jbaron@redhat.com>
12 years agofloppy: Allow floppy code to be used with coreboot.
Kevin O'Connor [Mon, 26 Nov 2012 16:18:11 +0000 (11:18 -0500)]
floppy: Allow floppy code to be used with coreboot.

Allow coreboot users to enable the floppy support (via CBFS files
etc/floppy0 and etc/floppy1) on real hardware.  It is unknown if the
Bochs derived floppy controller support will work on real hardware,
but this option will make it easier for those wishing to test.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agofloppy: Minor cleanup - reduce some cut-and-paste code.
Kevin O'Connor [Mon, 26 Nov 2012 16:14:00 +0000 (11:14 -0500)]
floppy: Minor cleanup - reduce some cut-and-paste code.

The diskette_param_table is a copy of diskette_param_table2 - just
memcpy it at runtime instead of duplicating the configuration in the
code.

Also, setup the floppy interrupt vector in the floppy.c code instead
of the post.c code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agopciinit: Align start of PCI memory on i440 chipset.
Kevin O'Connor [Mon, 26 Nov 2012 16:05:32 +0000 (11:05 -0500)]
pciinit: Align start of PCI memory on i440 chipset.

Align the start of PCI memory space to simplify mtrr ranges.  This is
configured per chipset so future chipsets can configure different
start addresses.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoCollapse PCI device tables in pci_bios_init_devices().
Kevin O'Connor [Wed, 21 Nov 2012 01:29:26 +0000 (20:29 -0500)]
Collapse PCI device tables in pci_bios_init_devices().

Use just one "struct pci_device_id" device table list in the
pci_bios_init_devices initialization code instead of three separate
tables.  There isn't any compelling reason to use multiple tables.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoesp: enable busmaster
Paolo Bonzini [Tue, 20 Nov 2012 17:33:41 +0000 (18:33 +0100)]
esp: enable busmaster

The HBA does DMA, thus we must enable the busmaster bit,
otherwise dma access will fail with recent qemu versions.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agolsi: enable busmaster
Gerd Hoffmann [Tue, 20 Nov 2012 11:02:52 +0000 (12:02 +0100)]
lsi: enable busmaster

The HBA does DMA, thus we must enable the busmaster bit,
otherwise dma access will fail with recent qemu versions.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agomegasas: Add boot support for LSI MegaRAID SAS
Hannes Reinecke [Tue, 13 Nov 2012 14:03:31 +0000 (15:03 +0100)]
megasas: Add boot support for LSI MegaRAID SAS

This patch adds boot support for LSI MegaRAID SAS controllers.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Cc: Kevin O'Connor <kevin@koconnor.net>
Cc: Gerd Hofmann <kraxel@redhat.com>
Cc: Alex Graf <agraf@suse.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>
12 years agoDSDT: Fix HPET _CRS Method
Gabriel L. Somlo [Thu, 8 Nov 2012 17:35:17 +0000 (12:35 -0500)]
DSDT: Fix HPET _CRS Method

Updated _CRS method for HPET, bringing it in line with the way it is
presented on recent hardware (e.g. Dell Latitude D630, MacPro5,1, etc);
Allows it to be detected and utilized from Mac OS X; Also tested OK on
Linux (F16 64-bit install DVD) and Windows (Win7 64-bit install DVD).

Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
12 years agoconfig: add coreboot / qemu choice
Gerd Hoffmann [Mon, 29 Oct 2012 10:28:32 +0000 (11:28 +0100)]
config: add coreboot / qemu choice

Makes the config less confusing as we don't have to
use "!COREBOOT" if we wanna say "QEMU".

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoACPI: Remove unnecessary Return(One) calls from DSDT.
Kevin O'Connor [Sun, 28 Oct 2012 01:31:12 +0000 (21:31 -0400)]
ACPI: Remove unnecessary Return(One) calls from DSDT.

Recent iasl compilers warn about spurious return calls.  Remove extra
return calls from the GPE event methods.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoProvide correct dpte pointer to indicate absence of dpte
Bruce Rogers [Thu, 25 Oct 2012 19:48:16 +0000 (13:48 -0600)]
Provide correct dpte pointer to indicate absence of dpte

The Pheonix EDD v3.0 spec says that if no dpte is present,
the dpte pointer should contain ffffh:ffffh, not the 0h:0h
which is currently used. This bit me when using NetWare as
a KVM guest.

Signed-off-by: Bruce Rogers <brogers@suse.com>
12 years agogeodevga: Setup flat panel if needed
Christian Gmeiner [Mon, 1 Oct 2012 12:02:49 +0000 (14:02 +0200)]
geodevga: Setup flat panel if needed

This patch does basic setup of the flat panel and turns the
panel on.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Add defines for VP_MSR_PADSEL
Christian Gmeiner [Mon, 1 Oct 2012 12:02:48 +0000 (14:02 +0200)]
geodevga: Add defines for VP_MSR_PADSEL

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Setup output based on .config
Christian Gmeiner [Mon, 1 Oct 2012 12:02:46 +0000 (14:02 +0200)]
geodevga: Setup output based on .config

The geode hardware can be configured to use different
outputs. This patch adds support this feature based on
the current .config

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Add configuration option for output modes
Christian Gmeiner [Mon, 1 Oct 2012 12:02:47 +0000 (14:02 +0200)]
geodevga: Add configuration option for output modes

Geode GX2 and LX are supporting Flat Panels. Add new
configuration options to support different output modes.
You can choose between:
* CRT
* Flat Panel
* CRT and Flat Panel

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Add VP_MSR_CONFIG defines
Christian Gmeiner [Mon, 1 Oct 2012 12:02:45 +0000 (14:02 +0200)]
geodevga: Add VP_MSR_CONFIG defines

This patch adds all needed defines to setup the wanted
output mode.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Add some basic flat panel defines
Christian Gmeiner [Mon, 1 Oct 2012 12:02:44 +0000 (14:02 +0200)]
geodevga: Add some basic flat panel defines

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Add functions to work with fp register
Christian Gmeiner [Mon, 1 Oct 2012 12:02:43 +0000 (14:02 +0200)]
geodevga: Add functions to work with fp register

The Flat Panel Display Controller belongs to the Video
Processor unit but its register are starting at offset
0x400. Provide functions to work with fp register.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Rename defines to better match a well defined naming schema
Christian Gmeiner [Mon, 1 Oct 2012 12:02:42 +0000 (14:02 +0200)]
geodevga: Rename defines to better match a well defined naming schema

The following nameing schema is used:
    PART_REGISTER_BIT_DESCRIPTION

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agogeodevga: Access global variables using GET_GLOBAL/SET_VGA macros.
Kevin O'Connor [Sun, 16 Sep 2012 17:24:30 +0000 (13:24 -0400)]
geodevga: Access global variables using GET_GLOBAL/SET_VGA macros.

The vgabios runs in 16bit mode so all global variables must be
accessed via macros.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoFix 'union u64_u32_u' member names.
Kevin O'Connor [Sat, 15 Sep 2012 16:17:37 +0000 (12:17 -0400)]
Fix 'union u64_u32_u' member names.

Use 'lo' to mean the low bits and 'hi' to mean the high bits of a
64bit value.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoadd acpi pmtimer support
Gerd Hoffmann [Thu, 6 Sep 2012 06:01:00 +0000 (08:01 +0200)]
add acpi pmtimer support

This patch makes seabios use the acpi pmtimer instead of tsc for
timekeeping.  The pmtimer has a fixed frequency and doesn't need
calibration, thus it doesn't suffer from calibration errors due to a
loaded host machine.

[ v4: mask port ioport read ]
[ v2: add CONFIG_PMTIMER ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoReport stdvga modes in VBE via int10 (AX = 4F00h)
Christian Gmeiner [Sat, 1 Sep 2012 15:12:55 +0000 (17:12 +0200)]
Report stdvga modes in VBE via int10 (AX = 4F00h)

As all supported graphic adapters are supporting VGA we should
list them in int10 (AX = 4F00h). Also clext.c and bochsvga.c
are haveing a function named like is_XXX_mode() which checks
if its a default VGA mode or a VESA mode. If its a normal VGA
mode stdvga_set_mode() gets called.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agovgabios: Add support for text and cga modes to vbe_104f01().
Kevin O'Connor [Tue, 4 Sep 2012 22:39:51 +0000 (18:39 -0400)]
vgabios: Add support for text and cga modes to vbe_104f01().

Attempt to handle cga and text modes in the vbe get_mode_info call.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agovgabios: Check for relocatable windows before advertising support for it.
Kevin O'Connor [Tue, 4 Sep 2012 17:16:36 +0000 (13:16 -0400)]
vgabios: Check for relocatable windows before advertising support for it.

Use the VBE_win_granularity field to determine if the memory windows
are relocatable.  (Bochs and Cirrus vga support relocatable windows
while the standard vga controller does not.)

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agovgabios: Ignore mode flags in vbe get_mode_info call.
Kevin O'Connor [Mon, 3 Sep 2012 17:54:28 +0000 (13:54 -0400)]
vgabios: Ignore mode flags in vbe get_mode_info call.

Ignore any mode flags a caller may have set on the vbe get_mode_info
call.  The spec doesn't require ignoring of flags, but it appears at
least some real-world vgabios vbe implementations do this.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agobootsplash: Don't pass mode flags to VBE get_mode_info call.
Kevin O'Connor [Mon, 3 Sep 2012 17:52:50 +0000 (13:52 -0400)]
bootsplash: Don't pass mode flags to VBE get_mode_info call.

The spec doesn't specify one can pass flags into the get_mode_info
call, so don't do that.

Also, use the VBE_MODE_LINEAR_FRAME_BUFFER name where appropriate.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoGeode vga: Use standard format read/write_mask register functions.
Kevin O'Connor [Mon, 3 Sep 2012 16:32:01 +0000 (12:32 -0400)]
Geode vga: Use standard format read/write_mask register functions.

Rework the Geode code to use the same style register accessors as the
standard vga code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoAdd helper functions to access DC and VP register
Christian Gmeiner [Sat, 1 Sep 2012 15:13:04 +0000 (17:13 +0200)]
Add helper functions to access DC and VP register

This change introduces some helper functions, which are making
the code more readable and easier to debug.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoChange return values for vp_setup() and dc_setup()
Christian Gmeiner [Sat, 1 Sep 2012 15:13:03 +0000 (17:13 +0200)]
Change return values for vp_setup() and dc_setup()

There is no reason to have a return code for vp_setup()
and dc_setup(). So get rid of them.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoAdd global struct geode
Christian Gmeiner [Sat, 1 Sep 2012 15:13:02 +0000 (17:13 +0200)]
Add global struct geode

This struct is used to store some PCI BAR values, which are used
during hw init.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoUpdate VBE variables
Christian Gmeiner [Sat, 1 Sep 2012 15:13:01 +0000 (17:13 +0200)]
Update VBE variables

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoAdd framebuffer size detection
Christian Gmeiner [Sat, 1 Sep 2012 15:12:56 +0000 (17:12 +0200)]
Add framebuffer size detection

It is possible to read out the framebuffer size via msr. The size
information is needed for VESA later.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoRemove Extened CRTC Register functions
Christian Gmeiner [Sat, 1 Sep 2012 15:12:54 +0000 (17:12 +0200)]
Remove Extened CRTC Register functions

As the access the DC registers via memory, we dont need to
work with the extended CRTC register to setup the DC-VGA-mapping.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoRemove all dc_ functions as they are not needed anymore
Christian Gmeiner [Sat, 1 Sep 2012 15:12:53 +0000 (17:12 +0200)]
Remove all dc_ functions as they are not needed anymore

As we access teh DC registers via memory we do not need all
the DC-VGA-mapping functions anymore.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoAccess DC registers via geode_mem[Read|Write]
Christian Gmeiner [Sat, 1 Sep 2012 15:12:52 +0000 (17:12 +0200)]
Access DC registers via geode_mem[Read|Write]

There is no reason to access the DC registers via VGA
memory mapping if we could the access via memory.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
12 years agoacpi: LNKS is not needed
Paolo Bonzini [Tue, 7 Aug 2012 13:01:29 +0000 (15:01 +0200)]
acpi: LNKS is not needed

LNKS is a bit strange in that it reuses the same PIIX register as LNKA,
but has a different interrupt.  This means that the _CRS it returns will
not be one of the possible resources from _PRS.  This shows up in the
Linux boot logs as

   ACPI: PCI Interrupt Link [LNKS] (IRQs 9) *0

Instead of that, we can simply use a hardwired interrupt index.

Cc: Gleb Natapov <gnatapov@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoacpi: build PCI hotplug devices from a single template
Paolo Bonzini [Thu, 2 Aug 2012 13:07:26 +0000 (15:07 +0200)]
acpi: build PCI hotplug devices from a single template

More than 1kb of data is taken by the 32 copies of the PCI hotplug SSDT
methods.  We can build them from a single template like we do for CPUs
(wrapped in a Scope(\_SB.PCI0) block).

Three items differ for each slot: the device name, bits 16-23 of _ADR,
the _SUN value.  On top of this we have to rename the eject method for
non-removable slots, like we already do in build_pcihp.

There is a small change in the ASL: instead of including the number of
the slot in the implementation of _EJ0, we just call _SUN.  This is also
similar to what we do for CPU hotplug.

Once we do this, there is no need to keep a separate SSDT for PCI hotplug.
Everything can reside in the same table.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoacpi: build PCNT dynamically
Paolo Bonzini [Thu, 2 Aug 2012 13:07:25 +0000 (15:07 +0200)]
acpi: build PCNT dynamically

We already build the CPU notification method in src/acpi.c, and we can
reuse most of the code for PCI hotplug.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoacpi_extract: detect DeviceOp
Paolo Bonzini [Thu, 2 Aug 2012 13:07:24 +0000 (15:07 +0200)]
acpi_extract: detect DeviceOp

The DeviceOp AML opcode has more or less the same structure as ProcessorOp,
except that there is no processor ID.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoacpi_extract: fix off-by-one
Paolo Bonzini [Thu, 2 Aug 2012 13:07:23 +0000 (15:07 +0200)]
acpi_extract: fix off-by-one

Single-byte package length values do use bits 4-5, and this will
happen with the PCI hotplug devices.  pkglenbytes has not yet been
decremented, so multi-byte values are detected with pkglenbytes > 1.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoacpi: rename Processor SSDT constants
Paolo Bonzini [Thu, 2 Aug 2012 13:07:22 +0000 (15:07 +0200)]
acpi: rename Processor SSDT constants

A simple rename, to prepare for the later introduction of similar constants
for PCI slots.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoacpi: move s3/s4/s5 to build_ssdt
Paolo Bonzini [Thu, 2 Aug 2012 13:07:21 +0000 (15:07 +0200)]
acpi: move s3/s4/s5 to build_ssdt

Move the _S3/_S4/_S5 packages out of ssdt-pcihp.dsl and into a separate
file.  Correspondingly, move the patching from build_pcihp to build_ssdt.
Place this part at the beginning of the SSDT.  Offset computation is a
bit simpler, and anyway the packages do not need to be inside Scope(_SB).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoMakefile: delete output on error
Michael S. Tsirkin [Thu, 30 Aug 2012 09:59:31 +0000 (12:59 +0300)]
Makefile: delete output on error

I had a disk full condition and a partial hex file
got generated. Following make failed trying to use it.
We can make build a bit more robust by instructing
make to remove output files on error.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
12 years agoapic_id_is_present: fix undefined behavior
Eduardo Habkost [Fri, 31 Aug 2012 18:11:16 +0000 (15:11 -0300)]
apic_id_is_present: fix undefined behavior

This patch addresses some feedback sent by Laszlo[1] on the
non-contiguous APIC ID patches I have sent recently.

 - (1 << 31) is undefined for 32-bit signed ints
 - Use !! on the returned value, so the function return value
   can be an int without a unsigned -> signed conversion

[] http://article.gmane.org/gmane.comp.emulators.qemu/162163

Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
12 years agoUse cpu_to_be32() (and related) instead of htonl (and related).
Kevin O'Connor [Wed, 15 Aug 2012 01:20:10 +0000 (21:20 -0400)]
Use cpu_to_be32() (and related) instead of htonl (and related).

Unify the syntax for byte swab calls.

This also fixes a bug in coreboot due to the lack of a be64_to_cpu()
call.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoMake iasl option check work with older versions of iasl. rel-1.7.1
Kevin O'Connor [Thu, 30 Aug 2012 01:27:37 +0000 (21:27 -0400)]
Make iasl option check work with older versions of iasl.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoscsi: add AMD PCscsi driver
Paolo Bonzini [Mon, 6 Aug 2012 11:15:06 +0000 (13:15 +0200)]
scsi: add AMD PCscsi driver

This is a driver for an AMD PCscsi (am53c974) SCSI card.  It can be
used together with DOS or old operating systems such as Windows NT 3.1,
Windows 3.1 or Windows 98.

Cc: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoscsi: fix detection of QEMU
Paolo Bonzini [Thu, 2 Aug 2012 16:22:44 +0000 (18:22 +0200)]
scsi: fix detection of QEMU

The vendor string is null-terminated by the time scsi_init_drive looks
at it, so it is incorrect to pad the memcmp argument with spaces.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agolsi: do not reset on error
Paolo Bonzini [Thu, 2 Aug 2012 16:22:43 +0000 (18:22 +0200)]
lsi: do not reset on error

Resetting on any error (including for example a disconnected device)
will cause a unit attention condition on all devices.  So if we cannot
probe for example target 6, the first read on target 0 will fail.

Reported-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 years agoacpi: fix build with new iasl compiler
Michael S. Tsirkin [Thu, 2 Aug 2012 18:57:20 +0000 (21:57 +0300)]
acpi: fix build with new iasl compiler

iasl versions starting with 20120320
(git commit 7fd09d993580e22a096a1b21d2a356d89e702153) enable
a preprocessor by default, which currently strips out
comments from the input. Happily the next release,
20120420, includes an option to disable the preprocessor.
Test and use this option when available.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
12 years agoallow CPUs to have non-contiguous Local APIC IDs (v2)
Eduardo Habkost [Wed, 25 Jul 2012 18:45:30 +0000 (15:45 -0300)]
allow CPUs to have non-contiguous Local APIC IDs (v2)

Extract Local APIC IDs directly from the CPUs, and instead of check for
"i < CountCPUs", check if the APIC ID was present on boot, when building
ACPI tables and the MP-Table.

This keeps ACPI Processor ID == APIC ID, but allows the
hardware<->SeaBIOS interface be completely APIC-ID based and not depend
on any other kind of "CPU identifier". This way, SeaBIOS may change the
way ACPI Processor IDs are chosen in the future.

As currently SeaBIOS supports only xAPIC and not x2APIC, the list of
present-on-boot APIC IDs is a 256-bit bitmap. If one day SeaBIOS starts
to support x2APIC, the data structure used to enumerate the APIC IDs
will have to be changed (but this is an internal implementation detail,
not visible to the OS or on any hardware<=>SeaBIOS interface).

For current QEMU versions (that always make the APIC IDs contiguous),
the OS-visible behavior and resulting ACPI tables should be exactly the
same. This patch will simply allow QEMU to start setting non-contiguous
APIC IDs (that is a requirement for some sockets/cores/threads topology
settings).

Changes v1 -> v2:
 - Use size suffixes on all asm instructions on smp.c
 - New patch description

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
12 years agoreport real I/O APIC ID (0) on MADT and MP-table (v3)
Eduardo Habkost [Wed, 25 Jul 2012 18:45:29 +0000 (15:45 -0300)]
report real I/O APIC ID (0) on MADT and MP-table (v3)

When resetting an I/O APIC, its ID is set to 0, and SeaBIOS doesn't
change it, so report it correctly on the ACPI MADT table and MP-table.

Some hardware may require the BIOS to initialize I/O APIC ID to an
unique value, but SeaBIOS doesn't do that. This patch at least makes the
tables reflect reality.

Changes v2 -> v3:
 - Fix MP-table too, not just ACPI MADT table

Changes v1 -> v2:
 - Cosmetic: whitespace change (removed extra newline)
 - New patch description

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
12 years agoEHCI: increase CONNECT detection delay
Kevin O'Connor [Thu, 2 Aug 2012 00:40:03 +0000 (20:40 -0400)]
EHCI: increase CONNECT detection delay

Increase delay to fix detection issues found.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Signed-off-by: Sven Schnelle <svens@stackframe.org>
12 years agoIncrease debug level of Xen detection code.
Kevin O'Connor [Sat, 21 Jul 2012 17:41:16 +0000 (13:41 -0400)]
Increase debug level of Xen detection code.

Now that Xen is enabled by default the detection code will frequently
not find a valid Xen hypervisor signature, so don't spam the debug
logs.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoUnify ATAPI command processing.
Kevin O'Connor [Sat, 21 Jul 2012 16:01:12 +0000 (12:01 -0400)]
Unify ATAPI command processing.

Unify the ATA and AHCI ATAPI command processing into one function in
block.c (process_atapi_op).

This patch disables the existing handlers for ATA ATAPI isready and
reset.  However, it's unlikely that support is needed and it does not
appear that the implemented support is fully correct.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agolsi53c895a boot support
Gerd Hoffmann [Fri, 20 Jul 2012 08:59:25 +0000 (10:59 +0200)]
lsi53c895a boot support

This patch adds support for the lsi53c895a scsi host adapter,
allowing seabios to boot from scsi disks and cdroms connected
to the lsi scsi hba emulated by qemu.

This driver was written by looking at the expectations of qemu's
lsi emulation.  I have no idea idea how close this is to work on
real hardware, and I somehow doubt anyone cares given the age of
physical lsi scsi cards.  It depends on !COREBOOT for that reason.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agousb attached scsi boot support
Gerd Hoffmann [Fri, 20 Jul 2012 08:59:24 +0000 (10:59 +0200)]
usb attached scsi boot support

This patch adds support for booting from UAS (usb
attached scsi) devices.

For now only usb 2.0 support is there.  On usb 3.0 the
UAS protocol uses streams, so changes will be required
to make usb 3.0 devices fly once we have a xhci host
controller driver.

So far the driver has been tested on qemu-emulated
virtual hardware only.  In theory should just work on
bare metal too.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agomove usb mass storage defines to usb.h
Gerd Hoffmann [Fri, 20 Jul 2012 08:59:23 +0000 (10:59 +0200)]
move usb mass storage defines to usb.h

With the arrival of usb attached scsi support they
will be needed outside usb-msd.c too.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
12 years agoMinor - clear unused f-segment data at start of f-segment.
Kevin O'Connor [Sat, 21 Jul 2012 15:56:09 +0000 (11:56 -0400)]
Minor - clear unused f-segment data at start of f-segment.

Zero the space - some old applications can use the space for UMB if it
is zeroed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoFix merge of a4e2b9adbba95c2d783761e84444bbb3c8d6107b.
Kevin O'Connor [Fri, 20 Jul 2012 06:42:08 +0000 (02:42 -0400)]
Fix merge of a4e2b9adbba95c2d783761e84444bbb3c8d6107b.

The manual merge of a4e2b9ad that I did resulted in previous commits
(c7be281b and 20fcf9b) being undone.  Fix that up.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
12 years agoenable USE_PLATFORM_CLOCK bit in FADT flags
Marcelo Tosatti [Tue, 17 Jul 2012 17:18:00 +0000 (14:18 -0300)]
enable USE_PLATFORM_CLOCK bit in FADT flags

Enable bit 15 (USE_PLATFORM_CLOCK) of FADT flags field so that
older Windows guests do not make use of the TSC for timestamping.

From the ACPI manual:

"A value of one indicates that OSPM should use a platform provided timer
to drive any monotonically non-decreasing counters, such as OSPM
performance counter services. Which particular platform timer will be
used is OSPM specific, however, it is recommended that the timer used is
based on the following algorithm: If the HPET is exposed to OSPM, OSPM
should use the HPET. Otherwise, OSPM will use the ACPI power management
timer. A value of one indicates that the platform is known to have a
correctly implemented ACPI power management timer."

Problems using the TSC include:

1) Migration to a host with different frequency.
2) Unsynchronized TSCs in SMP hosts (KVM does not guarantee
synchronization).
3) Processors which do not increment TSC on low power states.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
12 years agoSMM: Disable use of SMM when running under Xen
Ian Campbell [Thu, 28 Jun 2012 10:08:33 +0000 (11:08 +0100)]
SMM: Disable use of SMM when running under Xen

Xen does not support SMM mode.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
12 years agoXen: Autodetect debug I/O port at runtime instead of via Kconfig
Ian Campbell [Thu, 28 Jun 2012 10:08:32 +0000 (11:08 +0100)]
Xen: Autodetect debug I/O port at runtime instead of via Kconfig

This allows a common image which supports Xen to still print debug

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
12 years agoenable Xen support by default.
Ian Campbell [Thu, 28 Jun 2012 10:08:31 +0000 (11:08 +0100)]
enable Xen support by default.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>