~ruther/guix-local

412d99a657ba0974a60dbfaf46ba807da7a3589e — Maxim Cournoyer 2 years ago afacfa3
gnu: linux-libre-with-bpf: Deprecate in favor of linux-libre.

The kernel has progressively enabled the BPF settings, to the point where
having a separate kernel for it makes little sense, so repatriate the few
non-default BPF-related configs to our main kernel.

* gnu/packages/linux.scm (%bpf-extra-linux-options): Delete variable.
(default-extra-linux-options): Enable CONFIG_NET_CLS_BPF and
CONFIG_NET_ACT_BPF.  CONFIG_IKHEADERS is dropped as it adds 4 MiB to the
kernel image and appears somewhat redundant with BTF debug info.
(linux-libre-with-bpf): Deprecate to linux-libre.

Change-Id: Id672241916dcbcdca7cbc16d869d00223446cd3d
1 files changed, 3 insertions(+), 43 deletions(-)

M gnu/packages/linux.scm
M gnu/packages/linux.scm => gnu/packages/linux.scm +3 -43
@@ 874,6 874,8 @@ ARCH and optionally VARIANT, or #f if there is no such configuration."
    ,@(if (version>=? version "5.13")
          '(("BPF_UNPRIV_DEFAULT_OFF" . #t))
          '())
    ("CONFIG_NET_CLS_BPF" . m)         ;classify packets based on BPF filters
    ("CONFIG_NET_ACT_BPF" . m)         ;to execute BPF code on packets
    ;; Compress kernel modules via Zstd.
    ,(if (version>=? version "5.13")
         '("CONFIG_MODULE_COMPRESS_ZSTD" . #t)


@@ 930,30 932,6 @@ ARCH and optionally VARIANT, or #f if there is no such configuration."
    ("CONFIG_CIFS" . m)
    ("CONFIG_9P_FS" . m)))

;; See https://github.com/iovisor/bcc/blob/master/INSTALL.md#kernel-configuration
(define %bpf-extra-linux-options
  `(;; Needed for probes
    ("CONFIG_UPROBE_EVENTS" . #t)
    ("CONFIG_KPROBE_EVENTS" . #t)
    ;; kheaders module also helpful for tracing
    ("CONFIG_IKHEADERS" . #t)
    ("CONFIG_BPF" . #t)
    ("CONFIG_BPF_SYSCALL" . #t)
    ("CONFIG_BPF_JIT_ALWAYS_ON" . #t)
    ;; optional, for tc filters
    ("CONFIG_NET_CLS_BPF" . m)
    ;; optional, for tc actions
    ("CONFIG_NET_ACT_BPF" . m)
    ("CONFIG_BPF_JIT" . #t)
    ;; for Linux kernel versions 4.1 through 4.6
    ;; ("CONFIG_HAVE_BPF_JIT" . y)
    ;; for Linux kernel versions 4.7 and later
    ("CONFIG_HAVE_EBPF_JIT" . #t)
    ;; optional, for kprobes
    ("CONFIG_BPF_EVENTS" . #t)
    ;; kheaders module
    ("CONFIG_IKHEADERS" . #t)))

(define (config->string options)
  (string-join (map (match-lambda
                      ((option . 'm)


@@ 1431,25 1409,7 @@ Linux kernel.  It has been modified to remove all non-free binary blobs.")
                      (default-extra-linux-options linux-libre-version))))

(define-public linux-libre-with-bpf
  (let ((base-linux-libre
         (make-linux-libre*
          linux-libre-6.8-version
          linux-libre-6.8-gnu-revision
          linux-libre-6.8-source
          '("x86_64-linux" "i686-linux" "armhf-linux"
            "aarch64-linux" "powerpc64le-linux" "riscv64-linux")
          #:extra-version "bpf"
          #:configuration-file kernel-config
          #:extra-options
          (append %bpf-extra-linux-options
                  (default-extra-linux-options linux-libre-6.8-version)))))
    (package
      (inherit base-linux-libre)
      (inputs (modify-inputs (package-inputs base-linux-libre)
                (prepend cpio)))
      (synopsis "Linux-libre with BPF support")
      (description "This package provides GNU Linux-Libre with support
for @acronym{BPF, the Berkeley Packet Filter}."))))
  (deprecated-package "linux-libre-with-bpf" linux-libre))


;;;