Commit Graph

664 Commits

Author SHA1 Message Date
Maurice Ma 0311566858 Use container format for key hash store
This patch converted key hash store in SBL image into container
format. In this way unified data structure can be used to
simplify code.

Signed-off-by: Maurice Ma <maurice.ma@intel.com>
2020-06-16 11:20:12 -07:00
Aiden Park 745555ede5
Fix invalid PPB check in PciGetMaxBusNumber() (#747)
A PPB PCI_IO_DEVICE instance has BIT31 in its Address field to identify
the device as PPB type. But, the bit is set after scanning the PPB.
This skips PPB type check in PciGetMaxBusNumber() and let a caller
guarantee PPB type check instead of adding a field in PCI_IO_DEVICE
for PPB device.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-06-15 13:14:17 -07:00
Ravi Rangarajan 4d9688f4c3
Update README.md
Added mailing list archive link
2020-06-12 17:13:01 -07:00
Subash Lakkimsetti 735d7b905f Update travis for private key generation
GenerateKeys.py is invoked before automated
build gets triggered.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-11 15:50:49 -07:00
Subash Lakkimsetti 26f2b48f62 Generation of dummy public keys for OS Image
Dummy keys are generated for Os Image Pub Key.
This is to get key hash component generated along
with PUBKEY_OS. User need to replace OS1_TestKey_Pub_**
with appropriate keys.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-11 15:50:49 -07:00
Subash Lakkimsetti 6328ea56c7 Enable key ids usage for private keys
This patch enables usage of key id for private keys
in slimboot repo. Key ids are configured in
BuildLoader and platform BoardConfig files.
SLIMBOOT_KEY_DIR is set to default folder outside
sblopen.

Generation of extrenal Keyhash OS key hash to be configured
for QEMU/CGL/APL with appropriate keys.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-11 15:50:49 -07:00
Aiden Park 9704eaecec Add PciGetMaxBusNumber for PCI Bridge Subordinate Bus
At PciScanBus, a PCI bridge sets PCI Bridge Subordinate Bus to 0xFF
temporary to go thru any PPB. But, a platform has some reserved buses
(ex. 0xFB-0xFF) on PCI hierarchy, and writing 0xFF regardless of
reserved bus ranges causes system hang.

Therefore, PciGetMaxBusNumber will be used for PCI Bridge Subordinate
Bus and it gets the number of buses from PCI Enum Policy to skip the
reserved buses.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-06-11 11:55:55 -07:00
Aiden Park 2045b00eef Remove wbinvd() in warm reset
The unnecessary wbinvd() is removed from the common ResetSystemLib,
and it moves to a platform specific reset routine.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-06-11 10:17:15 -07:00
Subash Lakkimsetti 00c1345f1a Increase hash store size allocated in bootloader
Maintaining individual public hashes for external key hash and
considering SHA384 sizes this value increases.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-10 16:59:13 -07:00
andreyv1978 4e57ca0e92 IPC and SideBand Interfaces - Adding IPC/Sideband
- Created BaseIpcLib
- Sideband Interface picked from
    tianocore/edk2-platforms
    branch: devel-IntelAtomProcessorE3900
    commit: 181f9e6c6ccde6e3fa62278b3a8b39cfb5844a7c
- IPC Interface picked from
    tianocore/edk2-platforms
    branch: devel-IntelAtomProcessorE3900
    commit: 181f9e6c6ccde6e3fa62278b3a8b39cfb5844a7c
- Updated Stage1BBoardInitLib.C with a test function

Signed-off-by: Andrey Vinokurtsev <avinok@gmail.com>
2020-06-09 14:23:28 -07:00
Subash Lakkimsetti c8dc8b756e Generate default test keys for RSA2048 and RSA3072
RSA keys are generated based on key ids defined.
User can append signing_keys as per their requirements.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-08 11:53:08 -07:00
Subash Lakkimsetti f764b32506 Add key ids to single sign script
This patch adds support to key ids in single sign script.
Following pre-requistes to enable usage of key ids,
- Generate required RSA keys as per GenerateKeys.py
- SLIMBOOT_KEY_DIR env variable set to key folder
- Set private key paths to respective ids in
  buildloader.py and boardconfigs files
- Update key hash store generation to use respective key ids

Enabling keyids in slimboot would be done subsequently.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-08 11:52:56 -07:00
Mutha f254d2762d Booting linux from BIOS and PDR region.
SPI driver is updated to support read linux from
BIOS and PDR region, When boot device SPI is
selected.

Signed-off-by: Mutha <naga.naveen.mutha@intel.com>
2020-06-08 11:52:40 -07:00
Ravi Rangarajan c6ddb227fa
Update README.md
Updated mailing list link.
2020-06-04 11:10:42 -07:00
Subash Lakkimsetti ee7fcc7abb Remove TestSigningPrivateKey as default in GenContainer
TestSigningPrivateKey is defaulted for container
creation in non-layout form and key dir is used.
In CfgDataStitch also TestSigningPrivateKey is
defaulted when key dir is specified.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-03 13:24:41 -07:00
Perni 7ecb423fab FspsUpd Updated to Global Variable
FspsUpd variable made global so that it could be accessed out of
    FspSilicon function.

    Patchable PCD has been created for FspsUpd and Memory pool allocated.

Signed-off-by: Perni <ramesh.chandra.perni@intel.com>
2020-06-02 08:32:38 -07:00
Subash Lakkimsetti a1fa102214 Segregate sign utilities to an separate script
CommonUtility.py – It contains common functionality
    for signing and extraction Of public key info.
 	It adds the necessary structures for signed data.
SingleSign.py – It contains core functionality related
    to openssl for sign operations. This script will
	be enhanced for accessing key store.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-06-02 08:32:06 -07:00
Maurice Ma 8eb31ee3f6 [APL] Fix SD card boot issue on Intel CRB boards
This patch fixed OsLoader boot from SD card issue on Intel APL CRB
borads. The SD/eMMC library was updated to follow the proper sequence
for SD card. Also platform code was updated to detect SD card and
apply SD card power using proper GPIO pins.

It fixed #729.

Signed-off-by: Maurice Ma <maurice.ma@intel.com>
2020-06-01 10:08:51 -07:00
Guo Dong 7edce89fb1
Support X64 UEFI payload (#728)
IA32 UEFI payload uses PE format and X64 UEFI payload uses
PE+ format. So update LitePeCofflib to support both PE and
PE+.

Signed-off-by: Guo Dong <guo.dong@intel.com>
2020-05-29 10:15:12 -07:00
Sm NARAYANAN 64f27c41c3 SMBIOS Implementation - Adding SMBIOS Default Table.
- Default SMBIOS Table initialized when SMBIOS is enabled.
- If required, Every Platform can override platform specific information.
- Enable SMBIOS in Qemu platform.
- Update Memory allocation for SmbiosStringsPtr for 32 entries.

Signed-off-by: Sm NARAYANAN <s.m.narayanan@intel.com>
2020-05-28 10:39:54 -07:00
Maurice Ma e0c4326b81 Fixed several Klocwork scanning issue
Fixed several Klocwork issues reported for CFL build.

Signed-off-by: Maurice Ma <maurice.ma@intel.com>
2020-05-28 09:43:12 -07:00
Aiden Park 9309f21857
Suppress KW warnings (#725)
Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-05-27 15:41:39 -07:00
Subash Lakkimsetti 442cb62fce Validate board config hash types
SIGN_HASH_TYPE and IPP_HASH_LIB_SUPPORTED_MASK are derived from
_SIGN_HASH. AT times only _SIGN_HASH is configured in
BoardConfig.py which causes in incorrect hash set to
respective PCDs.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-05-26 11:49:54 -07:00
Aiden Park 2f076387a0 Check SATA controller at Ahci Init
This will fix an unexpected exception when AhciHcPciBase is invalid
or the PCI config space is not enabled.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-05-22 12:20:57 -07:00
Maurice Ma fc6aa78708 Add OEM container verification support
Current SBL supports container header verification. If the container
signature is BOOT, it will use HASH_USAGE_PUBKEY_OS. Otherwise, it
will use HASH_USAGE_PUBKEY_CONTAINER_DEF. This patch added OEM signed
container support. If a container signature between OEM0 to OEM7 is
found, it will be verified use HASH_USAGE_PUBKEY_OEM(x) where x is 0
to 7. To add an OEM public key hash, it can be done by updating
pub_key_list in GetKeyHashList() in file BoardConfig.py.

Signed-off-by: Maurice Ma <maurice.ma@intel.com>
2020-05-22 12:19:50 -07:00
Maurice Ma 0788c6da42 Allow using bootloader stack to call FspMemoryInit
FSP 2.1 introduced new requirement to use bootloader stack for FSP-M. It
will cause issue for SBL since SBL only uses a small stack in Stage1. To
address this issue, a new PCD PcdFSPMStackTop is added to control the
stack settings for FSP-M.
  - If it is 0, it will not switch stack before calling FspMemoryInit API.
  - If it is 0xffffffff, it will switch to the new default FSP stack
    before calling FspMemoryInit API.
  - For other values, it will switch to the new stack at specified value
    before calling FspMemoryInit API.
This PCD will be set automatically by FSP_M_STACK_TOP variable in
BoardConfig.py file.

This code has been tested on UP Extreme board with latest FSP version.

Signed-off-by: Maurice Ma <maurice.ma@intel.com>
2020-05-21 09:27:59 -07:00
Subash Lakkimsetti 1ac8e390c4 Firmware update in command mode
This patch adds generic functionality to
process Flash descriptor lock. It follows
Capsule Firmware update flow and interface
is updated. Command (CMDI) interface is added
to GenCapsuleFirmware which takes file with
command as input.

Sample Command format in text file input,
{FLASHDESCLOCK}
{Command2}
{Command3}

Firmware update lib handler parses high level commands
Specific command process and functionlity would be
performed by platform specific libraries.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-05-20 09:38:47 -07:00
Aiden Park 9f146afd47
Add PCI SR-IOV Support (#714)
This will support PCI SR-IOV(Single Root I/O Virtualization).
- Controlled by PcdSrIovSupport (SUPPORT_SR_IOV in BoardConfig)
- Disabled by default

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-05-14 09:57:10 -07:00
Aiden Park 7312a8e3f1
Update Intel FSP git repository URL (#716)
From https://github.com/IntelFsp/FSP.git
To   https://github.com/intel/FSP.git

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-05-14 00:28:59 -07:00
Raghava Gudla 45e2900164 Reprogram SMRR base and mask on S3 path for CFL
This patch will generate a SW smi on S3 resume path when using
UEFI payload. Handler for this Sw smi in UEFI payload will
program SMRR base and mask for BSP and all AP's.

Signed-off-by: Raghava Gudla <raghava.gudla@intel.com>
2020-05-13 16:51:32 -07:00
Mutha 26499043d2 Config Data name for SPI boot is Updated.
Boot Options updated for selecting boot device as SPI.
Use the “Memory” setting in the ConfigEditor to select
SPI as boot device.

Signed-off-by: Mutha <naga.naveen.mutha@intel.com>
2020-05-13 15:13:36 -07:00
Subash Lakkimsetti 47a15937a1 String function Support library
Add string functionality in Osloader to a
common library

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-05-13 08:34:20 -07:00
Aiden Park 163d60408f
Add PCI ARI Support (#712)
This will enable ARI(Alternative Routing-ID Interpretation).
- Controlled by PcdAriSupport (SUPPORT_ARI in BoardConfig)
- Disabled by default

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-05-12 19:27:24 -07:00
Maurice Ma 248f4985e8 Fix build warning for missing header files
This patch added missing C header files in INF file. It fixed the
build warning message.

Signed-off-by: Maurice Ma <maurice.ma@intel.com>
2020-05-12 14:32:40 -07:00
Sai Talamudupula 12a613a831 Fix Klockwork issue flagged in PagingMap lib
Klocwork reports a potential dereferencing of a NULL
pointer. This patch addresses the issue.

Signed-off-by: Sai Talamudupula <sai.kiran.talamudupula@intel.com>
2020-05-11 17:04:34 -07:00
Vegnish Rao 1deb84fcfa
Fix Klockwork issue flagged in BootloaderCommonPkg (#705)
Fix for: Klockwork flags multiple variables being used uninitialized

Signed-off-by: Vegnish Rao <vegnish.rao.paramesura.rao@intel.com>
2020-05-08 09:06:22 -07:00
Subash Lakkimsetti 56d1e5a400 Increase OsLoader FD size
Osloader FD size is increased to 0x0004B000

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-05-05 15:07:15 -07:00
Subash Lakkimsetti 5804d9a18a Measure firmware debugger launch
Platform debug mode is extended to PCR[7]
as part of secure boot policy. Updated bit setting
to LoaderPlatformInfo for payloads to consume.
Debug mode is checked in payload.

ArchitecturalMsr.h ported fom EDK2 repo.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-05-05 15:07:15 -07:00
Himanshu Sahdev aka CunningLearner 74aa53e77a TpmLib: Add appropriate comparison checks
Signed-off-by: Himanshu Sahdev aka CunningLearner <sahdev.himan@gmail.com>
2020-05-05 15:04:20 -07:00
Himanshu Sahdev aka CunningLearner f11d4be58e TpmLib/Tpm2Capability.c: Fix typos
Signed-off-by: Himanshu Sahdev aka CunningLearner <sahdev.himan@gmail.com>
2020-05-05 15:04:20 -07:00
Aiden Park 43146f6c7b Fix a typo in board_build_hook
A typo. fix for pre-build:after

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-05-04 15:57:37 -07:00
Aiden Park e99762353a
Introduce CONSOLE_PRINT macro (#701)
This will allow necessary messages to be printed to consoles.

These macros will redirect debug message to consoles.
  CONSOLE_PRINT
  CONSOLE_PRINT_UNICODE

These conditional macros will redirect debug message to consoles or
DEBUG(). The PrintLevel is valid only when redirected to DEBUG().
  CONSOLE_PRINT_CONDITION
  CONSOLE_PRINT_UNICODE_CONDITION

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-05-04 14:53:08 -07:00
Guo Dong 82eb72c9a7
Add MtrrLib with a MTRR display function (#693)
To help debug boot performance, add a MTRR print function.
This function could be invoked multiple times with different
string to know where this MTRR data is printed.

Signed-off-by: Guo Dong <guo.dong@intel.com>
2020-04-30 22:08:05 -07:00
stalamudupula ee26b02df5
Support paging for Above4Gb addresses (#692)
This patch enhances MapMemoryRegion subroutine to
add PDP entries for mapping addresses > 4GiB.
Only 1:1 mapping is provided for Above4Gb addresses.
And linear addresses are mapped to 1GiB pages.

Signed-off-by: Sai Talamudupula <sai.kiran.talamudupula@intel.com>
2020-04-30 22:05:54 -07:00
Aiden Park 57bea9118d
Enhance debug log buffer as ring buffer (#699)
This will allow debug log buffer to record logs in ring buffer
if the buffer is full.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-04-30 11:56:39 -07:00
Aiden Park b884702aca
Fix ELF image loading failure (#700)
This will fix invalid offset calculation of ELF program header.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-04-29 23:07:11 -07:00
Aiden Park 5d37a25284 [X64] Fix XHCI init failure
This issue is seen on a WHL board on X64 build when high 32-bit
BAR does not exist. In that case, MmioRead64 returns (UINT64)(-1).
To avoid this, read high 32-bit BAR only if BAR type is 64-bit
address space.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-04-29 21:52:11 -07:00
Aiden Park eae81b7bc8
[X64] Support S3 resume on 64-bit build (#698)
This will support S3 resume path on X64 thru 16-bit waking vector.
- Port WakeUp code from EDKII
- Remove duplicated calls of FindS3Info from CpuInit
- Verified with Yocto on a WHL board
- TBD: 64-bit waking vector with supported OS

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-04-29 21:23:56 -07:00
Aiden Park 17828b4e1d
[X64] Fix MpInit failure (#695)
This will fix MpInit failure on X64 build.
The ApFunc() gets invalid parameters due to mismatched calling convention.
- Add EFIAPI to match calling convention

This can be verified with '-smp' option on QEMU target.
qemu-system-x86_64
  -machine q35 -m 256 -nographic -serial mon:stdio
  -pflash Outputs/qemu/SlimBootloader.bin
  -smp 255

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-04-29 09:17:03 -07:00
Subash Lakkimsetti 7601ce7af3 Adjust hash algorithm used for KEYH based on key size
PublicKey hashes stored in HashStore use hash alg type of
PcdCompSignHash defined with Build config. In container we
support cases where hash type could differ from Sbl default
signing hash.

Adjust the hash algorithm in external KeyHashStore manifest
based on key size. Use SHA256 for size 2K and SHA384 for 3K.

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
2020-04-27 09:20:03 -07:00