forked from rarias/jungle
Compare commits
16 Commits
master
...
add-fpga-u
| Author | SHA1 | Date | |
|---|---|---|---|
| f00575640c | |||
| 5899d8847c | |||
| 2be8c0dad3 | |||
| cf4ce9fa18 | |||
| b513cd8982 | |||
| b87d79e1cc | |||
| 4807337098 | |||
| 82ed40d386 | |||
| e81b7cc158 | |||
| 0533a48a98 | |||
| a9c1cb26ea | |||
| 4ab38212b3 | |||
| df8b5b2d67 | |||
| c5400955c7 | |||
| 165a60b0d2 | |||
| bd4dabf03a |
@ -23,6 +23,7 @@
|
||||
trusted-users = [ "@wheel" ];
|
||||
flake-registry = pkgs.writeText "global-registry.json"
|
||||
''{"flakes":[],"version":2}'';
|
||||
keep-outputs = true;
|
||||
};
|
||||
|
||||
gc = {
|
||||
|
||||
@ -8,13 +8,6 @@ in
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
|
||||
# Connect to intranet git hosts via proxy
|
||||
programs.ssh.extraConfig = ''
|
||||
Host bscpm02.bsc.es bscpm03.bsc.es gitlab-internal.bsc.es alya.gitlab.bsc.es
|
||||
User git
|
||||
ProxyCommand nc -X connect -x hut:23080 %h %p
|
||||
'';
|
||||
|
||||
programs.ssh.knownHosts = hostsKeys // {
|
||||
"gitlab-internal.bsc.es".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF9arsAOSRB06hdy71oTvJHG2Mg8zfebADxpvc37lZo3";
|
||||
"bscpm03.bsc.es".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM2NuSUPsEhqz1j5b4Gqd+MWFnRqyqY57+xMvBUqHYUS";
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
rarias = {
|
||||
uid = 1880;
|
||||
isNormalUser = true;
|
||||
linger = true;
|
||||
home = "/home/Computational/rarias";
|
||||
description = "Rodrigo Arias";
|
||||
group = "Computational";
|
||||
@ -107,7 +108,7 @@
|
||||
home = "/home/Computational/dbautist";
|
||||
description = "Dylan Bautista Cases";
|
||||
group = "Computational";
|
||||
hosts = [ "hut" ];
|
||||
hosts = [ "hut" "raccoon" ];
|
||||
hashedPassword = "$6$a2lpzMRVkG9nSgIm$12G6.ka0sFX1YimqJkBAjbvhRKZ.Hl090B27pdbnQOW0wzyxVWySWhyDDCILjQELky.HKYl9gqOeVXW49nW7q/";
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAb+EQBoS98zrCwnGKkHKwMLdYABMTqv7q9E0+T0QmkS dbautist@bsc-848818791"
|
||||
|
||||
@ -2,8 +2,9 @@
|
||||
# Provides the base system for a xeon node.
|
||||
imports = [
|
||||
./base.nix
|
||||
./xeon/fs.nix
|
||||
./xeon/console.nix
|
||||
./xeon/fs.nix
|
||||
./xeon/net.nix
|
||||
./xeon/ssh.nix
|
||||
];
|
||||
}
|
||||
|
||||
8
m/common/xeon/ssh.nix
Normal file
8
m/common/xeon/ssh.nix
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
# Connect to intranet git hosts via proxy
|
||||
programs.ssh.extraConfig = ''
|
||||
Host bscpm02.bsc.es bscpm03.bsc.es gitlab-internal.bsc.es alya.gitlab.bsc.es
|
||||
User git
|
||||
ProxyCommand nc -X connect -x hut:23080 %h %p
|
||||
'';
|
||||
}
|
||||
@ -3,6 +3,7 @@
|
||||
{
|
||||
imports = [
|
||||
../common/base.nix
|
||||
../module/emulation.nix
|
||||
];
|
||||
|
||||
# Don't install Grub on the disk yet
|
||||
@ -25,6 +26,9 @@
|
||||
} ];
|
||||
};
|
||||
|
||||
# Enable performance governor
|
||||
powerManagement.cpuFreqGovernor = "performance";
|
||||
|
||||
# Configure Nvidia driver to use with CUDA
|
||||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.production;
|
||||
hardware.graphics.enable = true;
|
||||
@ -32,6 +36,38 @@
|
||||
nixpkgs.config.nvidia.acceptLicense = true;
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
# Disable garbage collection for now
|
||||
nix.gc.automatic = lib.mkForce false;
|
||||
|
||||
# Use nix cache from hut
|
||||
nix.settings = {
|
||||
substituters = [ "https://jungle.bsc.es/cache" ];
|
||||
trusted-public-keys = [ "jungle.bsc.es:pEc7MlAT0HEwLQYPtpkPLwRsGf80ZI26aj29zMw/HH0=" ];
|
||||
};
|
||||
|
||||
services.openssh.settings.X11Forwarding = true;
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
xilinx-xrt = prev.callPackage ./xilinx-xrt.nix { };
|
||||
xilinx-fw = prev.callPackage ./xilinx-fw.nix { };
|
||||
xilinx-xocl = prev.callPackage ./xilinx-xocl.nix {
|
||||
kernel = config.boot.kernelPackages.kernel;
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
boot.extraModulePackages = [ pkgs.xilinx-xocl ];
|
||||
boot.kernelModules = [ "xclmgmt" "xocl" ];
|
||||
services.udev.packages = [ pkgs.xilinx-xocl ];
|
||||
|
||||
services.prometheus.exporters.node = {
|
||||
enable = true;
|
||||
enabledCollectors = [ "systemd" ];
|
||||
port = 9002;
|
||||
listenAddress = "127.0.0.1";
|
||||
};
|
||||
|
||||
users.motd = ''
|
||||
⠀⠀⠀⠀⠀⠀⠀⣀⣀⣄⣠⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠀⠀⢰⠇⡀⠀⠙⠻⡿⣦⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀
|
||||
|
||||
335
m/raccoon/xilinx-create-xsabin.sh
Executable file
335
m/raccoon/xilinx-create-xsabin.sh
Executable file
@ -0,0 +1,335 @@
|
||||
#!/bin/bash
|
||||
## (c) Copyright 2020 Xilinx, Inc. All rights reserved.
|
||||
##
|
||||
## This file contains confidential and proprietary information
|
||||
## of Xilinx, Inc. and is protected under U.S. and
|
||||
## international copyright and other intellectual property
|
||||
## laws.
|
||||
##
|
||||
## DISCLAIMER
|
||||
## This disclaimer is not a license and does not grant any
|
||||
## rights to the materials distributed herewith. Except as
|
||||
## otherwise provided in a valid license issued to you by
|
||||
## Xilinx, and to the maximum extent permitted by applicable
|
||||
## law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
## WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
## AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
## BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
## INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
## (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
## including negligence, or under any other theory of
|
||||
## liability) for any loss or damage of any kind or nature
|
||||
## related to, arising under or in connection with these
|
||||
## materials, including for any direct, or any indirect,
|
||||
## special, incidental, or consequential loss or damage
|
||||
## (including loss of data, profits, goodwill, or any type of
|
||||
## loss or damage suffered as a result of any action brought
|
||||
## by a third party) even if such damage or loss was
|
||||
## reasonably foreseeable or Xilinx had been advised of the
|
||||
## possibility of the same.
|
||||
##
|
||||
## CRITICAL APPLICATIONS
|
||||
## Xilinx products are not designed or intended to be fail-
|
||||
## safe, or for use in any application requiring fail-safe
|
||||
## performance, such as life-support or safety devices or
|
||||
## systems, Class III medical devices, nuclear facilities,
|
||||
## applications related to the deployment of airbags, or any
|
||||
## other applications that could lead to death, personal
|
||||
## injury, or severe property or environmental damage
|
||||
## (individually and collectively, "Critical
|
||||
## Applications"). Customer assumes the sole risk and
|
||||
## liability of any use of Xilinx products in Critical
|
||||
## Applications, subject only to applicable laws and
|
||||
## regulations governing limitations on product liability.
|
||||
##
|
||||
## THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
## PART OF THIS FILE AT ALL TIMES.
|
||||
|
||||
# This script must be run with root permissions
|
||||
# if [[ "$EUID" -ne 0 ]]; then
|
||||
# echo "This script must be run as root."
|
||||
# exit
|
||||
# fi
|
||||
|
||||
# Get absolute path to this script with any symlinks resolved
|
||||
realme=$(realpath $0)
|
||||
scriptpath="${realme%/*}"
|
||||
echo "This is create_xsabin.sh running from $scriptpath on $(date)"
|
||||
|
||||
# The directory above that is the human-readable installation path - probably /opt/xilinx/firmware/<card>/<family>/<partition>/
|
||||
humanpath=${scriptpath%/*}
|
||||
pushd $humanpath > /dev/null
|
||||
|
||||
# This script may be called during firmware upgrade, in which case the firmware product, branch, version and release
|
||||
# are provided as script arguments, to help this script to select the new firmware file
|
||||
if [[ "$#" -ge 4 ]]; then
|
||||
firmware_upgrade_product=$1
|
||||
firmware_upgrade_branch=$2
|
||||
firmware_upgrade_version=$3
|
||||
firmware_upgrade_release=$4
|
||||
echo "Run for install of firmware $firmware_upgrade_product-$firmware_upgrade_branch version $firmware_upgrade_version release $firmware_upgrade_release"
|
||||
elif [[ "$#" -eq 3 ]]; then
|
||||
# If 3 script arguments, these are the partition name, version and release, so that this script can report them for debug
|
||||
echo "Run for install of partition $1 version $2 release $3"
|
||||
fi
|
||||
|
||||
# Find the partition_metadata.json link in the install directory
|
||||
jsonlink="partition_metadata.json"
|
||||
if [[ ! -e "$jsonlink" ]]; then
|
||||
echo "Cannot find $jsonlink file in $humanpath - install failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find the machine-readable directory for this partition:
|
||||
# this is the target of the partition_metadata.json link
|
||||
if [[ ! -h "$jsonlink" ]]; then
|
||||
echo "$jsonlink in $humanpath should be a symlink, but it is not - install failed"
|
||||
exit 1
|
||||
fi
|
||||
jsonpath=$(readlink $jsonlink)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "Failed to read target of symlink $jsonlink in $humanpath - install failed"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -e "$jsonpath" ]]; then
|
||||
echo "Target of symlink $jsonlink in $humanpath is $jsonpath, which does not exist - install failed"
|
||||
exit 1
|
||||
fi
|
||||
echo "Metadata file is $jsonpath"
|
||||
machinepath=${jsonpath%/*}
|
||||
json=${jsonpath##*/}
|
||||
echo "User install path is $humanpath"
|
||||
echo "Machine-readable path is $machinepath"
|
||||
pushd $machinepath > /dev/null
|
||||
|
||||
# Parse the partition_metadata.json file to find the required firmware
|
||||
declare -A firmware
|
||||
firmware_products=()
|
||||
product=""
|
||||
branch="mainline"
|
||||
major="*"
|
||||
minor="*"
|
||||
revision="*"
|
||||
while IFS= read -r line; do
|
||||
key=${line#*\"}
|
||||
key=${key%%\"*}
|
||||
value=${line%\"*}
|
||||
value=${value##*\"}
|
||||
numvalue=$value
|
||||
if [[ "$numvalue" =~ ^0x ]]; then
|
||||
numvalue=$(($numvalue))
|
||||
fi
|
||||
case "$key" in
|
||||
"firmware")
|
||||
# Starts a new section: record current one (except if before the first section)
|
||||
if [[ -n "$product" ]]; then
|
||||
firmware_products+=($product)
|
||||
firmware["$product.branch"]=$branch
|
||||
firmware["$product.version"]="$major.$minor.$revision"
|
||||
product=""
|
||||
branch="mainline"
|
||||
major="*"
|
||||
minor="*"
|
||||
revision="*"
|
||||
fi
|
||||
;;
|
||||
"firmware_product_name")
|
||||
product=${value,,}
|
||||
;;
|
||||
"firmware_branch_name")
|
||||
branch=${value,,}
|
||||
;;
|
||||
"firmware_version_major")
|
||||
major=$numvalue
|
||||
;;
|
||||
"firmware_version_minor")
|
||||
minor=$numvalue
|
||||
;;
|
||||
"firmware_version_revision")
|
||||
revision=$numvalue
|
||||
;;
|
||||
esac
|
||||
done <<< "$(grep '\"firmware' $json)"
|
||||
# Record last section
|
||||
firmware_products+=($product)
|
||||
firmware["$product.branch"]=$branch
|
||||
firmware["$product.version"]="$major.$minor.$revision"
|
||||
|
||||
# Locate the required firmware in existing installed directories, and build xclbinutil options to add firmware
|
||||
# For each firmware, there is already a symlink in the human-readable directory's firmware directory
|
||||
# which points to the existing firmware install directory
|
||||
firmware_opts=""
|
||||
for product in "${firmware_products[@]}"; do
|
||||
uc_product=${product^^}
|
||||
branch=${firmware[$product.branch]}
|
||||
version=${firmware[$product.version]}
|
||||
link="$humanpath/firmware/$product-$branch"
|
||||
if [[ ! -L "$link" ]]; then
|
||||
echo "Expected symlink $link for required $product firmware, but this either does not exist or is not a symlink - install failed"
|
||||
exit 1
|
||||
fi
|
||||
firmware_path=$(readlink -f $humanpath/firmware/$product-$branch)
|
||||
if [[ ! -e "$firmware_path" ]]; then
|
||||
echo "Required $product firmware install directory not found at $firmware_path. Unable to build xsabin files"
|
||||
exit 1
|
||||
fi
|
||||
# Locate the required firmware binary file
|
||||
case "$product" in
|
||||
"ert")
|
||||
# ERT firmware is deployed within XRT and has its own file naming rule
|
||||
if [[ "$branch" == "mainline" ]] || [[ "$branch" == "legacy" ]] || [[ "$branch" == "" ]]; then
|
||||
ert_name="sched.bin"
|
||||
else
|
||||
ert_name="sched_$branch.bin"
|
||||
fi
|
||||
firmware_file="$firmware_path/$ert_name"
|
||||
if [[ ! -e "$firmware_file" ]]; then
|
||||
echo "Cannot locate required $product firmware: not found at $firmware_file. Unable to build xsabin files"
|
||||
exit 1
|
||||
fi
|
||||
firmware_opts+=" --add-section SCHED_FIRMWARE:RAW:${firmware_file}"
|
||||
;;
|
||||
*)
|
||||
# All other firmware is deployed in its own package
|
||||
# Accommodate possible variations in firmware file name, as long as the file name contains the product name
|
||||
# During firmware upgrade, it is possible that both the old and the new firmware files are both present
|
||||
# (the old one may not be removed until after this script has run).
|
||||
# In this situation, the new firmware product, branch and version are provided as script arguments:
|
||||
# select the appropriate file here (if multiple files are found).
|
||||
firmware_files=()
|
||||
for globfile in $firmware_path/*; do
|
||||
if [[ -e "$globfile" ]] && [[ ! -d "$globfile" ]]; then
|
||||
globfilename=${globfile##*/}
|
||||
if [[ "$globfilename" == *"$product"* ]] || [[ "$globfilename" == *"$uc_product"* ]]; then
|
||||
firmware_files+=($globfile)
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if [[ "${#firmware_files[@]}" -eq 0 ]]; then
|
||||
echo "Cannot locate required $product firmware: not found at $firmware_path. Unable to build xsabin files"
|
||||
exit 1
|
||||
fi
|
||||
firmware_file=""
|
||||
if [[ "${#firmware_files[@]}" -gt 1 ]]; then
|
||||
IFS=$'\n'
|
||||
firmware_files=( $(sort -V <<<"${firmware_files[*]}") )
|
||||
unset IFS
|
||||
if [[ "$firmware_upgrade_product" == "$product" ]]; then
|
||||
firmware_file=""
|
||||
for fw_file in "${firmware_files[@]}"; do
|
||||
fw_filename=${fw_file##*/}
|
||||
if [[ "$fw_filename" == *"$firmware_upgrade_version"* ]]; then
|
||||
firmware_file=$fw_file
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [[ -z "$firmware_file" ]]; then
|
||||
firmware_file="${firmware_files[-1]}"
|
||||
fi
|
||||
# Select the correct xsabin section name, depending on the firmware product
|
||||
section=""
|
||||
case "$product" in
|
||||
"cmc")
|
||||
section="FIRMWARE"
|
||||
;;
|
||||
"sc-fw" | "sc")
|
||||
section="BMC-FW"
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognised firmware product name '$product', unable to select the correct xsabin section name"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
firmware_opts+=" --add-section ${section}:RAW:${firmware_file}"
|
||||
# The SC firmware (BMC-FW section) may have a metadata JSON file also to be added
|
||||
if [[ "$section" == "BMC-FW" && -e "$firmware_path/metadata.json" ]]; then
|
||||
firmware_opts+=" --add-section BMC-METADATA:JSON:${firmware_path}/metadata.json"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Extract vendor, board, name and version from partition_metadata.json, to build PlatformVBNV
|
||||
declare -A vbnv
|
||||
for element in {partition_vendor,partition_card,partition_family,partition_name,installed_package_version}; do
|
||||
line="$(grep $element $json)"
|
||||
if [[ -n "$line" ]]; then
|
||||
value=${line%\"*}
|
||||
value=${value##*\"}
|
||||
if [[ "$element" != "partition_vendor" ]] && [[ "$element" != "partition_card" ]]; then
|
||||
value=${value//-/_}
|
||||
fi
|
||||
else
|
||||
value="UNKNOWN"
|
||||
fi
|
||||
vbnv[$element]=$value
|
||||
done
|
||||
platform_vbnv="${vbnv[partition_vendor]}:${vbnv[partition_card]}:${vbnv[partition_family]}_${vbnv[partition_name]}:${vbnv[installed_package_version]}"
|
||||
|
||||
# Check for VBNV override in partition_metadata.json
|
||||
line="$(grep vbnv_override $json)"
|
||||
if [[ -n "$line" ]]; then
|
||||
value=${line%\"*}
|
||||
value=${value##*\"}
|
||||
# Check VBNV override value is correctly formatted (4 fields separated by colons)
|
||||
fields="$(echo "$value" | tr ':' ' ' | wc -w)"
|
||||
if [[ "$fields" == "4" ]]; then
|
||||
platform_vbnv=$value
|
||||
fi
|
||||
fi
|
||||
|
||||
# Use the XRT standard install path to find xclbinutil
|
||||
xclbinutil="${xclbinutil:-/opt/xilinx/xrt/bin/xclbinutil}"
|
||||
if [[ ! -e "$xclbinutil" ]]; then
|
||||
echo "xclbinutil tool not found at $xclbinutil, unable to build xsabin files"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
## Must source XRT's setup.sh to set up environment correctly
|
||||
#if [[ ! -e /opt/xilinx/xrt/setup.sh ]]; then
|
||||
# echo "XRT setup.sh not found at /opt/xilinx/xrt/setup.sh, XRT installation is bad. Cannot build xsabin files"
|
||||
# exit 1
|
||||
#fi
|
||||
#source /opt/xilinx/xrt/setup.sh
|
||||
|
||||
# Build xclbinutil options for creating xsabin files
|
||||
xclbinopts=" --force"
|
||||
if [[ -e "partition.mcs" ]]; then
|
||||
xclbinopts+=" --add-section MCS-PRIMARY:RAW:partition.mcs"
|
||||
fi
|
||||
if [[ -e "partition_secondary.mcs" ]]; then
|
||||
xclbinopts+=" --add-section MCS-SECONDARY:RAW:partition_secondary.mcs"
|
||||
fi
|
||||
if [[ -e "partition.bin" ]]; then
|
||||
xclbinopts+=" --add-section FLASH[BIN]-DATA:RAW:partition.bin"
|
||||
fi
|
||||
if [[ -e "bin_metadata.json" ]]; then
|
||||
xclbinopts+=" --add-section FLASH[BIN]-METADATA:JSON:bin_metadata.json"
|
||||
fi
|
||||
if [[ -e "partition.bit" ]]; then
|
||||
xclbinopts+=" --add-section BITSTREAM:RAW:partition.bit"
|
||||
fi
|
||||
if [[ -e "partition.pdi" ]]; then
|
||||
xclbinopts+=" --add-section PDI:RAW:partition.pdi"
|
||||
fi
|
||||
xclbinopts+=" --add-section PARTITION_METADATA:JSON:${json}"
|
||||
xclbinopts+=$firmware_opts
|
||||
xclbinopts+=" --key-value SYS:PlatformVBNV:${platform_vbnv}"
|
||||
|
||||
# Create partition.xsabin
|
||||
xsabin="partition.xsabin"
|
||||
xclbincmd="${xclbinutil} ${xclbinopts} --output $xsabin"
|
||||
echo $xclbincmd
|
||||
$xclbincmd
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "An error occurred while running xclbinutil"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -e "$xsabin" ]]; then
|
||||
echo "xclbinutil did not create output file $xsabin"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# And we're done
|
||||
echo "create_xsabin.sh completed successfully"
|
||||
75
m/raccoon/xilinx-fw.nix
Normal file
75
m/raccoon/xilinx-fw.nix
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, dpkg
|
||||
, fetchurl
|
||||
, xilinx-xrt
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
# Must read: https://xilinx.github.io/XRT/master/html/platforms_partitions.html#shell
|
||||
# Taken from:
|
||||
# - https://aur.archlinux.org/packages/xilinx-sc-fw-u280
|
||||
# - https://aur.archlinux.org/packages/xilinx-u280-gen3x16-xdma-base
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xilinx-fw";
|
||||
version = "1.3.5-3592445";
|
||||
srcs = [
|
||||
# List packages with: curl https://packages.xilinx.com/artifactory/debian-packages-cache/pool/
|
||||
(fetchurl {
|
||||
url = "https://packages.xilinx.com/artifactory/debian-packages-cache/pool/xilinx-cmc-u280_1.3.5-3592445_all.deb";
|
||||
hash = "sha256-H48bdeuBc9dK6LExMnw1RCfY85PKntBk/X8CMcAI+zI=";
|
||||
})
|
||||
(fetchurl {
|
||||
url = "https://packages.xilinx.com/artifactory/debian-packages-cache/pool/xilinx-sc-fw-u280_4.3.28-1.ea1b92f_all.deb";
|
||||
hash = "sha256-JxQal2IqYAgebAgfjs2noFG5ghxC9sJQFppJFUCx6jA=";
|
||||
})
|
||||
(fetchurl {
|
||||
url = "https://packages.xilinx.com/artifactory/debian-packages-cache/pool/xilinx-u280-gen3x16-xdma-base_1-3585717_all.deb";
|
||||
hash = "sha256-oe84YgmmRFZjNa63j0pIneuFUG0Bb4aA7wulyU4bCrY=";
|
||||
})
|
||||
(fetchurl {
|
||||
url = "https://packages.xilinx.com/artifactory/debian-packages-cache/pool/xilinx-u280-gen3x16-xdma-validate_1-3585755_all.deb";
|
||||
hash = "sha256-F+IAzR8NVc9FDsgQstpBcKeq3ogH1PI8nuq94sEExCg=";
|
||||
})
|
||||
# Needed for the ERT firmware
|
||||
(fetchurl {
|
||||
url = "https://packages.xilinx.com/artifactory/debian-packages-cache/pool/xrt_202320.2.16.204_22.04-amd64-xrt.deb";
|
||||
hash = "sha256-FEhzx2KlIYpunXmTSBjtyAtblbuz5tkvnt2qp21gUho=";
|
||||
})
|
||||
];
|
||||
|
||||
dontStrip = true;
|
||||
hardeningDisable = [ "all" ];
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
unpackPhase = ''
|
||||
for f in $srcs; do
|
||||
dpkg-deb -x "$f" deb
|
||||
done
|
||||
sourceRoot=deb
|
||||
'';
|
||||
# Generate the xsabin firmware file by fixing the original script
|
||||
buildPhase = ''
|
||||
set -x
|
||||
|
||||
ln -rs lib/firmware/xilinx/283bab8f654d8674968f4da57f7fa5d7 lib/firmware/xilinx/fb2b2c5a19ed63593fea95f51fbc8eb9
|
||||
ln -rs lib/firmware/xilinx/283bab8f654d8674968f4da57f7fa5d7/partition_metadata.json opt/xilinx/firmware/u280/gen3x16-xdma/base/partition_metadata.json
|
||||
ln -rs lib/firmware/xilinx/283bab8f654d8674968f4da57f7fa5d7/partition.xsabin opt/xilinx/firmware/u280/gen3x16-xdma/base/partition.xsabin
|
||||
ln -rs opt/xilinx/xrt/share/fw opt/xilinx/firmware/u280/gen3x16-xdma/base/firmware/ert-v30
|
||||
ln -rs opt/xilinx/firmware/cmc/u280 opt/xilinx/firmware/u280/gen3x16-xdma/base/firmware/cmc-u280
|
||||
ln -rs opt/xilinx/firmware/sc-fw/u280 opt/xilinx/firmware/u280/gen3x16-xdma/base/firmware/sc-fw-u280
|
||||
|
||||
find
|
||||
|
||||
export xclbinutil=${xilinx-xrt}/xrt/bin/xclbinutil
|
||||
cp -a ${./xilinx-create-xsabin.sh} opt/xilinx/firmware/u280/gen3x16-xdma/base/scripts/create_xsabin.sh
|
||||
bash -x opt/xilinx/firmware/u280/gen3x16-xdma/base/scripts/create_xsabin.sh xilinx-u280-gen3x16-xdma-base 1 3585717
|
||||
set +x
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -a * $out
|
||||
'';
|
||||
}
|
||||
27
m/raccoon/xilinx-xocl-depmod.patch
Normal file
27
m/raccoon/xilinx-xocl-depmod.patch
Normal file
@ -0,0 +1,27 @@
|
||||
--- a/driver/xocl/mgmtpf/Makefile 2025-02-20 15:59:28.379826176 +0100
|
||||
+++ b/driver/xocl/mgmtpf/Makefile 2025-02-20 15:59:42.366892140 +0100
|
||||
@@ -119,10 +119,6 @@ all:
|
||||
|
||||
install: all
|
||||
$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules_install
|
||||
- depmod -a
|
||||
- install -m 644 99-xclmgmt.rules /etc/udev/rules.d
|
||||
- -rmmod -s xclmgmt || true
|
||||
- -modprobe xclmgmt
|
||||
|
||||
clean:
|
||||
rm -rf *.o *.o.d *.o.cmd *~ core .depend .*.cmd *.ko *.ko.unsigned \
|
||||
--- a/driver/xocl/userpf/Makefile 2025-02-20 16:03:20.751922522 +0100
|
||||
+++ b/driver/xocl/userpf/Makefile 2025-02-20 16:03:35.377991553 +0100
|
||||
@@ -138,11 +138,6 @@ all:
|
||||
|
||||
install: all
|
||||
$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules_install
|
||||
- depmod -a
|
||||
- install -m 644 99-xocl.rules /etc/udev/rules.d
|
||||
- -rmmod -s xocl || true
|
||||
- -rmmod -s xdma || true
|
||||
- -modprobe xocl
|
||||
|
||||
clean:
|
||||
rm -rf *.o *.o.d *~ core .depend .*.cmd *.ko *.ko.unsigned *.mod.c \
|
||||
35
m/raccoon/xilinx-xocl.nix
Normal file
35
m/raccoon/xilinx-xocl.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, kernel
|
||||
, xilinx-xrt
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
# See: https://iotlab.sdsu.edu/index.php/flash-base-image-on-xilinx-alveo-u280/
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xilinx-xocl";
|
||||
version = "2.19.0";
|
||||
src = "${xilinx-xrt}/src/xrt-${version}";
|
||||
dontStrip = true;
|
||||
preBuild = ''
|
||||
cd driver/xocl
|
||||
'';
|
||||
patches = [
|
||||
./xilinx-xocl-depmod.patch
|
||||
];
|
||||
buildFlags = [ "KERNEL_SRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" ];
|
||||
installFlags = [
|
||||
"KERNEL_SRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||
"INSTALL_MOD_PATH=${placeholder "out"}"
|
||||
];
|
||||
postInstall = ''
|
||||
mkdir -p $out/etc/udev/rules.d
|
||||
install -m 644 userpf/99-xocl.rules $out/etc/udev/rules.d
|
||||
install -m 644 mgmtpf/99-xclmgmt.rules $out/etc/udev/rules.d
|
||||
'';
|
||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||
hardeningDisable = [ "all" ];
|
||||
}
|
||||
25
m/raccoon/xilinx-xrt-aiebu.patch
Normal file
25
m/raccoon/xilinx-xrt-aiebu.patch
Normal file
@ -0,0 +1,25 @@
|
||||
--- a/src/runtime_src/core/common/aiebu/src/cpp/aiebu/utils/asm/CMakeLists.txt
|
||||
+++ b/src/runtime_src/core/common/aiebu/src/cpp/aiebu/utils/asm/CMakeLists.txt
|
||||
@@ -23,8 +23,6 @@ add_executable(aiebu-asm $<TARGET_OBJECTS:aiebu_asm_objects>)
|
||||
target_link_libraries(aiebu-asm PRIVATE aiebu_static)
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
- target_link_options(aiebu-asm PRIVATE "-static")
|
||||
- set_target_properties(aiebu-asm PROPERTIES INSTALL_RPATH "" BUILD_RPATH "")
|
||||
|
||||
# Create a dynamically linked executable. aiebu-asm-dyn, on Linux for running
|
||||
# valgrind, etc. This binary is not released for deployment but only used for
|
||||
@@ -35,13 +33,6 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
target_link_libraries(aiebu-asm-dyn PRIVATE aiebu_static)
|
||||
endif()
|
||||
|
||||
-# This custom target fails if aiebu-asm has any dynamic dependencies
|
||||
-add_custom_target(check_dynamic_deps ALL
|
||||
- COMMAND ${CMAKE_COMMAND} -E echo "Checking for dynamic dependencies ..."
|
||||
- COMMAND ${CMAKE_COMMAND} -P "${AIEBU_SOURCE_DIR}/cmake/depends.cmake" $<TARGET_FILE:aiebu-asm> aiebu-asm_depends.txt
|
||||
- DEPENDS aiebu-asm
|
||||
- )
|
||||
-
|
||||
install(TARGETS aiebu-asm
|
||||
RUNTIME DESTINATION ${AIEBU_INSTALL_BIN_DIR}
|
||||
CONFIGURATIONS Debug Release COMPONENT Runtime
|
||||
13
m/raccoon/xilinx-xrt-icd.patch
Normal file
13
m/raccoon/xilinx-xrt-icd.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/CMake/icd.cmake b/src/CMake/icd.cmake
|
||||
index 255a2e3d8..460a6d4c7 100644
|
||||
--- a/src/CMake/icd.cmake
|
||||
+++ b/src/CMake/icd.cmake
|
||||
@@ -10,7 +10,7 @@ configure_file (
|
||||
${ICD_FILE_NAME}
|
||||
)
|
||||
|
||||
-set(OCL_ICD_INSTALL_PREFIX "/etc/OpenCL/vendors")
|
||||
+set(OCL_ICD_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/etc/OpenCL/vendors")
|
||||
|
||||
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ICD_FILE_NAME}
|
||||
DESTINATION ${OCL_ICD_INSTALL_PREFIX}
|
||||
204
m/raccoon/xilinx-xrt-u280-support.patch
Normal file
204
m/raccoon/xilinx-xrt-u280-support.patch
Normal file
@ -0,0 +1,204 @@
|
||||
From 6f64871f2e679ad5d3b140c8a2732edaae2dcf6a Mon Sep 17 00:00:00 2001
|
||||
From: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
|
||||
Date: Thu, 20 Feb 2025 18:49:54 +0100
|
||||
Subject: [PATCH] Revert "Removed support for u50lv, u55n and u280 platforms in
|
||||
XRT (#7901)"
|
||||
|
||||
This reverts commit 41f4221433c6b173316b61cb2e7e3ee5152d8075.
|
||||
---
|
||||
.../core/pcie/driver/linux/xocl/devices.h | 103 ++++++++++++++++++
|
||||
1 file changed, 103 insertions(+)
|
||||
|
||||
diff --git a/src/runtime_src/core/pcie/driver/linux/xocl/devices.h b/src/runtime_src/core/pcie/driver/linux/xocl/devices.h
|
||||
index 971ad73d2..5fe329cfa 100644
|
||||
--- a/src/runtime_src/core/pcie/driver/linux/xocl/devices.h
|
||||
+++ b/src/runtime_src/core/pcie/driver/linux/xocl/devices.h
|
||||
@@ -2064,6 +2064,14 @@ struct xocl_subdev_map {
|
||||
.subdev_num = ARRAY_SIZE(USER_RES_DSA52), \
|
||||
}
|
||||
|
||||
+#define XOCL_BOARD_USER_DSA52_U280 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = 0, \
|
||||
+ .subdev_info = USER_RES_DSA52, \
|
||||
+ .subdev_num = ARRAY_SIZE(USER_RES_DSA52), \
|
||||
+ .p2p_bar_sz = 64, \
|
||||
+ }
|
||||
+
|
||||
#define XOCL_BOARD_USER_SMARTN \
|
||||
(struct xocl_board_private){ \
|
||||
.flags = XOCL_DSAFLAG_SMARTN, \
|
||||
@@ -2370,6 +2378,30 @@ struct xocl_subdev_map {
|
||||
.flash_type = FLASH_TYPE_SPI, \
|
||||
}
|
||||
|
||||
+
|
||||
+#define MGMT_RES_XBB_DSA52_U280 \
|
||||
+ ((struct xocl_subdev_info []) { \
|
||||
+ XOCL_DEVINFO_FEATURE_ROM, \
|
||||
+ XOCL_DEVINFO_PRP_IORES_MGMT, \
|
||||
+ XOCL_DEVINFO_AXIGATE_ULP, \
|
||||
+ XOCL_DEVINFO_CLOCK_HBM, \
|
||||
+ XOCL_DEVINFO_AF_DSA52, \
|
||||
+ XOCL_DEVINFO_XMC, \
|
||||
+ XOCL_DEVINFO_XVC_PRI, \
|
||||
+ XOCL_DEVINFO_MAILBOX_MGMT, \
|
||||
+ XOCL_DEVINFO_ICAP_MGMT, \
|
||||
+ XOCL_DEVINFO_FMGR, \
|
||||
+ XOCL_DEVINFO_FLASH, \
|
||||
+ })
|
||||
+
|
||||
+#define XOCL_BOARD_MGMT_XBB_DSA52_U280 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = 0, \
|
||||
+ .subdev_info = MGMT_RES_XBB_DSA52_U280, \
|
||||
+ .subdev_num = ARRAY_SIZE(MGMT_RES_XBB_DSA52_U280), \
|
||||
+ .flash_type = FLASH_TYPE_SPI, \
|
||||
+ }
|
||||
+
|
||||
#define MGMT_RES_XBB_SMARTN \
|
||||
((struct xocl_subdev_info []) { \
|
||||
XOCL_DEVINFO_FEATURE_ROM_SMARTN, \
|
||||
@@ -2772,6 +2804,24 @@ struct xocl_subdev_map {
|
||||
.board_name = "u50" \
|
||||
}
|
||||
|
||||
+#define XOCL_BOARD_U55N_USER_RAPTOR2 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
+ .board_name = "u55n", \
|
||||
+ .subdev_info = RES_USER_VSEC, \
|
||||
+ .subdev_num = ARRAY_SIZE(RES_USER_VSEC), \
|
||||
+ }
|
||||
+
|
||||
+#define XOCL_BOARD_U55N_MGMT_RAPTOR2 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
+ .subdev_info = RES_MGMT_VSEC, \
|
||||
+ .subdev_num = ARRAY_SIZE(RES_MGMT_VSEC), \
|
||||
+ .flash_type = FLASH_TYPE_SPI, \
|
||||
+ .board_name = "u55n", \
|
||||
+ .vbnv = "xilinx_u55n" \
|
||||
+ }
|
||||
+
|
||||
#define XOCL_BOARD_U55C_USER_RAPTOR2 \
|
||||
(struct xocl_board_private){ \
|
||||
.flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
@@ -2790,6 +2840,24 @@ struct xocl_subdev_map {
|
||||
.vbnv = "xilinx_u55c" \
|
||||
}
|
||||
|
||||
+#define XOCL_BOARD_U50LV_USER_RAPTOR2 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
+ .board_name = "u50lv", \
|
||||
+ .subdev_info = RES_USER_VSEC, \
|
||||
+ .subdev_num = ARRAY_SIZE(RES_USER_VSEC), \
|
||||
+ }
|
||||
+
|
||||
+#define XOCL_BOARD_U50LV_MGMT_RAPTOR2 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
+ .subdev_info = RES_MGMT_VSEC, \
|
||||
+ .subdev_num = ARRAY_SIZE(RES_MGMT_VSEC), \
|
||||
+ .flash_type = FLASH_TYPE_SPI, \
|
||||
+ .board_name = "u50lv", \
|
||||
+ .vbnv = "xilinx_u50lv" \
|
||||
+ }
|
||||
+
|
||||
#define XOCL_BOARD_U50C_USER_RAPTOR2 \
|
||||
(struct xocl_board_private){ \
|
||||
.flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
@@ -2834,6 +2902,14 @@ struct xocl_subdev_map {
|
||||
.p2p_bar_sz = 64, \
|
||||
}
|
||||
|
||||
+#define XOCL_BOARD_U280_USER_RAPTOR2 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
+ .subdev_info = RES_USER_VSEC, \
|
||||
+ .subdev_num = ARRAY_SIZE(RES_USER_VSEC), \
|
||||
+ .board_name = "u280", \
|
||||
+ }
|
||||
+
|
||||
#define XOCL_BOARD_U250_MGMT_RAPTOR2 \
|
||||
(struct xocl_board_private){ \
|
||||
.flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
@@ -2843,6 +2919,15 @@ struct xocl_subdev_map {
|
||||
.board_name = "u250" \
|
||||
}
|
||||
|
||||
+#define XOCL_BOARD_U280_MGMT_RAPTOR2 \
|
||||
+ (struct xocl_board_private){ \
|
||||
+ .flags = XOCL_DSAFLAG_DYNAMIC_IP, \
|
||||
+ .subdev_info = RES_MGMT_VSEC, \
|
||||
+ .subdev_num = ARRAY_SIZE(RES_MGMT_VSEC), \
|
||||
+ .flash_type = FLASH_TYPE_SPI, \
|
||||
+ .board_name = "u280" \
|
||||
+ }
|
||||
+
|
||||
#define XOCL_BOARD_VERSAL_USER_RAPTOR2 \
|
||||
(struct xocl_board_private){ \
|
||||
.flags = XOCL_DSAFLAG_DYNAMIC_IP | \
|
||||
@@ -3435,6 +3520,8 @@ struct xocl_subdev_map {
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x6A8F, 0x4353, MGMT_6A8F_DSA52) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5000, PCI_ANY_ID, MGMT_XBB_DSA52_U200) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5004, PCI_ANY_ID, MGMT_XBB_DSA52) }, \
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x5008, PCI_ANY_ID, MGMT_XBB_DSA52_U280) },\
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x500C, PCI_ANY_ID, MGMT_XBB_DSA52_U280) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5020, PCI_ANY_ID, MGMT_U50) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5028, PCI_ANY_ID, MGMT_VERSAL) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5044, PCI_ANY_ID, MGMT_VERSAL) }, \
|
||||
@@ -3448,7 +3535,9 @@ struct xocl_subdev_map {
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5078, PCI_ANY_ID, VERSAL_MGMT_RAPTOR2) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5050, PCI_ANY_ID, MGMT_U25) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x504E, PCI_ANY_ID, U26Z_MGMT_RAPTOR2) }, \
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x5058, PCI_ANY_ID, U55N_MGMT_RAPTOR2) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x505C, PCI_ANY_ID, U55C_MGMT_RAPTOR2) },\
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x5060, PCI_ANY_ID, U50LV_MGMT_RAPTOR2) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x506C, PCI_ANY_ID, U50C_MGMT_RAPTOR2) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5074, PCI_ANY_ID, X3522PV_MGMT_RAPTOR2) }, \
|
||||
{ XOCL_PCI_DEVID(0x13FE, 0x006C, PCI_ANY_ID, MGMT_6A8F) }, \
|
||||
@@ -3457,6 +3546,8 @@ struct xocl_subdev_map {
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0xF987, PCI_ANY_ID, XBB_MFG("samsung_efuse")) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0xD000, PCI_ANY_ID, XBB_MFG("u200")) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0xD004, PCI_ANY_ID, XBB_MFG("u250")) },\
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0xD008, PCI_ANY_ID, XBB_MFG("u280-es1")) }, \
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0xD00C, PCI_ANY_ID, XBB_MFG("u280")) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0xD030, PCI_ANY_ID, XBB_MFG("poc1465")) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0xD020, PCI_ANY_ID, XBB_MFG_U50) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0xD03C, PCI_ANY_ID, XBB_MFG_U30) }, \
|
||||
@@ -3495,11 +3586,15 @@ struct xocl_subdev_map {
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x7990, 0x4352, USER_DSA52) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5001, PCI_ANY_ID, USER_DSA52) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5005, PCI_ANY_ID, USER_DSA52) }, \
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x5009, PCI_ANY_ID, USER_DSA52_U280) }, \
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x500D, PCI_ANY_ID, USER_DSA52_U280) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5021, PCI_ANY_ID, USER_U50) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5051, PCI_ANY_ID, USER_U25) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x504F, PCI_ANY_ID, U26Z_USER_RAPTOR2) }, \
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x513D, PCI_ANY_ID, U30_USER_RAPTOR2) }, \
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x5059, PCI_ANY_ID, U55N_USER_RAPTOR2) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x505D, PCI_ANY_ID, U55C_USER_RAPTOR2) },\
|
||||
+ { XOCL_PCI_DEVID(0x10EE, 0x5061, PCI_ANY_ID, U50LV_USER_RAPTOR2) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x506D, PCI_ANY_ID, U50C_USER_RAPTOR2) },\
|
||||
{ XOCL_PCI_DEVID(0x10EE, 0x5075, PCI_ANY_ID, X3522PV_USER_RAPTOR2) }, \
|
||||
{ XOCL_PCI_DEVID(0x13FE, 0x0065, PCI_ANY_ID, USER_XDMA) }, \
|
||||
@@ -3561,6 +3656,14 @@ struct xocl_subdev_map {
|
||||
.vbnv = "xilinx_u250", \
|
||||
.priv_data = &XOCL_BOARD_U250_MGMT_RAPTOR2, \
|
||||
.type = XOCL_DSAMAP_RAPTOR2 }, \
|
||||
+ { 0x10EE, 0x500D, PCI_ANY_ID, \
|
||||
+ .vbnv = "xilinx_u280", \
|
||||
+ .priv_data = &XOCL_BOARD_U280_USER_RAPTOR2, \
|
||||
+ .type = XOCL_DSAMAP_RAPTOR2 }, \
|
||||
+ { 0x10EE, 0x500C, PCI_ANY_ID, \
|
||||
+ .vbnv = "xilinx_u280", \
|
||||
+ .priv_data = &XOCL_BOARD_U280_MGMT_RAPTOR2, \
|
||||
+ .type = XOCL_DSAMAP_RAPTOR2 }, \
|
||||
{ 0x10EE, 0x5020, PCI_ANY_ID, \
|
||||
.vbnv = "xilinx_u50", \
|
||||
.priv_data = &XOCL_BOARD_U50_MGMT_RAPTOR2, \
|
||||
--
|
||||
2.45.2
|
||||
|
||||
74
m/raccoon/xilinx-xrt.nix
Normal file
74
m/raccoon/xilinx-xrt.nix
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
stdenv
|
||||
, fetchFromGitHub
|
||||
, enableDebug ? false
|
||||
, lib
|
||||
, cmake
|
||||
, pkg-config
|
||||
, libdrm
|
||||
, libelf
|
||||
, opencl-headers
|
||||
, ocl-icd
|
||||
, git
|
||||
, boost
|
||||
, ncurses
|
||||
, openssl
|
||||
, rapidjson
|
||||
, protobuf
|
||||
, python3
|
||||
, libuuid
|
||||
, curl
|
||||
, libsystemtap
|
||||
, libxcrypt
|
||||
, udev
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "xilinx-xrt";
|
||||
version = "dc81a9cc";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Xilinx";
|
||||
repo = "XRT";
|
||||
rev = "dc81a9cc852bf44e71aa3edde7c8f7d54f355eab";
|
||||
hash = "sha256-SG1gIO8Bvgs5XQ7HswjWNavPH+m8xHXqauztuJa6aEo=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
dontStrip = true;
|
||||
patches = [
|
||||
./xilinx-xrt-aiebu.patch
|
||||
./xilinx-xrt-icd.patch
|
||||
./xilinx-xrt-u280-support.patch
|
||||
];
|
||||
cmakeFlags = [
|
||||
"-DXRT_INSTALL_PREFIX=${placeholder "out"}"
|
||||
"-DXRT_INSTALL_DIR=${placeholder "out"}"
|
||||
"-DXRT_NATIVE_BUILD=yes"
|
||||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
|
||||
# Enable debug
|
||||
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
#"-DCMAKE_BUILD_TYPE=Debug"
|
||||
#"-DXOCL_VERBOSE=1"
|
||||
#"-DXRT_VERBOSE=1"
|
||||
];
|
||||
# A directory named "build" already exists
|
||||
cmakeBuildDir = "the-build";
|
||||
|
||||
# Replace all occurences of /usr to $out, although some are not correct. By
|
||||
# default they are replaced by /var/empty
|
||||
dontFixCmake = true;
|
||||
preConfigure = ''
|
||||
find "." -type f \( -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print |
|
||||
while read fn; do
|
||||
sed -e 's^/usr\([ /]\|$\)^'$out'\1^g' -e 's^/opt\([ /]\|$\)^'$out'\1^g' < "$fn" > "$fn.tmp"
|
||||
mv "$fn.tmp" "$fn"
|
||||
done
|
||||
'';
|
||||
nativeBuildInputs = [ cmake pkg-config git ];
|
||||
buildInputs = [ libdrm.dev opencl-headers ocl-icd boost.dev ncurses
|
||||
openssl.dev rapidjson protobuf python3 libelf libuuid.dev curl.dev
|
||||
libsystemtap libxcrypt udev.out udev.dev
|
||||
];
|
||||
hardeningDisable = [ "all" ];
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user