From patchwork Wed Nov 20 00:02:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aaron Jauregui X-Patchwork-Id: 2013397 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtM6x6ZGnz1yCg for ; Wed, 20 Nov 2024 11:04:41 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1tDYCv-00017o-L3; Wed, 20 Nov 2024 00:04:33 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1tDYCt-00017K-AF for kernel-team@lists.ubuntu.com; Wed, 20 Nov 2024 00:04:31 +0000 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id E20CC3F167 for ; Wed, 20 Nov 2024 00:04:30 +0000 (UTC) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-212583a884bso9153365ad.3 for ; Tue, 19 Nov 2024 16:04:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732061069; x=1732665869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KiSRZ0B6G86TOTPPX2+wY4Rlk3SHx4mwCKnVce9HYko=; b=ZbtipnOiV3ytD0R2wb4ohw+ZfZtSdsBZIbWLHj4vKrAgldNX9c5HhqNOpY5bN0rs/7 FgB0tcIfFdPDsW7RhhviHIsiPJZhfnjhiAzhMoeQoQxodYg1/mUWodWfFLI0HAn7sDjP ZZra3mmXZAtd+YDJ3BOgTuNCW9YmBCgWxCTtEjOX8Q6wgHB+UvJkE6Q6P4qrStngTjzo BABrLLy2VKAfXu9o9KRexDauw954qODK2yeUT2fVr07XkPz+Jf62luTLBkYeIM+rLuNc 8JhfxSLi+Vkm2mobUVAa4vdOP4cT5vaWtlR0GZcl2RI5o1pEqBY3iT9EmCKQzUj12wPW ENFg== X-Gm-Message-State: AOJu0YxND9rpXrH1yyfk5NS1D2A4rTwnQo7Hq9VEw6RzueMRryvGschG q3dvf3x1VuaZPaR9BBbbYGdsUI5i17sI++P6orfSqza0ovB2Z2eu2GhQ93zVETe7+uJkM/4RizV I6YfeCdTbvQGCfqRH2p81+xoiimV7eYljyhHPXKMJ1ZlqN+4sEL2fRCVD160aD7FIYVz0k/oeBA kRZTs5kMsbcQ== X-Received: by 2002:a17:903:178f:b0:20c:bff7:2e5f with SMTP id d9443c01a7336-2126a34a3cemr9391785ad.13.1732061069266; Tue, 19 Nov 2024 16:04:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IEHZgv6Iqce5yTvdaVyfdpUjx08bVXkieHNCq7BZJ+PnzZkIpx7HvJtt7NYbWDFklARGKdmlA== X-Received: by 2002:a17:903:178f:b0:20c:bff7:2e5f with SMTP id d9443c01a7336-2126a34a3cemr9391455ad.13.1732061068859; Tue, 19 Nov 2024 16:04:28 -0800 (PST) Received: from localhost ([58.84.136.157]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-211d0f6132bsm78411085ad.280.2024.11.19.16.04.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 16:04:28 -0800 (PST) From: Aaron Jauregui To: kernel-team@lists.ubuntu.com Subject: [canonical-kernel-snaps][RFC PATCH 1/1] nvidia hooks: add hooks for nvidia kernel components Date: Wed, 20 Nov 2024 11:02:12 +1100 Message-ID: <20241120000421.2961549-2-aaron.jauregui@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241120000421.2961549-1-aaron.jauregui@canonical.com> References: <20241120000421.2961549-1-aaron.jauregui@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2088970 Add required hooks for kernel components. module install and remove hooks should be generic with a special case for nouveau to be compatible with nvidia drivers. Also adding kernel-gpu-2404 mangler script, meant to set nvidia library paths for nvidia-550-user. Signed-off-by: Aaron Jauregui --- hooks/install.module | 21 +++++++++++++++++++++ hooks/install.nvidia-ko | 25 +++++++++++++++++++++++++ hooks/install.nvidia-user | 18 ++++++++++++++++++ hooks/install.pc-kernel | 4 ++++ hooks/kernel-gpu-2404-provider-mangler | 12 ++++++++++++ hooks/remove.module | 13 +++++++++++++ hooks/remove.nvidia-ko | 6 ++++++ hooks/remove.nvidia-user | 10 ++++++++++ 8 files changed, 109 insertions(+) create mode 100644 hooks/install.module create mode 100644 hooks/install.nvidia-ko create mode 100644 hooks/install.nvidia-user create mode 100644 hooks/install.pc-kernel create mode 100644 hooks/kernel-gpu-2404-provider-mangler create mode 100644 hooks/remove.module create mode 100644 hooks/remove.nvidia-ko create mode 100644 hooks/remove.nvidia-user diff --git a/hooks/install.module b/hooks/install.module new file mode 100644 index 0000000..739c513 --- /dev/null +++ b/hooks/install.module @@ -0,0 +1,21 @@ +#!/bin/bash +# Generic install hook for kernel modules + +set -eux + +name="$(echo $SNAP_COMPONENT_NAME | cut -d+ -f2)" + +# nouveau needs a special case to override nvidia modules +if [ "$name" = "nouveau" ] ; then + dest="$SNAP_DATA/modules/$(uname -r)/graphics" +else + dest="$SNAP_DATA/modules/$(uname -r)/$name" +fi + + +#clean up existing modules +rm -rf "$dest" +mkdir -p "$dest" + +find "$SNAP_COMPONENT" -name '*.ko' -exec cp '{}' "$dest" \; +find "$SNAP_COMPONENT" -name '*.ko.zst' -exec cp '{}' "$dest" \; diff --git a/hooks/install.nvidia-ko b/hooks/install.nvidia-ko new file mode 100644 index 0000000..c4b5285 --- /dev/null +++ b/hooks/install.nvidia-ko @@ -0,0 +1,25 @@ +#!/bin/bash +# install hook for nvidia drivers that require assembling + +set -eux + +# First setup the kernel modules +tmp_dir="/tmp/nvidia-ko" +rm -rf $tmp_dir +mkdir $tmp_dir +cp -r "$SNAP_COMPONENT"/bits $tmp_dir/bits + +cd $tmp_dir/bits + +sed -i "s|/usr/bin/ld.bfd|$SNAP_COMPONENT/bin/ld.bfd|" BUILD +sed -i "s|make|$SNAP_COMPONENT/bin/make|" BUILD + +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SNAP_COMPONENT/lib/$(uname -m)-linux-gnu sh BUILD + +# Clean up directory before copying modules +rm -rf "$SNAP_DATA/modules/$(uname -r)/graphics" +mkdir -p "$SNAP_DATA/modules/$(uname -r)/graphics" + +mv ../*.ko "$SNAP_DATA/modules/$(uname -r)/graphics/" + +rm -rf $tmp_dir diff --git a/hooks/install.nvidia-user b/hooks/install.nvidia-user new file mode 100644 index 0000000..176dc35 --- /dev/null +++ b/hooks/install.nvidia-user @@ -0,0 +1,18 @@ +#!/bin/bash +# install hook for nvidia userspace drivers + +set -eux + +# Now setup the userspace libraries via kernel-gpu-2404 interface +SENTINEL_FILE="$SNAP_COMMON"/kernel-gpu-2404/kernel-gpu-2404-sentinel + +mkdir -p "$SNAP_COMMON"/kernel-gpu-2404 + +# Clean up existing installs +rm -rf "$SNAP_COMMON"/kernel-gpu-2404/* + +cp -r "$SNAP_COMPONENT"/usr "$SNAP_COMMON"/kernel-gpu-2404 +cp "$SNAP_COMPONENT"/kernel-gpu-2404-provider-mangler "$SNAP_COMMON"/kernel-gpu-2404 + +# put version information into sentinel file +echo "$SNAP_COMPONENT_REVISION" > $SENTINEL_FILE diff --git a/hooks/install.pc-kernel b/hooks/install.pc-kernel new file mode 100644 index 0000000..32f3a78 --- /dev/null +++ b/hooks/install.pc-kernel @@ -0,0 +1,4 @@ +#!/bin/bash + +#install nouveau graphics as default +snapctl install +nouveau diff --git a/hooks/kernel-gpu-2404-provider-mangler b/hooks/kernel-gpu-2404-provider-mangler new file mode 100644 index 0000000..ea032fd --- /dev/null +++ b/hooks/kernel-gpu-2404-provider-mangler @@ -0,0 +1,12 @@ +#!/bin/bash + + +ARCH_TRIPLET="$(arch)-linux-gnu" + +export OCL_ICD_VENDORS=${OCL_ICD_VENDORS:+$OCL_ICD_VENDORS:}${COMPONENT_PATH}/etc/OpenCL/vendors +export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}${COMPONENT_PATH}/usr/lib/${ARCH_TRIPLET} +export __EGL_VENDOR_LIBRARY_DIRS=${__EGL_VENDOR_LIBRARY_DIRS:+$__EGL_VENDOR_LIBRARY_DIRS:}${COMPONENT_PATH}/usr/share/glvnd/egl_vendor.d +export __EGL_EXTERNAL_PLATFORM_CONFIG_DIRS=${__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:+$__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:}${COMPONENT_PATH}/usr/share/egl/egl_external_platform.d +export VK_LAYER_PATH=${VK_LAYER_PATH:+$VK_LAYER_PATH:}${COMPONENT_PATH}/usr/share/vulkan/implicit_layer.d/ +export XDG_DATA_DIRS=${XDG_DATA_DIRS:+$XDG_DATA_DIRS:}${COMPONENT_PATH}/usr/share +export NVIDIA_DRIVER_ROOT=${COMPONENT_PATH} diff --git a/hooks/remove.module b/hooks/remove.module new file mode 100644 index 0000000..619bedf --- /dev/null +++ b/hooks/remove.module @@ -0,0 +1,13 @@ +#!/bin/bash +# Generic remove hook for kernel modules + +set -eux + +name="$(echo $SNAP_COMPONENT_NAME | cut -d+ -f2)" +if [ "$name" = "nouveau" ] ; then + dest="$SNAP_DATA/modules/$(uname -r)/graphics" +else + dest="$SNAP_DATA/modules/$(uname -r)/$name" +fi + +rm -rf "$dest" diff --git a/hooks/remove.nvidia-ko b/hooks/remove.nvidia-ko new file mode 100644 index 0000000..5e2831d --- /dev/null +++ b/hooks/remove.nvidia-ko @@ -0,0 +1,6 @@ +#!/bin/bash +# Generic remove hook for kernel modules + +set -eux + +rm -rf "$SNAP_DATA/modules/$(uname -r)/graphics" diff --git a/hooks/remove.nvidia-user b/hooks/remove.nvidia-user new file mode 100644 index 0000000..d7242b8 --- /dev/null +++ b/hooks/remove.nvidia-user @@ -0,0 +1,10 @@ +#!/bin/bash +# Remove hook for nvidia drivers + +set -eux + +SENTINEL_FILE="$SNAP_COMMON"/kernel-gpu-2404/kernel-gpu-2404-sentinel + +rm $SENTINEL_FILE + +rm -rf "$SNAP_COMMON"/kernel-gpu-2404/*