Commit Graph

324 Commits

Author SHA1 Message Date
andrewfish 96cc1800e7 Fix xcode tool chain assembly issue.
Contributed-under: TianoCore Contribution Agrement 1.0
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
signed-off-by: Andrew Fish <afish@apple.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14078 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-23 00:21:57 +00:00
jljusten 1bbb88c92e OvmfPkg: Fix Xcode assembly issue
The Xcode assembler is much pickier than GCC. Also the 64-bit
linker is not a fan of relocations so it is better to us IP
relative code, but at least it removes a relocation entry.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Andrew Fish <afish@apple.com>
[jordan.l.justen@intel.com: use .byte for retfq rather than lret]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14055 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-16 06:50:35 +00:00
jljusten 429c05fa2b OvmfPkg/build.sh: Fix compilation error on OS X
This patch sets the default TARGET_TOOLS/PROCESSOR on Darwin/Linux platforms.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Pike R. Alpha <pikeralpha@yahoo.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14054 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-16 06:50:21 +00:00
jljusten a205121e3c OvmfPkg: LoadLinuxLib: Use kernel's EFI entry point where available
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14053 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-16 06:50:08 +00:00
jljusten c61a56f208 OvmfPkg: LoadLinuxLib: Zero kernel parameters instead of passing garbage
We're supposed to zero everything in the kernel bootparams that we don't
explicitly initialise, other than the setup_header from 0x1f1 onwards
for a precisely defined length, which is copied from the bzImage.

We're *not* supposed to just pass the garbage that we happened to find
in the bzImage file surrounding the setup_header.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14052 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-16 06:49:45 +00:00
jljusten 38851e781d OvmfPkg: LoadLinuxLib: Fix check for relocatable kernel
Boot protocol 2.05 just means that the relocatable_kernel field is present
in the header. We should actually check that it's *set*.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14051 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-16 06:49:27 +00:00
jljusten 61a114ba46 OvmfPkg: LoadLinuxLib: Fix kernel entry for 64-bit OVMF
We currently just jump to offset 0x200 in the kernel image, in 64-bit
mode. This is completely broken. If it's a 32-bit kernel, we'll be
jumping into the compressed data payload.

If it's a 64-bit kernel, it'll work... but the 0x200 offset is
explicitly marked as 'may change in the future', has already changed
from 0x100 to 0x200 in the past with no fanfare, and bootloaders are
instructed that they should look at the ELF header to find the offset.
So although it does actually work today, it's still broken in the
"someone needs to whipped for doing it this way" sense of the word.

In fact, the same bug exists in other bootloaders so the 0x200 offset
probably *is* now set in stone. But still it's only valid to use it if
we *know* it's a 64-bit kernel. And we don't. There *is* no ELF header
that we can look at when we're booting a bzImage, and we can't rely on
it having a PE/COFF header either.

The 32-bit entry point is always guaranteed to work, and we need to
support it anyway. So let's just *always* use it, in 32-bit mode, and
then we don't have to make up some horrible heuristics for detecting
32-bit vs. 64-bit kernels.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14045 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-14 03:10:57 +00:00
jljusten 14430c55c8 OvmfPkg: create \_S3 and \_S4 packages dynamically
Move these states from the DSDT to the SSDT. Override the default
configuration if the host has the following qemu commit:

    commit 459ae5ea5ad682c2b3220beb244d4102c1a4e332
    Author: Gleb Natapov <gleb@redhat.com>
    Date:   Mon Jun 4 14:31:55 2012 +0300

        Add PIIX4 properties to control PM system states.

        This patch adds two things. First it allows QEMU to distinguish
        between regular powerdown and S4 powerdown. Later separate QMP
        notification will be added for S4 powerdown. Second it allows
        S3/S4 states to be disabled from QEMU command line. Some guests
        known to be broken with regards to power management, but allow to
        use it anyway. Using new properties management will be able to
        disable S3/S4 for such guests.

        Supported system state are passed to a firmware using new fw_cfg
        file. The file contains  6 byte array. Each byte represents one
        system state. If byte at offset X has its MSB set it means that
        system state X is supported and to enter it guest should use the
        value from lowest 3 bits.

        Signed-off-by: Gleb Natapov <gleb@redhat.com>
        Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14003 6f19259b-4bc3-4df7-8a09-765794883524
2012-12-17 02:13:14 +00:00
jljusten fb8a1b44a8 OvmfPkg: report S3 state in DSDT
The ACPI 5.0 specification says:

  7.3.4.4 System \_S3 State

  [...]
  * Dynamic RAM context is maintained.
  [...]

This corresponds to the following in the PIIX4 spec:

  PMCNTRL -- POWER MANAGEMENT CONTROL REGISTER (IO)
  [...]
  Bits[12:10]  Suspend Type
  [...]
          001  STR (Suspend To RAM)

Also, this (ie. decimal 1) is the suspend type value that qemu recognizes
as an S3 (suspend to ram) request.

Only the value for PM1a_CNT.SLP_TYP is set (PM1b_CNT.SLP_TYP is left at
zero), since in OVMF we don't report the optional PM1b_EVT_BLK register
block to OSPM. (PM1b_EVT_BLK is defined as 0 in "Platform.h"; see "4.8.1.1
PM1 Event Registers" in the ACPI 5.0 specification.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14002 6f19259b-4bc3-4df7-8a09-765794883524
2012-12-17 02:13:00 +00:00
jljusten 50399ec18f OvmfPkg: fix PIIX4 SUS_TYP value in \_S4 package
The ACPI 5.0 specification says:

  7.3.4.5 System \_S4 State

  [...]
  * DRAM context is not maintained.
  [...]

This corresponds to the following in the PIIX4 spec:

  PMCNTRL -- POWER MANAGEMENT CONTROL REGISTER (IO)
  [...]
  Bits[12:10]  Suspend Type
  [...]
          010  POSCL (Powered On Suspend, Context Lost)

Also, this (ie. decimal 2) is the default suspend type value that qemu
recognizes as an S4 (suspend to disk) request.

Only the value for PM1a_CNT.SLP_TYP is corrected (PM1b_CNT.SLP_TYP is left
at zero), since in OVMF we don't report the optional PM1b_EVT_BLK register
block to OSPM. (PM1b_EVT_BLK is defined as 0 in "Platform.h"; see "4.8.1.1
PM1 Event Registers" in the ACPI 5.0 specification.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14001 6f19259b-4bc3-4df7-8a09-765794883524
2012-12-17 02:12:44 +00:00
jljusten 4ee7f57c0e OvmfPkg: add comments to existing \_Sx packages in DSDT
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14000 6f19259b-4bc3-4df7-8a09-765794883524
2012-12-17 02:12:30 +00:00
jljusten 73f4a1c018 OvmfPkg/README: Update required QEMU & OS boot status
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13999 6f19259b-4bc3-4df7-8a09-765794883524
2012-12-17 02:12:11 +00:00
jljusten cdb4f5dcb1 QemuVideo: stdvga mmio bar support
The qemu standard vga has a MMIO bar in qemu 1.3+.
Use it if available.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13969 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-27 19:11:45 +00:00
jljusten 54f9b9accb QemuVideo: Add support for the bochs dispi interface
Add code to handle qemu-emulated vga cards supporting the bochs dispi
interface (standard vga, qxl vga).  This requires qemu 1.3+ which
provides the bochs dispi interface data register on a aligned io
address.  See
http://git.qemu.org/?p=qemu.git;a=commitdiff;h=df9ffb726ff13f850b8829be1bc85ed621b903ac

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13968 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-27 19:11:29 +00:00
jljusten 212aac55fd QemuVideo: prepare to support more hardware
Move to a table-driven hardware detection.  Add a table with PCI IDs,
card name and variant enum.  Use the table for hardware detection and
initialization.  Rename Cirrus-specific data and code to carry "cirrus"
in the name.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13967 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-27 19:11:11 +00:00
jljusten 52fba28994 OvmfPkg: Add support for qemu's -kernel parameter
If QEMU's -kernel parameter was used, then download the
kernel from the FwCfg interface, and launch it.  (See -kernel,
-initrd, -append) The application uses the LoadLinuxLib to boot
the kernel image.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13923 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-02 18:28:17 +00:00
jljusten 3c0a051fa2 OvmfPkg: Add LoadLinuxLib library implementation
This code is based on efilinux's bzimage support.
git://git.kernel.org/pub/scm/boot/efilinux/efilinux.git

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Matt Fleming <matt.fleming@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13922 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-02 18:27:55 +00:00
jljusten f6c6c02028 OvmfPkg: Add LoadLinuxLib library interface
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13921 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-02 18:26:48 +00:00
jljusten 80feb819d3 OvmfPkg: Add Linux bzimage include file
This file is from the efilinux project where it resides
under the path loaders/bzimage/bzimage.h.
git://git.kernel.org/pub/scm/boot/efilinux/efilinux.git

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Matt Fleming <matt.fleming@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13920 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-02 18:26:30 +00:00
jljusten 151304d96d OvmfPkg VirtioScsiDxe: Fix build with VS2010
Structures should not be directly assigned in EDK II
code, since this leads to different behaviours on various
compilers.

Instead, use ZeroMem to zero out the structures.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13878 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-23 22:16:14 +00:00
jljusten d2bf9913a6 OvmfPkg: QemuBootOrder: recognize virtio-scsi devices
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13868 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-18 17:08:01 +00:00
jljusten 37078a63b1 OvmfPkg: introduce virtio-scsi driver
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
[jordan.l.justen@intel.com: fix build for VS2012]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13867 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-18 17:07:48 +00:00
jljusten c8c2e4d613 OvmfPkg: VirtioBlkDriverBindingStop: fix incorrect use of UEFI driver model
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13866 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-18 17:07:24 +00:00
jljusten 389b5518bf OvmfPkg/VirtioBlkDxe: Fix VS2012 IA32 build
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13847 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-14 21:17:33 +00:00
jljusten 2f03f796a4 OvmfPkg: VirtioBlkDxe: fix div & mod of 64-bit dividends on IA32/gcc-4.4
OvmfPkg/VirtioBlkDxe/VirtioBlk.c:667: undefined reference to `__umoddi3'
OvmfPkg/VirtioBlkDxe/VirtioBlk.c:750: undefined reference to `__udivdi3'

These operations would come from libgcc in the IA32 build, but OVMF does not
link against libgcc.

Regression-tested the X64 build with Fedora 18 Alpha XFCE and Windows 8
Consumer Preview guests.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13846 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-14 21:17:20 +00:00
jljusten 9de0355b1a OvmfPkg: MSVC build fixes for VirtioLib and VirtioBlkDxe
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Mike Lee <leemiketw@gmail.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13845 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:54:52 +00:00
jljusten e371e7e545 OvmfPkg: librarize reusable bits from VirtioBlkDxe's SynchronousRequest()
new VirtioLib functions:
- VirtioPrepare(): prepare for appending descriptors
- VirtioFlush(): submit descriptor chain and await host answer

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13844 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:54:35 +00:00
jljusten 7fcacd6c92 OvmfPkg: rename AppendDesc to VirtioAppendDesc
AppendDesc() should have a prefix implying its containing library,
VirtioLib. Update its sole client VirtioBlkDxe.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13843 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:54:17 +00:00
jljusten 263559b872 OvmfPkg: extract VirtioLib from VirtioBlkDxe
Introduce a new library called VirtioLib, for now only collecting the
following reusable functions with as little changes as possible:

- VirtioWrite()
- VirtioRead()
- VirtioRingInit()
- VirtioRingUninit()
- AppendDesc()

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13842 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:53:58 +00:00
jljusten 6b28fe9ee8 OvmfPkg: Include/IndustryStandard: extract VirtioBlk.h from Virtio.h
Separate virtio-blk related macro and type definitions from generic virtio
related ones. Adapt the virtio-blk driver since it needs the latter too.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13841 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:53:36 +00:00
jljusten a9624f945e OvmfPkg: rename OFFSET_OF_VHDR() / SIZE_OF_VHDR() to *_OF_VBLK()
since they are in fact virtio-blk specific.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13840 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:53:20 +00:00
jljusten 55c3443a4f OvmfPkg: regroup virtio config fields into generic & specific structs
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13839 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:53:06 +00:00
jljusten 2c3239f305 OvmfPkg: IndustryStandard/Virtio.h: use OFFSET_OF in OFFSET_OF_VHDR
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13838 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:52:50 +00:00
jljusten d128191620 OvmfPkg: add inclusion guards in Include/IndustryStandard/Virtio.h
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13837 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:52:37 +00:00
jljusten 045b46e92d OvmfPkg: move VirtioBlkDxe/Virtio.h to Include/IndustryStandard/Virtio.h
This commit consists of:
- a verbatim move ("similarity index 100%" in git parlance),
- an updated #include directive in VirtioBlkDxe/VirtioBlk.h,
- and an OvmfPkg.dec package entry in VirtioBlkDxe/VirtioBlk.inf, so that
  the new include directory is searched.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13836 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:52:24 +00:00
jljusten 936e3a5dfd OvmfPkg: add inclusion guards to VirtioBlkDxe/VirtioBlk.h
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13835 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-12 18:52:05 +00:00
lzeng14 ce68d3bc68 Add missing braces around initializer.
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Qian Ouyang <qian.ouyang@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13817 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-11 02:15:23 +00:00
jljusten e06a4cd134 OvmfPkg: QemuBootOrder: recognize virtio-blk OFW device paths
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13801 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-08 07:33:37 +00:00
jljusten ec01afdbbf OvmfPkg: QemuBootOrder: lower the required number of OFW nodes to 2
2 nodes in an OpenFirmware device path are sufficient for the generic
check at the beginning of TranslateOfwNodes(). The driver specific
branches check for the necessary nodes individually.

The number of nodes saved for examination is unchanged.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13800 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-08 07:33:25 +00:00
jljusten cdde6ddf53 OvmfPkg: QemuBootOrder: whitespace fix
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13799 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-08 07:33:12 +00:00
jljusten fd51d75991 OvmfPkg: introduce virtio-blk driver
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13798 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-08 07:32:59 +00:00
mdkinney d3a24ff551 When SOURCE_DEBUG_ENABLE is set, a TimerLib is linked into the SEC Phase to support the Debug Agent and the TimerLib is mapped into read-only ROM/FLASH.
The TimerLib in the OvmfPkg uses a global variable called mPmba and depends on that global being updated.  This works for modules loaded into memory, but not  XIP modules in ROM/FLASH.

This patch removes the mPmba global variable and instead reads the PIIX4 Power Management Base Address from PCI configuration space when it is needed.  This patch also simplifies the initialization logic in the constructor and introduces #defines to eliminate hard coded values in the function implementations.  According to the PIIX4 documentation, the IO Space enable bit in the PCI Command Register does not have to be set for the Power Management Base Address to be decoded, so that one op has been removed from the constructor.

I have tested this patch with QEMU and verified that the UDK Debugger us functional when SOURCE_DEBUG_ENABLE is set.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

I also tested it with RHEL-6.3 guest boot/shutdown, Fedora 18 Alpha XFCE
guest boot/shutdown, and Windows 8 Consumer Preview guest
boot/reboot/shutdown. (RHEL-6.3 host.) I didn't notice any adverse effects.

Tested-by: Laszlo Ersek <lersek@redhat.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13783 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-04 20:58:21 +00:00
mdkinney eaeb45076e Here is a patch that by default keeps the current 1MB FD sizes. If FD_SIZE_2MB is defined, then 2MB FD sizes will be used.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Tested-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13782 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-04 15:41:15 +00:00
mdkinney bbcafc442b The exception table information in X64 PE/COFF images is being stripped by default in the OvmfPkg.
This patch preserves this information when SOURCE_DEBUG_ENABLE is set.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Laszlo Ersek

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13780 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-03 21:00:26 +00:00
mdkinney dccf767884 VS2005 and DDK3790 tool chain tags require typecasts to BOOLEAN to compile.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com
Reviewed-by: Laszlo Ersek <lersek@redhat.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13779 6f19259b-4bc3-4df7-8a09-765794883524
2012-10-03 20:22:17 +00:00
jljusten 7ca126ff30 OvmfPkg: fix gPcAtChipsetPkgTokenSpaceGuid build break
In OvmfPkgIa32X64.dsc:

Paraphrasing svn rev 13350: gPcAtChipsetPkgTokenSpaceGuid is declared in
PcAtChipsetPkg.dec and used via AcpiPlatformDxe.inf, but with the latest
build tools, since this package builds multiple architectures (IA32 & X64)
and AcpiPlatformDxe is used on X64 only, it is now necessary to place the
gPcAtChipsetPkgTokenSpaceGuid PCD's in the [PcdsFixedAtBuild.X64] section.

In the two other .dsc files:

Make a similar change to keep file contents more easily comparable.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
[jordan.l.justen@intel.com: change all .dsc files to keep them diffable]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13724 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 07:19:39 +00:00
jljusten 0e20a1864f OvmfPkg: key PMBA setup in Platform PEI off of PMREGMISC/PMIOSE, not Xen
This matches the logic in AcpiTimerLib.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13723 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 07:19:28 +00:00
jljusten 931a0c74ed OvmfPkg: enable PIIX4 IO space in the PEI phase
I. There are at least three locations in OvmfPkg that manipulate the PMBA
and related PIIX4 registers.

1. MiscInitialization() [OvmfPkg/PlatformPei/Platform.c]
   module type: PEIM -- Pre-EFI Initialization Module
   (a) currently sets the PMBA only: 00.01.3 / 0x40 bits [15:6]

2. AcpiTimerLibConstructor() [OvmfPkg/Library/AcpiTimerLib/AcpiTimerLib.c]
   module type: BASE -- probably callable anywhere after PEI
   (a) sets the PMBA if needed:      00.01.3 / 0x40 bits [15:6]
   (b) sets PCICMD/IOSE if needed:   00.01.3 / 0x04 bit  0
   (c) sets PMREGMISC/PMIOSE:        00.01.3 / 0x80 bit  0

3. AcpiInitialization() [OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c]
   module type: DXE_DRIVER -- Driver eXecution Environment
   (a) sets SCI_EN, which depends on correct PMBA setting from earlier

(
  The relative order of #1 and #3 is dictated minimally by their module
  types. Said relative order can be verified with the boot log:

       27 Loading PEIM at 0x00000822320 EntryPoint=0x00000822580
          PlatformPei.efi
       28 Platform PEIM Loaded
     1259 PlatformBdsInit
     1270 PlatformBdsPolicyBehavior

  Line 28 is printed by InitializePlatform()
  [OvmfPkg/PlatformPei/Platform.c] which is the entry point of that
  module. The other two lines are printed by the corresponding functions
  in "OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c".
)

Currently #2 (AcpiTimerLibConstructor()) is called in a random spot
(whenever it gets loaded from the firmware image) and masks the
insufficient setup in #1. We shouldn't depend on that, PEI should finish
with IO space being fully accessibe. In addition, PEI should program the
same PMBA value as AcpiTimerLib.

II. The PEI change notwithstanding, AcpiTimerLib should stay defensive and
ensure proper PM configuration for itself (either by confirming or by
doing).

III. Considering a possible cleanup/unification of #2 and #3: timer
functions relying on AcpiTimerLibConstructor(),

- MicroSecondDelay()
- NanoSecondDelay()
- GetPerformanceCounter()
- GetPerformanceCounterProperties()
- GetTimeInNanoSecond()

may be called before #3 is reached (in Boot Device Selection phase), so we
should not move the initialization from #2 to #3. (Again, AcpiTimerLib
should contain its own setup.)

We should also not move #3 to an earlier phase -- SCI_EN is premature
unless we're about to boot real soon ("enable generation of SCI upon
assertion of PWRBTN_STS, LID_STS, THRM_STS, or GPI_STS bits").

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13722 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 07:19:16 +00:00
jljusten 5a624588eb OvmfPkg: use PCI_COMMAND_OFFSET/EFI_PCI_COMMAND_IO_SPACE in AcpiTimerLib
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13721 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 07:19:04 +00:00
jljusten a1eff44b5e OvmfPkg: fix the mask for accessing the PIIX4 PMBA [15:6] bitfield
The Index Register Base Address bitfield is selected by the binary mask
00000000 00000000 11111111 11000000, 0xFFC0; fix the typo.

Reported-by: Gleb Natapov <gleb@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13720 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 07:18:50 +00:00
jljusten 830067bfa2 OvmfPkg: extract the PBMA used in AcpiTimerLib into a PCD
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13719 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 07:18:35 +00:00
jljusten 67164dcd2e OvmfPkg: assorted whitespace removal
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13718 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 07:18:21 +00:00
jljusten 8d531995e2 OvmfPkg/BlockMmioToBlockIoDxe: Fix allocation size error
When allocating the BLOCK_MMIO_TO_BLOCK_IO_DEVICE structure, we were
not allocating a large enough amount. We were allocating the size of
the pointer, rather than the size of the structure.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13688 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-28 21:21:44 +00:00
jljusten 82045b2f7a OVMF X64: Allow enabling SOURCE_DEBUG_ENABLE on GCC44
Currently if SOURCE_DEBUG_ENABLE is enabled when building with
GCC44, then the SEC module will not fit into SECFV.

This change increases the size of SECFV to allow this.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13687 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-28 21:21:30 +00:00
jljusten 2cd086a675 OvmfPkg: get boot order from QEMU
Set the boot order based on configuration retrieved from QEMU.

Attempt to retrieve the "bootorder" fw_cfg file from QEMU. Translate the
OpenFirmware device paths therein to UEFI device path fragments. Match the
translated fragments against the enumerated BootOptionList, and rewrite
the BootOrder NvVar so that it corresponds to the order described in
fw_cfg.

The user is expected to configure working boot options first.

Tested via virt-manager's boot order widget.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13683 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-27 23:28:30 +00:00
jljusten 67fe5bed94 OvmfPkg/PlatformPei: Shrink memory range for PCI MMIO allocation
Including the range of [0xFC000000, 0xFD000000) for PCI MMIO
allocation created a conflict for Xen's HVM loader.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13682 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-27 23:28:15 +00:00
ydong10 db1126d218 Update file guid to avoid conflict with other file.
Signed-off-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13643 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-17 05:31:47 +00:00
jljusten 8c71ec8f11 OvmfPkg: Add custom SecureBootConfigDxe that doesn't reset
We don't force a platform reset for OVMF when PK is changed in
custom mode setup.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Lee Rosenbaum <lee.g.rosenbaum@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13635 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-15 00:03:59 +00:00
jljusten ff8dd312dd OvmfPkg/AcpiPlatformDxe: Fix Visual Studio build issues
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13634 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-15 00:03:35 +00:00
jljusten 743094a289 OvmfPkg: Support GCC47 toolchain
When GCC >= 4.7 is detected, use the GCC47 toolchain.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
[jordan.l.justen@intel.com: reword commit message for OvmfPkg]
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13630 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 17:06:49 +00:00
jljusten 498f7d8ddd OvmfPkg: generate full MADT dynamically, synchronize contents with qemu
Represent the set of possible PCI link target IRQs with
Pcd8259LegacyModeEdgeLevel. This ensures that the 8259 Interrupt
Controller code in PcAtChipsetPkg will treat them as level-triggered too.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13628 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:42:07 +00:00
jljusten 05c89c7f0c OvmfPkg: have PlatformBdsLib::PciInitialization conform to the _PRS
Also set some INTLN values, informatively.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13627 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:41:43 +00:00
jljusten a5595b1e0e OvmfPkg: PlatformBdsLib: the balloon device (RAM Memory) is in slot 5
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13626 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:41:31 +00:00
jljusten 9388fd3d3a OvmfPkg: fix interrupt routing in the DSDT, bump revision number
Rotate links over devices and pins so that they match qemu.

PIIX4 function 3 (Power Management Module) unconditionally uses the INTA
interrupt pin. SCI from this module requires IRQ9.

Keep other assignments off IRQ9. Only IRQ5, IRQ10, IRQ11 remain for PCI
devices.

Bump OEMRevision in the DSDT.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13625 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:41:18 +00:00
jljusten cc2f2c41c8 OvmfPkg: add parallel port to the DSDT
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13624 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:41:07 +00:00
jljusten ba01f3b98f OvmfPkg: fix the _UID of \_SB.PCI0.LPC.LNKD in the DSDT
LNKD is the fourth PNP0C0F.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13623 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:40:54 +00:00
jljusten b636c6e5ff OvmfPkg: add comments to the DSDT, remove trailing empty line
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13622 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:40:43 +00:00
jljusten a42bdfccc3 OvmfPkg: _DIS and _SRS methods should have permanent effect
Kill PDIS and PSRS as they are writing to copies of PIR[A-D], not PIR[A-D]
themselves. Use specialized _DIS and _SRS methods that access PIR[A-D]
directly.

(This should be solvable by passing RefOf (PIRA) etc to PDIS/PSRS, however
the RHEL-6.3 kernel AML parser seems to choke on it. The rules described
in ACPIspec5.0 Table 19-316 "Object Storing and Copying Rules" don't seem
to work:

    ACPI Error: Needed [Integer/String/Buffer], found [Reference]
    ffff88003ee02420 (20090903/exresop-422)

    ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands for
    [OpcodeName unavailable] (20090903/dswexec-445)

    ACPI Error (psparse-0537): Method parse/execution failed
    [\_SB_.PCI0.LPC_.PDIS] (Node ffff88003f638b50), AE_AML_OPERAND_TYPE

    ACPI Error (psparse-0537): Method parse/execution failed
    [\_SB_.PCI0.LPC_.LNKA._DIS] (Node ffff88003f638a10),
    AE_AML_OPERAND_TYPE

When changing the method too, so that it writes to DerefOf (Arg0) instead
of Arg0, ie. explicitly dereferencing rather than expecting the auto-deref
to work:

    ACPI Error: Needed type [Reference], found [RegionField]
    ffff88003f639858 (20090903/exresop-104)

    ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands for
    [OpcodeName unavailable] (20090903/dswexec-445)

    ACPI Error (psparse-0537): Method parse/execution failed
    [\_SB_.PCI0.LPC_.PDIS] (Node ffff88003f638b50), AE_AML_OPERAND_TYPE

    ACPI Error (psparse-0537): Method parse/execution failed
    [\_SB_.PCI0.LPC_.LNKA._DIS] (Node ffff88003f638a10),
    AE_AML_OPERAND_TYPE

In short, when passing a RefOf, it is recognized as a reference inside the
method but mistakenly refused. When trying to deref it explicitly with
DerefOf, then it's suddenly not recognized as a reference.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13621 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:40:31 +00:00
jljusten 56daf8b90e OvmfPkg: unlike PIIX4, qemu needs ActiveHigh for interrupt sharing
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13620 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:40:19 +00:00
jljusten cc16a9298b OvmfPkg: simplify _CRS, _PRS, _SRS methods in the DSDT
Use Extended Interrupt Descriptors in the _CRS, _PRS, _SRS methods of
\_SB.PCI0.LPC.LNK[A-D], eliminating bit shifting.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13619 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:40:07 +00:00
jljusten 5e57fb754a OvmfPkg: add qemu debug console port to XTRA device
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13618 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:39:55 +00:00
jljusten 6d4f320d0c OvmfPkg: fix LAPIC RangeLength in DSDT
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13617 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:39:43 +00:00
jljusten c2129fe67b OvmfPkg: sync FADT with QEMU: PM Timer is 24-bit
Clear TMR_VAL_EXT.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13616 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:39:32 +00:00
jljusten fb5147921a OvmfPkg: sync FADT with QEMU: boot architecture flags
Clear boot architecture flags: LEGACY_DEVICES, 8042 keyboard controller.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13615 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:39:20 +00:00
jljusten 5bf66edf13 OvmfPkg: sync FADT with QEMU: clear DAY_ALRM
"RTC day of the month alarm feature is not supported".

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13614 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:39:08 +00:00
jljusten cf5cfe8da8 OvmfPkg: sync FADT with QEMU: cleanup FLUSH_SIZE / FLUSH_STRIDE
Since WBINVD is supported, clear ignored FLUSH_SIZE and FLUSH_STRIDE.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13613 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:38:55 +00:00
jljusten 062c1cf744 OvmfPkg: sync FADT with QEMU: disable PM2 control block
Remove support for optional PM2 control block.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13612 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:38:39 +00:00
jljusten 7c9ff57b11 OvmfPkg: sync FADT with QEMU: correct SMI_CMD
- Qemu's PIIX emulation actually supports SMM and ACPI_ENABLE /
  ACPI_DISABLE.

- After enabling SMI_CMD (SMI_CMD_IO_PORT), further values to be written
  there must be synchronized with qemu: PSTATE_CNT, CST_CNT.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13611 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:38:16 +00:00
jljusten 2712ab4f54 OvmfPkg: cleanup whitespace in Facp.aslc / Platform.h
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13610 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-13 15:37:50 +00:00
jljusten 26af9aca92 OvmfPkg/AcpiPlatformDxe: Fix Visual Studio build issues
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13602 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-09 23:27:05 +00:00
jljusten cf98e61d1a OvmfPkg/AcpiTables/Dsdt.asl: report the PCI IO ranges set in FWDT
Based on SeaBIOS commit 2062f2ba by Gerd Hoffmann <kraxel@redhat.com>.

v3: comments on FWDT fields

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13576 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 18:18:20 +00:00
jljusten 0228e59863 OvmfPkg/AcpiTables/Dsdt.asl: strip trailing whitespace
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13575 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 18:18:11 +00:00
jljusten 57c0beb609 OvmfPkg: scan memory space map and populate FWDT (32-bit fields only)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
[jordan.l.justen@intel.com: minor cleanup]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13574 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 18:18:01 +00:00
jljusten 253a2ea73f OvmfPkg: install an SSDT with a dynamic OperationRegion called FWDT
"FWDT" ("firmware data") is allocated as EfiReservedMemoryType, with
AllocateReservedPool(). <MdePkg/Include/Library/MemoryAllocationLib.h>
doesn't seem to provide direct access to EfiACPIReclaimMemory, but at this
point the former seems sufficient.

Based on SeaBIOS commit 2062f2ba by Gerd Hoffmann <kraxel@redhat.com>.

v3:
- coding style fixes:
  - BDAT     -> FWDT
  - __packed -> #pragma pack(1)
  - BFLD     -> FIRMWARE_DATA, PCI_WINDOW
  - Bfld     -> FwData
- Ssdt.asl: changed license to 2-clause BSDL, paraphrasing Dsdt.asl

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13573 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 18:17:51 +00:00
jljusten cb678aa85e OvmfPkg: clean up memory map
Fix IO-APIC range size.
Add HPET.
Take LAPIC base from PCD and fix range size.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13572 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 18:17:37 +00:00
jljusten 53de44aade OvmfPkg/*.dsc: Move PCD locations to be similar to OvmfPkgIa32X64.dsc
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13571 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 17:54:39 +00:00
jljusten cd45566925 OvmfPkg: Move DxeServicesTableLib to common LibraryClasses
ConSplitterDxe (UEFI_DRIVER) now uses this library class.
Move the library mapping to the common LibraryClasses section.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13570 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 17:54:30 +00:00
jljusten 0b5a5022e5 OvmfPkg: Disable debugging for UNIXGCC to save space
UNIXGCC builds larger images than GCC44, and can have issues
fitting into the FD image. Therefore, when using UNIXGCC,
debug will be disabled by default.

The README file is updated with instructions for selectively
enabling debug for UNIXGCC.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13569 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-31 17:54:18 +00:00
jljusten b90aefa9e4 OvmfPkg: add support for debug console on port 0x402
This patch adds support for a debug console on the same port that is used
by SeaBIOS.  This makes it easier to debug OVMF, because it does not mix
debug and serial output on the same device.  It also makes it easier to
leave some of the debug messages on even in release builds.

To enable it, pass "-debugcon stdio -global isa-debugcon.iobase=0x402" to
QEMU.

The new mechanism is enabled by default, but a regular serial console can
be chosen by adding -D DEBUG_ON_SERIAL_PORT to the build options.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
[jordan.l.justen@intel.com: MAX_DEBUG_MESSAGE_LENGTH=>0x100, p=>Ptr]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13562 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-26 16:36:39 +00:00
jljusten 0ac9bc9be4 OvmfPkg: introduce QemuFwCfgFindFile ()
Tested with the "bootorder" fw_cfg file. Example contents (leading space
added and line terminators transcribed for readability):

  /pci@i0cf8/ide@1,1/drive@0/disk@0<LF>
  /pci@i0cf8/ide@1,1/drive@1/disk@0<LF>
  /pci@i0cf8/ethernet@3/ethernet-phy@0<NUL>

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13549 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-23 17:10:29 +00:00
jljusten b5c91f01d2 OvmfPkg/AcpiPlatformDxe: rely on built-in checksumming
Implementation in
"MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c":

  InstallAcpiTable()
    SetAcpiTable(... Checksum=TRUE ...)
      AddTableToList(... Checksum=TRUE ...)
        AcpiPlatformChecksum()

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13543 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-18 22:34:01 +00:00
jljusten 4804ef4943 OvmfPkg/AcpiPlatformDxe/Xen.c: reuse CalculateSum8
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13542 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-18 22:33:48 +00:00
jljusten 377e758c3f OvmfPkg/AcpiPlatformDxe: Add Xen ACPI tables support
This patch adds Xen ACPI tables support to OVMF.
Use EFI_ACPI_TABLE_PROTOCOL to publish all Xen ACPI tables in OVMF,
while keeping the Qemu and KVM support.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Bei Guan <gbtju85@gmail.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13541 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-18 22:33:33 +00:00
jljusten 41d3576849 OvmfPkg BDS: Remove support for loading vgabios-cirrus.bin from 0xc0000
Older QEMU versions would load vgabios-cirrus.bin at 0xc0000 in
system RAM. We would then find this ROM, and try to run it, since
it would be our QEMU Video driver.

Now, the QEMU Video driver is just merged into the main OVMF
firmware image, so this support is unused.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13522 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-10 22:43:42 +00:00
jljusten 578630802e accept "-n THREADNUMBER" in OvmfPkg build script
v1->v2:
- change from "-j JOBS"

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13521 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-10 22:43:30 +00:00
jljusten aadb1d098d embed OvmfVideo.rom into OVMF.fd
This enables qemu to use OVMF with a single -bios option. Based on
<http://lists.xen.org/archives/html/xen-devel/2012-03/msg01992.html>.

v1->v2:
- move xen-devel link from code to commit message
- cover all three FDF files

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
[jordan.l.justen@intel.com: remove vgabios-cirrus.bin from build.sh/README]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13520 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-10 22:43:19 +00:00
jljusten bab41b50f6 increase MEMFD size to enable secure boot build
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13519 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-10 22:43:05 +00:00
ydong10 917ab9077d Fix file guid conflict.
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13430 6f19259b-4bc3-4df7-8a09-765794883524
2012-06-07 03:21:17 +00:00
jljusten 75ccc2b211 OvmfPkg/AcpiPlatformDxe: Fix VS2010 build issue
Reported-by: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13425 6f19259b-4bc3-4df7-8a09-765794883524
2012-06-01 17:55:00 +00:00
jljusten 255b418415 OvmfPkg/AcpiPlatformDxe: Dynamically add Local APIC entries in MADT
Update MADT processing for QEMU to add additional Local APIC
entries to the MADT.

The MADT is still built with a single Local APIC entry.
If the AcpiPlatformDxe driver determines that more processors
are available, then additional Local APIC entries are added
to the MADT at runtime.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13387 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-30 23:15:59 +00:00