forked from MrChromebox/edk2
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
UefiPayloadPkg: Add PCI support from DuetPkg
In coreboot, we mark GPU prefmem above 4GB, because NVIDIA wants a lot (16GB region on the 30 series), otherwise coreboot will obviously fail to allocate the resources. In EDK2, we then end up hitting this assert: InitRootBridge: populated root bus 0, with room for 36 subordinate bus(es) RootBridge: PciRoot(0x0) Support/Attr: 7001F / 7001F DmaAbove4G: No NoExtConfSpace: No AllocAttr: 0 () Bus: 0 - 24 Translation=0 Io: 1000 - EFFF Translation=0 Mem: 80400000 - 1001FFFFFF Translation=0 MemAbove4G: FFFFFFFFFFFFFFFF - 0 Translation=0 PMem: FFFFFFFFFFFFFFFF - 0 Translation=0 PMemAbove4G: FFFFFFFFFFFFFFFF - 0 Translation=0 ASSERT [PciHostBridgeDxe] .../edk2/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c(120): Bridge->Mem.Limit < 0x0000000100000000ULL So, bring back Pci*NoEnumerationDxe from the deleted DuetPkg, which doesn't check anything and let's us boot. Signed-off-by: Tim Crawford <tcrawford@system76.com>
- Loading branch information
Showing
36 changed files
with
13,072 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/** @file | ||
Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> | ||
This program and the accompanying materials | ||
are licensed and made available under the terms and conditions of the BSD License | ||
which accompanies this distribution. The full text of the license may be found at | ||
http://opensource.org/licenses/bsd-license.php | ||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||
Module Name: | ||
PciExpressBaseAddress.h | ||
Abstract: | ||
GUIDs used for PciExpress Base Address | ||
**/ | ||
|
||
#ifndef _EFI_PCI_EXPRESS_BASE_ADDRESS_H_ | ||
#define _EFI_PCI_EXPRESS_BASE_ADDRESS_H_ | ||
|
||
#define EFI_PCI_EXPRESS_BASE_ADDRESS_GUID \ | ||
{ \ | ||
0x3677d529, 0x326f, 0x4603, {0xa9, 0x26, 0xea, 0xac, 0xe0, 0x1d, 0xcb, 0xb0} \ | ||
} | ||
|
||
// | ||
// Following structure defines PCI Express Base Address information. | ||
// This information is platform specific, and built into hob in PEI phase. | ||
// It can be consumed by PEI PCI driver and DXE PCI driver. | ||
// | ||
#pragma pack(1) | ||
typedef struct _EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION { | ||
UINT32 HostBridgeNumber; | ||
UINT32 RootBridgeNumber; | ||
UINT64 PciExpressBaseAddress; | ||
} EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION; | ||
#pragma pack() | ||
|
||
extern EFI_GUID gEfiPciExpressBaseAddressGuid; | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/** @file | ||
GUID and data structure used to describe the list of PCI Option ROMs present in a system. | ||
Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> | ||
This program and the accompanying materials | ||
are licensed and made available under the terms and conditions of the BSD License | ||
which accompanies this distribution. The full text of the license may be found at | ||
http://opensource.org/licenses/bsd-license.php | ||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||
**/ | ||
|
||
#ifndef __PCI_OPTION_ROM_TABLE_GUID_H_ | ||
#define __PCI_OPTION_ROM_TABLE_GUID_H_ | ||
|
||
#define EFI_PCI_OPTION_ROM_TABLE_GUID \ | ||
{ 0x7462660f, 0x1cbd, 0x48da, {0xad, 0x11, 0x91, 0x71, 0x79, 0x13, 0x83, 0x1c } } | ||
|
||
extern EFI_GUID gEfiPciOptionRomTableGuid; | ||
|
||
typedef struct { | ||
EFI_PHYSICAL_ADDRESS RomAddress; | ||
EFI_MEMORY_TYPE MemoryType; | ||
UINT32 RomLength; | ||
UINT32 Seg; | ||
UINT8 Bus; | ||
UINT8 Dev; | ||
UINT8 Func; | ||
BOOLEAN ExecutedLegacyBiosImage; | ||
BOOLEAN DontLoadEfiRom; | ||
} EFI_PCI_OPTION_ROM_DESCRIPTOR; | ||
|
||
typedef struct { | ||
UINT64 PciOptionRomCount; | ||
EFI_PCI_OPTION_ROM_DESCRIPTOR *PciOptionRomDescriptors; | ||
} EFI_PCI_OPTION_ROM_TABLE; | ||
|
||
#endif // __PCI_OPTION_ROM_TABLE_GUID_H_ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
/*++ | ||
Copyright (c) 2005 - 2007, Intel Corporation. All rights reserved.<BR> | ||
This program and the accompanying materials | ||
are licensed and made available under the terms and conditions of the BSD License | ||
which accompanies this distribution. The full text of the license may be found at | ||
http://opensource.org/licenses/bsd-license.php | ||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||
Module Name: | ||
ComponentName.c | ||
Abstract: | ||
--*/ | ||
|
||
#include "PciBus.h" | ||
|
||
// | ||
// EFI Component Name Functions | ||
// | ||
EFI_STATUS | ||
EFIAPI | ||
PciBusComponentNameGetDriverName ( | ||
IN EFI_COMPONENT_NAME_PROTOCOL *This, | ||
IN CHAR8 *Language, | ||
OUT CHAR16 **DriverName | ||
); | ||
|
||
EFI_STATUS | ||
EFIAPI | ||
PciBusComponentNameGetControllerName ( | ||
IN EFI_COMPONENT_NAME_PROTOCOL *This, | ||
IN EFI_HANDLE ControllerHandle, | ||
IN EFI_HANDLE ChildHandle OPTIONAL, | ||
IN CHAR8 *Language, | ||
OUT CHAR16 **ControllerName | ||
); | ||
|
||
// | ||
// EFI Component Name Protocol | ||
// | ||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gPciBusComponentName = { | ||
PciBusComponentNameGetDriverName, | ||
PciBusComponentNameGetControllerName, | ||
"eng" | ||
}; | ||
|
||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPciBusComponentName2 = { | ||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) PciBusComponentNameGetDriverName, | ||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) PciBusComponentNameGetControllerName, | ||
"en" | ||
}; | ||
|
||
|
||
EFI_UNICODE_STRING_TABLE mPciBusDriverNameTable[] = { | ||
{ "eng;en", L"PCI Bus Driver" }, | ||
{ NULL, NULL } | ||
}; | ||
|
||
EFI_STATUS | ||
EFIAPI | ||
PciBusComponentNameGetDriverName ( | ||
IN EFI_COMPONENT_NAME_PROTOCOL *This, | ||
IN CHAR8 *Language, | ||
OUT CHAR16 **DriverName | ||
) | ||
/*++ | ||
Routine Description: | ||
Retrieves a Unicode string that is the user readable name of the EFI Driver. | ||
Arguments: | ||
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance. | ||
Language - A pointer to a three character ISO 639-2 language identifier. | ||
This is the language of the driver name that that the caller | ||
is requesting, and it must match one of the languages specified | ||
in SupportedLanguages. The number of languages supported by a | ||
driver is up to the driver writer. | ||
DriverName - A pointer to the Unicode string to return. This Unicode string | ||
is the name of the driver specified by This in the language | ||
specified by Language. | ||
Returns: | ||
EFI_SUCCESS - The Unicode string for the Driver specified by This | ||
and the language specified by Language was returned | ||
in DriverName. | ||
EFI_INVALID_PARAMETER - Language is NULL. | ||
EFI_INVALID_PARAMETER - DriverName is NULL. | ||
EFI_UNSUPPORTED - The driver specified by This does not support the | ||
language specified by Language. | ||
--*/ | ||
{ | ||
return LookupUnicodeString2 ( | ||
Language, | ||
This->SupportedLanguages, | ||
mPciBusDriverNameTable, | ||
DriverName, | ||
(BOOLEAN)(This == &gPciBusComponentName) | ||
); | ||
} | ||
|
||
EFI_STATUS | ||
EFIAPI | ||
PciBusComponentNameGetControllerName ( | ||
IN EFI_COMPONENT_NAME_PROTOCOL *This, | ||
IN EFI_HANDLE ControllerHandle, | ||
IN EFI_HANDLE ChildHandle OPTIONAL, | ||
IN CHAR8 *Language, | ||
OUT CHAR16 **ControllerName | ||
) | ||
/*++ | ||
Routine Description: | ||
Retrieves a Unicode string that is the user readable name of the controller | ||
that is being managed by an EFI Driver. | ||
Arguments: | ||
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance. | ||
ControllerHandle - The handle of a controller that the driver specified by | ||
This is managing. This handle specifies the controller | ||
whose name is to be returned. | ||
ChildHandle - The handle of the child controller to retrieve the name | ||
of. This is an optional parameter that may be NULL. It | ||
will be NULL for device drivers. It will also be NULL | ||
for a bus drivers that wish to retrieve the name of the | ||
bus controller. It will not be NULL for a bus driver | ||
that wishes to retrieve the name of a child controller. | ||
Language - A pointer to a three character ISO 639-2 language | ||
identifier. This is the language of the controller name | ||
that that the caller is requesting, and it must match one | ||
of the languages specified in SupportedLanguages. The | ||
number of languages supported by a driver is up to the | ||
driver writer. | ||
ControllerName - A pointer to the Unicode string to return. This Unicode | ||
string is the name of the controller specified by | ||
ControllerHandle and ChildHandle in the language specified | ||
by Language from the point of view of the driver specified | ||
by This. | ||
Returns: | ||
EFI_SUCCESS - The Unicode string for the user readable name in the | ||
language specified by Language for the driver | ||
specified by This was returned in DriverName. | ||
EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE. | ||
EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid EFI_HANDLE. | ||
EFI_INVALID_PARAMETER - Language is NULL. | ||
EFI_INVALID_PARAMETER - ControllerName is NULL. | ||
EFI_UNSUPPORTED - The driver specified by This is not currently managing | ||
the controller specified by ControllerHandle and | ||
ChildHandle. | ||
EFI_UNSUPPORTED - The driver specified by This does not support the | ||
language specified by Language. | ||
--*/ | ||
{ | ||
return EFI_UNSUPPORTED; | ||
} |
Oops, something went wrong.