-
Notifications
You must be signed in to change notification settings - Fork 58
Build add intelundi
The IntelUndi 30.5 driver is known to work with versions of NVIDIA UEFI uefi-202512.0 and later. For versions before uefi-202512.0, please refer here.
The IntelUndi driver supports the 500 series NICs used on the Tegra platform. NVIDIA cannot distribute this driver, so it is not included by default. These instructions outline how to download, unpack, and add the driver to the build.
The driver must be downloaded from Intel. Version 30.5 has been verified, but newer versions may work.
Download PREBOOT.zip here.
- Note: The Linux download does not contain the required files. Be sure to download for Windows, even if building on Linux.
We'll unpack PREBOOT.zip into a temporary directory and then create "edk2-intelundi".
The following instructions assume a workspace has already been created using the build instructions.
# Unpack PREBOOT.zip into a temporary directory
cd /path/to/workspace
mkdir IntelUndi
cd IntelUndi
unzip /path/to/PREBOOT.zip
cd -
# Fix permissions on APPS directory
chmod 755 IntelUndi/APPS/EFI
# Unpack the driver XGig driver
mkdir -p edk2-intelundi/XGigUndiDxe/IntelUndiPkg
cd edk2-intelundi/XGigUndiDxe/IntelUndiPkg/
unzip ../../../IntelUndi/APPS/EFI/OPENSRC/XGigUndiDxe.zip
cd -
# Unpack the i40e driver
mkdir -p edk2-intelundi/i40eUndiDxe/IntelUndiPkg
cd edk2-intelundi/i40eUndiDxe/IntelUndiPkg/
unzip ../../../IntelUndi/APPS/EFI/OPENSRC/i40eUndiDxe.zip
cd -
# Unpack the Gig driver
mkdir -p edk2-intelundi/GigUndiDxe/IntelUndiPkg
cd edk2-intelundi/GigUndiDxe/IntelUndiPkg/
unzip ../../../IntelUndi/APPS/EFI/OPENSRC/GigUndiDxe.zip
cd -
The following patch should be applied to avoid an ASSERT in I40eUndi after ExitBootServices. This fix may be included in future versions of the driver. In that case, this step is no longer necessary.
cd edk2-intelundi
# Convert line-endings for patch
FILE="i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c"
cp "$FILE" "$FILE.bak"
tr -d '\r' < "$FILE" > "$FILE.lf"
# Patch the file
patch "$FILE.lf" <<'EOF'
diff --git a/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c b/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c
index 7f266e2..fb74af2 100644
--- a/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c
+++ b/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c
@@ -1394,6 +1394,7 @@ I40eShutdown (
Exit:
switch (Status) {
case EFI_SUCCESS:
+ case EFI_NOT_STARTED:
PxeStatcode = PXE_STATCODE_SUCCESS;
break;
EOF
# Convert patched file back to CRLF
sed 's/$/\r/' "$FILE.lf" > "$FILE"
# Clean up
rm "$FILE.lf"
cd -
Before building the following environment must be set. Add the following to
edk2-nvidia/Platform/NVIDIA/Tegra/build.sh prior to the "Prepare and build"
steps:
STUART_BUILD_OPTIONS+=" --verbose"
STUART_BUILD_OPTIONS+=" --insert-packages-path edk2-intelundi/XGigUndiDxe"
STUART_BUILD_OPTIONS+=" --insert-packages-path edk2-intelundi/i40eUndiDxe"
STUART_BUILD_OPTIONS+=" --insert-packages-path edk2-intelundi/GigUndiDxe"
STUART_BUILD_OPTIONS+=" BLD_*_ENABLE_INTELUNDI=1"
export STUART_BUILD_OPTIONS
Once added, the Tegra platform can be built as normal.