Compare commits
35 Commits
2025.07.03
...
master
Author | SHA1 | Date |
---|---|---|
![]() |
357800bf2c | |
![]() |
621e2908e1 | |
![]() |
9ca54e7ad9 | |
![]() |
8094d3edc8 | |
![]() |
ff49d85c38 | |
![]() |
3b011cffdc | |
![]() |
19dd147bdc | |
![]() |
61890b868c | |
![]() |
6f560d9097 | |
![]() |
cfe9d78f8d | |
![]() |
4f2083a006 | |
![]() |
1faa77ffe8 | |
![]() |
b8ca156d2a | |
![]() |
ac2246ab77 | |
![]() |
4bf62ee92e | |
![]() |
22b5aa42d5 | |
![]() |
7e606e6032 | |
![]() |
5d061c0ee2 | |
![]() |
686d7e6564 | |
![]() |
19aec99a72 | |
![]() |
d0ad15850a | |
![]() |
6a09c0e7b6 | |
![]() |
5ba2477efc | |
![]() |
35a2a72945 | |
![]() |
fecdae6f70 | |
![]() |
9cfb1a8675 | |
![]() |
43ff3d088e | |
![]() |
8d4a9a6e80 | |
![]() |
2037a4c322 | |
![]() |
da244b7cff | |
![]() |
99c9bec115 | |
![]() |
4db66423a9 | |
![]() |
fdb0813830 | |
![]() |
b683d4dec3 | |
![]() |
4c8f475d73 |
|
@ -1,7 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
# install OS prerequisites
|
||||
dpkg --add-architecture i386
|
||||
apt update
|
||||
apt install -y autoconf automake autotools-dev curl python3 python3-pip python3-tomli libmpc-dev libmpfr-dev \
|
||||
libgmp-dev gawk build-essential bison flex texinfo gperf libtool \
|
||||
|
|
|
@ -0,0 +1,199 @@
|
|||
name: Build
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
artifact-name:
|
||||
description: "Named identifier for the artifact, optional"
|
||||
type: string
|
||||
os:
|
||||
description: "OS list"
|
||||
type: string
|
||||
default: '["ubuntu-22.04","ubuntu-24.04"]'
|
||||
mode:
|
||||
description: "Mode list"
|
||||
type: string
|
||||
default: '["newlib","linux","musl","uclibc"]'
|
||||
target:
|
||||
description: "Target list"
|
||||
type: string
|
||||
default: '["rv32gc-ilp32d","rv64gc-lp64d"]'
|
||||
compiler:
|
||||
description: "Compiler list"
|
||||
type: string
|
||||
default: '["gcc","llvm"]'
|
||||
cmodel:
|
||||
description: "C model list"
|
||||
type: string
|
||||
default: '[""]'
|
||||
languages:
|
||||
description: "Languages list"
|
||||
type: string
|
||||
default: '[""]'
|
||||
sim:
|
||||
description: "Simulator"
|
||||
type: string
|
||||
default: '[""]'
|
||||
|
||||
env:
|
||||
submodule_paths: |
|
||||
binutils
|
||||
dejagnu
|
||||
gcc
|
||||
gdb
|
||||
glibc
|
||||
llvm
|
||||
musl
|
||||
newlib
|
||||
pk
|
||||
qemu
|
||||
spike
|
||||
uclibc-ng
|
||||
.git/modules
|
||||
|
||||
jobs:
|
||||
report:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Report inputs
|
||||
run: |
|
||||
echo "Artifact name: ${{ inputs.artifact-name }}"
|
||||
echo "OS list: ${{ inputs.os }}"
|
||||
echo "Mode list: ${{ inputs.mode }}"
|
||||
echo "Target list: ${{ inputs.target }}"
|
||||
echo "Compiler list: ${{ inputs.compiler }}"
|
||||
echo "C model list: ${{ inputs.cmodel }}"
|
||||
echo "Languages list: ${{ inputs.languages }}"
|
||||
echo "Simulator: ${{ inputs.sim }}"
|
||||
|
||||
submodule_cache:
|
||||
name: Initialize submodule cache
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
key: ${{ steps.keygen.outputs.smcache_key }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: sudo ./.github/cleanup-rootfs.sh
|
||||
|
||||
- name: Generate submodule cache key
|
||||
id: keygen
|
||||
run: echo "smcache_key=smcache-$(printf $(git submodule | sha1sum))" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Setup submodule cache
|
||||
id: smcache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.submodule_paths }}
|
||||
key: ${{ steps.keygen.outputs.smcache_key }}
|
||||
|
||||
- name: Checkout required submodules
|
||||
if: steps.smcache.outputs.cache-hit != 'true'
|
||||
run: git submodule update --init -j $(nproc) --depth 1 $(echo ${submodule_paths} | sed '$d' | tr '\n' ' ')
|
||||
|
||||
- name: Storage size optimization
|
||||
if: steps.smcache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
git submodule foreach 'git maintenance run'
|
||||
|
||||
build:
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: [submodule_cache]
|
||||
env:
|
||||
smcache_key: ${{ needs.submodule_cache.outputs.key }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: ${{ fromJSON(inputs.os) }}
|
||||
mode: ${{ fromJSON(inputs.mode) }}
|
||||
target: ${{ fromJSON(inputs.target) }}
|
||||
compiler: ${{ fromJSON(inputs.compiler) }}
|
||||
sim: ${{ fromJSON(inputs.sim) }}
|
||||
cmodel: ${{ fromJSON(inputs.cmodel) }}
|
||||
languages: ${{ fromJSON(inputs.languages) }}
|
||||
|
||||
exclude:
|
||||
- mode: musl
|
||||
compiler: llvm
|
||||
- mode: uclibc
|
||||
compiler: llvm
|
||||
outputs:
|
||||
toolchain-name: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: sudo ./.github/cleanup-rootfs.sh
|
||||
|
||||
- name: install dependencies
|
||||
run: sudo ./.github/setup-apt.sh
|
||||
|
||||
- name: Load submodule cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ${{ env.submodule_paths }}
|
||||
key: ${{ env.smcache_key }}
|
||||
|
||||
- name: build toolchain
|
||||
run: |
|
||||
TARGET_TUPLE=($(echo ${{ matrix.target }} | tr "-" "\n"))
|
||||
BUILD_TOOLCHAIN="./configure --prefix=/mnt/riscv --with-arch=${TARGET_TUPLE[0]} --with-abi=${TARGET_TUPLE[1]}"
|
||||
ARGS=""
|
||||
if [ "${{ matrix.compiler }}" == "llvm" ]; then # build toolchain with llvm
|
||||
ARGS="$ARGS --enable-llvm"
|
||||
fi
|
||||
if [ -n "${{ matrix.sim }}" ]; then
|
||||
ARGS="$ARGS --with-sim=${{ matrix.sim }}"
|
||||
fi
|
||||
if [ -n "${{ matrix.cmodel }}" ]; then
|
||||
ARGS="$ARGS --with-cmodel=${{ matrix.cmodel }}"
|
||||
fi
|
||||
if [ -n "${{ matrix.languages }}" ]; then
|
||||
ARGS="$ARGS --enable-languages=${{ matrix.languages }}"
|
||||
fi
|
||||
$BUILD_TOOLCHAIN $ARGS
|
||||
sudo mkdir /mnt/riscv
|
||||
sudo chown runner:runner /mnt/riscv
|
||||
make -j $(nproc) ${{ matrix.mode }}
|
||||
|
||||
- name: tarball build
|
||||
run: |
|
||||
du -s -h /mnt/riscv
|
||||
./.github/dedup-dir.sh /mnt/riscv/
|
||||
XZ_OPT="-e -T0" tar cJvf riscv.tar.xz -C /mnt/ riscv/
|
||||
|
||||
- name: make report
|
||||
if: |
|
||||
matrix.os == 'ubuntu-24.04'
|
||||
&& (matrix.mode == 'linux' || matrix.mode == 'newlib')
|
||||
&& matrix.compiler == 'gcc'
|
||||
run: |
|
||||
make report-${{ matrix.mode }} -j $(nproc)
|
||||
|
||||
- name: generate prebuilt toolchain name
|
||||
id: toolchain-name-generator
|
||||
run: |
|
||||
if [[ "${{ matrix.target }}" == *"32"* ]]; then BITS=32; else BITS=64; fi
|
||||
case "${{ matrix.mode }}" in
|
||||
"linux")
|
||||
MODE="glibc";;
|
||||
"musl")
|
||||
MODE="musl";;
|
||||
"uclibc")
|
||||
MODE="uclibc-ng";;
|
||||
*)
|
||||
MODE="elf";;
|
||||
esac
|
||||
ARTIFACT_NAME=${{ inputs.artifact-name }}
|
||||
if [ -n "$ARTIFACT_NAME" ]; then
|
||||
ARTIFACT_NAME="-${ARTIFACT_NAME}"
|
||||
fi
|
||||
echo "TOOLCHAIN_NAME=riscv$BITS-$MODE-${{ matrix.os }}-${{ matrix.compiler }}${ARTIFACT_NAME}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Move output to representative name
|
||||
run: |
|
||||
mv riscv.tar.xz ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}.tar.xz
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}
|
||||
path: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}.tar.xz
|
|
@ -9,231 +9,27 @@ on:
|
|||
branches:
|
||||
- master
|
||||
|
||||
env:
|
||||
submodule_paths: |
|
||||
binutils
|
||||
dejagnu
|
||||
gcc
|
||||
gdb
|
||||
glibc
|
||||
llvm
|
||||
musl
|
||||
newlib
|
||||
pk
|
||||
qemu
|
||||
spike
|
||||
uclibc-ng
|
||||
.git/modules
|
||||
|
||||
jobs:
|
||||
submodule_cache:
|
||||
name: Initialize submodule cache
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
key: ${{ steps.keygen.outputs.smcache_key }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: sudo ./.github/cleanup-rootfs.sh
|
||||
|
||||
- name: Generate submodule cache key
|
||||
id: keygen
|
||||
run: echo "smcache_key=smcache-$(printf $(git submodule | sha1sum))" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Setup submodule cache
|
||||
id: smcache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.submodule_paths }}
|
||||
key: ${{ steps.keygen.outputs.smcache_key }}
|
||||
|
||||
- name: Checkout required submodules
|
||||
if: steps.smcache.outputs.cache-hit != 'true'
|
||||
run: git submodule update --init -j $(nproc) --depth 1 $(echo ${submodule_paths} | sed '$d' | tr '\n' ' ')
|
||||
|
||||
- name: Storage size optimization
|
||||
if: steps.smcache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
git submodule foreach 'git maintenance run'
|
||||
|
||||
build:
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: [submodule_cache]
|
||||
env:
|
||||
smcache_key: ${{ needs.submodule_cache.outputs.key }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-22.04, ubuntu-24.04]
|
||||
mode: [newlib, linux, musl, uclibc]
|
||||
target: [rv32gc-ilp32d, rv64gc-lp64d]
|
||||
compiler: [gcc, llvm]
|
||||
exclude:
|
||||
- mode: musl
|
||||
compiler: llvm
|
||||
- mode: uclibc
|
||||
compiler: llvm
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: sudo ./.github/cleanup-rootfs.sh
|
||||
|
||||
- name: install dependencies
|
||||
run: sudo ./.github/setup-apt.sh
|
||||
|
||||
- name: Load submodule cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ${{ env.submodule_paths }}
|
||||
key: ${{ env.smcache_key }}
|
||||
|
||||
- name: build toolchain
|
||||
run: |
|
||||
TARGET_TUPLE=($(echo ${{ matrix.target }} | tr "-" "\n"))
|
||||
BUILD_TOOLCHAIN="./configure --prefix=/mnt/riscv --with-arch=${TARGET_TUPLE[0]} --with-abi=${TARGET_TUPLE[1]}"
|
||||
if [ "${{ matrix.compiler }}" == "llvm" ]; then # build toolchain with llvm
|
||||
$BUILD_TOOLCHAIN --enable-llvm
|
||||
else
|
||||
$BUILD_TOOLCHAIN
|
||||
fi
|
||||
sudo mkdir /mnt/riscv
|
||||
sudo chown runner:runner /mnt/riscv
|
||||
make -j $(nproc) ${{ matrix.mode }}
|
||||
|
||||
- name: tarball build
|
||||
run: |
|
||||
du -s -h /mnt/riscv
|
||||
./.github/dedup-dir.sh /mnt/riscv/
|
||||
XZ_OPT="-e -T0" tar cJvf riscv.tar.xz -C /mnt/ riscv/
|
||||
|
||||
- name: make report
|
||||
if: |
|
||||
matrix.os == 'ubuntu-24.04'
|
||||
&& (matrix.mode == 'linux' || matrix.mode == 'newlib')
|
||||
&& matrix.compiler == 'gcc'
|
||||
run: |
|
||||
make report-${{ matrix.mode }} -j $(nproc)
|
||||
|
||||
- name: generate prebuilt toolchain name
|
||||
id: toolchain-name-generator
|
||||
run: |
|
||||
if [[ "${{ matrix.target }}" == *"32"* ]]; then BITS=32; else BITS=64; fi
|
||||
case "${{ matrix.mode }}" in
|
||||
"linux")
|
||||
MODE="glibc";;
|
||||
"musl")
|
||||
MODE="musl";;
|
||||
"uclibc")
|
||||
MODE="uclibc-ng";;
|
||||
*)
|
||||
MODE="elf";;
|
||||
esac
|
||||
echo "TOOLCHAIN_NAME=riscv$BITS-$MODE-${{ matrix.os }}-${{ matrix.compiler }}-nightly" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}
|
||||
path: riscv.tar.xz
|
||||
uses: ./.github/workflows/build-reusable.yaml
|
||||
with:
|
||||
artifact-name: build
|
||||
|
||||
test-sim:
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: [submodule_cache]
|
||||
env:
|
||||
smcache_key: ${{ needs.submodule_cache.outputs.key }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-24.04]
|
||||
mode: [newlib]
|
||||
target: [rv64gc-lp64d]
|
||||
sim: [spike]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: sudo ./.github/cleanup-rootfs.sh
|
||||
|
||||
- name: install dependencies
|
||||
run: sudo ./.github/setup-apt.sh
|
||||
|
||||
- name: Load submodule cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ${{ env.submodule_paths }}
|
||||
key: ${{ env.smcache_key }}
|
||||
|
||||
- name: build toolchain
|
||||
run: |
|
||||
TARGET_TUPLE=($(echo ${{ matrix.target }} | tr "-" "\n"))
|
||||
./configure --prefix=/mnt/riscv --with-arch=${TARGET_TUPLE[0]} --with-abi=${TARGET_TUPLE[1]} --with-sim=${{ matrix.sim }}
|
||||
sudo mkdir /mnt/riscv
|
||||
sudo chown runner:runner /mnt/riscv
|
||||
make -j $(nproc) ${{ matrix.mode }}
|
||||
|
||||
- name: make report
|
||||
run: make report-${{ matrix.mode }} -j $(nproc)
|
||||
uses: ./.github/workflows/build-reusable.yaml
|
||||
with:
|
||||
artifact-name: sim
|
||||
os: '["ubuntu-24.04"]'
|
||||
mode: '["newlib"]'
|
||||
target: '["rv64gc-lp64d"]'
|
||||
sim: '["spike"]'
|
||||
|
||||
build-multilib:
|
||||
if: ${{ false }} # Disable until multilib errors are triaged
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: [submodule_cache]
|
||||
env:
|
||||
smcache_key: ${{ needs.submodule_cache.outputs.key }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-24.04]
|
||||
mode: [newlib, linux]
|
||||
target: [rv64gc-lp64d]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
uses: ./.github/workflows/build-reusable.yaml
|
||||
with:
|
||||
artifact-name: multilib
|
||||
os: '["ubuntu-24.04"]'
|
||||
mode: '["newlib","linux"]'
|
||||
target: '["rv64gc-lp64d"]'
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: sudo ./.github/cleanup-rootfs.sh
|
||||
|
||||
- name: install dependencies
|
||||
run: sudo ./.github/setup-apt.sh
|
||||
|
||||
- name: Load submodule cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ${{ env.submodule_paths }}
|
||||
key: ${{ env.smcache_key }}
|
||||
|
||||
- name: build toolchain
|
||||
run: |
|
||||
TARGET_TUPLE=($(echo ${{ matrix.target }} | tr "-" "\n"))
|
||||
./configure --prefix=/mnt/riscv --with-arch=${TARGET_TUPLE[0]} --with-abi=${TARGET_TUPLE[1]} --enable-multilib
|
||||
sudo mkdir /mnt/riscv
|
||||
sudo chown runner:runner /mnt/riscv
|
||||
make -j $(nproc) ${{ matrix.mode }}
|
||||
|
||||
- name: tarball build
|
||||
run: |
|
||||
du -s -h /mnt/riscv
|
||||
./.github/dedup-dir.sh /mnt/riscv/
|
||||
XZ_OPT="-e -T0" tar cJvf riscv.tar.xz -C /mnt/ riscv/
|
||||
|
||||
- name: make report
|
||||
run: |
|
||||
make report-${{ matrix.mode }} -j $(nproc)
|
||||
|
||||
- name: generate prebuilt toolchain name
|
||||
id: toolchain-name-generator
|
||||
run: |
|
||||
if [[ "${{ matrix.target }}" == *"32"* ]]; then BITS=32; else BITS=64; fi
|
||||
case "${{ matrix.mode }}" in
|
||||
"linux")
|
||||
MODE="glibc";;
|
||||
"musl")
|
||||
MODE="musl";;
|
||||
"uclibc")
|
||||
MODE="uclibc-ng";;
|
||||
*)
|
||||
MODE="elf";;
|
||||
esac
|
||||
echo "TOOLCHAIN_NAME=riscv$BITS-$MODE-${{ matrix.os }}-multilib-nightly" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}
|
||||
path: riscv.tar.xz
|
||||
|
|
|
@ -2,7 +2,7 @@ name: Nightly Release
|
|||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * ?'
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
|
||||
jobs:
|
||||
|
@ -12,28 +12,37 @@ jobs:
|
|||
outputs:
|
||||
stale: ${{ steps.activity_check.outputs.stale }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Activity check
|
||||
id: activity_check
|
||||
run: |
|
||||
curl -sL https://api.github.com/repos/$GITHUB_REPOSITORY/commits | jq -r '[.[]][0]' > $HOME/commit.json
|
||||
date="$(jq -r '.commit.committer.date' $HOME/commit.json)"
|
||||
timestamp=$(date --utc -d "$date" +%s)
|
||||
author="$(jq -r '.commit.author.name' $HOME/commit.json)"
|
||||
url="$(jq -r '.html_url' $HOME/commit.json)"
|
||||
hours=$(( ( $(date --utc +%s) - $timestamp ) / 3600 ))
|
||||
rm -f $HOME/commit.json
|
||||
echo "Latest Repository activity : $timestamp $author $url"
|
||||
# get the author and timestamp of the latest commit
|
||||
AUTHOR=$(git log -1 --pretty=format:'%an')
|
||||
# Get the commit date in ISO 8601 format (UTC)
|
||||
COMMIT_DATE=$(git log -1 --pretty=format:'%cI')
|
||||
echo "Commit date: $COMMIT_DATE"
|
||||
# Convert both dates to epoch seconds
|
||||
COMMIT_EPOCH=$(date -d "$COMMIT_DATE" +%s)
|
||||
NOW_EPOCH=$(date -u +%s)
|
||||
|
||||
# Calculate difference in seconds
|
||||
AGE_SECONDS=$(( NOW_EPOCH - COMMIT_EPOCH ))
|
||||
|
||||
# 86400 seconds = 24 hours
|
||||
echo "Latest Repository activity : $COMMIT_DATE $AUTHOR, $AGE_SECONDS seconds ago"
|
||||
|
||||
STALE=false
|
||||
if [ "${{ github.event_name }}" == "repository_dispatch" ]; then
|
||||
echo "[WARNING] Ignoring activity limits : workflow triggered manually"
|
||||
STALE=false
|
||||
elif [ "$AGE_SECONDS" -gt 86400 ]; then
|
||||
echo "[ERROR] Repository not updated : event<${{ github.event_name }}> not allowed to modify stale repository"
|
||||
echo "Commit is stale (older than 24 hours)"
|
||||
STALE=true
|
||||
else
|
||||
echo Repository active last $hours hours ago
|
||||
if [ $hours -ge 24 ]; then
|
||||
echo "[ERROR] Repository not updated : event<${{ github.event_name }}> not allowed to modify stale repository"
|
||||
STALE=true
|
||||
fi
|
||||
fi
|
||||
echo "Commit is fresh (within last 24 hours)"
|
||||
STALE=false
|
||||
fi
|
||||
echo "stale=$STALE" >> $GITHUB_OUTPUT
|
||||
|
||||
if [ "$STALE" == "true" ]; then
|
||||
|
@ -41,179 +50,50 @@ jobs:
|
|||
fi
|
||||
shell: bash
|
||||
|
||||
|
||||
|
||||
build:
|
||||
needs: activity-check
|
||||
needs: [activity-check]
|
||||
if: needs.activity-check.outputs.stale != 'true'
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-22.04, ubuntu-24.04]
|
||||
mode: [newlib, linux, musl, uclibc]
|
||||
target: [rv32gc-ilp32d, rv64gc-lp64d]
|
||||
compiler: [gcc, llvm]
|
||||
exclude:
|
||||
- mode: musl
|
||||
compiler: llvm
|
||||
|
||||
- mode: uclibc
|
||||
compiler: llvm
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: sudo ./.github/cleanup-rootfs.sh
|
||||
|
||||
- name: install apt dependencies
|
||||
run: sudo ./.github/setup-apt.sh
|
||||
|
||||
- name: build toolchain
|
||||
run: |
|
||||
TARGET_TUPLE=($(echo ${{ matrix.target }} | tr "-" "\n"))
|
||||
BUILD_TOOLCHAIN="./configure --prefix=/mnt/riscv --with-arch=${TARGET_TUPLE[0]} --with-abi=${TARGET_TUPLE[1]}"
|
||||
if [ "${{ matrix.compiler }}" == "llvm" ]; then # build toolchain with llvm
|
||||
$BUILD_TOOLCHAIN --enable-llvm
|
||||
else
|
||||
$BUILD_TOOLCHAIN
|
||||
fi
|
||||
sudo mkdir /mnt/riscv
|
||||
sudo chown runner:runner /mnt/riscv
|
||||
make -j $(nproc) ${{ matrix.mode }}
|
||||
|
||||
- name: tarball build
|
||||
run: |
|
||||
du -s -h /mnt/riscv
|
||||
./.github/dedup-dir.sh /mnt/riscv/
|
||||
XZ_OPT="-e -T0" tar cJvf riscv.tar.xz -C /mnt/ riscv/
|
||||
|
||||
- name: generate prebuilt toolchain name
|
||||
id: toolchain-name-generator
|
||||
run: |
|
||||
if [[ "${{ matrix.target }}" == *"32"* ]]; then BITS=32; else BITS=64; fi
|
||||
case "${{ matrix.mode }}" in
|
||||
"linux")
|
||||
MODE="glibc";;
|
||||
"musl")
|
||||
MODE="musl";;
|
||||
"uclibc")
|
||||
MODE="uclibc-ng";;
|
||||
*)
|
||||
MODE="elf";;
|
||||
esac
|
||||
echo "TOOLCHAIN_NAME=riscv$BITS-$MODE-${{ matrix.os }}-${{ matrix.compiler }}-nightly" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}
|
||||
path: riscv.tar.xz
|
||||
|
||||
uses: ./.github/workflows/build-reusable.yaml
|
||||
|
||||
create-release:
|
||||
needs: build
|
||||
needs: [build]
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_matrix: ${{ steps.asset_names.outputs.asset_matrix }}
|
||||
datestamp: ${{ env.DATESTAMP }}
|
||||
env:
|
||||
ARTIFACTS_DIR: artifacts
|
||||
steps:
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: |
|
||||
echo "-- Before --"
|
||||
df -h
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
echo "-- After --"
|
||||
df -h
|
||||
- name: Run Configuration Commands
|
||||
id: metadata
|
||||
run: |
|
||||
DATESTAMP="$(date --utc '+%Y.%m.%d')"
|
||||
echo "Version: ${DATESTAMP}-nightly"
|
||||
|
||||
# Setup Artifacts Directory
|
||||
ARTIFACTS_DIR="/mnt/artifacts/"
|
||||
sudo mkdir -p $ARTIFACTS_DIR
|
||||
sudo chown runner:runner $ARTIFACTS_DIR
|
||||
|
||||
# Setup environment variables
|
||||
echo "DATESTAMP=${DATESTAMP}" >> $GITHUB_ENV
|
||||
echo "DATEWORD=$(date --utc '+%B %d, %Y')" >> $GITHUB_ENV
|
||||
echo "ARTIFACTS_DIR=${ARTIFACTS_DIR}" >> $GITHUB_ENV
|
||||
echo "datestamp=${DATESTAMP}" >> $GITHUB_OUTPUT
|
||||
echo "dateword=$(date --utc '+%B %d, %Y')" >> $GITHUB_OUTPUT
|
||||
shell: bash
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ env.DATESTAMP }}
|
||||
release_name: "Nightly: ${{ env.DATEWORD }}"
|
||||
body: |
|
||||
**Automated Nightly Release**
|
||||
${{ env.DATESTAMP }}-nightly
|
||||
draft: false
|
||||
prerelease: true
|
||||
|
||||
- name: Download Built Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ARTIFACTS_DIR }}
|
||||
|
||||
# IMPORTANT: Each artifact must only have one file
|
||||
- name: Designate Asset Names
|
||||
id: asset_names
|
||||
merge-multiple: true
|
||||
- name: List downloaded artifacts
|
||||
run: |
|
||||
ASSET_MATRIX=$(
|
||||
find ${ARTIFACTS_DIR} -mindepth 2 -maxdepth 2 -type f |
|
||||
awk '{
|
||||
fs_n=split($0, fs, "/") # Split file paths
|
||||
art_name=fs[fs_n-1] # Get artifact name
|
||||
fname=fs[fs_n] # Get file name from the artifact
|
||||
ext = substr(fs[fs_n], index(fs[fs_n],".")) # File Extension
|
||||
echo "Contents of ${{ env.ARTIFACTS_DIR }}"
|
||||
ls -R ${{ env.ARTIFACTS_DIR }}
|
||||
|
||||
print art_name ":" fname ":" ext # format <artifact name : artifact file : file extension>
|
||||
}' |
|
||||
jq -R -s -c 'split("\n") | .[:-1] | { # Split by newlines (remove last entry)
|
||||
include: [
|
||||
.[] | split(":") | { # Put it in JSON format
|
||||
artifact: .[0],
|
||||
file: .[1],
|
||||
extension: .[2]
|
||||
}
|
||||
]
|
||||
}'
|
||||
)
|
||||
|
||||
echo "asset_matrix=${ASSET_MATRIX}" >> $GITHUB_OUTPUT
|
||||
shell: bash
|
||||
|
||||
|
||||
upload-assets:
|
||||
needs: create-release
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix: ${{ fromJson( needs.create-release.outputs.asset_matrix ) }}
|
||||
name: upload ${{ matrix.artifact }}
|
||||
steps:
|
||||
|
||||
- name: Remove unneeded frameworks to recover disk space
|
||||
run: |
|
||||
echo "-- Before --"
|
||||
df -h
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
echo "-- After --"
|
||||
df -h
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
name: ${{ matrix.artifact }}
|
||||
|
||||
- uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
||||
asset_path: ${{ matrix.file }}
|
||||
asset_name: ${{ matrix.artifact }}-${{ needs.create-release.outputs.datestamp }}-nightly${{ matrix.extension }}
|
||||
asset_content_type: application/x-xz
|
||||
tag_name: ${{ steps.metadata.outputs.datestamp }}
|
||||
name: "Nightly: ${{ steps.metadata.outputs.dateword }}"
|
||||
body: |
|
||||
**Automated Nightly Release**
|
||||
${{ steps.metadata.outputs.datestamp }}-nightly
|
||||
draft: false
|
||||
files: |
|
||||
${{ env.ARTIFACTS_DIR }}/*
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
[submodule "binutils"]
|
||||
path = binutils
|
||||
url = https://github.com/bminor/binutils-gdb.git
|
||||
branch = binutils-2_44-branch
|
||||
branch = binutils-2_45-branch
|
||||
shallow = true
|
||||
[submodule "gcc"]
|
||||
path = gcc
|
||||
|
@ -52,7 +52,7 @@
|
|||
[submodule "llvm"]
|
||||
path = llvm
|
||||
url = https://github.com/llvm/llvm-project.git
|
||||
branch = release/19.x
|
||||
branch = release/20.x
|
||||
shallow = true
|
||||
[submodule "uclibc-ng"]
|
||||
path = uclibc-ng
|
||||
|
|
57
Makefile.in
57
Makefile.in
|
@ -17,6 +17,7 @@ LLVM_SRCDIR := @with_llvm_src@
|
|||
DEJAGNU_SRCDIR := @with_dejagnu_src@
|
||||
DEBUG_INFO := @debug_info@
|
||||
ENABLE_DEFAULT_PIE := @enable_default_pie@
|
||||
INSTALL_TARGET := @install_target@
|
||||
|
||||
SIM ?= @WITH_SIM@
|
||||
|
||||
|
@ -40,6 +41,7 @@ WITH_ISA_SPEC ?= @WITH_ISA_SPEC@
|
|||
SYSROOT := $(INSTALL_DIR)/sysroot
|
||||
ENABLE_LIBSANITIZER ?= @enable_libsanitizer@
|
||||
QEMU_TARGETS ?= @qemu_targets@
|
||||
QEMU_EXTRA_CONFIGURE_FLAGS := @enable_strip_qemu@ $(QEMU_EXTRA_CONFIGURE_FLAGS)
|
||||
|
||||
ENABLED_LANGUAGES ?= @WITH_LANGUAGES@
|
||||
ifeq ($(ENABLED_LANGUAGES),)
|
||||
|
@ -355,7 +357,7 @@ stamps/install-host-gcc: $(GCC_SRCDIR) $(GCC_SRC_GIT)
|
|||
--disable-bootstrap \
|
||||
--disable-multilib
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
#
|
||||
|
@ -381,9 +383,11 @@ stamps/build-binutils-linux: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATIO
|
|||
--disable-sim \
|
||||
--disable-libdecnumber \
|
||||
--disable-readline \
|
||||
$(WITH_ABI) \
|
||||
$(WITH_ARCH) \
|
||||
$(WITH_ISA_SPEC)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-gdb-linux: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP)
|
||||
|
@ -407,7 +411,7 @@ stamps/build-gdb-linux: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP)
|
|||
--disable-gold \
|
||||
--disable-gprof
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-glibc-linux-headers: $(GLIBC_SRCDIR) $(GLIBC_SRC_GIT) stamps/build-gcc-linux-stage1
|
||||
|
@ -494,7 +498,7 @@ stamps/build-gcc-linux-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutil
|
|||
CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true $(INSTALL_TARGET)-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
@ -532,7 +536,7 @@ stamps/build-gcc-linux-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) $(addprefix stamps/b
|
|||
CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
|
@ -554,9 +558,11 @@ stamps/build-binutils-linux-native: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamp
|
|||
--disable-sim \
|
||||
--disable-libdecnumber \
|
||||
--disable-readline \
|
||||
$(WITH_ABI) \
|
||||
$(WITH_ARCH) \
|
||||
$(WITH_ISA_SPEC)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
|
||||
|
@ -588,7 +594,7 @@ stamps/build-gcc-linux-native: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-gcc-lin
|
|||
$(WITH_ISA_SPEC) \
|
||||
$(GCC_EXTRA_CONFIGURE_FLAGS)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
|
@ -612,9 +618,11 @@ stamps/build-binutils-newlib: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATI
|
|||
--disable-sim \
|
||||
--disable-libdecnumber \
|
||||
--disable-readline \
|
||||
$(WITH_ABI) \
|
||||
$(WITH_ARCH) \
|
||||
$(WITH_ISA_SPEC)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-gdb-newlib: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP)
|
||||
|
@ -635,7 +643,7 @@ stamps/build-gdb-newlib: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP)
|
|||
--disable-gold \
|
||||
--disable-gprof
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-gcc-newlib-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-newlib
|
||||
|
@ -670,7 +678,7 @@ stamps/build-gcc-newlib-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binuti
|
|||
CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@) all-gcc
|
||||
$(MAKE) -C $(notdir $@) install-gcc
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)-gcc
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-newlib: $(NEWLIB_SRCDIR) $(NEWLIB_SRC_GIT) stamps/build-gcc-newlib-stage1
|
||||
|
@ -779,7 +787,7 @@ stamps/build-gcc-newlib-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-newlib
|
|||
CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
#
|
||||
|
@ -805,9 +813,11 @@ stamps/build-binutils-musl: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATION
|
|||
--disable-sim \
|
||||
--disable-libdecnumber \
|
||||
--disable-readline \
|
||||
$(WITH_ABI) \
|
||||
$(WITH_ARCH) \
|
||||
$(WITH_ISA_SPEC)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-gdb-musl: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP)
|
||||
|
@ -831,7 +841,7 @@ stamps/build-gdb-musl: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP)
|
|||
--disable-gold \
|
||||
--disable-gprof
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-gcc-musl-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-musl \
|
||||
|
@ -868,7 +878,7 @@ stamps/build-gcc-musl-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils
|
|||
CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true $(INSTALL_TARGET)-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
@ -939,7 +949,7 @@ stamps/build-gcc-musl-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-musl-lin
|
|||
CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
cp -a $(INSTALL_DIR)/$(MUSL_TUPLE)/lib* $(SYSROOT)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
|
@ -966,9 +976,11 @@ stamps/build-binutils-uclibc: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATI
|
|||
--disable-sim \
|
||||
--disable-libdecnumber \
|
||||
--disable-readline \
|
||||
$(WITH_ABI) \
|
||||
$(WITH_ARCH) \
|
||||
$(WITH_ISA_SPEC)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
stamps/build-gcc-uclibc-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-uclibc \
|
||||
|
@ -1004,7 +1016,7 @@ stamps/build-gcc-uclibc-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binuti
|
|||
CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true $(INSTALL_TARGET)-gcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc
|
||||
$(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
@ -1072,7 +1084,7 @@ stamps/build-gcc-uclibc-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-uclibc
|
|||
CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)"
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(INSTALL_TARGET)
|
||||
cp -a $(INSTALL_DIR)/$(UCLIBC_TUPLE)/lib* $(SYSROOT)
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
||||
|
@ -1120,6 +1132,7 @@ stamps/build-qemu: $(QEMU_SRCDIR) $(QEMU_SRC_GIT) $(PREPARATION_STAMP)
|
|||
--prefix=$(INSTALL_DIR) \
|
||||
--target-list=$(QEMU_TARGETS) \
|
||||
--interp-prefix=$(INSTALL_DIR)/sysroot \
|
||||
$(QEMU_EXTRA_CONFIGURE_FLAGS) \
|
||||
--python=python3
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
|
@ -1147,7 +1160,7 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BIN
|
|||
-DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_TARGETS_TO_BUILD="RISCV" \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;lld" \
|
||||
-DLLVM_ENABLE_PROJECTS="llvm;clang;lld" \
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
|
||||
-DLLVM_DEFAULT_TARGET_TRIPLE="$(LINUX_TUPLE)" \
|
||||
-DDEFAULT_SYSROOT="../sysroot" \
|
||||
|
@ -1157,7 +1170,7 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BIN
|
|||
-DLLVM_PARALLEL_LINK_JOBS=4 \
|
||||
$(LLVM_EXTRA_CONFIGURE_FLAGS)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(subst -,/,$(INSTALL_TARGET))
|
||||
# Build shared/static OpenMP libraries on RV64.
|
||||
if test $(XLEN) -eq 64; then \
|
||||
mkdir $(notdir $@)/openmp-shared; \
|
||||
|
@ -1212,14 +1225,14 @@ stamps/build-llvm-newlib: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BI
|
|||
-DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_TARGETS_TO_BUILD="RISCV" \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;lld" \
|
||||
-DLLVM_ENABLE_PROJECTS="llvm;clang;lld" \
|
||||
-DLLVM_DEFAULT_TARGET_TRIPLE="$(NEWLIB_TUPLE)" \
|
||||
-DLLVM_INSTALL_TOOLCHAIN_ONLY=On \
|
||||
-DLLVM_BINUTILS_INCDIR=$(BINUTILS_SRCDIR)/include \
|
||||
-DLLVM_PARALLEL_LINK_JOBS=4 \
|
||||
$(LLVM_EXTRA_CONFIGURE_FLAGS)
|
||||
$(MAKE) -C $(notdir $@)
|
||||
$(MAKE) -C $(notdir $@) install
|
||||
$(MAKE) -C $(notdir $@) $(subst -,/,$(INSTALL_TARGET))
|
||||
cd $(INSTALL_DIR)/bin && ln -s -f clang $(NEWLIB_TUPLE)-clang && \
|
||||
ln -s -f clang++ $(NEWLIB_TUPLE)-clang++
|
||||
mkdir -p $(dir $@) && touch $@
|
||||
|
|
|
@ -108,6 +108,9 @@ To customize the enabled languages, use option `--with-languages=`. For example,
|
|||
if you want to enable `c,c++,fortran`, use `./configure --with-languages=c,c++,fortran`.
|
||||
This option only takes effect for the GNU toolchain.
|
||||
|
||||
The toolchain has an option `--enable-strip` to control strip of host binaries,
|
||||
strip is disabled by default.
|
||||
|
||||
### Troubleshooting Build Problems
|
||||
|
||||
Builds work best if installing into an empty directory. If you build a
|
||||
|
@ -140,7 +143,10 @@ devtoolset-7 works.
|
|||
There are a number of additional options that may be passed to
|
||||
configure. See './configure --help' for more details.
|
||||
|
||||
Also you can define extra flags to pass to specific projects: ```BINUTILS_NATIVE_FLAGS_EXTRA, BINUTILS_TARGET_FLAGS_EXTRA, GCC_EXTRA_CONFIGURE_FLAGS, GDB_NATIVE_FLAGS_EXTRA, GDB_TARGET_FLAGS_EXTRA, GLIBC_TARGET_FLAGS_EXTRA, NEWLIB_TARGET_FLAGS_EXTRA, LLVM_EXTRA_CONFIGURE_FLAGS```.
|
||||
Also you can define extra flags to pass to specific projects: ```BINUTILS_NATIVE_FLAGS_EXTRA,
|
||||
BINUTILS_TARGET_FLAGS_EXTRA, GCC_EXTRA_CONFIGURE_FLAGS, GDB_NATIVE_FLAGS_EXTRA,
|
||||
GDB_TARGET_FLAGS_EXTRA, GLIBC_TARGET_FLAGS_EXTRA, NEWLIB_TARGET_FLAGS_EXTRA,
|
||||
LLVM_EXTRA_CONFIGURE_FLAGS, QEMU_EXTRA_CONFIGURE_FLAGS```.
|
||||
Example: ```GCC_EXTRA_CONFIGURE_FLAGS=--with-gmp=/opt/gmp make linux```
|
||||
|
||||
#### Set default ISA spec version
|
||||
|
|
2
binutils
2
binutils
|
@ -1 +1 @@
|
|||
Subproject commit 815d9a14cbbb3b81843f7566222c87fb22e7255d
|
||||
Subproject commit 2bc7af1ff7732451b6a7b09462a815c3284f9613
|
|
@ -630,6 +630,8 @@ with_glibc_src
|
|||
with_newlib_src
|
||||
with_binutils_src
|
||||
with_gcc_src
|
||||
enable_strip_qemu
|
||||
install_target
|
||||
enable_host_gcc
|
||||
enable_llvm
|
||||
enable_gdb
|
||||
|
@ -649,9 +651,9 @@ multilib_gen
|
|||
WITH_LANGUAGES
|
||||
WITH_SIM
|
||||
WITH_ISA_SPEC
|
||||
WITH_TUNE
|
||||
WITH_ABI
|
||||
WITH_ARCH
|
||||
WITH_TUNE
|
||||
enable_default_pie
|
||||
debug_info
|
||||
default_target
|
||||
|
@ -736,6 +738,7 @@ with_guile
|
|||
enable_gdb
|
||||
enable_llvm
|
||||
enable_host_gcc
|
||||
enable_strip
|
||||
with_gcc_src
|
||||
with_binutils_src
|
||||
with_newlib_src
|
||||
|
@ -1392,6 +1395,7 @@ Optional Features:
|
|||
--disable-gdb Don't build GDB, as it's not upstream
|
||||
--enable-llvm Build LLVM (clang)
|
||||
--enable-host-gcc Build host GCC to build cross toolchain
|
||||
--enable-strip Strip debug symbols at install time
|
||||
--enable-libsanitizer Build libsanitizer, which only supports rv64
|
||||
--enable-qemu-system Build qemu with system-mode emulation
|
||||
|
||||
|
@ -1400,7 +1404,7 @@ Optional Packages:
|
|||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-arch=rv64gc Sets the base RISC-V ISA, defaults to rv64gc
|
||||
--with-abi=lp64d Sets the base RISC-V ABI, defaults to lp64d
|
||||
--with-tune=rocket Set the base RISC-V CPU, defaults to rocket
|
||||
--with-tune=generic Set the base RISC-V CPU, defaults to GCC's default
|
||||
--with-isa-spec=20191213
|
||||
Set the default ISA spec version, default to
|
||||
20191213, available options: 2.2, 20190608, 20191213
|
||||
|
@ -3925,13 +3929,10 @@ fi
|
|||
if test ${enable_linux+y}
|
||||
then :
|
||||
enableval=$enable_linux;
|
||||
else $as_nop
|
||||
enable_linux=no
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_linux" != xno
|
||||
if test "x$enable_linux" = xyes
|
||||
then :
|
||||
default_target=linux
|
||||
|
||||
|
@ -3943,49 +3944,34 @@ fi
|
|||
# Check whether --enable-debug_info was given.
|
||||
if test ${enable_debug_info+y}
|
||||
then :
|
||||
enableval=$enable_debug_info; enable_debug_info=yes
|
||||
else $as_nop
|
||||
enable_debug_info=no
|
||||
|
||||
enableval=$enable_debug_info;
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_debug_info" != xyes
|
||||
if test "x$enable_debug_info" = xyes
|
||||
then :
|
||||
disable_debug_info=yes
|
||||
else $as_nop
|
||||
disable_debug_info=no
|
||||
|
||||
fi
|
||||
|
||||
if test "x$enable_debug_info" != xyes
|
||||
then :
|
||||
debug_info=""
|
||||
|
||||
else $as_nop
|
||||
debug_info="-g"
|
||||
|
||||
else $as_nop
|
||||
debug_info=""
|
||||
|
||||
fi
|
||||
|
||||
# Check whether --enable-default-pie was given.
|
||||
if test ${enable_default_pie+y}
|
||||
then :
|
||||
enableval=$enable_default_pie;
|
||||
else $as_nop
|
||||
enable_default_pie=no
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_default_pie" != xyes
|
||||
if test "x$enable_default_pie" = xyes
|
||||
then :
|
||||
enable_default_pie="--disable-default-pie"
|
||||
|
||||
else $as_nop
|
||||
enable_default_pie="--enable-default-pie"
|
||||
|
||||
fi
|
||||
else $as_nop
|
||||
enable_default_pie="--disable-default-pie"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --with-arch was given.
|
||||
|
@ -4015,11 +4001,20 @@ if test ${with_tune+y}
|
|||
then :
|
||||
withval=$with_tune;
|
||||
else $as_nop
|
||||
with_tune=rocket
|
||||
with_tune=no
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if test "x$with_tune" != xno
|
||||
then :
|
||||
WITH_TUNE=--with-tune=$with_tune
|
||||
|
||||
else $as_nop
|
||||
WITH_TUNE=""
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --with-isa-spec was given.
|
||||
if test ${with_isa_spec+y}
|
||||
|
@ -4078,8 +4073,6 @@ WITH_ARCH=--with-arch=$with_arch
|
|||
|
||||
WITH_ABI=--with-abi=$with_abi
|
||||
|
||||
WITH_TUNE=--with-tune=$with_tune
|
||||
|
||||
WITH_ISA_SPEC=--with-isa-spec=$with_isa_spec
|
||||
|
||||
WITH_SIM=$with_sim
|
||||
|
@ -4091,9 +4084,6 @@ WITH_LANGUAGES=$with_languages
|
|||
if test ${enable_multilib+y}
|
||||
then :
|
||||
enableval=$enable_multilib;
|
||||
else $as_nop
|
||||
enable_multilib=no
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
@ -4137,7 +4127,7 @@ else $as_nop
|
|||
|
||||
fi
|
||||
|
||||
if test "x$enable_multilib" != xno || test "x$with_multilib_generator" != xno
|
||||
if test "x$enable_multilib" = xyes || test "x$with_multilib_generator" != xno
|
||||
then :
|
||||
multilib_flags=--enable-multilib
|
||||
|
||||
|
@ -4146,7 +4136,7 @@ else $as_nop
|
|||
|
||||
fi
|
||||
|
||||
if test "x$enable_multilib" != xno
|
||||
if test "x$enable_multilib" = xyes
|
||||
then :
|
||||
glibc_multilib_names="rv32imac-ilp32 rv32gc-ilp32d rv64imac-lp64 rv64gc-lp64d rv64gcv-lp64d"
|
||||
|
||||
|
@ -4155,7 +4145,7 @@ else $as_nop
|
|||
|
||||
fi
|
||||
|
||||
if test "x$enable_multilib" != xno
|
||||
if test "x$enable_multilib" = xyes
|
||||
then :
|
||||
newlib_multilib_names="rv32i-ilp32 rv32iac-ilp32 rv32im-ilp32 rv32imac-ilp32 rv32imafc-ilp32f rv64imac-lp64 rv64gc-lp64d"
|
||||
|
||||
|
@ -4164,7 +4154,7 @@ else $as_nop
|
|||
|
||||
fi
|
||||
|
||||
if test "x$enable_multilib" != xno
|
||||
if test "x$enable_multilib" = xyes
|
||||
then :
|
||||
musl_multilib_names="rv32imac-ilp32 rv32gc-ilp32d rv64imac-lp64 rv64gc-lp64d"
|
||||
|
||||
|
@ -4179,9 +4169,10 @@ then :
|
|||
enableval=$enable_gcc_checking;
|
||||
fi
|
||||
|
||||
if test "x$enable_gcc_checking" != x
|
||||
|
||||
if test "x$enable_gcc_checking" = xyes
|
||||
then :
|
||||
gcc_checking=--enable-checking=$enable_gcc_checking
|
||||
gcc_checking=--enable-checking
|
||||
|
||||
else $as_nop
|
||||
gcc_checking=""
|
||||
|
@ -4193,9 +4184,13 @@ fi
|
|||
if test ${with_cmodel+y}
|
||||
then :
|
||||
withval=$with_cmodel;
|
||||
else $as_nop
|
||||
with_cmodel=no
|
||||
|
||||
fi
|
||||
|
||||
if test "x$with_cmodel" != x
|
||||
|
||||
if test "x$with_cmodel" != xno
|
||||
then :
|
||||
cmodel=-mcmodel=$with_cmodel
|
||||
|
||||
|
@ -4294,9 +4289,6 @@ fi
|
|||
if test ${enable_gdb+y}
|
||||
then :
|
||||
enableval=$enable_gdb;
|
||||
else $as_nop
|
||||
enable_gdb=yes
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
@ -4312,32 +4304,54 @@ fi
|
|||
# Check whether --enable-llvm was given.
|
||||
if test ${enable_llvm+y}
|
||||
then :
|
||||
enableval=$enable_llvm; enable_llvm=yes
|
||||
enableval=$enable_llvm;
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_llvm" != xyes
|
||||
if test "x$enable_llvm" = xyes
|
||||
then :
|
||||
enable_llvm=--disable-llvm
|
||||
enable_llvm=--enable-llvm
|
||||
|
||||
else $as_nop
|
||||
enable_llvm=--enable-llvm
|
||||
enable_llvm=--disable-llvm
|
||||
|
||||
fi
|
||||
|
||||
# Check whether --enable-host-gcc was given.
|
||||
if test ${enable_host_gcc+y}
|
||||
then :
|
||||
enableval=$enable_host_gcc; enable_host_gcc=yes
|
||||
enableval=$enable_host_gcc;
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_host_gcc" != xyes
|
||||
if test "x$enable_host_gcc" = xyes
|
||||
then :
|
||||
enable_host_gcc=--disable-host-gcc
|
||||
enable_host_gcc=--enable-host-gcc
|
||||
|
||||
else $as_nop
|
||||
enable_host_gcc=--enable-host-gcc
|
||||
enable_host_gcc=--disable-host-gcc
|
||||
|
||||
fi
|
||||
|
||||
# Check whether --enable-strip was given.
|
||||
if test ${enable_strip+y}
|
||||
then :
|
||||
enableval=$enable_strip;
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_strip" = xyes
|
||||
then :
|
||||
install_target=install-strip
|
||||
|
||||
else $as_nop
|
||||
install_target=install
|
||||
|
||||
fi
|
||||
|
||||
if test "x$enable_strip" = xyes
|
||||
then :
|
||||
enable_strip_qemu=-Dstrip=true
|
||||
|
||||
fi
|
||||
|
||||
|
@ -4620,13 +4634,10 @@ fi
|
|||
if test ${enable_libsanitizer+y}
|
||||
then :
|
||||
enableval=$enable_libsanitizer;
|
||||
else $as_nop
|
||||
enable_libsanitizer=no
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_libsanitizer" != xno
|
||||
if test "x$enable_libsanitizer" = xyes
|
||||
then :
|
||||
enable_libsanitizer=--enable-libsanitizer
|
||||
|
||||
|
@ -4639,13 +4650,10 @@ fi
|
|||
if test ${enable_qemu_system+y}
|
||||
then :
|
||||
enableval=$enable_qemu_system;
|
||||
else $as_nop
|
||||
enable_qemu_system=no
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_qemu_system" != xno
|
||||
if test "x$enable_qemu_system" = xyes
|
||||
then :
|
||||
qemu_targets=riscv64-linux-user,riscv32-linux-user,riscv64-softmmu,riscv32-softmmu
|
||||
|
||||
|
|
175
configure.ac
175
configure.ac
|
@ -22,14 +22,14 @@ AC_SUBST([GSED], [$ac_cv_path_GSED])
|
|||
|
||||
need_gcc_external_libraries="no"
|
||||
AC_CHECK_LIB(gmp, __gmpz_init, ,
|
||||
[need_gcc_external_libraries="yes"])
|
||||
[need_gcc_external_libraries="yes"])
|
||||
AC_CHECK_LIB(mpfr, mpfr_init, ,
|
||||
[need_gcc_external_libraries="yes"])
|
||||
[need_gcc_external_libraries="yes"])
|
||||
AC_CHECK_LIB(mpc, mpc_init2, ,
|
||||
[need_gcc_external_libraries="yes"])
|
||||
[need_gcc_external_libraries="yes"])
|
||||
AS_IF([test x"$need_gcc_external_libraries" != xno],
|
||||
[AC_SUBST(NEED_GCC_EXTERNAL_LIBRARIES,true)],
|
||||
[AC_SUBST(NEED_GCC_EXTERNAL_LIBRARIES,false)])
|
||||
[AC_SUBST(NEED_GCC_EXTERNAL_LIBRARIES,true)],
|
||||
[AC_SUBST(NEED_GCC_EXTERNAL_LIBRARIES,false)])
|
||||
|
||||
AC_PATH_PROG([CURL], [curl], [no])
|
||||
AC_PATH_PROG([WGET], [wget], [no])
|
||||
|
@ -41,43 +41,28 @@ AS_IF([test x"$CURL" != xno], [FETCHER="$CURL -L -o - --ftp-pasv --retry 10"],
|
|||
AC_SUBST(FETCHER)
|
||||
|
||||
AC_ARG_ENABLE(linux,
|
||||
[AS_HELP_STRING([--enable-linux],
|
||||
[set linux as the default make target @<:@--disable-linux@:>@])],
|
||||
[],
|
||||
[enable_linux=no]
|
||||
)
|
||||
[AS_HELP_STRING([--enable-linux],
|
||||
[set linux as the default make target @<:@--disable-linux@:>@])])
|
||||
|
||||
AS_IF([test "x$enable_linux" != xno],
|
||||
AS_IF([test "x$enable_linux" = xyes],
|
||||
[AC_SUBST(default_target, linux)],
|
||||
[AC_SUBST(default_target, newlib)])
|
||||
|
||||
AC_ARG_ENABLE(debug_info,
|
||||
[AS_HELP_STRING([--enable-debug-info],
|
||||
[build glibc/musl/newlibc/libgcc with debug information])],
|
||||
[enable_debug_info=yes],
|
||||
[enable_debug_info=no]
|
||||
)
|
||||
[AS_HELP_STRING([--enable-debug-info],
|
||||
[build glibc/musl/newlibc/libgcc with debug information])])
|
||||
|
||||
AS_IF([test "x$enable_debug_info" != xyes],
|
||||
[disable_debug_info=yes],
|
||||
[disable_debug_info=no]
|
||||
)
|
||||
|
||||
AS_IF([test "x$enable_debug_info" != xyes],
|
||||
[AC_SUBST(debug_info, "")],
|
||||
[AC_SUBST(debug_info, "-g")])
|
||||
AS_IF([test "x$enable_debug_info" = xyes],
|
||||
[AC_SUBST(debug_info, "-g")],
|
||||
[AC_SUBST(debug_info, "")])
|
||||
|
||||
AC_ARG_ENABLE(default-pie,
|
||||
[AS_HELP_STRING([--enable-default-pie],
|
||||
[build linux toolchain with default PIE @<:@--enable-default-pie@:>@])],
|
||||
[],
|
||||
[enable_default_pie=no]
|
||||
)
|
||||
|
||||
AS_IF([test "x$enable_default_pie" != xyes],
|
||||
[AC_SUBST(enable_default_pie, "--disable-default-pie")],
|
||||
[AC_SUBST(enable_default_pie, "--enable-default-pie")])
|
||||
[AS_HELP_STRING([--enable-default-pie],
|
||||
[build linux toolchain with default PIE @<:@--enable-default-pie@:>@])])
|
||||
|
||||
AS_IF([test "x$enable_default_pie" = xyes],
|
||||
[AC_SUBST(enable_default_pie, "--enable-default-pie")],
|
||||
[AC_SUBST(enable_default_pie, "--disable-default-pie")])
|
||||
|
||||
AC_ARG_WITH(arch,
|
||||
[AS_HELP_STRING([--with-arch=rv64gc],
|
||||
|
@ -94,12 +79,16 @@ AC_ARG_WITH(abi,
|
|||
)
|
||||
|
||||
AC_ARG_WITH(tune,
|
||||
[AS_HELP_STRING([--with-tune=rocket],
|
||||
[Set the base RISC-V CPU, defaults to rocket])],
|
||||
[AS_HELP_STRING([--with-tune=generic],
|
||||
[Set the base RISC-V CPU, defaults to GCC's default])],
|
||||
[],
|
||||
[with_tune=rocket]
|
||||
[with_tune=no]
|
||||
)
|
||||
|
||||
AS_IF([test "x$with_tune" != xno],
|
||||
[AC_SUBST(WITH_TUNE,--with-tune=$with_tune)],
|
||||
[AC_SUBST(WITH_TUNE,"")])
|
||||
|
||||
AC_ARG_WITH(isa-spec,
|
||||
[AS_HELP_STRING([--with-isa-spec=20191213],
|
||||
[Set the default ISA spec version, default to 20191213, available options: 2.2, 20190608, 20191213])],
|
||||
|
@ -115,10 +104,10 @@ AC_ARG_WITH(sim,
|
|||
)
|
||||
|
||||
AC_ARG_WITH(languages,
|
||||
[AS_HELP_STRING([--with-languages=],
|
||||
[Sets the enabled languages for GNU toolchain, defaults to c,c++,fortran for Linux/native and Linux/glibc or c,c++ for Bare-metal, Linux/musl and Linux/uClibc])],
|
||||
[]
|
||||
)
|
||||
[AS_HELP_STRING([--with-languages=],
|
||||
[Sets the enabled languages for GNU toolchain, defaults to c,c++,fortran for Linux/native and Linux/glibc or c,c++ for Bare-metal, Linux/musl and Linux/uClibc])],
|
||||
[]
|
||||
)
|
||||
|
||||
AS_IF([test "x$with_abi" = xdefault],
|
||||
[AS_CASE([$with_arch],
|
||||
|
@ -134,17 +123,13 @@ AS_IF([test "x$with_abi" = xdefault],
|
|||
|
||||
AC_SUBST(WITH_ARCH, --with-arch=$with_arch)
|
||||
AC_SUBST(WITH_ABI, --with-abi=$with_abi)
|
||||
AC_SUBST(WITH_TUNE, --with-tune=$with_tune)
|
||||
AC_SUBST(WITH_ISA_SPEC, --with-isa-spec=$with_isa_spec)
|
||||
AC_SUBST(WITH_SIM, $with_sim)
|
||||
AC_SUBST(WITH_LANGUAGES, $with_languages)
|
||||
|
||||
AC_ARG_ENABLE(multilib,
|
||||
[AS_HELP_STRING([--enable-multilib],
|
||||
[build both RV32 and RV64 runtime libraries @<:@--disable-multilib@:>@])],
|
||||
[],
|
||||
[enable_multilib=no]
|
||||
)
|
||||
[build both RV32 and RV64 runtime libraries @<:@--disable-multilib@:>@])])
|
||||
|
||||
AC_ARG_WITH(multilib-generator,
|
||||
[AS_HELP_STRING([--with-multilib-generator],
|
||||
|
@ -161,46 +146,45 @@ AC_ARG_WITH(extra-multilib-test,
|
|||
)
|
||||
|
||||
AS_IF([test "x$with_multilib_generator" != xno],
|
||||
[AC_SUBST(multilib_gen,"$with_multilib_generator")],
|
||||
[AC_SUBST(multilib_gen,"")])
|
||||
[AC_SUBST(multilib_gen,"$with_multilib_generator")],
|
||||
[AC_SUBST(multilib_gen,"")])
|
||||
|
||||
AS_IF([test "x$with_extra_multilib_test" != xno],
|
||||
[AC_SUBST(extra_multilib_test,"$with_extra_multilib_test")],
|
||||
[AC_SUBST(extra_multilib_test,"")])
|
||||
[AC_SUBST(extra_multilib_test,"$with_extra_multilib_test")],
|
||||
[AC_SUBST(extra_multilib_test,"")])
|
||||
|
||||
AS_IF([test "x$enable_multilib" != xno || test "x$with_multilib_generator" != xno],
|
||||
[AC_SUBST(multilib_flags,--enable-multilib)],
|
||||
AS_IF([test "x$enable_multilib" = xyes || test "x$with_multilib_generator" != xno],
|
||||
[AC_SUBST(multilib_flags,--enable-multilib)],
|
||||
[AC_SUBST(multilib_flags,--disable-multilib)])
|
||||
|
||||
AS_IF([test "x$enable_multilib" != xno],
|
||||
[AC_SUBST(glibc_multilib_names,"rv32imac-ilp32 rv32gc-ilp32d rv64imac-lp64 rv64gc-lp64d rv64gcv-lp64d")],
|
||||
[AC_SUBST(glibc_multilib_names,"$with_arch-$with_abi")])
|
||||
AS_IF([test "x$enable_multilib" = xyes],
|
||||
[AC_SUBST(glibc_multilib_names,"rv32imac-ilp32 rv32gc-ilp32d rv64imac-lp64 rv64gc-lp64d rv64gcv-lp64d")],
|
||||
[AC_SUBST(glibc_multilib_names,"$with_arch-$with_abi")])
|
||||
|
||||
AS_IF([test "x$enable_multilib" != xno],
|
||||
[AC_SUBST(newlib_multilib_names,"rv32i-ilp32 rv32iac-ilp32 rv32im-ilp32 rv32imac-ilp32 rv32imafc-ilp32f rv64imac-lp64 rv64gc-lp64d")],
|
||||
[AC_SUBST(newlib_multilib_names,"$with_arch-$with_abi")])
|
||||
AS_IF([test "x$enable_multilib" = xyes],
|
||||
[AC_SUBST(newlib_multilib_names,"rv32i-ilp32 rv32iac-ilp32 rv32im-ilp32 rv32imac-ilp32 rv32imafc-ilp32f rv64imac-lp64 rv64gc-lp64d")],
|
||||
[AC_SUBST(newlib_multilib_names,"$with_arch-$with_abi")])
|
||||
|
||||
AS_IF([test "x$enable_multilib" != xno],
|
||||
[AC_SUBST(musl_multilib_names,"rv32imac-ilp32 rv32gc-ilp32d rv64imac-lp64 rv64gc-lp64d")],
|
||||
[AC_SUBST(musl_multilib_names,"$with_arch-$with_abi")])
|
||||
AS_IF([test "x$enable_multilib" = xyes],
|
||||
[AC_SUBST(musl_multilib_names,"rv32imac-ilp32 rv32gc-ilp32d rv64imac-lp64 rv64gc-lp64d")],
|
||||
[AC_SUBST(musl_multilib_names,"$with_arch-$with_abi")])
|
||||
|
||||
AC_ARG_ENABLE(gcc-checking,
|
||||
[AS_HELP_STRING([--enable-gcc-checking],
|
||||
[Enable gcc internal checking, it will make gcc very slow, only enable it when developing gcc @<:@--disable-gcc-checking@:>@])],
|
||||
[],
|
||||
[]
|
||||
)
|
||||
AS_IF([test "x$enable_gcc_checking" != x],
|
||||
[AC_SUBST(gcc_checking, --enable-checking=$enable_gcc_checking)],
|
||||
[AS_HELP_STRING([--enable-gcc-checking],
|
||||
[Enable gcc internal checking, it will make gcc very slow, only enable it when developing gcc @<:@--disable-gcc-checking@:>@])])
|
||||
|
||||
AS_IF([test "x$enable_gcc_checking" = xyes],
|
||||
[AC_SUBST(gcc_checking, --enable-checking)],
|
||||
[AC_SUBST(gcc_checking, "")])
|
||||
|
||||
AC_ARG_WITH(cmodel,
|
||||
[AS_HELP_STRING([--with-cmodel],
|
||||
[Select the code model to use when building libc and libgcc @<:@--with-cmodel=medlow@:>@])],
|
||||
[],
|
||||
[]
|
||||
[with_cmodel=no]
|
||||
)
|
||||
AS_IF([test "x$with_cmodel" != x],
|
||||
|
||||
AS_IF([test "x$with_cmodel" != xno],
|
||||
[AC_SUBST(cmodel, -mcmodel=$with_cmodel)],
|
||||
[AC_SUBST(cmodel, -mcmodel=medlow)])
|
||||
|
||||
|
@ -225,7 +209,7 @@ AC_CONFIG_FILES([scripts/wrapper/sed/sed], [chmod +x scripts/wrapper/sed/sed])
|
|||
|
||||
AC_ARG_WITH(host,
|
||||
[AS_HELP_STRING([--with-host=x86_64-w64-mingw32],
|
||||
[Sets the host for the tools, you probably want nothing])],
|
||||
[Sets the host for the tools, you probably want nothing])],
|
||||
[],
|
||||
[with_host=default]
|
||||
)
|
||||
|
@ -257,10 +241,7 @@ AS_IF([test "x$with_guile" != xdefault],
|
|||
|
||||
AC_ARG_ENABLE(gdb,
|
||||
[AS_HELP_STRING([--disable-gdb],
|
||||
[Don't build GDB, as it's not upstream])],
|
||||
[],
|
||||
[enable_gdb=yes]
|
||||
)
|
||||
[Don't build GDB, as it's not upstream])])
|
||||
|
||||
AS_IF([test "x$enable_gdb" != xno],
|
||||
[AC_SUBST(enable_gdb, --enable-gdb)],
|
||||
|
@ -268,24 +249,30 @@ AS_IF([test "x$enable_gdb" != xno],
|
|||
|
||||
AC_ARG_ENABLE(llvm,
|
||||
[AS_HELP_STRING([--enable-llvm],
|
||||
[Build LLVM (clang)])],
|
||||
[enable_llvm=yes],
|
||||
[]
|
||||
)
|
||||
[Build LLVM (clang)])])
|
||||
|
||||
AS_IF([test "x$enable_llvm" != xyes],
|
||||
[AC_SUBST(enable_llvm, --disable-llvm)],
|
||||
[AC_SUBST(enable_llvm, --enable-llvm)])
|
||||
AS_IF([test "x$enable_llvm" = xyes],
|
||||
[AC_SUBST(enable_llvm, --enable-llvm)],
|
||||
[AC_SUBST(enable_llvm, --disable-llvm)])
|
||||
|
||||
AC_ARG_ENABLE(host-gcc,
|
||||
[AS_HELP_STRING([--enable-host-gcc],
|
||||
[Build host GCC to build cross toolchain])],
|
||||
[enable_host_gcc=yes],
|
||||
[])
|
||||
[Build host GCC to build cross toolchain])])
|
||||
|
||||
AS_IF([test "x$enable_host_gcc" != xyes],
|
||||
[AC_SUBST(enable_host_gcc, --disable-host-gcc)],
|
||||
[AC_SUBST(enable_host_gcc, --enable-host-gcc)])
|
||||
AS_IF([test "x$enable_host_gcc" = xyes],
|
||||
[AC_SUBST(enable_host_gcc, --enable-host-gcc)],
|
||||
[AC_SUBST(enable_host_gcc, --disable-host-gcc)])
|
||||
|
||||
AC_ARG_ENABLE(strip,
|
||||
[AS_HELP_STRING([--enable-strip],
|
||||
[Strip debug symbols at install time])])
|
||||
|
||||
AS_IF([test "x$enable_strip" = xyes],
|
||||
[AC_SUBST(install_target, install-strip)],
|
||||
[AC_SUBST(install_target, install)])
|
||||
|
||||
AS_IF([test "x$enable_strip" = xyes],
|
||||
[AC_SUBST(enable_strip_qemu, -Dstrip=true)])
|
||||
|
||||
AC_DEFUN([AX_ARG_WITH_SRC],
|
||||
[{m4_pushdef([opt_name], with_$1_src)
|
||||
|
@ -325,23 +312,17 @@ AS_IF([test "x$with_linux_headers_src" != xdefault],
|
|||
|
||||
AC_ARG_ENABLE(libsanitizer,
|
||||
[AS_HELP_STRING([--enable-libsanitizer],
|
||||
[Build libsanitizer, which only supports rv64])],
|
||||
[],
|
||||
[enable_libsanitizer=no]
|
||||
)
|
||||
[Build libsanitizer, which only supports rv64])])
|
||||
|
||||
AS_IF([test "x$enable_libsanitizer" != xno],
|
||||
AS_IF([test "x$enable_libsanitizer" = xyes],
|
||||
[AC_SUBST(enable_libsanitizer, --enable-libsanitizer)],
|
||||
[AC_SUBST(enable_libsanitizer, --disable-libsanitizer)])
|
||||
|
||||
AC_ARG_ENABLE(qemu_system,
|
||||
[AS_HELP_STRING([--enable-qemu-system],
|
||||
[Build qemu with system-mode emulation])],
|
||||
[],
|
||||
[enable_qemu_system=no]
|
||||
)
|
||||
[Build qemu with system-mode emulation])])
|
||||
|
||||
AS_IF([test "x$enable_qemu_system" != xno],
|
||||
AS_IF([test "x$enable_qemu_system" = xyes],
|
||||
[AC_SUBST(qemu_targets, [riscv64-linux-user,riscv32-linux-user,riscv64-softmmu,riscv32-softmmu])],
|
||||
[AC_SUBST(qemu_targets, [riscv64-linux-user,riscv32-linux-user])])
|
||||
|
||||
|
|
2
dejagnu
2
dejagnu
|
@ -1 +1 @@
|
|||
Subproject commit 935a51f3c66ece357ce0d18f3aa3627a13cef7d5
|
||||
Subproject commit 3ea7702a75a6b7a51a70a9e91c20eeff339ad007
|
2
glibc
2
glibc
|
@ -1 +1 @@
|
|||
Subproject commit 74f59e9271cbb4071671e5a474e7d4f1622b186f
|
||||
Subproject commit d2097651cc57834dbfcaa102ddfacae0d86cfb66
|
|
@ -24,4 +24,8 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __BITS_PER_LONG_LONG
|
||||
#define __BITS_PER_LONG_LONG 64
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_GENERIC_BITS_PER_LONG */
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
/*
|
||||
* FMODE_EXEC is 0x20
|
||||
* FMODE_NONOTIFY is 0x4000000
|
||||
* These cannot be used by userspace O_* until internal and external open
|
||||
* flags are split.
|
||||
* -Eric Paris
|
||||
|
|
|
@ -80,13 +80,13 @@
|
|||
* NOTE: _IOW means userland is writing and kernel is reading. _IOR
|
||||
* means userland is reading and kernel is writing.
|
||||
*/
|
||||
#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0)
|
||||
#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size)))
|
||||
#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
|
||||
#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
|
||||
#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size))
|
||||
#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
|
||||
#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
|
||||
#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0)
|
||||
#define _IOR(type,nr,argtype) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(argtype)))
|
||||
#define _IOW(type,nr,argtype) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(argtype)))
|
||||
#define _IOWR(type,nr,argtype) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(argtype)))
|
||||
#define _IOR_BAD(type,nr,argtype) _IOC(_IOC_READ,(type),(nr),sizeof(argtype))
|
||||
#define _IOW_BAD(type,nr,argtype) _IOC(_IOC_WRITE,(type),(nr),sizeof(argtype))
|
||||
#define _IOWR_BAD(type,nr,argtype) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(argtype))
|
||||
|
||||
/* used to decode ioctl numbers.. */
|
||||
#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
|
||||
|
|
|
@ -79,9 +79,13 @@
|
|||
|
||||
#define MADV_COLLAPSE 25 /* Synchronous hugepage collapse */
|
||||
|
||||
#define MADV_GUARD_INSTALL 102 /* fatal signal on access to range */
|
||||
#define MADV_GUARD_REMOVE 103 /* unguard range */
|
||||
|
||||
/* compatibility flags */
|
||||
#define MAP_FILE 0
|
||||
|
||||
#define PKEY_UNRESTRICTED 0x0
|
||||
#define PKEY_DISABLE_ACCESS 0x1
|
||||
#define PKEY_DISABLE_WRITE 0x2
|
||||
#define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS |\
|
||||
|
|
|
@ -19,4 +19,8 @@
|
|||
#define MCL_FUTURE 2 /* lock all future mappings */
|
||||
#define MCL_ONFAULT 4 /* lock all pages that are faulted in */
|
||||
|
||||
#define SHADOW_STACK_SET_TOKEN (1ULL << 0) /* Set up a restore token in the shadow stack */
|
||||
#define SHADOW_STACK_SET_MARKER (1ULL << 1) /* Set up a top of stack marker in the shadow stack */
|
||||
|
||||
|
||||
#endif /* __ASM_GENERIC_MMAN_H */
|
||||
|
|
|
@ -46,7 +46,7 @@ union __sifields {
|
|||
__kernel_timer_t _tid; /* timer id */
|
||||
int _overrun; /* overrun count */
|
||||
sigval_t _sigval; /* same as below */
|
||||
int _sys_private; /* not to be passed to user */
|
||||
int _sys_private; /* Not used by the kernel. Historic leftover. Always 0. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals */
|
||||
|
@ -68,11 +68,6 @@ union __sifields {
|
|||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGTRAP, SIGEMT */
|
||||
struct {
|
||||
void *_addr; /* faulting insn/memory ref. */
|
||||
#ifdef __ia64__
|
||||
int _imm; /* immediate value for "break" */
|
||||
unsigned int _flags; /* see ia64 si_flags */
|
||||
unsigned long _isr; /* isr */
|
||||
#endif
|
||||
|
||||
#define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? \
|
||||
sizeof(short) : __alignof__(void *))
|
||||
|
|
|
@ -135,6 +135,18 @@
|
|||
#define SO_PASSPIDFD 76
|
||||
#define SO_PEERPIDFD 77
|
||||
|
||||
#define SO_DEVMEM_LINEAR 78
|
||||
#define SCM_DEVMEM_LINEAR SO_DEVMEM_LINEAR
|
||||
#define SO_DEVMEM_DMABUF 79
|
||||
#define SCM_DEVMEM_DMABUF SO_DEVMEM_DMABUF
|
||||
#define SO_DEVMEM_DONTNEED 80
|
||||
|
||||
#define SCM_TS_OPT_ID 81
|
||||
|
||||
#define SO_RCVPRIORITY 82
|
||||
|
||||
#define SO_PASSRIGHTS 83
|
||||
|
||||
|
||||
#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
|
||||
/* on 64-bit and x32, avoid the ?: operator */
|
||||
|
|
|
@ -71,7 +71,7 @@ __SYSCALL(__NR_fremovexattr, sys_fremovexattr)
|
|||
#define __NR_getcwd 17
|
||||
__SYSCALL(__NR_getcwd, sys_getcwd)
|
||||
#define __NR_lookup_dcookie 18
|
||||
__SC_COMP(__NR_lookup_dcookie, sys_lookup_dcookie, compat_sys_lookup_dcookie)
|
||||
__SYSCALL(__NR_lookup_dcookie, sys_ni_syscall)
|
||||
#define __NR_eventfd2 19
|
||||
__SYSCALL(__NR_eventfd2, sys_eventfd2)
|
||||
#define __NR_epoll_create1 20
|
||||
|
@ -737,7 +737,7 @@ __SC_COMP(__NR_pselect6_time64, sys_pselect6, compat_sys_pselect6_time64)
|
|||
#define __NR_ppoll_time64 414
|
||||
__SC_COMP(__NR_ppoll_time64, sys_ppoll, compat_sys_ppoll_time64)
|
||||
#define __NR_io_pgetevents_time64 416
|
||||
__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
|
||||
__SC_COMP(__NR_io_pgetevents_time64, sys_io_pgetevents, compat_sys_io_pgetevents_time64)
|
||||
#define __NR_recvmmsg_time64 417
|
||||
__SC_COMP(__NR_recvmmsg_time64, sys_recvmmsg, compat_sys_recvmmsg_time64)
|
||||
#define __NR_mq_timedsend_time64 418
|
||||
|
@ -776,12 +776,8 @@ __SYSCALL(__NR_fsmount, sys_fsmount)
|
|||
__SYSCALL(__NR_fspick, sys_fspick)
|
||||
#define __NR_pidfd_open 434
|
||||
__SYSCALL(__NR_pidfd_open, sys_pidfd_open)
|
||||
|
||||
#ifdef __ARCH_WANT_SYS_CLONE3
|
||||
#define __NR_clone3 435
|
||||
__SYSCALL(__NR_clone3, sys_clone3)
|
||||
#endif
|
||||
|
||||
#define __NR_close_range 436
|
||||
__SYSCALL(__NR_close_range, sys_close_range)
|
||||
#define __NR_openat2 437
|
||||
|
@ -816,15 +812,48 @@ __SYSCALL(__NR_process_mrelease, sys_process_mrelease)
|
|||
__SYSCALL(__NR_futex_waitv, sys_futex_waitv)
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
__SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node)
|
||||
|
||||
#define __NR_cachestat 451
|
||||
__SYSCALL(__NR_cachestat, sys_cachestat)
|
||||
|
||||
#define __NR_fchmodat2 452
|
||||
__SYSCALL(__NR_fchmodat2, sys_fchmodat2)
|
||||
#define __NR_map_shadow_stack 453
|
||||
__SYSCALL(__NR_map_shadow_stack, sys_map_shadow_stack)
|
||||
#define __NR_futex_wake 454
|
||||
__SYSCALL(__NR_futex_wake, sys_futex_wake)
|
||||
#define __NR_futex_wait 455
|
||||
__SYSCALL(__NR_futex_wait, sys_futex_wait)
|
||||
#define __NR_futex_requeue 456
|
||||
__SYSCALL(__NR_futex_requeue, sys_futex_requeue)
|
||||
|
||||
#define __NR_statmount 457
|
||||
__SYSCALL(__NR_statmount, sys_statmount)
|
||||
|
||||
#define __NR_listmount 458
|
||||
__SYSCALL(__NR_listmount, sys_listmount)
|
||||
|
||||
#define __NR_lsm_get_self_attr 459
|
||||
__SYSCALL(__NR_lsm_get_self_attr, sys_lsm_get_self_attr)
|
||||
#define __NR_lsm_set_self_attr 460
|
||||
__SYSCALL(__NR_lsm_set_self_attr, sys_lsm_set_self_attr)
|
||||
#define __NR_lsm_list_modules 461
|
||||
__SYSCALL(__NR_lsm_list_modules, sys_lsm_list_modules)
|
||||
|
||||
#define __NR_mseal 462
|
||||
__SYSCALL(__NR_mseal, sys_mseal)
|
||||
|
||||
#define __NR_setxattrat 463
|
||||
__SYSCALL(__NR_setxattrat, sys_setxattrat)
|
||||
#define __NR_getxattrat 464
|
||||
__SYSCALL(__NR_getxattrat, sys_getxattrat)
|
||||
#define __NR_listxattrat 465
|
||||
__SYSCALL(__NR_listxattrat, sys_listxattrat)
|
||||
#define __NR_removexattrat 466
|
||||
__SYSCALL(__NR_removexattrat, sys_removexattrat)
|
||||
#define __NR_open_tree_attr 467
|
||||
__SYSCALL(__NR_open_tree_attr, sys_open_tree_attr)
|
||||
|
||||
#undef __NR_syscalls
|
||||
#define __NR_syscalls 453
|
||||
#define __NR_syscalls 468
|
||||
|
||||
/*
|
||||
* 32 bit systems traditionally used different
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#define AT_L3_CACHEGEOMETRY 47
|
||||
|
||||
/* entries in ARCH_DLINFO */
|
||||
#define AT_VECTOR_SIZE_ARCH 9
|
||||
#define AT_VECTOR_SIZE_ARCH 10
|
||||
#define AT_MINSIGSTKSZ 51
|
||||
|
||||
#endif /* _ASM_RISCV_AUXVEC_H */
|
||||
|
|
|
@ -49,6 +49,7 @@ typedef union __riscv_fp_state elf_fpregset_t;
|
|||
#define R_RISCV_TLS_DTPREL64 9
|
||||
#define R_RISCV_TLS_TPREL32 10
|
||||
#define R_RISCV_TLS_TPREL64 11
|
||||
#define R_RISCV_IRELATIVE 58
|
||||
|
||||
/* Relocation types not used by the dynamic linker */
|
||||
#define R_RISCV_BRANCH 16
|
||||
|
@ -81,7 +82,6 @@ typedef union __riscv_fp_state elf_fpregset_t;
|
|||
#define R_RISCV_ALIGN 43
|
||||
#define R_RISCV_RVC_BRANCH 44
|
||||
#define R_RISCV_RVC_JUMP 45
|
||||
#define R_RISCV_LUI 46
|
||||
#define R_RISCV_GPREL_I 47
|
||||
#define R_RISCV_GPREL_S 48
|
||||
#define R_RISCV_TPREL_I 49
|
||||
|
@ -93,6 +93,9 @@ typedef union __riscv_fp_state elf_fpregset_t;
|
|||
#define R_RISCV_SET16 55
|
||||
#define R_RISCV_SET32 56
|
||||
#define R_RISCV_32_PCREL 57
|
||||
#define R_RISCV_PLT32 59
|
||||
#define R_RISCV_SET_ULEB128 60
|
||||
#define R_RISCV_SUB_ULEB128 61
|
||||
|
||||
|
||||
#endif /* _ASM_RISCV_ELF_H */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 2023 Rivos, Inc
|
||||
* Copyright 2023-2024 Rivos, Inc
|
||||
*/
|
||||
|
||||
#ifndef _ASM_HWPROBE_H
|
||||
|
@ -10,7 +10,7 @@
|
|||
|
||||
/*
|
||||
* Interface for probing hardware capabilities from userspace, see
|
||||
* Documentation/riscv/hwprobe.rst for more information.
|
||||
* Documentation/arch/riscv/hwprobe.rst for more information.
|
||||
*/
|
||||
struct riscv_hwprobe {
|
||||
__s64 key;
|
||||
|
@ -29,6 +29,59 @@ struct riscv_hwprobe {
|
|||
#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
|
||||
#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
|
||||
#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
|
||||
#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
|
||||
#define RISCV_HWPROBE_EXT_ZBC (1 << 7)
|
||||
#define RISCV_HWPROBE_EXT_ZBKB (1 << 8)
|
||||
#define RISCV_HWPROBE_EXT_ZBKC (1 << 9)
|
||||
#define RISCV_HWPROBE_EXT_ZBKX (1 << 10)
|
||||
#define RISCV_HWPROBE_EXT_ZKND (1 << 11)
|
||||
#define RISCV_HWPROBE_EXT_ZKNE (1 << 12)
|
||||
#define RISCV_HWPROBE_EXT_ZKNH (1 << 13)
|
||||
#define RISCV_HWPROBE_EXT_ZKSED (1 << 14)
|
||||
#define RISCV_HWPROBE_EXT_ZKSH (1 << 15)
|
||||
#define RISCV_HWPROBE_EXT_ZKT (1 << 16)
|
||||
#define RISCV_HWPROBE_EXT_ZVBB (1 << 17)
|
||||
#define RISCV_HWPROBE_EXT_ZVBC (1 << 18)
|
||||
#define RISCV_HWPROBE_EXT_ZVKB (1 << 19)
|
||||
#define RISCV_HWPROBE_EXT_ZVKG (1 << 20)
|
||||
#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21)
|
||||
#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22)
|
||||
#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23)
|
||||
#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24)
|
||||
#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25)
|
||||
#define RISCV_HWPROBE_EXT_ZVKT (1 << 26)
|
||||
#define RISCV_HWPROBE_EXT_ZFH (1 << 27)
|
||||
#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28)
|
||||
#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29)
|
||||
#define RISCV_HWPROBE_EXT_ZVFH (1 << 30)
|
||||
#define RISCV_HWPROBE_EXT_ZVFHMIN (1ULL << 31)
|
||||
#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32)
|
||||
#define RISCV_HWPROBE_EXT_ZTSO (1ULL << 33)
|
||||
#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34)
|
||||
#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35)
|
||||
#define RISCV_HWPROBE_EXT_ZIHINTPAUSE (1ULL << 36)
|
||||
#define RISCV_HWPROBE_EXT_ZVE32X (1ULL << 37)
|
||||
#define RISCV_HWPROBE_EXT_ZVE32F (1ULL << 38)
|
||||
#define RISCV_HWPROBE_EXT_ZVE64X (1ULL << 39)
|
||||
#define RISCV_HWPROBE_EXT_ZVE64F (1ULL << 40)
|
||||
#define RISCV_HWPROBE_EXT_ZVE64D (1ULL << 41)
|
||||
#define RISCV_HWPROBE_EXT_ZIMOP (1ULL << 42)
|
||||
#define RISCV_HWPROBE_EXT_ZCA (1ULL << 43)
|
||||
#define RISCV_HWPROBE_EXT_ZCB (1ULL << 44)
|
||||
#define RISCV_HWPROBE_EXT_ZCD (1ULL << 45)
|
||||
#define RISCV_HWPROBE_EXT_ZCF (1ULL << 46)
|
||||
#define RISCV_HWPROBE_EXT_ZCMOP (1ULL << 47)
|
||||
#define RISCV_HWPROBE_EXT_ZAWRS (1ULL << 48)
|
||||
#define RISCV_HWPROBE_EXT_SUPM (1ULL << 49)
|
||||
#define RISCV_HWPROBE_EXT_ZICNTR (1ULL << 50)
|
||||
#define RISCV_HWPROBE_EXT_ZIHPM (1ULL << 51)
|
||||
#define RISCV_HWPROBE_EXT_ZFBFMIN (1ULL << 52)
|
||||
#define RISCV_HWPROBE_EXT_ZVFBFMIN (1ULL << 53)
|
||||
#define RISCV_HWPROBE_EXT_ZVFBFWMA (1ULL << 54)
|
||||
#define RISCV_HWPROBE_EXT_ZICBOM (1ULL << 55)
|
||||
#define RISCV_HWPROBE_EXT_ZAAMO (1ULL << 56)
|
||||
#define RISCV_HWPROBE_EXT_ZALRSC (1ULL << 57)
|
||||
#define RISCV_HWPROBE_EXT_ZABHA (1ULL << 58)
|
||||
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
|
||||
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
|
||||
#define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0)
|
||||
|
@ -36,6 +89,26 @@ struct riscv_hwprobe {
|
|||
#define RISCV_HWPROBE_MISALIGNED_FAST (3 << 0)
|
||||
#define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0)
|
||||
#define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0)
|
||||
#define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6
|
||||
#define RISCV_HWPROBE_KEY_HIGHEST_VIRT_ADDRESS 7
|
||||
#define RISCV_HWPROBE_KEY_TIME_CSR_FREQ 8
|
||||
#define RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF 9
|
||||
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNKNOWN 0
|
||||
#define RISCV_HWPROBE_MISALIGNED_SCALAR_EMULATED 1
|
||||
#define RISCV_HWPROBE_MISALIGNED_SCALAR_SLOW 2
|
||||
#define RISCV_HWPROBE_MISALIGNED_SCALAR_FAST 3
|
||||
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNSUPPORTED 4
|
||||
#define RISCV_HWPROBE_KEY_MISALIGNED_VECTOR_PERF 10
|
||||
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNKNOWN 0
|
||||
#define RISCV_HWPROBE_MISALIGNED_VECTOR_SLOW 2
|
||||
#define RISCV_HWPROBE_MISALIGNED_VECTOR_FAST 3
|
||||
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORTED 4
|
||||
#define RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0 11
|
||||
#define RISCV_HWPROBE_KEY_ZICBOM_BLOCK_SIZE 12
|
||||
#define RISCV_HWPROBE_KEY_VENDOR_EXT_SIFIVE_0 13
|
||||
/* Increase RISCV_HWPROBE_MAX_KEY when adding items. */
|
||||
|
||||
/* Flags */
|
||||
#define RISCV_HWPROBE_WHICH_CPUS (1 << 0)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include <asm/ptrace.h>
|
||||
|
||||
#define __KVM_HAVE_IRQ_LINE
|
||||
#define __KVM_HAVE_READONLY_MEM
|
||||
|
||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||
|
||||
|
@ -80,6 +79,7 @@ struct kvm_riscv_csr {
|
|||
unsigned long sip;
|
||||
unsigned long satp;
|
||||
unsigned long scounteren;
|
||||
unsigned long senvcfg;
|
||||
};
|
||||
|
||||
/* AIA CSR registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
|
||||
|
@ -93,6 +93,11 @@ struct kvm_riscv_aia_csr {
|
|||
unsigned long iprio2h;
|
||||
};
|
||||
|
||||
/* Smstateen CSR for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
|
||||
struct kvm_riscv_smstateen_csr {
|
||||
unsigned long sstateen0;
|
||||
};
|
||||
|
||||
/* TIMER registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
|
||||
struct kvm_riscv_timer {
|
||||
__u64 frequency;
|
||||
|
@ -131,6 +136,54 @@ enum KVM_RISCV_ISA_EXT_ID {
|
|||
KVM_RISCV_ISA_EXT_ZICSR,
|
||||
KVM_RISCV_ISA_EXT_ZIFENCEI,
|
||||
KVM_RISCV_ISA_EXT_ZIHPM,
|
||||
KVM_RISCV_ISA_EXT_SMSTATEEN,
|
||||
KVM_RISCV_ISA_EXT_ZICOND,
|
||||
KVM_RISCV_ISA_EXT_ZBC,
|
||||
KVM_RISCV_ISA_EXT_ZBKB,
|
||||
KVM_RISCV_ISA_EXT_ZBKC,
|
||||
KVM_RISCV_ISA_EXT_ZBKX,
|
||||
KVM_RISCV_ISA_EXT_ZKND,
|
||||
KVM_RISCV_ISA_EXT_ZKNE,
|
||||
KVM_RISCV_ISA_EXT_ZKNH,
|
||||
KVM_RISCV_ISA_EXT_ZKR,
|
||||
KVM_RISCV_ISA_EXT_ZKSED,
|
||||
KVM_RISCV_ISA_EXT_ZKSH,
|
||||
KVM_RISCV_ISA_EXT_ZKT,
|
||||
KVM_RISCV_ISA_EXT_ZVBB,
|
||||
KVM_RISCV_ISA_EXT_ZVBC,
|
||||
KVM_RISCV_ISA_EXT_ZVKB,
|
||||
KVM_RISCV_ISA_EXT_ZVKG,
|
||||
KVM_RISCV_ISA_EXT_ZVKNED,
|
||||
KVM_RISCV_ISA_EXT_ZVKNHA,
|
||||
KVM_RISCV_ISA_EXT_ZVKNHB,
|
||||
KVM_RISCV_ISA_EXT_ZVKSED,
|
||||
KVM_RISCV_ISA_EXT_ZVKSH,
|
||||
KVM_RISCV_ISA_EXT_ZVKT,
|
||||
KVM_RISCV_ISA_EXT_ZFH,
|
||||
KVM_RISCV_ISA_EXT_ZFHMIN,
|
||||
KVM_RISCV_ISA_EXT_ZIHINTNTL,
|
||||
KVM_RISCV_ISA_EXT_ZVFH,
|
||||
KVM_RISCV_ISA_EXT_ZVFHMIN,
|
||||
KVM_RISCV_ISA_EXT_ZFA,
|
||||
KVM_RISCV_ISA_EXT_ZTSO,
|
||||
KVM_RISCV_ISA_EXT_ZACAS,
|
||||
KVM_RISCV_ISA_EXT_SSCOFPMF,
|
||||
KVM_RISCV_ISA_EXT_ZIMOP,
|
||||
KVM_RISCV_ISA_EXT_ZCA,
|
||||
KVM_RISCV_ISA_EXT_ZCB,
|
||||
KVM_RISCV_ISA_EXT_ZCD,
|
||||
KVM_RISCV_ISA_EXT_ZCF,
|
||||
KVM_RISCV_ISA_EXT_ZCMOP,
|
||||
KVM_RISCV_ISA_EXT_ZAWRS,
|
||||
KVM_RISCV_ISA_EXT_SMNPM,
|
||||
KVM_RISCV_ISA_EXT_SSNPM,
|
||||
KVM_RISCV_ISA_EXT_SVADE,
|
||||
KVM_RISCV_ISA_EXT_SVADU,
|
||||
KVM_RISCV_ISA_EXT_SVVPTC,
|
||||
KVM_RISCV_ISA_EXT_ZABHA,
|
||||
KVM_RISCV_ISA_EXT_ZICCRSE,
|
||||
KVM_RISCV_ISA_EXT_ZAAMO,
|
||||
KVM_RISCV_ISA_EXT_ZALRSC,
|
||||
KVM_RISCV_ISA_EXT_MAX,
|
||||
};
|
||||
|
||||
|
@ -148,16 +201,22 @@ enum KVM_RISCV_SBI_EXT_ID {
|
|||
KVM_RISCV_SBI_EXT_PMU,
|
||||
KVM_RISCV_SBI_EXT_EXPERIMENTAL,
|
||||
KVM_RISCV_SBI_EXT_VENDOR,
|
||||
KVM_RISCV_SBI_EXT_DBCN,
|
||||
KVM_RISCV_SBI_EXT_STA,
|
||||
KVM_RISCV_SBI_EXT_SUSP,
|
||||
KVM_RISCV_SBI_EXT_MAX,
|
||||
};
|
||||
|
||||
/* SBI STA extension registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
|
||||
struct kvm_riscv_sbi_sta {
|
||||
unsigned long shmem_lo;
|
||||
unsigned long shmem_hi;
|
||||
};
|
||||
|
||||
/* Possible states for kvm_riscv_timer */
|
||||
#define KVM_RISCV_TIMER_STATE_OFF 0
|
||||
#define KVM_RISCV_TIMER_STATE_ON 1
|
||||
|
||||
#define KVM_REG_SIZE(id) \
|
||||
(1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
|
||||
|
||||
/* If you need to interpret the index values, here is the key: */
|
||||
#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
|
||||
#define KVM_REG_RISCV_TYPE_SHIFT 24
|
||||
|
@ -178,10 +237,13 @@ enum KVM_RISCV_SBI_EXT_ID {
|
|||
#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_CSR_GENERAL (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_CSR_AIA (0x1 << KVM_REG_RISCV_SUBTYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_CSR_SMSTATEEN (0x2 << KVM_REG_RISCV_SUBTYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_CSR_REG(name) \
|
||||
(offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
|
||||
#define KVM_REG_RISCV_CSR_AIA_REG(name) \
|
||||
(offsetof(struct kvm_riscv_aia_csr, name) / sizeof(unsigned long))
|
||||
#define KVM_REG_RISCV_CSR_SMSTATEEN_REG(name) \
|
||||
(offsetof(struct kvm_riscv_smstateen_csr, name) / sizeof(unsigned long))
|
||||
|
||||
/* Timer registers are mapped as type 4 */
|
||||
#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
|
||||
|
@ -229,6 +291,12 @@ enum KVM_RISCV_SBI_EXT_ID {
|
|||
#define KVM_REG_RISCV_VECTOR_REG(n) \
|
||||
((n) + sizeof(struct __riscv_v_ext_state) / sizeof(unsigned long))
|
||||
|
||||
/* Registers for specific SBI extensions are mapped as type 10 */
|
||||
#define KVM_REG_RISCV_SBI_STATE (0x0a << KVM_REG_RISCV_TYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_SBI_STA (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_SBI_STA_REG(name) \
|
||||
(offsetof(struct kvm_riscv_sbi_sta, name) / sizeof(unsigned long))
|
||||
|
||||
/* Device Control API: RISC-V AIA */
|
||||
#define KVM_DEV_RISCV_APLIC_ALIGN 0x1000
|
||||
#define KVM_DEV_RISCV_APLIC_SIZE 0x4000
|
||||
|
|
|
@ -14,41 +14,10 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <asm/bitsperlong.h>
|
||||
|
||||
#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
|
||||
#define __ARCH_WANT_NEW_STAT
|
||||
#define __ARCH_WANT_SET_GET_RLIMIT
|
||||
#endif /* __LP64__ */
|
||||
|
||||
#define __ARCH_WANT_SYS_CLONE3
|
||||
#define __ARCH_WANT_MEMFD_SECRET
|
||||
|
||||
#include <asm-generic/unistd.h>
|
||||
|
||||
/*
|
||||
* Allows the instruction cache to be flushed from userspace. Despite RISC-V
|
||||
* having a direct 'fence.i' instruction available to userspace (which we
|
||||
* can't trap!), that's not actually viable when running on Linux because the
|
||||
* kernel might schedule a process on another hart. There is no way for
|
||||
* userspace to handle this without invoking the kernel (as it doesn't know the
|
||||
* thread->hart mappings), so we've defined a RISC-V specific system call to
|
||||
* flush the instruction cache.
|
||||
*
|
||||
* __NR_riscv_flush_icache is defined to flush the instruction cache over an
|
||||
* address range, with the flush applying to either all threads or just the
|
||||
* caller. We don't currently do anything with the address range, that's just
|
||||
* in there for forwards compatibility.
|
||||
*/
|
||||
#ifndef __NR_riscv_flush_icache
|
||||
#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
|
||||
#if __BITS_PER_LONG == 64
|
||||
#include <asm/unistd_64.h>
|
||||
#else
|
||||
#include <asm/unistd_32.h>
|
||||
#endif
|
||||
__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
|
||||
|
||||
/*
|
||||
* Allows userspace to query the kernel for CPU architecture and
|
||||
* microarchitecture details across a given set of CPUs.
|
||||
*/
|
||||
#ifndef __NR_riscv_hwprobe
|
||||
#define __NR_riscv_hwprobe (__NR_arch_specific_syscall + 14)
|
||||
#endif
|
||||
__SYSCALL(__NR_riscv_hwprobe, sys_riscv_hwprobe)
|
||||
|
|
|
@ -0,0 +1,320 @@
|
|||
#ifndef _ASM_UNISTD_32_H
|
||||
#define _ASM_UNISTD_32_H
|
||||
|
||||
#define __NR_io_setup 0
|
||||
#define __NR_io_destroy 1
|
||||
#define __NR_io_submit 2
|
||||
#define __NR_io_cancel 3
|
||||
#define __NR_setxattr 5
|
||||
#define __NR_lsetxattr 6
|
||||
#define __NR_fsetxattr 7
|
||||
#define __NR_getxattr 8
|
||||
#define __NR_lgetxattr 9
|
||||
#define __NR_fgetxattr 10
|
||||
#define __NR_listxattr 11
|
||||
#define __NR_llistxattr 12
|
||||
#define __NR_flistxattr 13
|
||||
#define __NR_removexattr 14
|
||||
#define __NR_lremovexattr 15
|
||||
#define __NR_fremovexattr 16
|
||||
#define __NR_getcwd 17
|
||||
#define __NR_lookup_dcookie 18
|
||||
#define __NR_eventfd2 19
|
||||
#define __NR_epoll_create1 20
|
||||
#define __NR_epoll_ctl 21
|
||||
#define __NR_epoll_pwait 22
|
||||
#define __NR_dup 23
|
||||
#define __NR_dup3 24
|
||||
#define __NR_fcntl64 25
|
||||
#define __NR_inotify_init1 26
|
||||
#define __NR_inotify_add_watch 27
|
||||
#define __NR_inotify_rm_watch 28
|
||||
#define __NR_ioctl 29
|
||||
#define __NR_ioprio_set 30
|
||||
#define __NR_ioprio_get 31
|
||||
#define __NR_flock 32
|
||||
#define __NR_mknodat 33
|
||||
#define __NR_mkdirat 34
|
||||
#define __NR_unlinkat 35
|
||||
#define __NR_symlinkat 36
|
||||
#define __NR_linkat 37
|
||||
#define __NR_umount2 39
|
||||
#define __NR_mount 40
|
||||
#define __NR_pivot_root 41
|
||||
#define __NR_nfsservctl 42
|
||||
#define __NR_statfs64 43
|
||||
#define __NR_fstatfs64 44
|
||||
#define __NR_truncate64 45
|
||||
#define __NR_ftruncate64 46
|
||||
#define __NR_fallocate 47
|
||||
#define __NR_faccessat 48
|
||||
#define __NR_chdir 49
|
||||
#define __NR_fchdir 50
|
||||
#define __NR_chroot 51
|
||||
#define __NR_fchmod 52
|
||||
#define __NR_fchmodat 53
|
||||
#define __NR_fchownat 54
|
||||
#define __NR_fchown 55
|
||||
#define __NR_openat 56
|
||||
#define __NR_close 57
|
||||
#define __NR_vhangup 58
|
||||
#define __NR_pipe2 59
|
||||
#define __NR_quotactl 60
|
||||
#define __NR_getdents64 61
|
||||
#define __NR_llseek 62
|
||||
#define __NR_read 63
|
||||
#define __NR_write 64
|
||||
#define __NR_readv 65
|
||||
#define __NR_writev 66
|
||||
#define __NR_pread64 67
|
||||
#define __NR_pwrite64 68
|
||||
#define __NR_preadv 69
|
||||
#define __NR_pwritev 70
|
||||
#define __NR_sendfile64 71
|
||||
#define __NR_signalfd4 74
|
||||
#define __NR_vmsplice 75
|
||||
#define __NR_splice 76
|
||||
#define __NR_tee 77
|
||||
#define __NR_readlinkat 78
|
||||
#define __NR_sync 81
|
||||
#define __NR_fsync 82
|
||||
#define __NR_fdatasync 83
|
||||
#define __NR_sync_file_range 84
|
||||
#define __NR_timerfd_create 85
|
||||
#define __NR_acct 89
|
||||
#define __NR_capget 90
|
||||
#define __NR_capset 91
|
||||
#define __NR_personality 92
|
||||
#define __NR_exit 93
|
||||
#define __NR_exit_group 94
|
||||
#define __NR_waitid 95
|
||||
#define __NR_set_tid_address 96
|
||||
#define __NR_unshare 97
|
||||
#define __NR_set_robust_list 99
|
||||
#define __NR_get_robust_list 100
|
||||
#define __NR_getitimer 102
|
||||
#define __NR_setitimer 103
|
||||
#define __NR_kexec_load 104
|
||||
#define __NR_init_module 105
|
||||
#define __NR_delete_module 106
|
||||
#define __NR_timer_create 107
|
||||
#define __NR_timer_getoverrun 109
|
||||
#define __NR_timer_delete 111
|
||||
#define __NR_syslog 116
|
||||
#define __NR_ptrace 117
|
||||
#define __NR_sched_setparam 118
|
||||
#define __NR_sched_setscheduler 119
|
||||
#define __NR_sched_getscheduler 120
|
||||
#define __NR_sched_getparam 121
|
||||
#define __NR_sched_setaffinity 122
|
||||
#define __NR_sched_getaffinity 123
|
||||
#define __NR_sched_yield 124
|
||||
#define __NR_sched_get_priority_max 125
|
||||
#define __NR_sched_get_priority_min 126
|
||||
#define __NR_restart_syscall 128
|
||||
#define __NR_kill 129
|
||||
#define __NR_tkill 130
|
||||
#define __NR_tgkill 131
|
||||
#define __NR_sigaltstack 132
|
||||
#define __NR_rt_sigsuspend 133
|
||||
#define __NR_rt_sigaction 134
|
||||
#define __NR_rt_sigprocmask 135
|
||||
#define __NR_rt_sigpending 136
|
||||
#define __NR_rt_sigqueueinfo 138
|
||||
#define __NR_rt_sigreturn 139
|
||||
#define __NR_setpriority 140
|
||||
#define __NR_getpriority 141
|
||||
#define __NR_reboot 142
|
||||
#define __NR_setregid 143
|
||||
#define __NR_setgid 144
|
||||
#define __NR_setreuid 145
|
||||
#define __NR_setuid 146
|
||||
#define __NR_setresuid 147
|
||||
#define __NR_getresuid 148
|
||||
#define __NR_setresgid 149
|
||||
#define __NR_getresgid 150
|
||||
#define __NR_setfsuid 151
|
||||
#define __NR_setfsgid 152
|
||||
#define __NR_times 153
|
||||
#define __NR_setpgid 154
|
||||
#define __NR_getpgid 155
|
||||
#define __NR_getsid 156
|
||||
#define __NR_setsid 157
|
||||
#define __NR_getgroups 158
|
||||
#define __NR_setgroups 159
|
||||
#define __NR_uname 160
|
||||
#define __NR_sethostname 161
|
||||
#define __NR_setdomainname 162
|
||||
#define __NR_getrusage 165
|
||||
#define __NR_umask 166
|
||||
#define __NR_prctl 167
|
||||
#define __NR_getcpu 168
|
||||
#define __NR_getpid 172
|
||||
#define __NR_getppid 173
|
||||
#define __NR_getuid 174
|
||||
#define __NR_geteuid 175
|
||||
#define __NR_getgid 176
|
||||
#define __NR_getegid 177
|
||||
#define __NR_gettid 178
|
||||
#define __NR_sysinfo 179
|
||||
#define __NR_mq_open 180
|
||||
#define __NR_mq_unlink 181
|
||||
#define __NR_mq_notify 184
|
||||
#define __NR_mq_getsetattr 185
|
||||
#define __NR_msgget 186
|
||||
#define __NR_msgctl 187
|
||||
#define __NR_msgrcv 188
|
||||
#define __NR_msgsnd 189
|
||||
#define __NR_semget 190
|
||||
#define __NR_semctl 191
|
||||
#define __NR_semop 193
|
||||
#define __NR_shmget 194
|
||||
#define __NR_shmctl 195
|
||||
#define __NR_shmat 196
|
||||
#define __NR_shmdt 197
|
||||
#define __NR_socket 198
|
||||
#define __NR_socketpair 199
|
||||
#define __NR_bind 200
|
||||
#define __NR_listen 201
|
||||
#define __NR_accept 202
|
||||
#define __NR_connect 203
|
||||
#define __NR_getsockname 204
|
||||
#define __NR_getpeername 205
|
||||
#define __NR_sendto 206
|
||||
#define __NR_recvfrom 207
|
||||
#define __NR_setsockopt 208
|
||||
#define __NR_getsockopt 209
|
||||
#define __NR_shutdown 210
|
||||
#define __NR_sendmsg 211
|
||||
#define __NR_recvmsg 212
|
||||
#define __NR_readahead 213
|
||||
#define __NR_brk 214
|
||||
#define __NR_munmap 215
|
||||
#define __NR_mremap 216
|
||||
#define __NR_add_key 217
|
||||
#define __NR_request_key 218
|
||||
#define __NR_keyctl 219
|
||||
#define __NR_clone 220
|
||||
#define __NR_execve 221
|
||||
#define __NR_mmap2 222
|
||||
#define __NR_fadvise64_64 223
|
||||
#define __NR_swapon 224
|
||||
#define __NR_swapoff 225
|
||||
#define __NR_mprotect 226
|
||||
#define __NR_msync 227
|
||||
#define __NR_mlock 228
|
||||
#define __NR_munlock 229
|
||||
#define __NR_mlockall 230
|
||||
#define __NR_munlockall 231
|
||||
#define __NR_mincore 232
|
||||
#define __NR_madvise 233
|
||||
#define __NR_remap_file_pages 234
|
||||
#define __NR_mbind 235
|
||||
#define __NR_get_mempolicy 236
|
||||
#define __NR_set_mempolicy 237
|
||||
#define __NR_migrate_pages 238
|
||||
#define __NR_move_pages 239
|
||||
#define __NR_rt_tgsigqueueinfo 240
|
||||
#define __NR_perf_event_open 241
|
||||
#define __NR_accept4 242
|
||||
#define __NR_riscv_hwprobe 258
|
||||
#define __NR_riscv_flush_icache 259
|
||||
#define __NR_prlimit64 261
|
||||
#define __NR_fanotify_init 262
|
||||
#define __NR_fanotify_mark 263
|
||||
#define __NR_name_to_handle_at 264
|
||||
#define __NR_open_by_handle_at 265
|
||||
#define __NR_syncfs 267
|
||||
#define __NR_setns 268
|
||||
#define __NR_sendmmsg 269
|
||||
#define __NR_process_vm_readv 270
|
||||
#define __NR_process_vm_writev 271
|
||||
#define __NR_kcmp 272
|
||||
#define __NR_finit_module 273
|
||||
#define __NR_sched_setattr 274
|
||||
#define __NR_sched_getattr 275
|
||||
#define __NR_renameat2 276
|
||||
#define __NR_seccomp 277
|
||||
#define __NR_getrandom 278
|
||||
#define __NR_memfd_create 279
|
||||
#define __NR_bpf 280
|
||||
#define __NR_execveat 281
|
||||
#define __NR_userfaultfd 282
|
||||
#define __NR_membarrier 283
|
||||
#define __NR_mlock2 284
|
||||
#define __NR_copy_file_range 285
|
||||
#define __NR_preadv2 286
|
||||
#define __NR_pwritev2 287
|
||||
#define __NR_pkey_mprotect 288
|
||||
#define __NR_pkey_alloc 289
|
||||
#define __NR_pkey_free 290
|
||||
#define __NR_statx 291
|
||||
#define __NR_rseq 293
|
||||
#define __NR_kexec_file_load 294
|
||||
#define __NR_clock_gettime64 403
|
||||
#define __NR_clock_settime64 404
|
||||
#define __NR_clock_adjtime64 405
|
||||
#define __NR_clock_getres_time64 406
|
||||
#define __NR_clock_nanosleep_time64 407
|
||||
#define __NR_timer_gettime64 408
|
||||
#define __NR_timer_settime64 409
|
||||
#define __NR_timerfd_gettime64 410
|
||||
#define __NR_timerfd_settime64 411
|
||||
#define __NR_utimensat_time64 412
|
||||
#define __NR_pselect6_time64 413
|
||||
#define __NR_ppoll_time64 414
|
||||
#define __NR_io_pgetevents_time64 416
|
||||
#define __NR_recvmmsg_time64 417
|
||||
#define __NR_mq_timedsend_time64 418
|
||||
#define __NR_mq_timedreceive_time64 419
|
||||
#define __NR_semtimedop_time64 420
|
||||
#define __NR_rt_sigtimedwait_time64 421
|
||||
#define __NR_futex_time64 422
|
||||
#define __NR_sched_rr_get_interval_time64 423
|
||||
#define __NR_pidfd_send_signal 424
|
||||
#define __NR_io_uring_setup 425
|
||||
#define __NR_io_uring_enter 426
|
||||
#define __NR_io_uring_register 427
|
||||
#define __NR_open_tree 428
|
||||
#define __NR_move_mount 429
|
||||
#define __NR_fsopen 430
|
||||
#define __NR_fsconfig 431
|
||||
#define __NR_fsmount 432
|
||||
#define __NR_fspick 433
|
||||
#define __NR_pidfd_open 434
|
||||
#define __NR_clone3 435
|
||||
#define __NR_close_range 436
|
||||
#define __NR_openat2 437
|
||||
#define __NR_pidfd_getfd 438
|
||||
#define __NR_faccessat2 439
|
||||
#define __NR_process_madvise 440
|
||||
#define __NR_epoll_pwait2 441
|
||||
#define __NR_mount_setattr 442
|
||||
#define __NR_quotactl_fd 443
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_memfd_secret 447
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
#define __NR_map_shadow_stack 453
|
||||
#define __NR_futex_wake 454
|
||||
#define __NR_futex_wait 455
|
||||
#define __NR_futex_requeue 456
|
||||
#define __NR_statmount 457
|
||||
#define __NR_listmount 458
|
||||
#define __NR_lsm_get_self_attr 459
|
||||
#define __NR_lsm_set_self_attr 460
|
||||
#define __NR_lsm_list_modules 461
|
||||
#define __NR_mseal 462
|
||||
#define __NR_setxattrat 463
|
||||
#define __NR_getxattrat 464
|
||||
#define __NR_listxattrat 465
|
||||
#define __NR_removexattrat 466
|
||||
#define __NR_open_tree_attr 467
|
||||
|
||||
|
||||
#endif /* _ASM_UNISTD_32_H */
|
|
@ -0,0 +1,330 @@
|
|||
#ifndef _ASM_UNISTD_64_H
|
||||
#define _ASM_UNISTD_64_H
|
||||
|
||||
#define __NR_io_setup 0
|
||||
#define __NR_io_destroy 1
|
||||
#define __NR_io_submit 2
|
||||
#define __NR_io_cancel 3
|
||||
#define __NR_io_getevents 4
|
||||
#define __NR_setxattr 5
|
||||
#define __NR_lsetxattr 6
|
||||
#define __NR_fsetxattr 7
|
||||
#define __NR_getxattr 8
|
||||
#define __NR_lgetxattr 9
|
||||
#define __NR_fgetxattr 10
|
||||
#define __NR_listxattr 11
|
||||
#define __NR_llistxattr 12
|
||||
#define __NR_flistxattr 13
|
||||
#define __NR_removexattr 14
|
||||
#define __NR_lremovexattr 15
|
||||
#define __NR_fremovexattr 16
|
||||
#define __NR_getcwd 17
|
||||
#define __NR_lookup_dcookie 18
|
||||
#define __NR_eventfd2 19
|
||||
#define __NR_epoll_create1 20
|
||||
#define __NR_epoll_ctl 21
|
||||
#define __NR_epoll_pwait 22
|
||||
#define __NR_dup 23
|
||||
#define __NR_dup3 24
|
||||
#define __NR_fcntl 25
|
||||
#define __NR_inotify_init1 26
|
||||
#define __NR_inotify_add_watch 27
|
||||
#define __NR_inotify_rm_watch 28
|
||||
#define __NR_ioctl 29
|
||||
#define __NR_ioprio_set 30
|
||||
#define __NR_ioprio_get 31
|
||||
#define __NR_flock 32
|
||||
#define __NR_mknodat 33
|
||||
#define __NR_mkdirat 34
|
||||
#define __NR_unlinkat 35
|
||||
#define __NR_symlinkat 36
|
||||
#define __NR_linkat 37
|
||||
#define __NR_umount2 39
|
||||
#define __NR_mount 40
|
||||
#define __NR_pivot_root 41
|
||||
#define __NR_nfsservctl 42
|
||||
#define __NR_statfs 43
|
||||
#define __NR_fstatfs 44
|
||||
#define __NR_truncate 45
|
||||
#define __NR_ftruncate 46
|
||||
#define __NR_fallocate 47
|
||||
#define __NR_faccessat 48
|
||||
#define __NR_chdir 49
|
||||
#define __NR_fchdir 50
|
||||
#define __NR_chroot 51
|
||||
#define __NR_fchmod 52
|
||||
#define __NR_fchmodat 53
|
||||
#define __NR_fchownat 54
|
||||
#define __NR_fchown 55
|
||||
#define __NR_openat 56
|
||||
#define __NR_close 57
|
||||
#define __NR_vhangup 58
|
||||
#define __NR_pipe2 59
|
||||
#define __NR_quotactl 60
|
||||
#define __NR_getdents64 61
|
||||
#define __NR_lseek 62
|
||||
#define __NR_read 63
|
||||
#define __NR_write 64
|
||||
#define __NR_readv 65
|
||||
#define __NR_writev 66
|
||||
#define __NR_pread64 67
|
||||
#define __NR_pwrite64 68
|
||||
#define __NR_preadv 69
|
||||
#define __NR_pwritev 70
|
||||
#define __NR_sendfile 71
|
||||
#define __NR_pselect6 72
|
||||
#define __NR_ppoll 73
|
||||
#define __NR_signalfd4 74
|
||||
#define __NR_vmsplice 75
|
||||
#define __NR_splice 76
|
||||
#define __NR_tee 77
|
||||
#define __NR_readlinkat 78
|
||||
#define __NR_newfstatat 79
|
||||
#define __NR_fstat 80
|
||||
#define __NR_sync 81
|
||||
#define __NR_fsync 82
|
||||
#define __NR_fdatasync 83
|
||||
#define __NR_sync_file_range 84
|
||||
#define __NR_timerfd_create 85
|
||||
#define __NR_timerfd_settime 86
|
||||
#define __NR_timerfd_gettime 87
|
||||
#define __NR_utimensat 88
|
||||
#define __NR_acct 89
|
||||
#define __NR_capget 90
|
||||
#define __NR_capset 91
|
||||
#define __NR_personality 92
|
||||
#define __NR_exit 93
|
||||
#define __NR_exit_group 94
|
||||
#define __NR_waitid 95
|
||||
#define __NR_set_tid_address 96
|
||||
#define __NR_unshare 97
|
||||
#define __NR_futex 98
|
||||
#define __NR_set_robust_list 99
|
||||
#define __NR_get_robust_list 100
|
||||
#define __NR_nanosleep 101
|
||||
#define __NR_getitimer 102
|
||||
#define __NR_setitimer 103
|
||||
#define __NR_kexec_load 104
|
||||
#define __NR_init_module 105
|
||||
#define __NR_delete_module 106
|
||||
#define __NR_timer_create 107
|
||||
#define __NR_timer_gettime 108
|
||||
#define __NR_timer_getoverrun 109
|
||||
#define __NR_timer_settime 110
|
||||
#define __NR_timer_delete 111
|
||||
#define __NR_clock_settime 112
|
||||
#define __NR_clock_gettime 113
|
||||
#define __NR_clock_getres 114
|
||||
#define __NR_clock_nanosleep 115
|
||||
#define __NR_syslog 116
|
||||
#define __NR_ptrace 117
|
||||
#define __NR_sched_setparam 118
|
||||
#define __NR_sched_setscheduler 119
|
||||
#define __NR_sched_getscheduler 120
|
||||
#define __NR_sched_getparam 121
|
||||
#define __NR_sched_setaffinity 122
|
||||
#define __NR_sched_getaffinity 123
|
||||
#define __NR_sched_yield 124
|
||||
#define __NR_sched_get_priority_max 125
|
||||
#define __NR_sched_get_priority_min 126
|
||||
#define __NR_sched_rr_get_interval 127
|
||||
#define __NR_restart_syscall 128
|
||||
#define __NR_kill 129
|
||||
#define __NR_tkill 130
|
||||
#define __NR_tgkill 131
|
||||
#define __NR_sigaltstack 132
|
||||
#define __NR_rt_sigsuspend 133
|
||||
#define __NR_rt_sigaction 134
|
||||
#define __NR_rt_sigprocmask 135
|
||||
#define __NR_rt_sigpending 136
|
||||
#define __NR_rt_sigtimedwait 137
|
||||
#define __NR_rt_sigqueueinfo 138
|
||||
#define __NR_rt_sigreturn 139
|
||||
#define __NR_setpriority 140
|
||||
#define __NR_getpriority 141
|
||||
#define __NR_reboot 142
|
||||
#define __NR_setregid 143
|
||||
#define __NR_setgid 144
|
||||
#define __NR_setreuid 145
|
||||
#define __NR_setuid 146
|
||||
#define __NR_setresuid 147
|
||||
#define __NR_getresuid 148
|
||||
#define __NR_setresgid 149
|
||||
#define __NR_getresgid 150
|
||||
#define __NR_setfsuid 151
|
||||
#define __NR_setfsgid 152
|
||||
#define __NR_times 153
|
||||
#define __NR_setpgid 154
|
||||
#define __NR_getpgid 155
|
||||
#define __NR_getsid 156
|
||||
#define __NR_setsid 157
|
||||
#define __NR_getgroups 158
|
||||
#define __NR_setgroups 159
|
||||
#define __NR_uname 160
|
||||
#define __NR_sethostname 161
|
||||
#define __NR_setdomainname 162
|
||||
#define __NR_getrlimit 163
|
||||
#define __NR_setrlimit 164
|
||||
#define __NR_getrusage 165
|
||||
#define __NR_umask 166
|
||||
#define __NR_prctl 167
|
||||
#define __NR_getcpu 168
|
||||
#define __NR_gettimeofday 169
|
||||
#define __NR_settimeofday 170
|
||||
#define __NR_adjtimex 171
|
||||
#define __NR_getpid 172
|
||||
#define __NR_getppid 173
|
||||
#define __NR_getuid 174
|
||||
#define __NR_geteuid 175
|
||||
#define __NR_getgid 176
|
||||
#define __NR_getegid 177
|
||||
#define __NR_gettid 178
|
||||
#define __NR_sysinfo 179
|
||||
#define __NR_mq_open 180
|
||||
#define __NR_mq_unlink 181
|
||||
#define __NR_mq_timedsend 182
|
||||
#define __NR_mq_timedreceive 183
|
||||
#define __NR_mq_notify 184
|
||||
#define __NR_mq_getsetattr 185
|
||||
#define __NR_msgget 186
|
||||
#define __NR_msgctl 187
|
||||
#define __NR_msgrcv 188
|
||||
#define __NR_msgsnd 189
|
||||
#define __NR_semget 190
|
||||
#define __NR_semctl 191
|
||||
#define __NR_semtimedop 192
|
||||
#define __NR_semop 193
|
||||
#define __NR_shmget 194
|
||||
#define __NR_shmctl 195
|
||||
#define __NR_shmat 196
|
||||
#define __NR_shmdt 197
|
||||
#define __NR_socket 198
|
||||
#define __NR_socketpair 199
|
||||
#define __NR_bind 200
|
||||
#define __NR_listen 201
|
||||
#define __NR_accept 202
|
||||
#define __NR_connect 203
|
||||
#define __NR_getsockname 204
|
||||
#define __NR_getpeername 205
|
||||
#define __NR_sendto 206
|
||||
#define __NR_recvfrom 207
|
||||
#define __NR_setsockopt 208
|
||||
#define __NR_getsockopt 209
|
||||
#define __NR_shutdown 210
|
||||
#define __NR_sendmsg 211
|
||||
#define __NR_recvmsg 212
|
||||
#define __NR_readahead 213
|
||||
#define __NR_brk 214
|
||||
#define __NR_munmap 215
|
||||
#define __NR_mremap 216
|
||||
#define __NR_add_key 217
|
||||
#define __NR_request_key 218
|
||||
#define __NR_keyctl 219
|
||||
#define __NR_clone 220
|
||||
#define __NR_execve 221
|
||||
#define __NR_mmap 222
|
||||
#define __NR_fadvise64 223
|
||||
#define __NR_swapon 224
|
||||
#define __NR_swapoff 225
|
||||
#define __NR_mprotect 226
|
||||
#define __NR_msync 227
|
||||
#define __NR_mlock 228
|
||||
#define __NR_munlock 229
|
||||
#define __NR_mlockall 230
|
||||
#define __NR_munlockall 231
|
||||
#define __NR_mincore 232
|
||||
#define __NR_madvise 233
|
||||
#define __NR_remap_file_pages 234
|
||||
#define __NR_mbind 235
|
||||
#define __NR_get_mempolicy 236
|
||||
#define __NR_set_mempolicy 237
|
||||
#define __NR_migrate_pages 238
|
||||
#define __NR_move_pages 239
|
||||
#define __NR_rt_tgsigqueueinfo 240
|
||||
#define __NR_perf_event_open 241
|
||||
#define __NR_accept4 242
|
||||
#define __NR_recvmmsg 243
|
||||
#define __NR_riscv_hwprobe 258
|
||||
#define __NR_riscv_flush_icache 259
|
||||
#define __NR_wait4 260
|
||||
#define __NR_prlimit64 261
|
||||
#define __NR_fanotify_init 262
|
||||
#define __NR_fanotify_mark 263
|
||||
#define __NR_name_to_handle_at 264
|
||||
#define __NR_open_by_handle_at 265
|
||||
#define __NR_clock_adjtime 266
|
||||
#define __NR_syncfs 267
|
||||
#define __NR_setns 268
|
||||
#define __NR_sendmmsg 269
|
||||
#define __NR_process_vm_readv 270
|
||||
#define __NR_process_vm_writev 271
|
||||
#define __NR_kcmp 272
|
||||
#define __NR_finit_module 273
|
||||
#define __NR_sched_setattr 274
|
||||
#define __NR_sched_getattr 275
|
||||
#define __NR_renameat2 276
|
||||
#define __NR_seccomp 277
|
||||
#define __NR_getrandom 278
|
||||
#define __NR_memfd_create 279
|
||||
#define __NR_bpf 280
|
||||
#define __NR_execveat 281
|
||||
#define __NR_userfaultfd 282
|
||||
#define __NR_membarrier 283
|
||||
#define __NR_mlock2 284
|
||||
#define __NR_copy_file_range 285
|
||||
#define __NR_preadv2 286
|
||||
#define __NR_pwritev2 287
|
||||
#define __NR_pkey_mprotect 288
|
||||
#define __NR_pkey_alloc 289
|
||||
#define __NR_pkey_free 290
|
||||
#define __NR_statx 291
|
||||
#define __NR_io_pgetevents 292
|
||||
#define __NR_rseq 293
|
||||
#define __NR_kexec_file_load 294
|
||||
#define __NR_pidfd_send_signal 424
|
||||
#define __NR_io_uring_setup 425
|
||||
#define __NR_io_uring_enter 426
|
||||
#define __NR_io_uring_register 427
|
||||
#define __NR_open_tree 428
|
||||
#define __NR_move_mount 429
|
||||
#define __NR_fsopen 430
|
||||
#define __NR_fsconfig 431
|
||||
#define __NR_fsmount 432
|
||||
#define __NR_fspick 433
|
||||
#define __NR_pidfd_open 434
|
||||
#define __NR_clone3 435
|
||||
#define __NR_close_range 436
|
||||
#define __NR_openat2 437
|
||||
#define __NR_pidfd_getfd 438
|
||||
#define __NR_faccessat2 439
|
||||
#define __NR_process_madvise 440
|
||||
#define __NR_epoll_pwait2 441
|
||||
#define __NR_mount_setattr 442
|
||||
#define __NR_quotactl_fd 443
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_memfd_secret 447
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
#define __NR_map_shadow_stack 453
|
||||
#define __NR_futex_wake 454
|
||||
#define __NR_futex_wait 455
|
||||
#define __NR_futex_requeue 456
|
||||
#define __NR_statmount 457
|
||||
#define __NR_listmount 458
|
||||
#define __NR_lsm_get_self_attr 459
|
||||
#define __NR_lsm_set_self_attr 460
|
||||
#define __NR_lsm_list_modules 461
|
||||
#define __NR_mseal 462
|
||||
#define __NR_setxattrat 463
|
||||
#define __NR_getxattrat 464
|
||||
#define __NR_listxattrat 465
|
||||
#define __NR_removexattrat 466
|
||||
#define __NR_open_tree_attr 467
|
||||
|
||||
|
||||
#endif /* _ASM_UNISTD_64_H */
|
|
@ -0,0 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
|
||||
#define RISCV_HWPROBE_VENDOR_EXT_XSFVQMACCDOD (1 << 0)
|
||||
#define RISCV_HWPROBE_VENDOR_EXT_XSFVQMACCQOQ (1 << 1)
|
||||
#define RISCV_HWPROBE_VENDOR_EXT_XSFVFNRCLIPXFQF (1 << 2)
|
||||
#define RISCV_HWPROBE_VENDOR_EXT_XSFVFWMACCQQQ (1 << 3)
|
|
@ -0,0 +1,3 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
|
||||
#define RISCV_HWPROBE_VENDOR_EXT_XTHEADVECTOR (1 << 0)
|
|
@ -0,0 +1,168 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (c) 2024,2025, Intel Corporation
|
||||
*
|
||||
* These are definitions for the mailbox command interface of CXL subsystem.
|
||||
*/
|
||||
#ifndef _CXL_FEATURES_H_
|
||||
#define _CXL_FEATURES_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
typedef unsigned char __uapi_uuid_t[16];
|
||||
|
||||
|
||||
/*
|
||||
* struct cxl_mbox_get_sup_feats_in - Get Supported Features input
|
||||
*
|
||||
* @count: bytes of Feature data to return in output
|
||||
* @start_idx: index of first requested Supported Feature Entry, 0 based.
|
||||
* @reserved: reserved field, must be 0s.
|
||||
*
|
||||
* Get Supported Features (0x500h) CXL r3.2 8.2.9.6.1 command.
|
||||
* Input block for Get support Feature
|
||||
*/
|
||||
struct cxl_mbox_get_sup_feats_in {
|
||||
__le32 count;
|
||||
__le16 start_idx;
|
||||
__u8 reserved[2];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/* CXL spec r3.2 Table 8-87 command effects */
|
||||
#define CXL_CMD_CONFIG_CHANGE_COLD_RESET BIT(0)
|
||||
#define CXL_CMD_CONFIG_CHANGE_IMMEDIATE BIT(1)
|
||||
#define CXL_CMD_DATA_CHANGE_IMMEDIATE BIT(2)
|
||||
#define CXL_CMD_POLICY_CHANGE_IMMEDIATE BIT(3)
|
||||
#define CXL_CMD_LOG_CHANGE_IMMEDIATE BIT(4)
|
||||
#define CXL_CMD_SECURITY_STATE_CHANGE BIT(5)
|
||||
#define CXL_CMD_BACKGROUND BIT(6)
|
||||
#define CXL_CMD_BGCMD_ABORT_SUPPORTED BIT(7)
|
||||
#define CXL_CMD_EFFECTS_VALID BIT(9)
|
||||
#define CXL_CMD_CONFIG_CHANGE_CONV_RESET BIT(10)
|
||||
#define CXL_CMD_CONFIG_CHANGE_CXL_RESET BIT(11)
|
||||
#define CXL_CMD_EFFECTS_RESERVED GENMASK(15, 12)
|
||||
|
||||
/*
|
||||
* struct cxl_feat_entry - Supported Feature Entry
|
||||
* @uuid: UUID of the Feature
|
||||
* @id: id to identify the feature. 0 based
|
||||
* @get_feat_size: max bytes required for Get Feature command for this Feature
|
||||
* @set_feat_size: max bytes required for Set Feature command for this Feature
|
||||
* @flags: attribute flags
|
||||
* @get_feat_ver: Get Feature version
|
||||
* @set_feat_ver: Set Feature version
|
||||
* @effects: Set Feature command effects
|
||||
* @reserved: reserved, must be 0
|
||||
*
|
||||
* CXL spec r3.2 Table 8-109
|
||||
* Get Supported Features Supported Feature Entry
|
||||
*/
|
||||
struct cxl_feat_entry {
|
||||
__uapi_uuid_t uuid;
|
||||
__le16 id;
|
||||
__le16 get_feat_size;
|
||||
__le16 set_feat_size;
|
||||
__le32 flags;
|
||||
__u8 get_feat_ver;
|
||||
__u8 set_feat_ver;
|
||||
__le16 effects;
|
||||
__u8 reserved[18];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/* @flags field for 'struct cxl_feat_entry' */
|
||||
#define CXL_FEATURE_F_CHANGEABLE BIT(0)
|
||||
#define CXL_FEATURE_F_PERSIST_FW_UPDATE BIT(4)
|
||||
#define CXL_FEATURE_F_DEFAULT_SEL BIT(5)
|
||||
#define CXL_FEATURE_F_SAVED_SEL BIT(6)
|
||||
|
||||
/*
|
||||
* struct cxl_mbox_get_sup_feats_out - Get Supported Features output
|
||||
* @num_entries: number of Supported Feature Entries returned
|
||||
* @supported_feats: number of supported Features
|
||||
* @reserved: reserved, must be 0s.
|
||||
* @ents: Supported Feature Entries array
|
||||
*
|
||||
* CXL spec r3.2 Table 8-108
|
||||
* Get supported Features Output Payload
|
||||
*/
|
||||
struct cxl_mbox_get_sup_feats_out {
|
||||
__struct_group(cxl_mbox_get_sup_feats_out_hdr, hdr, /* no attrs */,
|
||||
__le16 num_entries;
|
||||
__le16 supported_feats;
|
||||
__u8 reserved[4];
|
||||
);
|
||||
struct cxl_feat_entry ents[] __counted_by_le(num_entries);
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/*
|
||||
* Get Feature CXL spec r3.2 Spec 8.2.9.6.2
|
||||
*/
|
||||
|
||||
/*
|
||||
* struct cxl_mbox_get_feat_in - Get Feature input
|
||||
* @uuid: UUID for Feature
|
||||
* @offset: offset of the first byte in Feature data for output payload
|
||||
* @count: count in bytes of Feature data returned
|
||||
* @selection: 0 current value, 1 default value, 2 saved value
|
||||
*
|
||||
* CXL spec r3.2 section 8.2.9.6.2 Table 8-99
|
||||
*/
|
||||
struct cxl_mbox_get_feat_in {
|
||||
__uapi_uuid_t uuid;
|
||||
__le16 offset;
|
||||
__le16 count;
|
||||
__u8 selection;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/*
|
||||
* enum cxl_get_feat_selection - selection field of Get Feature input
|
||||
*/
|
||||
enum cxl_get_feat_selection {
|
||||
CXL_GET_FEAT_SEL_CURRENT_VALUE,
|
||||
CXL_GET_FEAT_SEL_DEFAULT_VALUE,
|
||||
CXL_GET_FEAT_SEL_SAVED_VALUE,
|
||||
CXL_GET_FEAT_SEL_MAX
|
||||
};
|
||||
|
||||
/*
|
||||
* Set Feature CXL spec r3.2 8.2.9.6.3
|
||||
*/
|
||||
|
||||
/*
|
||||
* struct cxl_mbox_set_feat_in - Set Features input
|
||||
* @uuid: UUID for Feature
|
||||
* @flags: set feature flags
|
||||
* @offset: byte offset of Feature data to update
|
||||
* @version: Feature version of the data in Feature Data
|
||||
* @rsvd: reserved, must be 0s.
|
||||
* @feat_data: raw byte stream of Features data to update
|
||||
*
|
||||
* CXL spec r3.2 section 8.2.9.6.3 Table 8-101
|
||||
*/
|
||||
struct cxl_mbox_set_feat_in {
|
||||
__struct_group(cxl_mbox_set_feat_hdr, hdr, /* no attrs */,
|
||||
__uapi_uuid_t uuid;
|
||||
__le32 flags;
|
||||
__le16 offset;
|
||||
__u8 version;
|
||||
__u8 rsvd[9];
|
||||
);
|
||||
__u8 feat_data[];
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* enum cxl_set_feat_flag_data_transfer - Set Feature flags field
|
||||
*/
|
||||
enum cxl_set_feat_flag_data_transfer {
|
||||
CXL_SET_FEAT_FLAG_FULL_DATA_TRANSFER = 0,
|
||||
CXL_SET_FEAT_FLAG_INITIATE_DATA_TRANSFER,
|
||||
CXL_SET_FEAT_FLAG_CONTINUE_DATA_TRANSFER,
|
||||
CXL_SET_FEAT_FLAG_FINISH_DATA_TRANSFER,
|
||||
CXL_SET_FEAT_FLAG_ABORT_DATA_TRANSFER,
|
||||
CXL_SET_FEAT_FLAG_DATA_TRANSFER_MAX
|
||||
};
|
||||
|
||||
#define CXL_SET_FEAT_FLAG_DATA_TRANSFER_MASK GENMASK(2, 0)
|
||||
#define CXL_SET_FEAT_FLAG_DATA_SAVED_ACROSS_RESET BIT(3)
|
||||
|
||||
#endif
|
|
@ -54,6 +54,9 @@ extern "C" {
|
|||
#define DRM_AMDGPU_VM 0x13
|
||||
#define DRM_AMDGPU_FENCE_TO_HANDLE 0x14
|
||||
#define DRM_AMDGPU_SCHED 0x15
|
||||
#define DRM_AMDGPU_USERQ 0x16
|
||||
#define DRM_AMDGPU_USERQ_SIGNAL 0x17
|
||||
#define DRM_AMDGPU_USERQ_WAIT 0x18
|
||||
|
||||
#define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)
|
||||
#define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)
|
||||
|
@ -71,6 +74,9 @@ extern "C" {
|
|||
#define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm)
|
||||
#define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle)
|
||||
#define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)
|
||||
#define DRM_IOCTL_AMDGPU_USERQ DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_USERQ, union drm_amdgpu_userq)
|
||||
#define DRM_IOCTL_AMDGPU_USERQ_SIGNAL DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_USERQ_SIGNAL, struct drm_amdgpu_userq_signal)
|
||||
#define DRM_IOCTL_AMDGPU_USERQ_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_USERQ_WAIT, struct drm_amdgpu_userq_wait)
|
||||
|
||||
/**
|
||||
* DOC: memory domains
|
||||
|
@ -150,7 +156,7 @@ extern "C" {
|
|||
*/
|
||||
#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
|
||||
/* Flag that BO is shared coherently between multiple devices or CPU threads.
|
||||
* May depend on GPU instructions to flush caches explicitly
|
||||
* May depend on GPU instructions to flush caches to system scope explicitly.
|
||||
*
|
||||
* This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
|
||||
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
|
||||
|
@ -163,6 +169,16 @@ extern "C" {
|
|||
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
|
||||
*/
|
||||
#define AMDGPU_GEM_CREATE_UNCACHED (1 << 14)
|
||||
/* Flag that BO should be coherent across devices when using device-level
|
||||
* atomics. May depend on GPU instructions to flush caches to device scope
|
||||
* explicitly, promoting them to system scope automatically.
|
||||
*
|
||||
* This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
|
||||
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
|
||||
*/
|
||||
#define AMDGPU_GEM_CREATE_EXT_COHERENT (1 << 15)
|
||||
/* Set PTE.D and recompress during GTT->VRAM moves according to TILING flags. */
|
||||
#define AMDGPU_GEM_CREATE_GFX12_DCC (1 << 16)
|
||||
|
||||
struct drm_amdgpu_gem_create_in {
|
||||
/** the requested memory size */
|
||||
|
@ -241,9 +257,9 @@ union drm_amdgpu_bo_list {
|
|||
/* unknown cause */
|
||||
#define AMDGPU_CTX_UNKNOWN_RESET 3
|
||||
|
||||
/* indicate gpu reset occured after ctx created */
|
||||
/* indicate gpu reset occurred after ctx created */
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_RESET (1<<0)
|
||||
/* indicate vram lost occured after ctx created */
|
||||
/* indicate vram lost occurred after ctx created */
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1<<1)
|
||||
/* indicate some job from this context once cause gpu hang */
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1<<2)
|
||||
|
@ -309,6 +325,260 @@ union drm_amdgpu_ctx {
|
|||
union drm_amdgpu_ctx_out out;
|
||||
};
|
||||
|
||||
/* user queue IOCTL operations */
|
||||
#define AMDGPU_USERQ_OP_CREATE 1
|
||||
#define AMDGPU_USERQ_OP_FREE 2
|
||||
|
||||
/* queue priority levels */
|
||||
/* low < normal low < normal high < high */
|
||||
#define AMDGPU_USERQ_CREATE_FLAGS_QUEUE_PRIORITY_MASK 0x3
|
||||
#define AMDGPU_USERQ_CREATE_FLAGS_QUEUE_PRIORITY_SHIFT 0
|
||||
#define AMDGPU_USERQ_CREATE_FLAGS_QUEUE_PRIORITY_NORMAL_LOW 0
|
||||
#define AMDGPU_USERQ_CREATE_FLAGS_QUEUE_PRIORITY_LOW 1
|
||||
#define AMDGPU_USERQ_CREATE_FLAGS_QUEUE_PRIORITY_NORMAL_HIGH 2
|
||||
#define AMDGPU_USERQ_CREATE_FLAGS_QUEUE_PRIORITY_HIGH 3 /* admin only */
|
||||
/* for queues that need access to protected content */
|
||||
#define AMDGPU_USERQ_CREATE_FLAGS_QUEUE_SECURE (1 << 2)
|
||||
|
||||
/*
|
||||
* This structure is a container to pass input configuration
|
||||
* info for all supported userqueue related operations.
|
||||
* For operation AMDGPU_USERQ_OP_CREATE: user is expected
|
||||
* to set all fields, excep the parameter 'queue_id'.
|
||||
* For operation AMDGPU_USERQ_OP_FREE: the only input parameter expected
|
||||
* to be set is 'queue_id', eveything else is ignored.
|
||||
*/
|
||||
struct drm_amdgpu_userq_in {
|
||||
/** AMDGPU_USERQ_OP_* */
|
||||
__u32 op;
|
||||
/** Queue id passed for operation USERQ_OP_FREE */
|
||||
__u32 queue_id;
|
||||
/** the target GPU engine to execute workload (AMDGPU_HW_IP_*) */
|
||||
__u32 ip_type;
|
||||
/**
|
||||
* @doorbell_handle: the handle of doorbell GEM object
|
||||
* associated with this userqueue client.
|
||||
*/
|
||||
__u32 doorbell_handle;
|
||||
/**
|
||||
* @doorbell_offset: 32-bit offset of the doorbell in the doorbell bo.
|
||||
* Kernel will generate absolute doorbell offset using doorbell_handle
|
||||
* and doorbell_offset in the doorbell bo.
|
||||
*/
|
||||
__u32 doorbell_offset;
|
||||
/**
|
||||
* @flags: flags used for queue parameters
|
||||
*/
|
||||
__u32 flags;
|
||||
/**
|
||||
* @queue_va: Virtual address of the GPU memory which holds the queue
|
||||
* object. The queue holds the workload packets.
|
||||
*/
|
||||
__u64 queue_va;
|
||||
/**
|
||||
* @queue_size: Size of the queue in bytes, this needs to be 256-byte
|
||||
* aligned.
|
||||
*/
|
||||
__u64 queue_size;
|
||||
/**
|
||||
* @rptr_va : Virtual address of the GPU memory which holds the ring RPTR.
|
||||
* This object must be at least 8 byte in size and aligned to 8-byte offset.
|
||||
*/
|
||||
__u64 rptr_va;
|
||||
/**
|
||||
* @wptr_va : Virtual address of the GPU memory which holds the ring WPTR.
|
||||
* This object must be at least 8 byte in size and aligned to 8-byte offset.
|
||||
*
|
||||
* Queue, RPTR and WPTR can come from the same object, as long as the size
|
||||
* and alignment related requirements are met.
|
||||
*/
|
||||
__u64 wptr_va;
|
||||
/**
|
||||
* @mqd: MQD (memory queue descriptor) is a set of parameters which allow
|
||||
* the GPU to uniquely define and identify a usermode queue.
|
||||
*
|
||||
* MQD data can be of different size for different GPU IP/engine and
|
||||
* their respective versions/revisions, so this points to a __u64 *
|
||||
* which holds IP specific MQD of this usermode queue.
|
||||
*/
|
||||
__u64 mqd;
|
||||
/**
|
||||
* @size: size of MQD data in bytes, it must match the MQD structure
|
||||
* size of the respective engine/revision defined in UAPI for ex, for
|
||||
* gfx11 workloads, size = sizeof(drm_amdgpu_userq_mqd_gfx11).
|
||||
*/
|
||||
__u64 mqd_size;
|
||||
};
|
||||
|
||||
/* The structure to carry output of userqueue ops */
|
||||
struct drm_amdgpu_userq_out {
|
||||
/**
|
||||
* For operation AMDGPU_USERQ_OP_CREATE: This field contains a unique
|
||||
* queue ID to represent the newly created userqueue in the system, otherwise
|
||||
* it should be ignored.
|
||||
*/
|
||||
__u32 queue_id;
|
||||
__u32 _pad;
|
||||
};
|
||||
|
||||
union drm_amdgpu_userq {
|
||||
struct drm_amdgpu_userq_in in;
|
||||
struct drm_amdgpu_userq_out out;
|
||||
};
|
||||
|
||||
/* GFX V11 IP specific MQD parameters */
|
||||
struct drm_amdgpu_userq_mqd_gfx11 {
|
||||
/**
|
||||
* @shadow_va: Virtual address of the GPU memory to hold the shadow buffer.
|
||||
* Use AMDGPU_INFO_IOCTL to find the exact size of the object.
|
||||
*/
|
||||
__u64 shadow_va;
|
||||
/**
|
||||
* @csa_va: Virtual address of the GPU memory to hold the CSA buffer.
|
||||
* Use AMDGPU_INFO_IOCTL to find the exact size of the object.
|
||||
*/
|
||||
__u64 csa_va;
|
||||
};
|
||||
|
||||
/* GFX V11 SDMA IP specific MQD parameters */
|
||||
struct drm_amdgpu_userq_mqd_sdma_gfx11 {
|
||||
/**
|
||||
* @csa_va: Virtual address of the GPU memory to hold the CSA buffer.
|
||||
* This must be a from a separate GPU object, and use AMDGPU_INFO IOCTL
|
||||
* to get the size.
|
||||
*/
|
||||
__u64 csa_va;
|
||||
};
|
||||
|
||||
/* GFX V11 Compute IP specific MQD parameters */
|
||||
struct drm_amdgpu_userq_mqd_compute_gfx11 {
|
||||
/**
|
||||
* @eop_va: Virtual address of the GPU memory to hold the EOP buffer.
|
||||
* This must be a from a separate GPU object, and use AMDGPU_INFO IOCTL
|
||||
* to get the size.
|
||||
*/
|
||||
__u64 eop_va;
|
||||
};
|
||||
|
||||
/* userq signal/wait ioctl */
|
||||
struct drm_amdgpu_userq_signal {
|
||||
/**
|
||||
* @queue_id: Queue handle used by the userq fence creation function
|
||||
* to retrieve the WPTR.
|
||||
*/
|
||||
__u32 queue_id;
|
||||
__u32 pad;
|
||||
/**
|
||||
* @syncobj_handles: The list of syncobj handles submitted by the user queue
|
||||
* job to be signaled.
|
||||
*/
|
||||
__u64 syncobj_handles;
|
||||
/**
|
||||
* @num_syncobj_handles: A count that represents the number of syncobj handles in
|
||||
* @syncobj_handles.
|
||||
*/
|
||||
__u64 num_syncobj_handles;
|
||||
/**
|
||||
* @bo_read_handles: The list of BO handles that the submitted user queue job
|
||||
* is using for read only. This will update BO fences in the kernel.
|
||||
*/
|
||||
__u64 bo_read_handles;
|
||||
/**
|
||||
* @bo_write_handles: The list of BO handles that the submitted user queue job
|
||||
* is using for write only. This will update BO fences in the kernel.
|
||||
*/
|
||||
__u64 bo_write_handles;
|
||||
/**
|
||||
* @num_bo_read_handles: A count that represents the number of read BO handles in
|
||||
* @bo_read_handles.
|
||||
*/
|
||||
__u32 num_bo_read_handles;
|
||||
/**
|
||||
* @num_bo_write_handles: A count that represents the number of write BO handles in
|
||||
* @bo_write_handles.
|
||||
*/
|
||||
__u32 num_bo_write_handles;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_userq_fence_info {
|
||||
/**
|
||||
* @va: A gpu address allocated for each queue which stores the
|
||||
* read pointer (RPTR) value.
|
||||
*/
|
||||
__u64 va;
|
||||
/**
|
||||
* @value: A 64 bit value represents the write pointer (WPTR) of the
|
||||
* queue commands which compared with the RPTR value to signal the
|
||||
* fences.
|
||||
*/
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_userq_wait {
|
||||
/**
|
||||
* @waitq_id: Queue handle used by the userq wait IOCTL to retrieve the
|
||||
* wait queue and maintain the fence driver references in it.
|
||||
*/
|
||||
__u32 waitq_id;
|
||||
__u32 pad;
|
||||
/**
|
||||
* @syncobj_handles: The list of syncobj handles submitted by the user queue
|
||||
* job to get the va/value pairs.
|
||||
*/
|
||||
__u64 syncobj_handles;
|
||||
/**
|
||||
* @syncobj_timeline_handles: The list of timeline syncobj handles submitted by
|
||||
* the user queue job to get the va/value pairs at given @syncobj_timeline_points.
|
||||
*/
|
||||
__u64 syncobj_timeline_handles;
|
||||
/**
|
||||
* @syncobj_timeline_points: The list of timeline syncobj points submitted by the
|
||||
* user queue job for the corresponding @syncobj_timeline_handles.
|
||||
*/
|
||||
__u64 syncobj_timeline_points;
|
||||
/**
|
||||
* @bo_read_handles: The list of read BO handles submitted by the user queue
|
||||
* job to get the va/value pairs.
|
||||
*/
|
||||
__u64 bo_read_handles;
|
||||
/**
|
||||
* @bo_write_handles: The list of write BO handles submitted by the user queue
|
||||
* job to get the va/value pairs.
|
||||
*/
|
||||
__u64 bo_write_handles;
|
||||
/**
|
||||
* @num_syncobj_timeline_handles: A count that represents the number of timeline
|
||||
* syncobj handles in @syncobj_timeline_handles.
|
||||
*/
|
||||
__u16 num_syncobj_timeline_handles;
|
||||
/**
|
||||
* @num_fences: This field can be used both as input and output. As input it defines
|
||||
* the maximum number of fences that can be returned and as output it will specify
|
||||
* how many fences were actually returned from the ioctl.
|
||||
*/
|
||||
__u16 num_fences;
|
||||
/**
|
||||
* @num_syncobj_handles: A count that represents the number of syncobj handles in
|
||||
* @syncobj_handles.
|
||||
*/
|
||||
__u32 num_syncobj_handles;
|
||||
/**
|
||||
* @num_bo_read_handles: A count that represents the number of read BO handles in
|
||||
* @bo_read_handles.
|
||||
*/
|
||||
__u32 num_bo_read_handles;
|
||||
/**
|
||||
* @num_bo_write_handles: A count that represents the number of write BO handles in
|
||||
* @bo_write_handles.
|
||||
*/
|
||||
__u32 num_bo_write_handles;
|
||||
/**
|
||||
* @out_fences: The field is a return value from the ioctl containing the list of
|
||||
* address/value pairs to wait for.
|
||||
*/
|
||||
__u64 out_fences;
|
||||
};
|
||||
|
||||
/* vm ioctl */
|
||||
#define AMDGPU_VM_OP_RESERVE_VMID 1
|
||||
#define AMDGPU_VM_OP_UNRESERVE_VMID 2
|
||||
|
@ -384,7 +654,7 @@ struct drm_amdgpu_gem_userptr {
|
|||
#define AMDGPU_TILING_NUM_BANKS_SHIFT 21
|
||||
#define AMDGPU_TILING_NUM_BANKS_MASK 0x3
|
||||
|
||||
/* GFX9 and later: */
|
||||
/* GFX9 - GFX11: */
|
||||
#define AMDGPU_TILING_SWIZZLE_MODE_SHIFT 0
|
||||
#define AMDGPU_TILING_SWIZZLE_MODE_MASK 0x1f
|
||||
#define AMDGPU_TILING_DCC_OFFSET_256B_SHIFT 5
|
||||
|
@ -398,6 +668,24 @@ struct drm_amdgpu_gem_userptr {
|
|||
#define AMDGPU_TILING_SCANOUT_SHIFT 63
|
||||
#define AMDGPU_TILING_SCANOUT_MASK 0x1
|
||||
|
||||
/* GFX12 and later: */
|
||||
#define AMDGPU_TILING_GFX12_SWIZZLE_MODE_SHIFT 0
|
||||
#define AMDGPU_TILING_GFX12_SWIZZLE_MODE_MASK 0x7
|
||||
/* These are DCC recompression settings for memory management: */
|
||||
#define AMDGPU_TILING_GFX12_DCC_MAX_COMPRESSED_BLOCK_SHIFT 3
|
||||
#define AMDGPU_TILING_GFX12_DCC_MAX_COMPRESSED_BLOCK_MASK 0x3 /* 0:64B, 1:128B, 2:256B */
|
||||
#define AMDGPU_TILING_GFX12_DCC_NUMBER_TYPE_SHIFT 5
|
||||
#define AMDGPU_TILING_GFX12_DCC_NUMBER_TYPE_MASK 0x7 /* CB_COLOR0_INFO.NUMBER_TYPE */
|
||||
#define AMDGPU_TILING_GFX12_DCC_DATA_FORMAT_SHIFT 8
|
||||
#define AMDGPU_TILING_GFX12_DCC_DATA_FORMAT_MASK 0x3f /* [0:4]:CB_COLOR0_INFO.FORMAT, [5]:MM */
|
||||
/* When clearing the buffer or moving it from VRAM to GTT, don't compress and set DCC metadata
|
||||
* to uncompressed. Set when parts of an allocation bypass DCC and read raw data. */
|
||||
#define AMDGPU_TILING_GFX12_DCC_WRITE_COMPRESS_DISABLE_SHIFT 14
|
||||
#define AMDGPU_TILING_GFX12_DCC_WRITE_COMPRESS_DISABLE_MASK 0x1
|
||||
/* bit gap */
|
||||
#define AMDGPU_TILING_GFX12_SCANOUT_SHIFT 63
|
||||
#define AMDGPU_TILING_GFX12_SCANOUT_MASK 0x1
|
||||
|
||||
/* Set/Get helpers for tiling flags. */
|
||||
#define AMDGPU_TILING_SET(field, value) \
|
||||
(((__u64)(value) & AMDGPU_TILING_##field##_MASK) << AMDGPU_TILING_##field##_SHIFT)
|
||||
|
@ -571,6 +859,19 @@ struct drm_amdgpu_gem_va {
|
|||
__u64 offset_in_bo;
|
||||
/** Specify mapping size. Must be correctly aligned. */
|
||||
__u64 map_size;
|
||||
/**
|
||||
* vm_timeline_point is a sequence number used to add new timeline point.
|
||||
*/
|
||||
__u64 vm_timeline_point;
|
||||
/**
|
||||
* The vm page table update fence is installed in given vm_timeline_syncobj_out
|
||||
* at vm_timeline_point.
|
||||
*/
|
||||
__u32 vm_timeline_syncobj_out;
|
||||
/** the number of syncobj handles in @input_fence_syncobj_handles */
|
||||
__u32 num_syncobj_handles;
|
||||
/** Array of sync object handle to wait for given input fences */
|
||||
__u64 input_fence_syncobj_handles;
|
||||
};
|
||||
|
||||
#define AMDGPU_HW_IP_GFX 0
|
||||
|
@ -586,7 +887,8 @@ struct drm_amdgpu_gem_va {
|
|||
*/
|
||||
#define AMDGPU_HW_IP_VCN_ENC 7
|
||||
#define AMDGPU_HW_IP_VCN_JPEG 8
|
||||
#define AMDGPU_HW_IP_NUM 9
|
||||
#define AMDGPU_HW_IP_VPE 9
|
||||
#define AMDGPU_HW_IP_NUM 10
|
||||
|
||||
#define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
|
||||
|
||||
|
@ -734,6 +1036,16 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
|
|||
#define AMDGPU_IDS_FLAGS_TMZ 0x4
|
||||
#define AMDGPU_IDS_FLAGS_CONFORMANT_TRUNC_COORD 0x8
|
||||
|
||||
/*
|
||||
* Query h/w info: Flag identifying VF/PF/PT mode
|
||||
*
|
||||
*/
|
||||
#define AMDGPU_IDS_FLAGS_MODE_MASK 0x300
|
||||
#define AMDGPU_IDS_FLAGS_MODE_SHIFT 0x8
|
||||
#define AMDGPU_IDS_FLAGS_MODE_PF 0x0
|
||||
#define AMDGPU_IDS_FLAGS_MODE_VF 0x1
|
||||
#define AMDGPU_IDS_FLAGS_MODE_PT 0x2
|
||||
|
||||
/* indicate if acceleration can be working */
|
||||
#define AMDGPU_INFO_ACCEL_WORKING 0x00
|
||||
/* get the crtc_id from the mode object id? */
|
||||
|
@ -797,6 +1109,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
|
|||
#define AMDGPU_INFO_FW_MES 0x1a
|
||||
/* Subquery id: Query IMU firmware version */
|
||||
#define AMDGPU_INFO_FW_IMU 0x1b
|
||||
/* Subquery id: Query VPE firmware version */
|
||||
#define AMDGPU_INFO_FW_VPE 0x1c
|
||||
|
||||
/* number of bytes moved for TTM migration */
|
||||
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
|
||||
|
@ -854,6 +1168,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
|
|||
#define AMDGPU_INFO_SENSOR_PEAK_PSTATE_GFX_SCLK 0xa
|
||||
/* Subquery id: Query GPU peak pstate memory clock */
|
||||
#define AMDGPU_INFO_SENSOR_PEAK_PSTATE_GFX_MCLK 0xb
|
||||
/* Subquery id: Query input GPU power */
|
||||
#define AMDGPU_INFO_SENSOR_GPU_INPUT_POWER 0xc
|
||||
/* Number of VRAM page faults on CPU access. */
|
||||
#define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
|
||||
#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
|
||||
|
@ -895,6 +1211,10 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
|
|||
#define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1
|
||||
/* Query the max number of IBs per gang per submission */
|
||||
#define AMDGPU_INFO_MAX_IBS 0x22
|
||||
/* query last page fault info */
|
||||
#define AMDGPU_INFO_GPUVM_FAULT 0x23
|
||||
/* query FW object size and alignment */
|
||||
#define AMDGPU_INFO_UQ_FW_AREAS 0x24
|
||||
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
|
||||
|
@ -1048,6 +1368,7 @@ struct drm_amdgpu_info_vbios {
|
|||
#define AMDGPU_VRAM_TYPE_DDR5 10
|
||||
#define AMDGPU_VRAM_TYPE_LPDDR4 11
|
||||
#define AMDGPU_VRAM_TYPE_LPDDR5 12
|
||||
#define AMDGPU_VRAM_TYPE_HBM3E 13
|
||||
|
||||
struct drm_amdgpu_info_device {
|
||||
/** PCI Device ID */
|
||||
|
@ -1153,6 +1474,9 @@ struct drm_amdgpu_info_device {
|
|||
__u32 csa_size;
|
||||
/* context save area base virtual alignment for gfx11 */
|
||||
__u32 csa_alignment;
|
||||
/* Userq IP mask (1 << AMDGPU_HW_IP_*) */
|
||||
__u32 userq_ip_mask;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_hw_ip {
|
||||
|
@ -1171,6 +1495,27 @@ struct drm_amdgpu_info_hw_ip {
|
|||
__u32 ip_discovery_version;
|
||||
};
|
||||
|
||||
/* GFX metadata BO sizes and alignment info (in bytes) */
|
||||
struct drm_amdgpu_info_uq_fw_areas_gfx {
|
||||
/* shadow area size */
|
||||
__u32 shadow_size;
|
||||
/* shadow area base virtual mem alignment */
|
||||
__u32 shadow_alignment;
|
||||
/* context save area size */
|
||||
__u32 csa_size;
|
||||
/* context save area base virtual mem alignment */
|
||||
__u32 csa_alignment;
|
||||
};
|
||||
|
||||
/* IP specific fw related information used in the
|
||||
* subquery AMDGPU_INFO_UQ_FW_AREAS
|
||||
*/
|
||||
struct drm_amdgpu_info_uq_fw_areas {
|
||||
union {
|
||||
struct drm_amdgpu_info_uq_fw_areas_gfx gfx;
|
||||
};
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_num_handles {
|
||||
/** Max handles as supported by firmware for UVD */
|
||||
__u32 uvd_max_handles;
|
||||
|
@ -1220,6 +1565,37 @@ struct drm_amdgpu_info_video_caps {
|
|||
struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT];
|
||||
};
|
||||
|
||||
#define AMDGPU_VMHUB_TYPE_MASK 0xff
|
||||
#define AMDGPU_VMHUB_TYPE_SHIFT 0
|
||||
#define AMDGPU_VMHUB_TYPE_GFX 0
|
||||
#define AMDGPU_VMHUB_TYPE_MM0 1
|
||||
#define AMDGPU_VMHUB_TYPE_MM1 2
|
||||
#define AMDGPU_VMHUB_IDX_MASK 0xff00
|
||||
#define AMDGPU_VMHUB_IDX_SHIFT 8
|
||||
|
||||
struct drm_amdgpu_info_gpuvm_fault {
|
||||
__u64 addr;
|
||||
__u32 status;
|
||||
__u32 vmhub;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_uq_metadata_gfx {
|
||||
/* shadow area size for gfx11 */
|
||||
__u32 shadow_size;
|
||||
/* shadow area base virtual alignment for gfx11 */
|
||||
__u32 shadow_alignment;
|
||||
/* context save area size for gfx11 */
|
||||
__u32 csa_size;
|
||||
/* context save area base virtual alignment for gfx11 */
|
||||
__u32 csa_alignment;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_uq_metadata {
|
||||
union {
|
||||
struct drm_amdgpu_info_uq_metadata_gfx gfx;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Supported GPU families
|
||||
*/
|
||||
|
@ -1238,6 +1614,17 @@ struct drm_amdgpu_info_video_caps {
|
|||
#define AMDGPU_FAMILY_GC_11_0_1 148 /* GC 11.0.1 */
|
||||
#define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */
|
||||
#define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
|
||||
#define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */
|
||||
#define AMDGPU_FAMILY_GC_12_0_0 152 /* GC 12.0.0 */
|
||||
|
||||
/* FIXME wrong namespace! */
|
||||
struct drm_color_ctm_3x4 {
|
||||
/*
|
||||
* Conversion matrix with 3x4 dimensions in S31.32 sign-magnitude
|
||||
* (not two's complement!) format.
|
||||
*/
|
||||
__u64 matrix[12];
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,501 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2022-2024, Advanced Micro Devices, Inc.
|
||||
*/
|
||||
|
||||
#ifndef _AMDXDNA_ACCEL_H_
|
||||
#define _AMDXDNA_ACCEL_H_
|
||||
|
||||
#include <linux/stddef.h>
|
||||
#include "drm.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define AMDXDNA_INVALID_CMD_HANDLE (~0UL)
|
||||
#define AMDXDNA_INVALID_ADDR (~0UL)
|
||||
#define AMDXDNA_INVALID_CTX_HANDLE 0
|
||||
#define AMDXDNA_INVALID_BO_HANDLE 0
|
||||
#define AMDXDNA_INVALID_FENCE_HANDLE 0
|
||||
|
||||
enum amdxdna_device_type {
|
||||
AMDXDNA_DEV_TYPE_UNKNOWN = -1,
|
||||
AMDXDNA_DEV_TYPE_KMQ,
|
||||
};
|
||||
|
||||
enum amdxdna_drm_ioctl_id {
|
||||
DRM_AMDXDNA_CREATE_HWCTX,
|
||||
DRM_AMDXDNA_DESTROY_HWCTX,
|
||||
DRM_AMDXDNA_CONFIG_HWCTX,
|
||||
DRM_AMDXDNA_CREATE_BO,
|
||||
DRM_AMDXDNA_GET_BO_INFO,
|
||||
DRM_AMDXDNA_SYNC_BO,
|
||||
DRM_AMDXDNA_EXEC_CMD,
|
||||
DRM_AMDXDNA_GET_INFO,
|
||||
DRM_AMDXDNA_SET_STATE,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qos_info - QoS information for driver.
|
||||
* @gops: Giga operations per second.
|
||||
* @fps: Frames per second.
|
||||
* @dma_bandwidth: DMA bandwidtha.
|
||||
* @latency: Frame response latency.
|
||||
* @frame_exec_time: Frame execution time.
|
||||
* @priority: Request priority.
|
||||
*
|
||||
* User program can provide QoS hints to driver.
|
||||
*/
|
||||
struct amdxdna_qos_info {
|
||||
__u32 gops;
|
||||
__u32 fps;
|
||||
__u32 dma_bandwidth;
|
||||
__u32 latency;
|
||||
__u32 frame_exec_time;
|
||||
__u32 priority;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_create_hwctx - Create hardware context.
|
||||
* @ext: MBZ.
|
||||
* @ext_flags: MBZ.
|
||||
* @qos_p: Address of QoS info.
|
||||
* @umq_bo: BO handle for user mode queue(UMQ).
|
||||
* @log_buf_bo: BO handle for log buffer.
|
||||
* @max_opc: Maximum operations per cycle.
|
||||
* @num_tiles: Number of AIE tiles.
|
||||
* @mem_size: Size of AIE tile memory.
|
||||
* @umq_doorbell: Returned offset of doorbell associated with UMQ.
|
||||
* @handle: Returned hardware context handle.
|
||||
* @syncobj_handle: Returned syncobj handle for command completion.
|
||||
*/
|
||||
struct amdxdna_drm_create_hwctx {
|
||||
__u64 ext;
|
||||
__u64 ext_flags;
|
||||
__u64 qos_p;
|
||||
__u32 umq_bo;
|
||||
__u32 log_buf_bo;
|
||||
__u32 max_opc;
|
||||
__u32 num_tiles;
|
||||
__u32 mem_size;
|
||||
__u32 umq_doorbell;
|
||||
__u32 handle;
|
||||
__u32 syncobj_handle;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_destroy_hwctx - Destroy hardware context.
|
||||
* @handle: Hardware context handle.
|
||||
* @pad: MBZ.
|
||||
*/
|
||||
struct amdxdna_drm_destroy_hwctx {
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_cu_config - configuration for one CU
|
||||
* @cu_bo: CU configuration buffer bo handle.
|
||||
* @cu_func: Function of a CU.
|
||||
* @pad: MBZ.
|
||||
*/
|
||||
struct amdxdna_cu_config {
|
||||
__u32 cu_bo;
|
||||
__u8 cu_func;
|
||||
__u8 pad[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_hwctx_param_config_cu - configuration for CUs in hardware context
|
||||
* @num_cus: Number of CUs to configure.
|
||||
* @pad: MBZ.
|
||||
* @cu_configs: Array of CU configurations of struct amdxdna_cu_config.
|
||||
*/
|
||||
struct amdxdna_hwctx_param_config_cu {
|
||||
__u16 num_cus;
|
||||
__u16 pad[3];
|
||||
struct amdxdna_cu_config cu_configs[] __counted_by(num_cus);
|
||||
};
|
||||
|
||||
enum amdxdna_drm_config_hwctx_param {
|
||||
DRM_AMDXDNA_HWCTX_CONFIG_CU,
|
||||
DRM_AMDXDNA_HWCTX_ASSIGN_DBG_BUF,
|
||||
DRM_AMDXDNA_HWCTX_REMOVE_DBG_BUF,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_config_hwctx - Configure hardware context.
|
||||
* @handle: hardware context handle.
|
||||
* @param_type: Value in enum amdxdna_drm_config_hwctx_param. Specifies the
|
||||
* structure passed in via param_val.
|
||||
* @param_val: A structure specified by the param_type struct member.
|
||||
* @param_val_size: Size of the parameter buffer pointed to by the param_val.
|
||||
* If param_val is not a pointer, driver can ignore this.
|
||||
* @pad: MBZ.
|
||||
*
|
||||
* Note: if the param_val is a pointer pointing to a buffer, the maximum size
|
||||
* of the buffer is 4KiB(PAGE_SIZE).
|
||||
*/
|
||||
struct amdxdna_drm_config_hwctx {
|
||||
__u32 handle;
|
||||
__u32 param_type;
|
||||
__u64 param_val;
|
||||
__u32 param_val_size;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
enum amdxdna_bo_type {
|
||||
AMDXDNA_BO_INVALID = 0,
|
||||
AMDXDNA_BO_SHMEM,
|
||||
AMDXDNA_BO_DEV_HEAP,
|
||||
AMDXDNA_BO_DEV,
|
||||
AMDXDNA_BO_CMD,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_create_bo - Create a buffer object.
|
||||
* @flags: Buffer flags. MBZ.
|
||||
* @vaddr: User VA of buffer if applied. MBZ.
|
||||
* @size: Size in bytes.
|
||||
* @type: Buffer type.
|
||||
* @handle: Returned DRM buffer object handle.
|
||||
*/
|
||||
struct amdxdna_drm_create_bo {
|
||||
__u64 flags;
|
||||
__u64 vaddr;
|
||||
__u64 size;
|
||||
__u32 type;
|
||||
__u32 handle;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_get_bo_info - Get buffer object information.
|
||||
* @ext: MBZ.
|
||||
* @ext_flags: MBZ.
|
||||
* @handle: DRM buffer object handle.
|
||||
* @pad: MBZ.
|
||||
* @map_offset: Returned DRM fake offset for mmap().
|
||||
* @vaddr: Returned user VA of buffer. 0 in case user needs mmap().
|
||||
* @xdna_addr: Returned XDNA device virtual address.
|
||||
*/
|
||||
struct amdxdna_drm_get_bo_info {
|
||||
__u64 ext;
|
||||
__u64 ext_flags;
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
__u64 map_offset;
|
||||
__u64 vaddr;
|
||||
__u64 xdna_addr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_sync_bo - Sync buffer object.
|
||||
* @handle: Buffer object handle.
|
||||
* @direction: Direction of sync, can be from device or to device.
|
||||
* @offset: Offset in the buffer to sync.
|
||||
* @size: Size in bytes.
|
||||
*/
|
||||
struct amdxdna_drm_sync_bo {
|
||||
__u32 handle;
|
||||
#define SYNC_DIRECT_TO_DEVICE 0U
|
||||
#define SYNC_DIRECT_FROM_DEVICE 1U
|
||||
__u32 direction;
|
||||
__u64 offset;
|
||||
__u64 size;
|
||||
};
|
||||
|
||||
enum amdxdna_cmd_type {
|
||||
AMDXDNA_CMD_SUBMIT_EXEC_BUF = 0,
|
||||
AMDXDNA_CMD_SUBMIT_DEPENDENCY,
|
||||
AMDXDNA_CMD_SUBMIT_SIGNAL,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_exec_cmd - Execute command.
|
||||
* @ext: MBZ.
|
||||
* @ext_flags: MBZ.
|
||||
* @hwctx: Hardware context handle.
|
||||
* @type: One of command type in enum amdxdna_cmd_type.
|
||||
* @cmd_handles: Array of command handles or the command handle itself
|
||||
* in case of just one.
|
||||
* @args: Array of arguments for all command handles.
|
||||
* @cmd_count: Number of command handles in the cmd_handles array.
|
||||
* @arg_count: Number of arguments in the args array.
|
||||
* @seq: Returned sequence number for this command.
|
||||
*/
|
||||
struct amdxdna_drm_exec_cmd {
|
||||
__u64 ext;
|
||||
__u64 ext_flags;
|
||||
__u32 hwctx;
|
||||
__u32 type;
|
||||
__u64 cmd_handles;
|
||||
__u64 args;
|
||||
__u32 cmd_count;
|
||||
__u32 arg_count;
|
||||
__u64 seq;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_aie_status - Query the status of the AIE hardware
|
||||
* @buffer: The user space buffer that will return the AIE status.
|
||||
* @buffer_size: The size of the user space buffer.
|
||||
* @cols_filled: A bitmap of AIE columns whose data has been returned in the buffer.
|
||||
*/
|
||||
struct amdxdna_drm_query_aie_status {
|
||||
__u64 buffer; /* out */
|
||||
__u32 buffer_size; /* in */
|
||||
__u32 cols_filled; /* out */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_aie_version - Query the version of the AIE hardware
|
||||
* @major: The major version number.
|
||||
* @minor: The minor version number.
|
||||
*/
|
||||
struct amdxdna_drm_query_aie_version {
|
||||
__u32 major; /* out */
|
||||
__u32 minor; /* out */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_aie_tile_metadata - Query the metadata of AIE tile (core, mem, shim)
|
||||
* @row_count: The number of rows.
|
||||
* @row_start: The starting row number.
|
||||
* @dma_channel_count: The number of dma channels.
|
||||
* @lock_count: The number of locks.
|
||||
* @event_reg_count: The number of events.
|
||||
* @pad: Structure padding.
|
||||
*/
|
||||
struct amdxdna_drm_query_aie_tile_metadata {
|
||||
__u16 row_count;
|
||||
__u16 row_start;
|
||||
__u16 dma_channel_count;
|
||||
__u16 lock_count;
|
||||
__u16 event_reg_count;
|
||||
__u16 pad[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_aie_metadata - Query the metadata of the AIE hardware
|
||||
* @col_size: The size of a column in bytes.
|
||||
* @cols: The total number of columns.
|
||||
* @rows: The total number of rows.
|
||||
* @version: The version of the AIE hardware.
|
||||
* @core: The metadata for all core tiles.
|
||||
* @mem: The metadata for all mem tiles.
|
||||
* @shim: The metadata for all shim tiles.
|
||||
*/
|
||||
struct amdxdna_drm_query_aie_metadata {
|
||||
__u32 col_size;
|
||||
__u16 cols;
|
||||
__u16 rows;
|
||||
struct amdxdna_drm_query_aie_version version;
|
||||
struct amdxdna_drm_query_aie_tile_metadata core;
|
||||
struct amdxdna_drm_query_aie_tile_metadata mem;
|
||||
struct amdxdna_drm_query_aie_tile_metadata shim;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_clock - Metadata for a clock
|
||||
* @name: The clock name.
|
||||
* @freq_mhz: The clock frequency.
|
||||
* @pad: Structure padding.
|
||||
*/
|
||||
struct amdxdna_drm_query_clock {
|
||||
__u8 name[16];
|
||||
__u32 freq_mhz;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_clock_metadata - Query metadata for clocks
|
||||
* @mp_npu_clock: The metadata for MP-NPU clock.
|
||||
* @h_clock: The metadata for H clock.
|
||||
*/
|
||||
struct amdxdna_drm_query_clock_metadata {
|
||||
struct amdxdna_drm_query_clock mp_npu_clock;
|
||||
struct amdxdna_drm_query_clock h_clock;
|
||||
};
|
||||
|
||||
enum amdxdna_sensor_type {
|
||||
AMDXDNA_SENSOR_TYPE_POWER
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_sensor - The data for single sensor.
|
||||
* @label: The name for a sensor.
|
||||
* @input: The current value of the sensor.
|
||||
* @max: The maximum value possible for the sensor.
|
||||
* @average: The average value of the sensor.
|
||||
* @highest: The highest recorded sensor value for this driver load for the sensor.
|
||||
* @status: The sensor status.
|
||||
* @units: The sensor units.
|
||||
* @unitm: Translates value member variables into the correct unit via (pow(10, unitm) * value).
|
||||
* @type: The sensor type from enum amdxdna_sensor_type.
|
||||
* @pad: Structure padding.
|
||||
*/
|
||||
struct amdxdna_drm_query_sensor {
|
||||
__u8 label[64];
|
||||
__u32 input;
|
||||
__u32 max;
|
||||
__u32 average;
|
||||
__u32 highest;
|
||||
__u8 status[64];
|
||||
__u8 units[16];
|
||||
__s8 unitm;
|
||||
__u8 type;
|
||||
__u8 pad[6];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_hwctx - The data for single context.
|
||||
* @context_id: The ID for this context.
|
||||
* @start_col: The starting column for the partition assigned to this context.
|
||||
* @num_col: The number of columns in the partition assigned to this context.
|
||||
* @pad: Structure padding.
|
||||
* @pid: The Process ID of the process that created this context.
|
||||
* @command_submissions: The number of commands submitted to this context.
|
||||
* @command_completions: The number of commands completed by this context.
|
||||
* @migrations: The number of times this context has been moved to a different partition.
|
||||
* @preemptions: The number of times this context has been preempted by another context in the
|
||||
* same partition.
|
||||
* @errors: The errors for this context.
|
||||
*/
|
||||
struct amdxdna_drm_query_hwctx {
|
||||
__u32 context_id;
|
||||
__u32 start_col;
|
||||
__u32 num_col;
|
||||
__u32 pad;
|
||||
__s64 pid;
|
||||
__u64 command_submissions;
|
||||
__u64 command_completions;
|
||||
__u64 migrations;
|
||||
__u64 preemptions;
|
||||
__u64 errors;
|
||||
};
|
||||
|
||||
enum amdxdna_power_mode_type {
|
||||
POWER_MODE_DEFAULT, /* Fallback to calculated DPM */
|
||||
POWER_MODE_LOW, /* Set frequency to lowest DPM */
|
||||
POWER_MODE_MEDIUM, /* Set frequency to medium DPM */
|
||||
POWER_MODE_HIGH, /* Set frequency to highest DPM */
|
||||
POWER_MODE_TURBO, /* Maximum power */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_get_power_mode - Get the configured power mode
|
||||
* @power_mode: The mode type from enum amdxdna_power_mode_type
|
||||
* @pad: Structure padding.
|
||||
*/
|
||||
struct amdxdna_drm_get_power_mode {
|
||||
__u8 power_mode;
|
||||
__u8 pad[7];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_query_firmware_version - Query the firmware version
|
||||
* @major: The major version number
|
||||
* @minor: The minor version number
|
||||
* @patch: The patch level version number
|
||||
* @build: The build ID
|
||||
*/
|
||||
struct amdxdna_drm_query_firmware_version {
|
||||
__u32 major; /* out */
|
||||
__u32 minor; /* out */
|
||||
__u32 patch; /* out */
|
||||
__u32 build; /* out */
|
||||
};
|
||||
|
||||
enum amdxdna_drm_get_param {
|
||||
DRM_AMDXDNA_QUERY_AIE_STATUS,
|
||||
DRM_AMDXDNA_QUERY_AIE_METADATA,
|
||||
DRM_AMDXDNA_QUERY_AIE_VERSION,
|
||||
DRM_AMDXDNA_QUERY_CLOCK_METADATA,
|
||||
DRM_AMDXDNA_QUERY_SENSORS,
|
||||
DRM_AMDXDNA_QUERY_HW_CONTEXTS,
|
||||
DRM_AMDXDNA_QUERY_FIRMWARE_VERSION = 8,
|
||||
DRM_AMDXDNA_GET_POWER_MODE,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_get_info - Get some information from the AIE hardware.
|
||||
* @param: Value in enum amdxdna_drm_get_param. Specifies the structure passed in the buffer.
|
||||
* @buffer_size: Size of the input buffer. Size needed/written by the kernel.
|
||||
* @buffer: A structure specified by the param struct member.
|
||||
*/
|
||||
struct amdxdna_drm_get_info {
|
||||
__u32 param; /* in */
|
||||
__u32 buffer_size; /* in/out */
|
||||
__u64 buffer; /* in/out */
|
||||
};
|
||||
|
||||
enum amdxdna_drm_set_param {
|
||||
DRM_AMDXDNA_SET_POWER_MODE,
|
||||
DRM_AMDXDNA_WRITE_AIE_MEM,
|
||||
DRM_AMDXDNA_WRITE_AIE_REG,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_set_state - Set the state of the AIE hardware.
|
||||
* @param: Value in enum amdxdna_drm_set_param.
|
||||
* @buffer_size: Size of the input param.
|
||||
* @buffer: Pointer to the input param.
|
||||
*/
|
||||
struct amdxdna_drm_set_state {
|
||||
__u32 param; /* in */
|
||||
__u32 buffer_size; /* in */
|
||||
__u64 buffer; /* in */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct amdxdna_drm_set_power_mode - Set the power mode of the AIE hardware
|
||||
* @power_mode: The sensor type from enum amdxdna_power_mode_type
|
||||
* @pad: MBZ.
|
||||
*/
|
||||
struct amdxdna_drm_set_power_mode {
|
||||
__u8 power_mode;
|
||||
__u8 pad[7];
|
||||
};
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_CREATE_HWCTX \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_CREATE_HWCTX, \
|
||||
struct amdxdna_drm_create_hwctx)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_DESTROY_HWCTX \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_DESTROY_HWCTX, \
|
||||
struct amdxdna_drm_destroy_hwctx)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_CONFIG_HWCTX \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_CONFIG_HWCTX, \
|
||||
struct amdxdna_drm_config_hwctx)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_CREATE_BO \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_CREATE_BO, \
|
||||
struct amdxdna_drm_create_bo)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_GET_BO_INFO \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_GET_BO_INFO, \
|
||||
struct amdxdna_drm_get_bo_info)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_SYNC_BO \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_SYNC_BO, \
|
||||
struct amdxdna_drm_sync_bo)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_EXEC_CMD \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_EXEC_CMD, \
|
||||
struct amdxdna_drm_exec_cmd)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_GET_INFO \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_GET_INFO, \
|
||||
struct amdxdna_drm_get_info)
|
||||
|
||||
#define DRM_IOCTL_AMDXDNA_SET_STATE \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDXDNA_SET_STATE, \
|
||||
struct amdxdna_drm_set_state)
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} /* extern c end */
|
||||
#endif
|
||||
|
||||
#endif /* _AMDXDNA_ACCEL_H_ */
|
File diff suppressed because it is too large
Load Diff
|
@ -707,7 +707,8 @@ struct drm_gem_open {
|
|||
/**
|
||||
* DRM_CAP_ASYNC_PAGE_FLIP
|
||||
*
|
||||
* If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC.
|
||||
* If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for legacy
|
||||
* page-flips.
|
||||
*/
|
||||
#define DRM_CAP_ASYNC_PAGE_FLIP 0x7
|
||||
/**
|
||||
|
@ -767,6 +768,13 @@ struct drm_gem_open {
|
|||
* :ref:`drm_sync_objects`.
|
||||
*/
|
||||
#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
|
||||
/**
|
||||
* DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP
|
||||
*
|
||||
* If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for atomic
|
||||
* commits.
|
||||
*/
|
||||
#define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP 0x15
|
||||
|
||||
/* DRM_IOCTL_GET_CAP ioctl argument type */
|
||||
struct drm_get_cap {
|
||||
|
@ -836,6 +844,31 @@ struct drm_get_cap {
|
|||
*/
|
||||
#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
|
||||
|
||||
/**
|
||||
* DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT
|
||||
*
|
||||
* Drivers for para-virtualized hardware (e.g. vmwgfx, qxl, virtio and
|
||||
* virtualbox) have additional restrictions for cursor planes (thus
|
||||
* making cursor planes on those drivers not truly universal,) e.g.
|
||||
* they need cursor planes to act like one would expect from a mouse
|
||||
* cursor and have correctly set hotspot properties.
|
||||
* If this client cap is not set the DRM core will hide cursor plane on
|
||||
* those virtualized drivers because not setting it implies that the
|
||||
* client is not capable of dealing with those extra restictions.
|
||||
* Clients which do set cursor hotspot and treat the cursor plane
|
||||
* like a mouse cursor should set this property.
|
||||
* The client must enable &DRM_CLIENT_CAP_ATOMIC first.
|
||||
*
|
||||
* Setting this property on drivers which do not special case
|
||||
* cursor planes (i.e. non-virtualized drivers) will return
|
||||
* EOPNOTSUPP, which can be used by userspace to gauge
|
||||
* requirements of the hardware/drivers they're running on.
|
||||
*
|
||||
* This capability is always supported for atomic-capable virtualized
|
||||
* drivers starting from kernel version 6.6.
|
||||
*/
|
||||
#define DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT 6
|
||||
|
||||
/* DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */
|
||||
struct drm_set_client_cap {
|
||||
__u64 capability;
|
||||
|
@ -866,13 +899,17 @@ struct drm_syncobj_destroy {
|
|||
};
|
||||
|
||||
#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0)
|
||||
#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_TIMELINE (1 << 1)
|
||||
#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0)
|
||||
#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_TIMELINE (1 << 1)
|
||||
struct drm_syncobj_handle {
|
||||
__u32 handle;
|
||||
__u32 flags;
|
||||
|
||||
__s32 fd;
|
||||
__u32 pad;
|
||||
|
||||
__u64 point;
|
||||
};
|
||||
|
||||
struct drm_syncobj_transfer {
|
||||
|
@ -887,6 +924,7 @@ struct drm_syncobj_transfer {
|
|||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)
|
||||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)
|
||||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) /* wait for time point to become available */
|
||||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE (1 << 3) /* set fence deadline to deadline_nsec */
|
||||
struct drm_syncobj_wait {
|
||||
__u64 handles;
|
||||
/* absolute timeout */
|
||||
|
@ -895,6 +933,14 @@ struct drm_syncobj_wait {
|
|||
__u32 flags;
|
||||
__u32 first_signaled; /* only valid when not waiting all */
|
||||
__u32 pad;
|
||||
/**
|
||||
* @deadline_nsec - fence deadline hint
|
||||
*
|
||||
* Deadline hint, in absolute CLOCK_MONOTONIC, to set on backing
|
||||
* fence(s) if the DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE flag is
|
||||
* set.
|
||||
*/
|
||||
__u64 deadline_nsec;
|
||||
};
|
||||
|
||||
struct drm_syncobj_timeline_wait {
|
||||
|
@ -907,6 +953,14 @@ struct drm_syncobj_timeline_wait {
|
|||
__u32 flags;
|
||||
__u32 first_signaled; /* only valid when not waiting all */
|
||||
__u32 pad;
|
||||
/**
|
||||
* @deadline_nsec - fence deadline hint
|
||||
*
|
||||
* Deadline hint, in absolute CLOCK_MONOTONIC, to set on backing
|
||||
* fence(s) if the DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE flag is
|
||||
* set.
|
||||
*/
|
||||
__u64 deadline_nsec;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -968,6 +1022,13 @@ struct drm_crtc_queue_sequence {
|
|||
__u64 user_data; /* user data passed to event */
|
||||
};
|
||||
|
||||
#define DRM_CLIENT_NAME_MAX_LEN 64
|
||||
struct drm_set_client_name {
|
||||
__u64 name_len;
|
||||
__u64 name;
|
||||
};
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
@ -1128,6 +1189,26 @@ extern "C" {
|
|||
#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
|
||||
#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_MODE_CREATE_DUMB - Create a new dumb buffer object.
|
||||
*
|
||||
* KMS dumb buffers provide a very primitive way to allocate a buffer object
|
||||
* suitable for scanout and map it for software rendering. KMS dumb buffers are
|
||||
* not suitable for hardware-accelerated rendering nor video decoding. KMS dumb
|
||||
* buffers are not suitable to be displayed on any other device than the KMS
|
||||
* device where they were allocated from. Also see
|
||||
* :ref:`kms_dumb_buffer_objects`.
|
||||
*
|
||||
* The IOCTL argument is a struct drm_mode_create_dumb.
|
||||
*
|
||||
* User-space is expected to create a KMS dumb buffer via this IOCTL, then add
|
||||
* it as a KMS framebuffer via &DRM_IOCTL_MODE_ADDFB and map it via
|
||||
* &DRM_IOCTL_MODE_MAP_DUMB.
|
||||
*
|
||||
* &DRM_CAP_DUMB_BUFFER indicates whether this IOCTL is supported.
|
||||
* &DRM_CAP_DUMB_PREFERRED_DEPTH and &DRM_CAP_DUMB_PREFER_SHADOW indicate
|
||||
* driver preferences for dumb buffers.
|
||||
*/
|
||||
#define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
|
||||
#define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
|
||||
#define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
|
||||
|
@ -1192,6 +1273,36 @@ extern "C" {
|
|||
|
||||
#define DRM_IOCTL_SYNCOBJ_EVENTFD DRM_IOWR(0xCF, struct drm_syncobj_eventfd)
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_MODE_CLOSEFB - Close a framebuffer.
|
||||
*
|
||||
* This closes a framebuffer previously added via ADDFB/ADDFB2. The IOCTL
|
||||
* argument is a framebuffer object ID.
|
||||
*
|
||||
* This IOCTL is similar to &DRM_IOCTL_MODE_RMFB, except it doesn't disable
|
||||
* planes and CRTCs. As long as the framebuffer is used by a plane, it's kept
|
||||
* alive. When the plane no longer uses the framebuffer (because the
|
||||
* framebuffer is replaced with another one, or the plane is disabled), the
|
||||
* framebuffer is cleaned up.
|
||||
*
|
||||
* This is useful to implement flicker-free transitions between two processes.
|
||||
*
|
||||
* Depending on the threat model, user-space may want to ensure that the
|
||||
* framebuffer doesn't expose any sensitive user information: closed
|
||||
* framebuffers attached to a plane can be read back by the next DRM master.
|
||||
*/
|
||||
#define DRM_IOCTL_MODE_CLOSEFB DRM_IOWR(0xD0, struct drm_mode_closefb)
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_SET_CLIENT_NAME - Attach a name to a drm_file
|
||||
*
|
||||
* Having a name allows for easier tracking and debugging.
|
||||
* The length of the name (without null ending char) must be
|
||||
* <= DRM_CLIENT_NAME_MAX_LEN.
|
||||
* The call will fail if the name contains whitespaces or non-printable chars.
|
||||
*/
|
||||
#define DRM_IOCTL_SET_CLIENT_NAME DRM_IOWR(0xD1, struct drm_set_client_name)
|
||||
|
||||
/*
|
||||
* Device specific ioctls should only be in their respective headers
|
||||
* The device specific ioctl range is from 0x40 to 0x9f.
|
||||
|
|
|
@ -54,7 +54,7 @@ extern "C" {
|
|||
* Format modifiers may change any property of the buffer, including the number
|
||||
* of planes and/or the required allocation size. Format modifiers are
|
||||
* vendor-namespaced, and as such the relationship between a fourcc code and a
|
||||
* modifier is specific to the modifer being used. For example, some modifiers
|
||||
* modifier is specific to the modifier being used. For example, some modifiers
|
||||
* may preserve meaning - such as number of planes - from the fourcc code,
|
||||
* whereas others may not.
|
||||
*
|
||||
|
@ -79,7 +79,7 @@ extern "C" {
|
|||
* format.
|
||||
* - Higher-level programs interfacing with KMS/GBM/EGL/Vulkan/etc: these users
|
||||
* see modifiers as opaque tokens they can check for equality and intersect.
|
||||
* These users musn't need to know to reason about the modifier value
|
||||
* These users mustn't need to know to reason about the modifier value
|
||||
* (i.e. they are not expected to extract information out of the modifier).
|
||||
*
|
||||
* Vendors should document their modifier usage in as much detail as
|
||||
|
@ -323,6 +323,8 @@ extern "C" {
|
|||
* index 1 = Cr:Cb plane, [39:0] Cr1:Cb1:Cr0:Cb0 little endian
|
||||
*/
|
||||
#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') /* 2x2 subsampled Cr:Cb plane */
|
||||
#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') /* 2x1 subsampled Cr:Cb plane */
|
||||
#define DRM_FORMAT_NV30 fourcc_code('N', 'V', '3', '0') /* non-subsampled Cr:Cb plane */
|
||||
|
||||
/*
|
||||
* 2 plane YCbCr MSB aligned
|
||||
|
@ -419,6 +421,8 @@ extern "C" {
|
|||
#define DRM_FORMAT_MOD_VENDOR_ARM 0x08
|
||||
#define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09
|
||||
#define DRM_FORMAT_MOD_VENDOR_AMLOGIC 0x0a
|
||||
#define DRM_FORMAT_MOD_VENDOR_MTK 0x0b
|
||||
#define DRM_FORMAT_MOD_VENDOR_APPLE 0x0c
|
||||
|
||||
/* add more to the end as needed */
|
||||
|
||||
|
@ -538,7 +542,7 @@ extern "C" {
|
|||
* This is a tiled layout using 4Kb tiles in row-major layout.
|
||||
* Within the tile pixels are laid out in 16 256 byte units / sub-tiles which
|
||||
* are arranged in four groups (two wide, two high) with column-major layout.
|
||||
* Each group therefore consits out of four 256 byte units, which are also laid
|
||||
* Each group therefore consists out of four 256 byte units, which are also laid
|
||||
* out as 2x2 column-major.
|
||||
* 256 byte units are made out of four 64 byte blocks of pixels, producing
|
||||
* either a square block or a 2:1 unit.
|
||||
|
@ -700,6 +704,31 @@ extern "C" {
|
|||
*/
|
||||
#define I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC fourcc_mod_code(INTEL, 15)
|
||||
|
||||
/*
|
||||
* Intel Color Control Surfaces (CCS) for graphics ver. 20 unified compression
|
||||
* on integrated graphics
|
||||
*
|
||||
* The main surface is Tile 4 and at plane index 0. For semi-planar formats
|
||||
* like NV12, the Y and UV planes are Tile 4 and are located at plane indices
|
||||
* 0 and 1, respectively. The CCS for all planes are stored outside of the
|
||||
* GEM object in a reserved memory area dedicated for the storage of the
|
||||
* CCS data for all compressible GEM objects.
|
||||
*/
|
||||
#define I915_FORMAT_MOD_4_TILED_LNL_CCS fourcc_mod_code(INTEL, 16)
|
||||
|
||||
/*
|
||||
* Intel Color Control Surfaces (CCS) for graphics ver. 20 unified compression
|
||||
* on discrete graphics
|
||||
*
|
||||
* The main surface is Tile 4 and at plane index 0. For semi-planar formats
|
||||
* like NV12, the Y and UV planes are Tile 4 and are located at plane indices
|
||||
* 0 and 1, respectively. The CCS for all planes are stored outside of the
|
||||
* GEM object in a reserved memory area dedicated for the storage of the
|
||||
* CCS data for all compressible GEM objects. The GEM object must be stored in
|
||||
* contiguous memory with a size aligned to 64KB
|
||||
*/
|
||||
#define I915_FORMAT_MOD_4_TILED_BMG_CCS fourcc_mod_code(INTEL, 17)
|
||||
|
||||
/*
|
||||
* Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
|
||||
*
|
||||
|
@ -1101,7 +1130,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
*/
|
||||
|
||||
/*
|
||||
* The top 4 bits (out of the 56 bits alloted for specifying vendor specific
|
||||
* The top 4 bits (out of the 56 bits allotted for specifying vendor specific
|
||||
* modifiers) denote the category for modifiers. Currently we have three
|
||||
* categories of modifiers ie AFBC, MISC and AFRC. We can have a maximum of
|
||||
* sixteen different categories.
|
||||
|
@ -1417,7 +1446,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
* Amlogic FBC Memory Saving mode
|
||||
*
|
||||
* Indicates the storage is packed when pixel size is multiple of word
|
||||
* boudaries, i.e. 8bit should be stored in this mode to save allocation
|
||||
* boundaries, i.e. 8bit should be stored in this mode to save allocation
|
||||
* memory.
|
||||
*
|
||||
* This mode reduces body layout to 3072 bytes per 64x32 superblock with
|
||||
|
@ -1426,6 +1455,90 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
*/
|
||||
#define AMLOGIC_FBC_OPTION_MEM_SAVING (1ULL << 0)
|
||||
|
||||
/* MediaTek modifiers
|
||||
* Bits Parameter Notes
|
||||
* ----- ------------------------ ---------------------------------------------
|
||||
* 7: 0 TILE LAYOUT Values are MTK_FMT_MOD_TILE_*
|
||||
* 15: 8 COMPRESSION Values are MTK_FMT_MOD_COMPRESS_*
|
||||
* 23:16 10 BIT LAYOUT Values are MTK_FMT_MOD_10BIT_LAYOUT_*
|
||||
*
|
||||
*/
|
||||
|
||||
#define DRM_FORMAT_MOD_MTK(__flags) fourcc_mod_code(MTK, __flags)
|
||||
|
||||
/*
|
||||
* MediaTek Tiled Modifier
|
||||
* The lowest 8 bits of the modifier is used to specify the tiling
|
||||
* layout. Only the 16L_32S tiling is used for now, but we define an
|
||||
* "untiled" version and leave room for future expansion.
|
||||
*/
|
||||
#define MTK_FMT_MOD_TILE_MASK 0xf
|
||||
#define MTK_FMT_MOD_TILE_NONE 0x0
|
||||
#define MTK_FMT_MOD_TILE_16L32S 0x1
|
||||
|
||||
/*
|
||||
* Bits 8-15 specify compression options
|
||||
*/
|
||||
#define MTK_FMT_MOD_COMPRESS_MASK (0xf << 8)
|
||||
#define MTK_FMT_MOD_COMPRESS_NONE (0x0 << 8)
|
||||
#define MTK_FMT_MOD_COMPRESS_V1 (0x1 << 8)
|
||||
|
||||
/*
|
||||
* Bits 16-23 specify how the bits of 10 bit formats are
|
||||
* stored out in memory
|
||||
*/
|
||||
#define MTK_FMT_MOD_10BIT_LAYOUT_MASK (0xf << 16)
|
||||
#define MTK_FMT_MOD_10BIT_LAYOUT_PACKED (0x0 << 16)
|
||||
#define MTK_FMT_MOD_10BIT_LAYOUT_LSBTILED (0x1 << 16)
|
||||
#define MTK_FMT_MOD_10BIT_LAYOUT_LSBRASTER (0x2 << 16)
|
||||
|
||||
/* alias for the most common tiling format */
|
||||
#define DRM_FORMAT_MOD_MTK_16L_32S_TILE DRM_FORMAT_MOD_MTK(MTK_FMT_MOD_TILE_16L32S)
|
||||
|
||||
/*
|
||||
* Apple GPU-tiled layouts.
|
||||
*
|
||||
* Apple GPUs support nonlinear tilings with optional lossless compression.
|
||||
*
|
||||
* GPU-tiled images are divided into 16KiB tiles:
|
||||
*
|
||||
* Bytes per pixel Tile size
|
||||
* --------------- ---------
|
||||
* 1 128x128
|
||||
* 2 128x64
|
||||
* 4 64x64
|
||||
* 8 64x32
|
||||
* 16 32x32
|
||||
*
|
||||
* Tiles are raster-order. Pixels within a tile are interleaved (Morton order).
|
||||
*
|
||||
* Compressed images pad the body to 128-bytes and are immediately followed by a
|
||||
* metadata section. The metadata section rounds the image dimensions to
|
||||
* powers-of-two and contains 8 bytes for each 16x16 compression subtile.
|
||||
* Subtiles are interleaved (Morton order).
|
||||
*
|
||||
* All images are 128-byte aligned.
|
||||
*
|
||||
* These layouts fundamentally do not have meaningful strides. No matter how we
|
||||
* specify strides for these layouts, userspace unaware of Apple image layouts
|
||||
* will be unable to use correctly the specified stride for any purpose.
|
||||
* Userspace aware of the image layouts do not use strides. The most "correct"
|
||||
* convention would be setting the image stride to 0. Unfortunately, some
|
||||
* software assumes the stride is at least (width * bytes per pixel). We
|
||||
* therefore require that stride equals (width * bytes per pixel). Since the
|
||||
* stride is arbitrary here, we pick the simplest convention.
|
||||
*
|
||||
* Although containing two sections, compressed image layouts are treated in
|
||||
* software as a single plane. This is modelled after AFBC, a similar
|
||||
* scheme. Attempting to separate the sections to be "explicit" in DRM would
|
||||
* only generate more confusion, as software does not treat the image this way.
|
||||
*
|
||||
* For detailed information on the hardware image layouts, see
|
||||
* https://docs.mesa3d.org/drivers/asahi.html#image-layouts
|
||||
*/
|
||||
#define DRM_FORMAT_MOD_APPLE_GPU_TILED fourcc_mod_code(APPLE, 1)
|
||||
#define DRM_FORMAT_MOD_APPLE_GPU_TILED_COMPRESSED fourcc_mod_code(APPLE, 2)
|
||||
|
||||
/*
|
||||
* AMD modifiers
|
||||
*
|
||||
|
@ -1474,6 +1587,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
#define AMD_FMT_MOD_TILE_VER_GFX10 2
|
||||
#define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
|
||||
#define AMD_FMT_MOD_TILE_VER_GFX11 4
|
||||
#define AMD_FMT_MOD_TILE_VER_GFX12 5
|
||||
|
||||
/*
|
||||
* 64K_S is the same for GFX9/GFX10/GFX10_RBPLUS and hence has GFX9 as canonical
|
||||
|
@ -1484,13 +1598,31 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
/*
|
||||
* 64K_D for non-32 bpp is the same for GFX9/GFX10/GFX10_RBPLUS and hence has
|
||||
* GFX9 as canonical version.
|
||||
*
|
||||
* 64K_D_2D on GFX12 is identical to 64K_D on GFX11.
|
||||
*/
|
||||
#define AMD_FMT_MOD_TILE_GFX9_64K_D 10
|
||||
#define AMD_FMT_MOD_TILE_GFX9_4K_D_X 22
|
||||
#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
|
||||
#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
|
||||
#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
|
||||
#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
|
||||
|
||||
/* Gfx12 swizzle modes:
|
||||
* 0 - LINEAR
|
||||
* 1 - 256B_2D - 2D block dimensions
|
||||
* 2 - 4KB_2D
|
||||
* 3 - 64KB_2D
|
||||
* 4 - 256KB_2D
|
||||
* 5 - 4KB_3D - 3D block dimensions
|
||||
* 6 - 64KB_3D
|
||||
* 7 - 256KB_3D
|
||||
*/
|
||||
#define AMD_FMT_MOD_TILE_GFX12_256B_2D 1
|
||||
#define AMD_FMT_MOD_TILE_GFX12_4K_2D 2
|
||||
#define AMD_FMT_MOD_TILE_GFX12_64K_2D 3
|
||||
#define AMD_FMT_MOD_TILE_GFX12_256K_2D 4
|
||||
|
||||
#define AMD_FMT_MOD_DCC_BLOCK_64B 0
|
||||
#define AMD_FMT_MOD_DCC_BLOCK_128B 1
|
||||
#define AMD_FMT_MOD_DCC_BLOCK_256B 2
|
||||
|
|
|
@ -36,10 +36,10 @@ extern "C" {
|
|||
/**
|
||||
* DOC: overview
|
||||
*
|
||||
* DRM exposes many UAPI and structure definition to have a consistent
|
||||
* and standardized interface with user.
|
||||
* DRM exposes many UAPI and structure definitions to have a consistent
|
||||
* and standardized interface with users.
|
||||
* Userspace can refer to these structure definitions and UAPI formats
|
||||
* to communicate to driver
|
||||
* to communicate to drivers.
|
||||
*/
|
||||
|
||||
#define DRM_CONNECTOR_NAME_LEN 32
|
||||
|
@ -540,7 +540,7 @@ struct drm_mode_get_connector {
|
|||
/* the PROP_ATOMIC flag is used to hide properties from userspace that
|
||||
* is not aware of atomic properties. This is mostly to work around
|
||||
* older userspace (DDX drivers) that read/write each prop they find,
|
||||
* witout being aware that this could be triggering a lengthy modeset.
|
||||
* without being aware that this could be triggering a lengthy modeset.
|
||||
*/
|
||||
#define DRM_MODE_PROP_ATOMIC 0x80000000
|
||||
|
||||
|
@ -664,7 +664,7 @@ struct drm_mode_fb_cmd {
|
|||
};
|
||||
|
||||
#define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */
|
||||
#define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifer[] */
|
||||
#define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifier[] */
|
||||
|
||||
/**
|
||||
* struct drm_mode_fb_cmd2 - Frame-buffer metadata.
|
||||
|
@ -857,6 +857,19 @@ struct drm_color_lut {
|
|||
__u16 reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_plane_size_hint - Plane size hints
|
||||
* @width: The width of the plane in pixel
|
||||
* @height: The height of the plane in pixel
|
||||
*
|
||||
* The plane SIZE_HINTS property blob contains an
|
||||
* array of struct drm_plane_size_hint.
|
||||
*/
|
||||
struct drm_plane_size_hint {
|
||||
__u16 width;
|
||||
__u16 height;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hdr_metadata_infoframe - HDR Metadata Infoframe Data.
|
||||
*
|
||||
|
@ -881,8 +894,8 @@ struct hdr_metadata_infoframe {
|
|||
* These are coded as unsigned 16-bit values in units of
|
||||
* 0.00002, where 0x0000 represents zero and 0xC350
|
||||
* represents 1.0000.
|
||||
* @display_primaries.x: X cordinate of color primary.
|
||||
* @display_primaries.y: Y cordinate of color primary.
|
||||
* @display_primaries.x: X coordinate of color primary.
|
||||
* @display_primaries.y: Y coordinate of color primary.
|
||||
*/
|
||||
struct {
|
||||
__u16 x, y;
|
||||
|
@ -892,8 +905,8 @@ struct hdr_metadata_infoframe {
|
|||
* These are coded as unsigned 16-bit values in units of
|
||||
* 0.00002, where 0x0000 represents zero and 0xC350
|
||||
* represents 1.0000.
|
||||
* @white_point.x: X cordinate of whitepoint of color primary.
|
||||
* @white_point.y: Y cordinate of whitepoint of color primary.
|
||||
* @white_point.x: X coordinate of whitepoint of color primary.
|
||||
* @white_point.y: Y coordinate of whitepoint of color primary.
|
||||
*/
|
||||
struct {
|
||||
__u16 x, y;
|
||||
|
@ -957,6 +970,15 @@ struct hdr_output_metadata {
|
|||
* Request that the page-flip is performed as soon as possible, ie. with no
|
||||
* delay due to waiting for vblank. This may cause tearing to be visible on
|
||||
* the screen.
|
||||
*
|
||||
* When used with atomic uAPI, the driver will return an error if the hardware
|
||||
* doesn't support performing an asynchronous page-flip for this update.
|
||||
* User-space should handle this, e.g. by falling back to a regular page-flip.
|
||||
*
|
||||
* Note, some hardware might need to perform one last synchronous page-flip
|
||||
* before being able to switch to asynchronous page-flips. As an exception,
|
||||
* the driver will return success even though that first page-flip is not
|
||||
* asynchronous.
|
||||
*/
|
||||
#define DRM_MODE_PAGE_FLIP_ASYNC 0x02
|
||||
#define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4
|
||||
|
@ -1032,13 +1054,25 @@ struct drm_mode_crtc_page_flip_target {
|
|||
__u64 user_data;
|
||||
};
|
||||
|
||||
/* create a dumb scanout buffer */
|
||||
/**
|
||||
* struct drm_mode_create_dumb - Create a KMS dumb buffer for scanout.
|
||||
* @height: buffer height in pixels
|
||||
* @width: buffer width in pixels
|
||||
* @bpp: bits per pixel
|
||||
* @flags: must be zero
|
||||
* @handle: buffer object handle
|
||||
* @pitch: number of bytes between two consecutive lines
|
||||
* @size: size of the whole buffer in bytes
|
||||
*
|
||||
* User-space fills @height, @width, @bpp and @flags. If the IOCTL succeeds,
|
||||
* the kernel fills @handle, @pitch and @size.
|
||||
*/
|
||||
struct drm_mode_create_dumb {
|
||||
__u32 height;
|
||||
__u32 width;
|
||||
__u32 bpp;
|
||||
__u32 flags;
|
||||
/* handle, pitch, size will be returned */
|
||||
|
||||
__u32 handle;
|
||||
__u32 pitch;
|
||||
__u64 size;
|
||||
|
@ -1311,6 +1345,16 @@ struct drm_mode_rect {
|
|||
__s32 y2;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_mode_closefb
|
||||
* @fb_id: Framebuffer ID.
|
||||
* @pad: Must be zero.
|
||||
*/
|
||||
struct drm_mode_closefb {
|
||||
__u32 fb_id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
|
||||
*
|
||||
* Copyright 2016-2022 HabanaLabs, Ltd.
|
||||
* Copyright 2016-2023 HabanaLabs, Ltd.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
|
@ -8,8 +8,7 @@
|
|||
#ifndef HABANALABS_H_
|
||||
#define HABANALABS_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <drm/drm.h>
|
||||
|
||||
/*
|
||||
* Defines that are asic-specific but constitutes as ABI between kernel driver
|
||||
|
@ -607,9 +606,9 @@ enum gaudi2_engine_id {
|
|||
/*
|
||||
* ASIC specific PLL index
|
||||
*
|
||||
* Used to retrieve in frequency info of different IPs via
|
||||
* HL_INFO_PLL_FREQUENCY under HL_IOCTL_INFO IOCTL. The enums need to be
|
||||
* used as an index in struct hl_pll_frequency_info
|
||||
* Used to retrieve in frequency info of different IPs via HL_INFO_PLL_FREQUENCY under
|
||||
* DRM_IOCTL_HL_INFO IOCTL.
|
||||
* The enums need to be used as an index in struct hl_pll_frequency_info.
|
||||
*/
|
||||
|
||||
enum hl_goya_pll_index {
|
||||
|
@ -809,6 +808,7 @@ enum hl_server_type {
|
|||
* HL_INFO_FW_ERR_EVENT - Retrieve information on the reported FW error.
|
||||
* May return 0 even though no new data is available, in that case
|
||||
* timestamp will be 0.
|
||||
* HL_INFO_USER_ENGINE_ERR_EVENT - Retrieve the last engine id that reported an error.
|
||||
*/
|
||||
#define HL_INFO_HW_IP_INFO 0
|
||||
#define HL_INFO_HW_EVENTS 1
|
||||
|
@ -845,6 +845,8 @@ enum hl_server_type {
|
|||
#define HL_INFO_FW_GENERIC_REQ 35
|
||||
#define HL_INFO_HW_ERR_EVENT 36
|
||||
#define HL_INFO_FW_ERR_EVENT 37
|
||||
#define HL_INFO_USER_ENGINE_ERR_EVENT 38
|
||||
#define HL_INFO_DEV_SIGNED 40
|
||||
|
||||
#define HL_INFO_VERSION_MAX_LEN 128
|
||||
#define HL_INFO_CARD_NAME_MAX_LEN 16
|
||||
|
@ -884,11 +886,11 @@ enum hl_server_type {
|
|||
* @dram_enabled: Whether the DRAM is enabled.
|
||||
* @security_enabled: Whether security is enabled on device.
|
||||
* @mme_master_slave_mode: Indicate whether the MME is working in master/slave
|
||||
* configuration. Relevant for Greco and later.
|
||||
* configuration. Relevant for Gaudi2 and later.
|
||||
* @cpucp_version: The CPUCP f/w version.
|
||||
* @card_name: The card name as passed by the f/w.
|
||||
* @tpc_enabled_mask_ext: Bit-mask that represents which TPCs are enabled.
|
||||
* Relevant for Greco and later.
|
||||
* Relevant for Gaudi2 and later.
|
||||
* @dram_page_size: The DRAM physical page size.
|
||||
* @edma_enabled_mask: Bit-mask that represents which EDMAs are enabled.
|
||||
* Relevant for Gaudi2 and later.
|
||||
|
@ -990,6 +992,7 @@ struct hl_info_reset_count {
|
|||
struct hl_info_time_sync {
|
||||
__u64 device_time;
|
||||
__u64 host_time;
|
||||
__u64 tsc_time;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1226,6 +1229,20 @@ struct hl_info_fw_err_event {
|
|||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_info_engine_err_event - engine error info
|
||||
* @timestamp: time-stamp of error occurrence
|
||||
* @engine_id: engine id who reported the error.
|
||||
* @error_count: Amount of errors reported.
|
||||
* @pad: size padding for u64 granularity.
|
||||
*/
|
||||
struct hl_info_engine_err_event {
|
||||
__s64 timestamp;
|
||||
__u16 engine_id;
|
||||
__u16 error_count;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_info_dev_memalloc_page_sizes - valid page sizes in device mem alloc information.
|
||||
* @page_order_bitmask: bitmap in which a set bit represents the order of the supported page size
|
||||
|
@ -1240,6 +1257,7 @@ struct hl_info_dev_memalloc_page_sizes {
|
|||
#define SEC_SIGNATURE_BUF_SZ 255 /* (256 - 1) 1 byte used for size */
|
||||
#define SEC_PUB_DATA_BUF_SZ 510 /* (512 - 2) 2 bytes used for size */
|
||||
#define SEC_CERTIFICATE_BUF_SZ 2046 /* (2048 - 2) 2 bytes used for size */
|
||||
#define SEC_DEV_INFO_BUF_SZ 5120
|
||||
|
||||
/*
|
||||
* struct hl_info_sec_attest - attestation report of the boot
|
||||
|
@ -1274,6 +1292,32 @@ struct hl_info_sec_attest {
|
|||
__u8 pad0[2];
|
||||
};
|
||||
|
||||
/*
|
||||
* struct hl_info_signed - device information signed by a secured device.
|
||||
* @nonce: number only used once. random number provided by host. this also passed to the quote
|
||||
* command as a qualifying data.
|
||||
* @pub_data_len: length of the public data (bytes)
|
||||
* @certificate_len: length of the certificate (bytes)
|
||||
* @info_sig_len: length of the attestation signature (bytes)
|
||||
* @public_data: public key info signed info data (outPublic + name + qualifiedName)
|
||||
* @certificate: certificate for the signing key
|
||||
* @info_sig: signature of the info + nonce data.
|
||||
* @dev_info_len: length of device info (bytes)
|
||||
* @dev_info: device info as byte array.
|
||||
*/
|
||||
struct hl_info_signed {
|
||||
__u32 nonce;
|
||||
__u16 pub_data_len;
|
||||
__u16 certificate_len;
|
||||
__u8 info_sig_len;
|
||||
__u8 public_data[SEC_PUB_DATA_BUF_SZ];
|
||||
__u8 certificate[SEC_CERTIFICATE_BUF_SZ];
|
||||
__u8 info_sig[SEC_SIGNATURE_BUF_SZ];
|
||||
__u16 dev_info_len;
|
||||
__u8 dev_info[SEC_DEV_INFO_BUF_SZ];
|
||||
__u8 pad[2];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_page_fault_info - page fault information.
|
||||
* @timestamp: timestamp of page fault.
|
||||
|
@ -1409,7 +1453,7 @@ union hl_cb_args {
|
|||
*
|
||||
* HL_CS_CHUNK_FLAGS_USER_ALLOC_CB:
|
||||
* Indicates if the CB was allocated and mapped by userspace
|
||||
* (relevant to greco and above). User allocated CB is a command buffer,
|
||||
* (relevant to Gaudi2 and later). User allocated CB is a command buffer,
|
||||
* allocated by the user, via malloc (or similar). After allocating the
|
||||
* CB, the user invokes - “memory ioctl” to map the user memory into a
|
||||
* device virtual address. The user provides this address via the
|
||||
|
@ -1434,7 +1478,7 @@ struct hl_cs_chunk {
|
|||
* a DRAM address of the internal CB. In Gaudi, this might also
|
||||
* represent a mapped host address of the CB.
|
||||
*
|
||||
* Greco onwards:
|
||||
* Gaudi2 onwards:
|
||||
* For H/W queue, this represents either a Handle of CB on the
|
||||
* Host, or an SRAM, a DRAM, or a mapped host address of the CB.
|
||||
*
|
||||
|
@ -2147,6 +2191,13 @@ struct hl_debug_args {
|
|||
__u32 ctx_id;
|
||||
};
|
||||
|
||||
#define HL_IOCTL_INFO 0x00
|
||||
#define HL_IOCTL_CB 0x01
|
||||
#define HL_IOCTL_CS 0x02
|
||||
#define HL_IOCTL_WAIT_CS 0x03
|
||||
#define HL_IOCTL_MEMORY 0x04
|
||||
#define HL_IOCTL_DEBUG 0x05
|
||||
|
||||
/*
|
||||
* Various information operations such as:
|
||||
* - H/W IP information
|
||||
|
@ -2161,8 +2212,7 @@ struct hl_debug_args {
|
|||
* definitions of structures in kernel and userspace, e.g. in case of old
|
||||
* userspace and new kernel driver
|
||||
*/
|
||||
#define HL_IOCTL_INFO \
|
||||
_IOWR('H', 0x01, struct hl_info_args)
|
||||
#define DRM_IOCTL_HL_INFO DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_INFO, struct hl_info_args)
|
||||
|
||||
/*
|
||||
* Command Buffer
|
||||
|
@ -2183,8 +2233,7 @@ struct hl_debug_args {
|
|||
* and won't be returned to user.
|
||||
*
|
||||
*/
|
||||
#define HL_IOCTL_CB \
|
||||
_IOWR('H', 0x02, union hl_cb_args)
|
||||
#define DRM_IOCTL_HL_CB DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_CB, union hl_cb_args)
|
||||
|
||||
/*
|
||||
* Command Submission
|
||||
|
@ -2206,7 +2255,7 @@ struct hl_debug_args {
|
|||
* internal. The driver will get completion notifications from the device only
|
||||
* on JOBS which are enqueued in the external queues.
|
||||
*
|
||||
* Greco onwards:
|
||||
* Gaudi2 onwards:
|
||||
* There is a single type of queue for all types of engines, either DMA engines
|
||||
* for transfers from/to the host or inside the device, or compute engines.
|
||||
* The driver will get completion notifications from the device for all queues.
|
||||
|
@ -2236,8 +2285,7 @@ struct hl_debug_args {
|
|||
* and only if CS N and CS N-1 are exactly the same (same CBs for the same
|
||||
* queues).
|
||||
*/
|
||||
#define HL_IOCTL_CS \
|
||||
_IOWR('H', 0x03, union hl_cs_args)
|
||||
#define DRM_IOCTL_HL_CS DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_CS, union hl_cs_args)
|
||||
|
||||
/*
|
||||
* Wait for Command Submission
|
||||
|
@ -2269,9 +2317,7 @@ struct hl_debug_args {
|
|||
* HL_WAIT_CS_STATUS_ABORTED - The CS was aborted, usually because the
|
||||
* device was reset (EIO)
|
||||
*/
|
||||
|
||||
#define HL_IOCTL_WAIT_CS \
|
||||
_IOWR('H', 0x04, union hl_wait_cs_args)
|
||||
#define DRM_IOCTL_HL_WAIT_CS DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_WAIT_CS, union hl_wait_cs_args)
|
||||
|
||||
/*
|
||||
* Memory
|
||||
|
@ -2288,8 +2334,7 @@ struct hl_debug_args {
|
|||
* There is an option for the user to specify the requested virtual address.
|
||||
*
|
||||
*/
|
||||
#define HL_IOCTL_MEMORY \
|
||||
_IOWR('H', 0x05, union hl_mem_args)
|
||||
#define DRM_IOCTL_HL_MEMORY DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_MEMORY, union hl_mem_args)
|
||||
|
||||
/*
|
||||
* Debug
|
||||
|
@ -2315,10 +2360,9 @@ struct hl_debug_args {
|
|||
* The driver can decide to "kick out" the user if he abuses this interface.
|
||||
*
|
||||
*/
|
||||
#define HL_IOCTL_DEBUG \
|
||||
_IOWR('H', 0x06, struct hl_debug_args)
|
||||
#define DRM_IOCTL_HL_DEBUG DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_DEBUG, struct hl_debug_args)
|
||||
|
||||
#define HL_COMMAND_START 0x01
|
||||
#define HL_COMMAND_END 0x07
|
||||
#define HL_COMMAND_START (DRM_COMMAND_BASE + HL_IOCTL_INFO)
|
||||
#define HL_COMMAND_END (DRM_COMMAND_BASE + HL_IOCTL_DEBUG + 1)
|
||||
|
||||
#endif /* HABANALABS_H_ */
|
||||
|
|
|
@ -38,13 +38,13 @@ extern "C" {
|
|||
*/
|
||||
|
||||
/**
|
||||
* DOC: uevents generated by i915 on it's device node
|
||||
* DOC: uevents generated by i915 on its device node
|
||||
*
|
||||
* I915_L3_PARITY_UEVENT - Generated when the driver receives a parity mismatch
|
||||
* event from the gpu l3 cache. Additional information supplied is ROW,
|
||||
* event from the GPU L3 cache. Additional information supplied is ROW,
|
||||
* BANK, SUBBANK, SLICE of the affected cacheline. Userspace should keep
|
||||
* track of these events and if a specific cache-line seems to have a
|
||||
* persistent error remap it with the l3 remapping tool supplied in
|
||||
* track of these events, and if a specific cache-line seems to have a
|
||||
* persistent error, remap it with the L3 remapping tool supplied in
|
||||
* intel-gpu-tools. The value supplied with the event is always 1.
|
||||
*
|
||||
* I915_ERROR_UEVENT - Generated upon error detection, currently only via
|
||||
|
@ -693,7 +693,7 @@ typedef struct drm_i915_irq_wait {
|
|||
#define I915_PARAM_HAS_EXEC_FENCE 44
|
||||
|
||||
/* Query whether DRM_I915_GEM_EXECBUFFER2 supports the ability to capture
|
||||
* user specified bufffers for post-mortem debugging of GPU hangs. See
|
||||
* user-specified buffers for post-mortem debugging of GPU hangs. See
|
||||
* EXEC_OBJECT_CAPTURE.
|
||||
*/
|
||||
#define I915_PARAM_HAS_EXEC_CAPTURE 45
|
||||
|
@ -806,6 +806,12 @@ typedef struct drm_i915_irq_wait {
|
|||
*/
|
||||
#define I915_PARAM_PXP_STATUS 58
|
||||
|
||||
/*
|
||||
* Query if kernel allows marking a context to send a Freq hint to SLPC. This
|
||||
* will enable use of the strategies allowed by the SLPC algorithm.
|
||||
*/
|
||||
#define I915_PARAM_HAS_CONTEXT_FREQ_HINT 59
|
||||
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/**
|
||||
|
@ -1606,7 +1612,7 @@ struct drm_i915_gem_busy {
|
|||
* is accurate.
|
||||
*
|
||||
* The returned dword is split into two fields to indicate both
|
||||
* the engine classess on which the object is being read, and the
|
||||
* the engine classes on which the object is being read, and the
|
||||
* engine class on which it is currently being written (if any).
|
||||
*
|
||||
* The low word (bits 0:15) indicate if the object is being written
|
||||
|
@ -1815,7 +1821,7 @@ struct drm_i915_gem_madvise {
|
|||
__u32 handle;
|
||||
|
||||
/* Advice: either the buffer will be needed again in the near future,
|
||||
* or wont be and could be discarded under memory pressure.
|
||||
* or won't be and could be discarded under memory pressure.
|
||||
*/
|
||||
__u32 madv;
|
||||
|
||||
|
@ -2148,6 +2154,24 @@ struct drm_i915_gem_context_param {
|
|||
* -EIO: The firmware did not succeed in creating the protected context.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd
|
||||
|
||||
/*
|
||||
* I915_CONTEXT_PARAM_LOW_LATENCY:
|
||||
*
|
||||
* Mark this context as a low latency workload which requires aggressive GT
|
||||
* frequency scaling. Use I915_PARAM_HAS_CONTEXT_FREQ_HINT to check if the kernel
|
||||
* supports this per context flag.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_LOW_LATENCY 0xe
|
||||
|
||||
/*
|
||||
* I915_CONTEXT_PARAM_CONTEXT_IMAGE:
|
||||
*
|
||||
* Allows userspace to provide own context images.
|
||||
*
|
||||
* Note that this is a debug API not available on production kernel builds.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_CONTEXT_IMAGE 0xf
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/** @value: Context parameter value to be set or queried */
|
||||
|
@ -2549,6 +2573,24 @@ struct i915_context_param_engines {
|
|||
struct i915_engine_class_instance engines[N__]; \
|
||||
} __attribute__((packed)) name__
|
||||
|
||||
struct i915_gem_context_param_context_image {
|
||||
/** @engine: Engine class & instance to be configured. */
|
||||
struct i915_engine_class_instance engine;
|
||||
|
||||
/** @flags: One of the supported flags or zero. */
|
||||
__u32 flags;
|
||||
#define I915_CONTEXT_IMAGE_FLAG_ENGINE_INDEX (1u << 0)
|
||||
|
||||
/** @size: Size of the image blob pointed to by @image. */
|
||||
__u32 size;
|
||||
|
||||
/** @mbz: Must be zero. */
|
||||
__u32 mbz;
|
||||
|
||||
/** @image: Userspace memory containing the context image. */
|
||||
__u64 image;
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* struct drm_i915_gem_context_create_ext_setparam - Context parameter
|
||||
* to set or query during context creation.
|
||||
|
@ -2623,19 +2665,29 @@ struct drm_i915_reg_read {
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* struct drm_i915_reset_stats - Return global reset and other context stats
|
||||
*
|
||||
* Driver keeps few stats for each contexts and also global reset count.
|
||||
* This struct can be used to query those stats.
|
||||
*/
|
||||
struct drm_i915_reset_stats {
|
||||
/** @ctx_id: ID of the requested context */
|
||||
__u32 ctx_id;
|
||||
|
||||
/** @flags: MBZ */
|
||||
__u32 flags;
|
||||
|
||||
/* All resets since boot/module reload, for all contexts */
|
||||
/** @reset_count: All resets since boot/module reload, for all contexts */
|
||||
__u32 reset_count;
|
||||
|
||||
/* Number of batches lost when active in GPU, for this context */
|
||||
/** @batch_active: Number of batches lost when active in GPU, for this context */
|
||||
__u32 batch_active;
|
||||
|
||||
/* Number of batches lost pending for execution, for this context */
|
||||
/** @batch_pending: Number of batches lost pending for execution, for this context */
|
||||
__u32 batch_pending;
|
||||
|
||||
/** @pad: MBZ */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
|
@ -3013,6 +3065,7 @@ struct drm_i915_query_item {
|
|||
* - %DRM_I915_QUERY_MEMORY_REGIONS (see struct drm_i915_query_memory_regions)
|
||||
* - %DRM_I915_QUERY_HWCONFIG_BLOB (see `GuC HWCONFIG blob uAPI`)
|
||||
* - %DRM_I915_QUERY_GEOMETRY_SUBSLICES (see struct drm_i915_query_topology_info)
|
||||
* - %DRM_I915_QUERY_GUC_SUBMISSION_VERSION (see struct drm_i915_query_guc_submission_version)
|
||||
*/
|
||||
__u64 query_id;
|
||||
#define DRM_I915_QUERY_TOPOLOGY_INFO 1
|
||||
|
@ -3021,6 +3074,7 @@ struct drm_i915_query_item {
|
|||
#define DRM_I915_QUERY_MEMORY_REGIONS 4
|
||||
#define DRM_I915_QUERY_HWCONFIG_BLOB 5
|
||||
#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
|
||||
#define DRM_I915_QUERY_GUC_SUBMISSION_VERSION 7
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/**
|
||||
|
@ -3246,7 +3300,7 @@ struct drm_i915_query_topology_info {
|
|||
* // enough to hold our array of engines. The kernel will fill out the
|
||||
* // item.length for us, which is the number of bytes we need.
|
||||
* //
|
||||
* // Alternatively a large buffer can be allocated straight away enabling
|
||||
* // Alternatively a large buffer can be allocated straightaway enabling
|
||||
* // querying in one pass, in which case item.length should contain the
|
||||
* // length of the provided buffer.
|
||||
* err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query);
|
||||
|
@ -3256,7 +3310,7 @@ struct drm_i915_query_topology_info {
|
|||
* // Now that we allocated the required number of bytes, we call the ioctl
|
||||
* // again, this time with the data_ptr pointing to our newly allocated
|
||||
* // blob, which the kernel can then populate with info on all engines.
|
||||
* item.data_ptr = (uintptr_t)&info,
|
||||
* item.data_ptr = (uintptr_t)&info;
|
||||
*
|
||||
* err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query);
|
||||
* if (err) ...
|
||||
|
@ -3286,7 +3340,7 @@ struct drm_i915_query_topology_info {
|
|||
/**
|
||||
* struct drm_i915_engine_info
|
||||
*
|
||||
* Describes one engine and it's capabilities as known to the driver.
|
||||
* Describes one engine and its capabilities as known to the driver.
|
||||
*/
|
||||
struct drm_i915_engine_info {
|
||||
/** @engine: Engine class and instance. */
|
||||
|
@ -3566,6 +3620,20 @@ struct drm_i915_query_memory_regions {
|
|||
struct drm_i915_memory_region_info regions[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_i915_query_guc_submission_version - query GuC submission interface version
|
||||
*/
|
||||
struct drm_i915_query_guc_submission_version {
|
||||
/** @branch: Firmware branch version. */
|
||||
__u32 branch;
|
||||
/** @major: Firmware major version. */
|
||||
__u32 major;
|
||||
/** @minor: Firmware minor version. */
|
||||
__u32 minor;
|
||||
/** @patch: Firmware patch version. */
|
||||
__u32 patch;
|
||||
};
|
||||
|
||||
/**
|
||||
* DOC: GuC HWCONFIG blob uAPI
|
||||
*
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Intel Corporation
|
||||
* Copyright (C) 2020-2025 Intel Corporation
|
||||
*/
|
||||
|
||||
#ifndef __UAPI_IVPU_DRM_H__
|
||||
|
@ -12,15 +12,19 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DRM_IVPU_DRIVER_MAJOR 1
|
||||
#define DRM_IVPU_DRIVER_MINOR 0
|
||||
|
||||
#define DRM_IVPU_GET_PARAM 0x00
|
||||
#define DRM_IVPU_SET_PARAM 0x01
|
||||
#define DRM_IVPU_BO_CREATE 0x02
|
||||
#define DRM_IVPU_BO_INFO 0x03
|
||||
#define DRM_IVPU_SUBMIT 0x05
|
||||
#define DRM_IVPU_BO_WAIT 0x06
|
||||
#define DRM_IVPU_METRIC_STREAMER_START 0x07
|
||||
#define DRM_IVPU_METRIC_STREAMER_STOP 0x08
|
||||
#define DRM_IVPU_METRIC_STREAMER_GET_DATA 0x09
|
||||
#define DRM_IVPU_METRIC_STREAMER_GET_INFO 0x0a
|
||||
#define DRM_IVPU_CMDQ_CREATE 0x0b
|
||||
#define DRM_IVPU_CMDQ_DESTROY 0x0c
|
||||
#define DRM_IVPU_CMDQ_SUBMIT 0x0d
|
||||
|
||||
#define DRM_IOCTL_IVPU_GET_PARAM \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_GET_PARAM, struct drm_ivpu_param)
|
||||
|
@ -40,6 +44,31 @@ extern "C" {
|
|||
#define DRM_IOCTL_IVPU_BO_WAIT \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_BO_WAIT, struct drm_ivpu_bo_wait)
|
||||
|
||||
#define DRM_IOCTL_IVPU_METRIC_STREAMER_START \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_START, \
|
||||
struct drm_ivpu_metric_streamer_start)
|
||||
|
||||
#define DRM_IOCTL_IVPU_METRIC_STREAMER_STOP \
|
||||
DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_STOP, \
|
||||
struct drm_ivpu_metric_streamer_stop)
|
||||
|
||||
#define DRM_IOCTL_IVPU_METRIC_STREAMER_GET_DATA \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_GET_DATA, \
|
||||
struct drm_ivpu_metric_streamer_get_data)
|
||||
|
||||
#define DRM_IOCTL_IVPU_METRIC_STREAMER_GET_INFO \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_GET_INFO, \
|
||||
struct drm_ivpu_metric_streamer_get_data)
|
||||
|
||||
#define DRM_IOCTL_IVPU_CMDQ_CREATE \
|
||||
DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_CREATE, struct drm_ivpu_cmdq_create)
|
||||
|
||||
#define DRM_IOCTL_IVPU_CMDQ_DESTROY \
|
||||
DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_DESTROY, struct drm_ivpu_cmdq_destroy)
|
||||
|
||||
#define DRM_IOCTL_IVPU_CMDQ_SUBMIT \
|
||||
DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_SUBMIT, struct drm_ivpu_cmdq_submit)
|
||||
|
||||
/**
|
||||
* DOC: contexts
|
||||
*
|
||||
|
@ -53,7 +82,7 @@ extern "C" {
|
|||
#define DRM_IVPU_PARAM_CORE_CLOCK_RATE 3
|
||||
#define DRM_IVPU_PARAM_NUM_CONTEXTS 4
|
||||
#define DRM_IVPU_PARAM_CONTEXT_BASE_ADDRESS 5
|
||||
#define DRM_IVPU_PARAM_CONTEXT_PRIORITY 6
|
||||
#define DRM_IVPU_PARAM_CONTEXT_PRIORITY 6 /* Deprecated */
|
||||
#define DRM_IVPU_PARAM_CONTEXT_ID 7
|
||||
#define DRM_IVPU_PARAM_FW_API_VERSION 8
|
||||
#define DRM_IVPU_PARAM_ENGINE_HEARTBEAT 9
|
||||
|
@ -64,13 +93,39 @@ extern "C" {
|
|||
|
||||
#define DRM_IVPU_PLATFORM_TYPE_SILICON 0
|
||||
|
||||
/* Deprecated, use DRM_IVPU_JOB_PRIORITY */
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_IDLE 0
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_NORMAL 1
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_FOCUS 2
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_REALTIME 3
|
||||
|
||||
#define DRM_IVPU_CAP_METRIC_STREAMER 1
|
||||
#define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2
|
||||
#define DRM_IVPU_JOB_PRIORITY_DEFAULT 0
|
||||
#define DRM_IVPU_JOB_PRIORITY_IDLE 1
|
||||
#define DRM_IVPU_JOB_PRIORITY_NORMAL 2
|
||||
#define DRM_IVPU_JOB_PRIORITY_FOCUS 3
|
||||
#define DRM_IVPU_JOB_PRIORITY_REALTIME 4
|
||||
|
||||
/**
|
||||
* DRM_IVPU_CAP_METRIC_STREAMER
|
||||
*
|
||||
* Metric streamer support. Provides sampling of various hardware performance
|
||||
* metrics like DMA bandwidth and cache miss/hits. Can be used for profiling.
|
||||
*/
|
||||
#define DRM_IVPU_CAP_METRIC_STREAMER 1
|
||||
/**
|
||||
* DRM_IVPU_CAP_DMA_MEMORY_RANGE
|
||||
*
|
||||
* Driver has capability to allocate separate memory range
|
||||
* accessible by hardware DMA.
|
||||
*/
|
||||
#define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2
|
||||
/**
|
||||
* DRM_IVPU_CAP_MANAGE_CMDQ
|
||||
*
|
||||
* Driver supports explicit command queue operations like command queue create,
|
||||
* command queue destroy and submit job on specific command queue.
|
||||
*/
|
||||
#define DRM_IVPU_CAP_MANAGE_CMDQ 3
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_param - Get/Set VPU parameters
|
||||
|
@ -92,7 +147,7 @@ struct drm_ivpu_param {
|
|||
* platform type when executing on a simulator or emulator (read-only)
|
||||
*
|
||||
* %DRM_IVPU_PARAM_CORE_CLOCK_RATE:
|
||||
* Current PLL frequency (read-only)
|
||||
* Maximum frequency of the NPU data processing unit clock (read-only)
|
||||
*
|
||||
* %DRM_IVPU_PARAM_NUM_CONTEXTS:
|
||||
* Maximum number of simultaneously existing contexts (read-only)
|
||||
|
@ -100,10 +155,6 @@ struct drm_ivpu_param {
|
|||
* %DRM_IVPU_PARAM_CONTEXT_BASE_ADDRESS:
|
||||
* Lowest VPU virtual address available in the current context (read-only)
|
||||
*
|
||||
* %DRM_IVPU_PARAM_CONTEXT_PRIORITY:
|
||||
* Value of current context scheduling priority (read-write).
|
||||
* See DRM_IVPU_CONTEXT_PRIORITY_* for possible values.
|
||||
*
|
||||
* %DRM_IVPU_PARAM_CONTEXT_ID:
|
||||
* Current context ID, always greater than 0 (read-only)
|
||||
*
|
||||
|
@ -123,6 +174,8 @@ struct drm_ivpu_param {
|
|||
* %DRM_IVPU_PARAM_SKU:
|
||||
* VPU SKU ID (read-only)
|
||||
*
|
||||
* %DRM_IVPU_PARAM_CAPABILITIES:
|
||||
* Supported capabilities (read-only)
|
||||
*/
|
||||
__u32 param;
|
||||
|
||||
|
@ -182,7 +235,7 @@ struct drm_ivpu_bo_create {
|
|||
*
|
||||
* %DRM_IVPU_BO_UNCACHED:
|
||||
*
|
||||
* Allocated BO will not be cached on host side nor snooped on the VPU side.
|
||||
* Not supported. Use DRM_IVPU_BO_WC instead.
|
||||
*
|
||||
* %DRM_IVPU_BO_WC:
|
||||
*
|
||||
|
@ -224,7 +277,7 @@ struct drm_ivpu_bo_info {
|
|||
|
||||
/* drm_ivpu_submit engines */
|
||||
#define DRM_IVPU_ENGINE_COMPUTE 0
|
||||
#define DRM_IVPU_ENGINE_COPY 1
|
||||
#define DRM_IVPU_ENGINE_COPY 1 /* Deprecated */
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_submit - Submit commands to the VPU
|
||||
|
@ -255,10 +308,6 @@ struct drm_ivpu_submit {
|
|||
* %DRM_IVPU_ENGINE_COMPUTE:
|
||||
*
|
||||
* Performs Deep Learning Neural Compute Inference Operations
|
||||
*
|
||||
* %DRM_IVPU_ENGINE_COPY:
|
||||
*
|
||||
* Performs memory copy operations to/from system memory allocated for VPU
|
||||
*/
|
||||
__u32 engine;
|
||||
|
||||
|
@ -272,10 +321,61 @@ struct drm_ivpu_submit {
|
|||
* to be executed. The offset has to be 8-byte aligned.
|
||||
*/
|
||||
__u32 commands_offset;
|
||||
|
||||
/**
|
||||
* @priority:
|
||||
*
|
||||
* Priority to be set for related job command queue, can be one of the following:
|
||||
* %DRM_IVPU_JOB_PRIORITY_DEFAULT
|
||||
* %DRM_IVPU_JOB_PRIORITY_IDLE
|
||||
* %DRM_IVPU_JOB_PRIORITY_NORMAL
|
||||
* %DRM_IVPU_JOB_PRIORITY_FOCUS
|
||||
* %DRM_IVPU_JOB_PRIORITY_REALTIME
|
||||
*/
|
||||
__u32 priority;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_cmdq_submit - Submit commands to the VPU using explicit command queue
|
||||
*
|
||||
* Execute a single command buffer on a given command queue.
|
||||
* Handles to all referenced buffer objects have to be provided in @buffers_ptr.
|
||||
*
|
||||
* User space may wait on job completion using %DRM_IVPU_BO_WAIT ioctl.
|
||||
*/
|
||||
struct drm_ivpu_cmdq_submit {
|
||||
/**
|
||||
* @buffers_ptr:
|
||||
*
|
||||
* A pointer to an u32 array of GEM handles of the BOs required for this job.
|
||||
* The number of elements in the array must be equal to the value given by @buffer_count.
|
||||
*
|
||||
* The first BO is the command buffer. The rest of array has to contain all
|
||||
* BOs referenced from the command buffer.
|
||||
*/
|
||||
__u64 buffers_ptr;
|
||||
|
||||
/** @buffer_count: Number of elements in the @buffers_ptr */
|
||||
__u32 buffer_count;
|
||||
|
||||
/** @cmdq_id: ID for the command queue where job will be submitted */
|
||||
__u32 cmdq_id;
|
||||
|
||||
/** @flags: Reserved for future use - must be zero */
|
||||
__u32 flags;
|
||||
|
||||
/**
|
||||
* @commands_offset:
|
||||
*
|
||||
* Offset inside the first buffer in @buffers_ptr containing commands
|
||||
* to be executed. The offset has to be 8-byte aligned.
|
||||
*/
|
||||
__u32 commands_offset;
|
||||
};
|
||||
|
||||
/* drm_ivpu_bo_wait job status codes */
|
||||
#define DRM_IVPU_JOB_STATUS_SUCCESS 0
|
||||
#define DRM_IVPU_JOB_STATUS_ABORTED 256
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_bo_wait - Wait for BO to become inactive
|
||||
|
@ -306,6 +406,80 @@ struct drm_ivpu_bo_wait {
|
|||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_metric_streamer_start - Start collecting metric data
|
||||
*/
|
||||
struct drm_ivpu_metric_streamer_start {
|
||||
/** @metric_group_mask: Indicates metric streamer instance */
|
||||
__u64 metric_group_mask;
|
||||
/** @sampling_period_ns: Sampling period in nanoseconds */
|
||||
__u64 sampling_period_ns;
|
||||
/**
|
||||
* @read_period_samples:
|
||||
*
|
||||
* Number of samples after which user space will try to read the data.
|
||||
* Reading the data after significantly longer period may cause data loss.
|
||||
*/
|
||||
__u32 read_period_samples;
|
||||
/** @sample_size: Returned size of a single sample in bytes */
|
||||
__u32 sample_size;
|
||||
/** @max_data_size: Returned max @data_size from %DRM_IOCTL_IVPU_METRIC_STREAMER_GET_DATA */
|
||||
__u32 max_data_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_metric_streamer_get_data - Copy collected metric data
|
||||
*/
|
||||
struct drm_ivpu_metric_streamer_get_data {
|
||||
/** @metric_group_mask: Indicates metric streamer instance */
|
||||
__u64 metric_group_mask;
|
||||
/** @buffer_ptr: A pointer to a destination for the copied data */
|
||||
__u64 buffer_ptr;
|
||||
/** @buffer_size: Size of the destination buffer */
|
||||
__u64 buffer_size;
|
||||
/**
|
||||
* @data_size: Returned size of copied metric data
|
||||
*
|
||||
* If the @buffer_size is zero, returns the amount of data ready to be copied.
|
||||
*/
|
||||
__u64 data_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_cmdq_create - Create command queue for job submission
|
||||
*/
|
||||
struct drm_ivpu_cmdq_create {
|
||||
/** @cmdq_id: Returned ID of created command queue */
|
||||
__u32 cmdq_id;
|
||||
/**
|
||||
* @priority:
|
||||
*
|
||||
* Priority to be set for related job command queue, can be one of the following:
|
||||
* %DRM_IVPU_JOB_PRIORITY_DEFAULT
|
||||
* %DRM_IVPU_JOB_PRIORITY_IDLE
|
||||
* %DRM_IVPU_JOB_PRIORITY_NORMAL
|
||||
* %DRM_IVPU_JOB_PRIORITY_FOCUS
|
||||
* %DRM_IVPU_JOB_PRIORITY_REALTIME
|
||||
*/
|
||||
__u32 priority;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_cmdq_destroy - Destroy a command queue
|
||||
*/
|
||||
struct drm_ivpu_cmdq_destroy {
|
||||
/** @cmdq_id: ID of command queue to destroy */
|
||||
__u32 cmdq_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_metric_streamer_stop - Stop collecting metric data
|
||||
*/
|
||||
struct drm_ivpu_metric_streamer_stop {
|
||||
/** @metric_group_mask: Indicates metric streamer instance */
|
||||
__u64 metric_group_mask;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -86,6 +86,11 @@ struct drm_msm_timespec {
|
|||
#define MSM_PARAM_CMDLINE 0x0d /* WO: override for task cmdline */
|
||||
#define MSM_PARAM_VA_START 0x0e /* RO: start of valid GPU iova range */
|
||||
#define MSM_PARAM_VA_SIZE 0x0f /* RO: size of valid GPU iova range (bytes) */
|
||||
#define MSM_PARAM_HIGHEST_BANK_BIT 0x10 /* RO */
|
||||
#define MSM_PARAM_RAYTRACING 0x11 /* RO */
|
||||
#define MSM_PARAM_UBWC_SWIZZLE 0x12 /* RO */
|
||||
#define MSM_PARAM_MACROTILE_MODE 0x13 /* RO */
|
||||
#define MSM_PARAM_UCHE_TRAP_BASE 0x14 /* RO */
|
||||
|
||||
/* For backwards compat. The original support for preemption was based on
|
||||
* a single ring per priority level so # of priority levels equals the #
|
||||
|
@ -139,6 +144,8 @@ struct drm_msm_gem_new {
|
|||
#define MSM_INFO_GET_NAME 0x03 /* get debug name, returned by pointer */
|
||||
#define MSM_INFO_SET_IOVA 0x04 /* set the iova, passed by value */
|
||||
#define MSM_INFO_GET_FLAGS 0x05 /* get the MSM_BO_x flags */
|
||||
#define MSM_INFO_SET_METADATA 0x06 /* set userspace metadata */
|
||||
#define MSM_INFO_GET_METADATA 0x07 /* get userspace metadata */
|
||||
|
||||
struct drm_msm_gem_info {
|
||||
__u32 handle; /* in */
|
||||
|
@ -341,7 +348,10 @@ struct drm_msm_gem_madvise {
|
|||
* backwards compatibility as a "default" submitqueue
|
||||
*/
|
||||
|
||||
#define MSM_SUBMITQUEUE_FLAGS (0)
|
||||
#define MSM_SUBMITQUEUE_ALLOW_PREEMPT 0x00000001
|
||||
#define MSM_SUBMITQUEUE_FLAGS ( \
|
||||
MSM_SUBMITQUEUE_ALLOW_PREEMPT | \
|
||||
0)
|
||||
|
||||
/*
|
||||
* The submitqueue priority should be between 0 and MSM_PARAM_PRIORITIES-1,
|
||||
|
|
|
@ -54,11 +54,42 @@ extern "C" {
|
|||
*/
|
||||
#define NOUVEAU_GETPARAM_EXEC_PUSH_MAX 17
|
||||
|
||||
/*
|
||||
* NOUVEAU_GETPARAM_VRAM_BAR_SIZE - query bar size
|
||||
*
|
||||
* Query the VRAM BAR size.
|
||||
*/
|
||||
#define NOUVEAU_GETPARAM_VRAM_BAR_SIZE 18
|
||||
|
||||
/*
|
||||
* NOUVEAU_GETPARAM_VRAM_USED
|
||||
*
|
||||
* Get remaining VRAM size.
|
||||
*/
|
||||
#define NOUVEAU_GETPARAM_VRAM_USED 19
|
||||
|
||||
/*
|
||||
* NOUVEAU_GETPARAM_HAS_VMA_TILEMODE
|
||||
*
|
||||
* Query whether tile mode and PTE kind are accepted with VM allocs or not.
|
||||
*/
|
||||
#define NOUVEAU_GETPARAM_HAS_VMA_TILEMODE 20
|
||||
|
||||
struct drm_nouveau_getparam {
|
||||
__u64 param;
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
/*
|
||||
* Those are used to support selecting the main engine used on Kepler.
|
||||
* This goes into drm_nouveau_channel_alloc::tt_ctxdma_handle
|
||||
*/
|
||||
#define NOUVEAU_FIFO_ENGINE_GR 0x01
|
||||
#define NOUVEAU_FIFO_ENGINE_VP 0x02
|
||||
#define NOUVEAU_FIFO_ENGINE_PPP 0x04
|
||||
#define NOUVEAU_FIFO_ENGINE_BSP 0x08
|
||||
#define NOUVEAU_FIFO_ENGINE_CE 0x30
|
||||
|
||||
struct drm_nouveau_channel_alloc {
|
||||
__u32 fb_ctxdma_handle;
|
||||
__u32 tt_ctxdma_handle;
|
||||
|
@ -81,6 +112,18 @@ struct drm_nouveau_channel_free {
|
|||
__s32 channel;
|
||||
};
|
||||
|
||||
struct drm_nouveau_notifierobj_alloc {
|
||||
__u32 channel;
|
||||
__u32 handle;
|
||||
__u32 size;
|
||||
__u32 offset;
|
||||
};
|
||||
|
||||
struct drm_nouveau_gpuobj_free {
|
||||
__s32 channel;
|
||||
__u32 handle;
|
||||
};
|
||||
|
||||
#define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
|
||||
#define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
|
||||
#define NOUVEAU_GEM_DOMAIN_GART (1 << 2)
|
||||
|
@ -238,34 +281,32 @@ struct drm_nouveau_vm_init {
|
|||
struct drm_nouveau_vm_bind_op {
|
||||
/**
|
||||
* @op: the operation type
|
||||
*
|
||||
* Supported values:
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_OP_MAP - Map a GEM object to the GPU's VA
|
||||
* space. Optionally, the &DRM_NOUVEAU_VM_BIND_SPARSE flag can be
|
||||
* passed to instruct the kernel to create sparse mappings for the
|
||||
* given range.
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_OP_UNMAP - Unmap an existing mapping in the
|
||||
* GPU's VA space. If the region the mapping is located in is a
|
||||
* sparse region, new sparse mappings are created where the unmapped
|
||||
* (memory backed) mapping was mapped previously. To remove a sparse
|
||||
* region the &DRM_NOUVEAU_VM_BIND_SPARSE must be set.
|
||||
*/
|
||||
__u32 op;
|
||||
/**
|
||||
* @DRM_NOUVEAU_VM_BIND_OP_MAP:
|
||||
*
|
||||
* Map a GEM object to the GPU's VA space. Optionally, the
|
||||
* &DRM_NOUVEAU_VM_BIND_SPARSE flag can be passed to instruct the kernel to
|
||||
* create sparse mappings for the given range.
|
||||
*/
|
||||
#define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0
|
||||
/**
|
||||
* @DRM_NOUVEAU_VM_BIND_OP_UNMAP:
|
||||
*
|
||||
* Unmap an existing mapping in the GPU's VA space. If the region the mapping
|
||||
* is located in is a sparse region, new sparse mappings are created where the
|
||||
* unmapped (memory backed) mapping was mapped previously. To remove a sparse
|
||||
* region the &DRM_NOUVEAU_VM_BIND_SPARSE must be set.
|
||||
*/
|
||||
#define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1
|
||||
/**
|
||||
* @flags: the flags for a &drm_nouveau_vm_bind_op
|
||||
*
|
||||
* Supported values:
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_SPARSE - Indicates that an allocated VA
|
||||
* space region should be sparse.
|
||||
*/
|
||||
__u32 flags;
|
||||
/**
|
||||
* @DRM_NOUVEAU_VM_BIND_SPARSE:
|
||||
*
|
||||
* Indicates that an allocated VA space region should be sparse.
|
||||
*/
|
||||
#define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8)
|
||||
/**
|
||||
* @handle: the handle of the DRM GEM object to map
|
||||
|
@ -301,17 +342,17 @@ struct drm_nouveau_vm_bind {
|
|||
__u32 op_count;
|
||||
/**
|
||||
* @flags: the flags for a &drm_nouveau_vm_bind ioctl
|
||||
*
|
||||
* Supported values:
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_RUN_ASYNC - Indicates that the given VM_BIND
|
||||
* operation should be executed asynchronously by the kernel.
|
||||
*
|
||||
* If this flag is not supplied the kernel executes the associated
|
||||
* operations synchronously and doesn't accept any &drm_nouveau_sync
|
||||
* objects.
|
||||
*/
|
||||
__u32 flags;
|
||||
/**
|
||||
* @DRM_NOUVEAU_VM_BIND_RUN_ASYNC:
|
||||
*
|
||||
* Indicates that the given VM_BIND operation should be executed asynchronously
|
||||
* by the kernel.
|
||||
*
|
||||
* If this flag is not supplied the kernel executes the associated operations
|
||||
* synchronously and doesn't accept any &drm_nouveau_sync objects.
|
||||
*/
|
||||
#define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1
|
||||
/**
|
||||
* @wait_count: the number of wait &drm_nouveau_syncs
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
#ifndef __NOVA_DRM_H__
|
||||
#define __NOVA_DRM_H__
|
||||
|
||||
#include "drm.h"
|
||||
|
||||
/* DISCLAIMER: Do not use, this is not a stable uAPI.
|
||||
*
|
||||
* This uAPI serves only testing purposes as long as this driver is still in
|
||||
* development. It is required to implement and test infrastructure which is
|
||||
* upstreamed in the context of this driver. See also [1].
|
||||
*
|
||||
* [1] https://lore.kernel.org/dri-devel/Zfsj0_tb-0-tNrJy@cassiopeiae/T/#u
|
||||
*/
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* NOVA_GETPARAM_VRAM_BAR_SIZE
|
||||
*
|
||||
* Query the VRAM BAR size in bytes.
|
||||
*/
|
||||
#define NOVA_GETPARAM_VRAM_BAR_SIZE 0x1
|
||||
|
||||
/**
|
||||
* struct drm_nova_getparam - query GPU and driver metadata
|
||||
*/
|
||||
struct drm_nova_getparam {
|
||||
/**
|
||||
* @param: The identifier of the parameter to query.
|
||||
*/
|
||||
__u64 param;
|
||||
|
||||
/**
|
||||
* @value: The value for the specified parameter.
|
||||
*/
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_nova_gem_create - create a new DRM GEM object
|
||||
*/
|
||||
struct drm_nova_gem_create {
|
||||
/**
|
||||
* @handle: The handle of the new DRM GEM object.
|
||||
*/
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @pad: 32 bit padding, should be 0.
|
||||
*/
|
||||
__u32 pad;
|
||||
|
||||
/**
|
||||
* @size: The size of the new DRM GEM object.
|
||||
*/
|
||||
__u64 size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_nova_gem_info - query DRM GEM object metadata
|
||||
*/
|
||||
struct drm_nova_gem_info {
|
||||
/**
|
||||
* @handle: The handle of the DRM GEM object to query.
|
||||
*/
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @pad: 32 bit padding, should be 0.
|
||||
*/
|
||||
__u32 pad;
|
||||
|
||||
/**
|
||||
* @size: The size of the DRM GEM obejct.
|
||||
*/
|
||||
__u64 size;
|
||||
};
|
||||
|
||||
#define DRM_NOVA_GETPARAM 0x00
|
||||
#define DRM_NOVA_GEM_CREATE 0x01
|
||||
#define DRM_NOVA_GEM_INFO 0x02
|
||||
|
||||
/* Note: this is an enum so that it can be resolved by Rust bindgen. */
|
||||
enum {
|
||||
DRM_IOCTL_NOVA_GETPARAM = DRM_IOWR(DRM_COMMAND_BASE + DRM_NOVA_GETPARAM,
|
||||
struct drm_nova_getparam),
|
||||
DRM_IOCTL_NOVA_GEM_CREATE = DRM_IOWR(DRM_COMMAND_BASE + DRM_NOVA_GEM_CREATE,
|
||||
struct drm_nova_gem_create),
|
||||
DRM_IOCTL_NOVA_GEM_INFO = DRM_IOWR(DRM_COMMAND_BASE + DRM_NOVA_GEM_INFO,
|
||||
struct drm_nova_gem_info),
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NOVA_DRM_H__ */
|
|
@ -40,6 +40,7 @@ extern "C" {
|
|||
#define DRM_IOCTL_PANFROST_PERFCNT_DUMP DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_DUMP, struct drm_panfrost_perfcnt_dump)
|
||||
|
||||
#define PANFROST_JD_REQ_FS (1 << 0)
|
||||
#define PANFROST_JD_REQ_CYCLE_COUNT (1 << 1)
|
||||
/**
|
||||
* struct drm_panfrost_submit - ioctl argument for submitting commands to the 3D
|
||||
* engine.
|
||||
|
@ -172,6 +173,8 @@ enum drm_panfrost_param {
|
|||
DRM_PANFROST_PARAM_NR_CORE_GROUPS,
|
||||
DRM_PANFROST_PARAM_THREAD_TLS_ALLOC,
|
||||
DRM_PANFROST_PARAM_AFBC_FEATURES,
|
||||
DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP,
|
||||
DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY,
|
||||
};
|
||||
|
||||
struct drm_panfrost_get_param {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -64,7 +64,7 @@ struct qaic_manage_trans_hdr {
|
|||
/**
|
||||
* struct qaic_manage_trans_passthrough - Defines a passthrough transaction.
|
||||
* @hdr: In. Header to identify this transaction.
|
||||
* @data: In. Payload of this ransaction. Opaque to the driver. Userspace must
|
||||
* @data: In. Payload of this transaction. Opaque to the driver. Userspace must
|
||||
* encode in little endian and align/pad to 64-bit.
|
||||
*/
|
||||
struct qaic_manage_trans_passthrough {
|
||||
|
@ -242,18 +242,7 @@ struct qaic_attach_slice_entry {
|
|||
* @dbc_id: In. Associate the sliced BO with this DBC.
|
||||
* @handle: In. GEM handle of the BO to slice.
|
||||
* @dir: In. Direction of data flow. 1 = DMA_TO_DEVICE, 2 = DMA_FROM_DEVICE
|
||||
* @size: In. Total length of the BO.
|
||||
* If BO is imported (DMABUF/PRIME) then this size
|
||||
* should not exceed the size of DMABUF provided.
|
||||
* If BO is allocated using DRM_IOCTL_QAIC_CREATE_BO
|
||||
* then this size should be exactly same as the size
|
||||
* provided during DRM_IOCTL_QAIC_CREATE_BO.
|
||||
* @dev_addr: In. Device address this slice pushes to or pulls from.
|
||||
* @db_addr: In. Address of the doorbell to ring.
|
||||
* @db_data: In. Data to write to the doorbell.
|
||||
* @db_len: In. Size of the doorbell data in bits - 32, 16, or 8. 0 is for
|
||||
* inactive doorbells.
|
||||
* @offset: In. Start of this slice as an offset from the start of the BO.
|
||||
* @size: Deprecated. This value is ignored and size of @handle is used instead.
|
||||
*/
|
||||
struct qaic_attach_slice_hdr {
|
||||
__u32 count;
|
||||
|
@ -287,8 +276,9 @@ struct qaic_execute_entry {
|
|||
* struct qaic_partial_execute_entry - Defines a BO to resize and submit.
|
||||
* @handle: In. GEM handle of the BO to commit to the device.
|
||||
* @dir: In. Direction of data. 1 = to device, 2 = from device.
|
||||
* @resize: In. New size of the BO. Must be <= the original BO size. 0 is
|
||||
* short for no resize.
|
||||
* @resize: In. New size of the BO. Must be <= the original BO size.
|
||||
* @resize as 0 would be interpreted as no DMA transfer is
|
||||
* involved.
|
||||
*/
|
||||
struct qaic_partial_execute_entry {
|
||||
__u32 handle;
|
||||
|
@ -372,6 +362,16 @@ struct qaic_perf_stats_entry {
|
|||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_detach_slice - Detaches slicing configuration from BO.
|
||||
* @handle: In. GEM handle of the BO to detach slicing configuration.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_detach_slice {
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#define DRM_QAIC_MANAGE 0x00
|
||||
#define DRM_QAIC_CREATE_BO 0x01
|
||||
#define DRM_QAIC_MMAP_BO 0x02
|
||||
|
@ -380,6 +380,7 @@ struct qaic_perf_stats_entry {
|
|||
#define DRM_QAIC_PARTIAL_EXECUTE_BO 0x05
|
||||
#define DRM_QAIC_WAIT_BO 0x06
|
||||
#define DRM_QAIC_PERF_STATS_BO 0x07
|
||||
#define DRM_QAIC_DETACH_SLICE_BO 0x08
|
||||
|
||||
#define DRM_IOCTL_QAIC_MANAGE DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_MANAGE, struct qaic_manage_msg)
|
||||
#define DRM_IOCTL_QAIC_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_CREATE_BO, struct qaic_create_bo)
|
||||
|
@ -389,6 +390,7 @@ struct qaic_perf_stats_entry {
|
|||
#define DRM_IOCTL_QAIC_PARTIAL_EXECUTE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_PARTIAL_EXECUTE_BO, struct qaic_execute)
|
||||
#define DRM_IOCTL_QAIC_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_WAIT_BO, struct qaic_wait)
|
||||
#define DRM_IOCTL_QAIC_PERF_STATS_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_PERF_STATS_BO, struct qaic_perf_stats)
|
||||
#define DRM_IOCTL_QAIC_DETACH_SLICE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_DETACH_SLICE_BO, struct qaic_detach_slice)
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
@ -41,6 +41,9 @@ extern "C" {
|
|||
#define DRM_V3D_PERFMON_CREATE 0x08
|
||||
#define DRM_V3D_PERFMON_DESTROY 0x09
|
||||
#define DRM_V3D_PERFMON_GET_VALUES 0x0a
|
||||
#define DRM_V3D_SUBMIT_CPU 0x0b
|
||||
#define DRM_V3D_PERFMON_GET_COUNTER 0x0c
|
||||
#define DRM_V3D_PERFMON_SET_GLOBAL 0x0d
|
||||
|
||||
#define DRM_IOCTL_V3D_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CL, struct drm_v3d_submit_cl)
|
||||
#define DRM_IOCTL_V3D_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_WAIT_BO, struct drm_v3d_wait_bo)
|
||||
|
@ -56,6 +59,11 @@ extern "C" {
|
|||
struct drm_v3d_perfmon_destroy)
|
||||
#define DRM_IOCTL_V3D_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_VALUES, \
|
||||
struct drm_v3d_perfmon_get_values)
|
||||
#define DRM_IOCTL_V3D_SUBMIT_CPU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CPU, struct drm_v3d_submit_cpu)
|
||||
#define DRM_IOCTL_V3D_PERFMON_GET_COUNTER DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_COUNTER, \
|
||||
struct drm_v3d_perfmon_get_counter)
|
||||
#define DRM_IOCTL_V3D_PERFMON_SET_GLOBAL DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_PERFMON_SET_GLOBAL, \
|
||||
struct drm_v3d_perfmon_set_global)
|
||||
|
||||
#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
|
||||
#define DRM_V3D_SUBMIT_EXTENSION 0x02
|
||||
|
@ -69,7 +77,13 @@ extern "C" {
|
|||
struct drm_v3d_extension {
|
||||
__u64 next;
|
||||
__u32 id;
|
||||
#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
|
||||
#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
|
||||
#define DRM_V3D_EXT_ID_CPU_INDIRECT_CSD 0x02
|
||||
#define DRM_V3D_EXT_ID_CPU_TIMESTAMP_QUERY 0x03
|
||||
#define DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY 0x04
|
||||
#define DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY 0x05
|
||||
#define DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY 0x06
|
||||
#define DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY 0x07
|
||||
__u32 flags; /* mbz */
|
||||
};
|
||||
|
||||
|
@ -93,6 +107,7 @@ enum v3d_queue {
|
|||
V3D_TFU,
|
||||
V3D_CSD,
|
||||
V3D_CACHE_CLEAN,
|
||||
V3D_CPU,
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -276,6 +291,9 @@ enum drm_v3d_param {
|
|||
DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
|
||||
DRM_V3D_PARAM_SUPPORTS_PERFMON,
|
||||
DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT,
|
||||
DRM_V3D_PARAM_SUPPORTS_CPU_QUEUE,
|
||||
DRM_V3D_PARAM_MAX_PERF_COUNTERS,
|
||||
DRM_V3D_PARAM_SUPPORTS_SUPER_PAGES,
|
||||
};
|
||||
|
||||
struct drm_v3d_get_param {
|
||||
|
@ -319,6 +337,11 @@ struct drm_v3d_submit_tfu {
|
|||
|
||||
/* Pointer to an array of ioctl extensions*/
|
||||
__u64 extensions;
|
||||
|
||||
struct {
|
||||
__u32 ioc;
|
||||
__u32 pad;
|
||||
} v71;
|
||||
};
|
||||
|
||||
/* Submits a compute shader for dispatch. This job will block on any
|
||||
|
@ -356,6 +379,244 @@ struct drm_v3d_submit_csd {
|
|||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_indirect_csd - ioctl extension for the CPU job to create an
|
||||
* indirect CSD
|
||||
*
|
||||
* When an extension of DRM_V3D_EXT_ID_CPU_INDIRECT_CSD id is defined, it
|
||||
* points to this extension to define a indirect CSD submission. It creates a
|
||||
* CPU job linked to a CSD job. The CPU job waits for the indirect CSD
|
||||
* dependencies and, once they are signaled, it updates the CSD job config
|
||||
* before allowing the CSD job execution.
|
||||
*/
|
||||
struct drm_v3d_indirect_csd {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Indirect CSD */
|
||||
struct drm_v3d_submit_csd submit;
|
||||
|
||||
/* Handle of the indirect BO, that should be also attached to the
|
||||
* indirect CSD.
|
||||
*/
|
||||
__u32 indirect;
|
||||
|
||||
/* Offset within the BO where the workgroup counts are stored */
|
||||
__u32 offset;
|
||||
|
||||
/* Workgroups size */
|
||||
__u32 wg_size;
|
||||
|
||||
/* Indices of the uniforms with the workgroup dispatch counts
|
||||
* in the uniform stream. If the uniform rewrite is not needed,
|
||||
* the offset must be 0xffffffff.
|
||||
*/
|
||||
__u32 wg_uniform_offsets[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_timestamp_query - ioctl extension for the CPU job to calculate
|
||||
* a timestamp query
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_TIMESTAMP_QUERY is defined, it points to
|
||||
* this extension to define a timestamp query submission. This CPU job will
|
||||
* calculate the timestamp query and update the query value within the
|
||||
* timestamp BO. Moreover, it will signal the timestamp syncobj to indicate
|
||||
* query availability.
|
||||
*/
|
||||
struct drm_v3d_timestamp_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Array of queries' offsets within the timestamp BO for their value */
|
||||
__u64 offsets;
|
||||
|
||||
/* Array of timestamp's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* mbz */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_reset_timestamp_query - ioctl extension for the CPU job to
|
||||
* reset timestamp queries
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY is defined, it
|
||||
* points to this extension to define a reset timestamp submission. This CPU
|
||||
* job will reset the timestamp queries based on value offset of the first
|
||||
* query. Moreover, it will reset the timestamp syncobj to reset query
|
||||
* availability.
|
||||
*/
|
||||
struct drm_v3d_reset_timestamp_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Array of timestamp's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Offset of the first query within the timestamp BO for its value */
|
||||
__u32 offset;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_copy_timestamp_query - ioctl extension for the CPU job to copy
|
||||
* query results to a buffer
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY is defined, it
|
||||
* points to this extension to define a copy timestamp query submission. This
|
||||
* CPU job will copy the timestamp queries results to a BO with the offset
|
||||
* and stride defined in the extension.
|
||||
*/
|
||||
struct drm_v3d_copy_timestamp_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Define if should write to buffer using 64 or 32 bits */
|
||||
__u8 do_64bit;
|
||||
|
||||
/* Define if it can write to buffer even if the query is not available */
|
||||
__u8 do_partial;
|
||||
|
||||
/* Define if it should write availability bit to buffer */
|
||||
__u8 availability_bit;
|
||||
|
||||
/* mbz */
|
||||
__u8 pad;
|
||||
|
||||
/* Offset of the buffer in the BO */
|
||||
__u32 offset;
|
||||
|
||||
/* Stride of the buffer in the BO */
|
||||
__u32 stride;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* Array of queries' offsets within the timestamp BO for their value */
|
||||
__u64 offsets;
|
||||
|
||||
/* Array of timestamp's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_reset_performance_query - ioctl extension for the CPU job to
|
||||
* reset performance queries
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY is defined, it
|
||||
* points to this extension to define a reset performance submission. This CPU
|
||||
* job will reset the performance queries by resetting the values of the
|
||||
* performance monitors. Moreover, it will reset the syncobj to reset query
|
||||
* availability.
|
||||
*/
|
||||
struct drm_v3d_reset_performance_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Array of performance queries's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* Number of performance monitors */
|
||||
__u32 nperfmons;
|
||||
|
||||
/* Array of u64 user-pointers that point to an array of kperfmon_ids */
|
||||
__u64 kperfmon_ids;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_copy_performance_query - ioctl extension for the CPU job to copy
|
||||
* performance query results to a buffer
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY is defined, it
|
||||
* points to this extension to define a copy performance query submission. This
|
||||
* CPU job will copy the performance queries results to a BO with the offset
|
||||
* and stride defined in the extension.
|
||||
*/
|
||||
struct drm_v3d_copy_performance_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Define if should write to buffer using 64 or 32 bits */
|
||||
__u8 do_64bit;
|
||||
|
||||
/* Define if it can write to buffer even if the query is not available */
|
||||
__u8 do_partial;
|
||||
|
||||
/* Define if it should write availability bit to buffer */
|
||||
__u8 availability_bit;
|
||||
|
||||
/* mbz */
|
||||
__u8 pad;
|
||||
|
||||
/* Offset of the buffer in the BO */
|
||||
__u32 offset;
|
||||
|
||||
/* Stride of the buffer in the BO */
|
||||
__u32 stride;
|
||||
|
||||
/* Number of performance monitors */
|
||||
__u32 nperfmons;
|
||||
|
||||
/* Number of performance counters related to this query pool */
|
||||
__u32 ncounters;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* Array of performance queries's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Array of u64 user-pointers that point to an array of kperfmon_ids */
|
||||
__u64 kperfmon_ids;
|
||||
};
|
||||
|
||||
struct drm_v3d_submit_cpu {
|
||||
/* Pointer to a u32 array of the BOs that are referenced by the job.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_INDIRECT_CSD, it must contain only one BO,
|
||||
* that contains the workgroup counts.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_TIMESTAMP_QUERY, it must contain only one BO,
|
||||
* that will contain the timestamp.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY, it must contain only
|
||||
* one BO, that contains the timestamp.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY, it must contain two
|
||||
* BOs. The first is the BO where the timestamp queries will be written
|
||||
* to. The second is the BO that contains the timestamp.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY, it must contain no
|
||||
* BOs.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY, it must contain one
|
||||
* BO, where the performance queries will be written.
|
||||
*/
|
||||
__u64 bo_handles;
|
||||
|
||||
/* Number of BO handles passed in (size is that times 4). */
|
||||
__u32 bo_handle_count;
|
||||
|
||||
__u32 flags;
|
||||
|
||||
/* Pointer to an array of ioctl extensions*/
|
||||
__u64 extensions;
|
||||
};
|
||||
|
||||
/* The performance counters index represented by this enum are deprecated and
|
||||
* must no longer be used. These counters are only valid for V3D 4.2.
|
||||
*
|
||||
* In order to check for performance counter information,
|
||||
* use DRM_IOCTL_V3D_PERFMON_GET_COUNTER.
|
||||
*
|
||||
* Don't use V3D_PERFCNT_NUM to retrieve the maximum number of performance
|
||||
* counters. You should use DRM_IOCTL_V3D_GET_PARAM with the following
|
||||
* parameter: DRM_V3D_PARAM_MAX_PERF_COUNTERS.
|
||||
*/
|
||||
enum {
|
||||
V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS,
|
||||
V3D_PERFCNT_FEP_VALID_PRIMS,
|
||||
|
@ -474,6 +735,55 @@ struct drm_v3d_perfmon_get_values {
|
|||
__u64 values_ptr;
|
||||
};
|
||||
|
||||
#define DRM_V3D_PERFCNT_MAX_NAME 64
|
||||
#define DRM_V3D_PERFCNT_MAX_CATEGORY 32
|
||||
#define DRM_V3D_PERFCNT_MAX_DESCRIPTION 256
|
||||
|
||||
/**
|
||||
* struct drm_v3d_perfmon_get_counter - ioctl to get the description of a
|
||||
* performance counter
|
||||
*
|
||||
* As userspace needs to retrieve information about the performance counters
|
||||
* available, this IOCTL allows users to get information about a performance
|
||||
* counter (name, category and description).
|
||||
*/
|
||||
struct drm_v3d_perfmon_get_counter {
|
||||
/*
|
||||
* Counter ID
|
||||
*
|
||||
* Must be smaller than the maximum number of performance counters, which
|
||||
* can be retrieve through DRM_V3D_PARAM_MAX_PERF_COUNTERS.
|
||||
*/
|
||||
__u8 counter;
|
||||
|
||||
/* Name of the counter */
|
||||
__u8 name[DRM_V3D_PERFCNT_MAX_NAME];
|
||||
|
||||
/* Category of the counter */
|
||||
__u8 category[DRM_V3D_PERFCNT_MAX_CATEGORY];
|
||||
|
||||
/* Description of the counter */
|
||||
__u8 description[DRM_V3D_PERFCNT_MAX_DESCRIPTION];
|
||||
|
||||
/* mbz */
|
||||
__u8 reserved[7];
|
||||
};
|
||||
|
||||
#define DRM_V3D_PERFMON_CLEAR_GLOBAL 0x0001
|
||||
|
||||
/**
|
||||
* struct drm_v3d_perfmon_set_global - ioctl to define a global performance
|
||||
* monitor
|
||||
*
|
||||
* The global performance monitor will be used for all jobs. If a global
|
||||
* performance monitor is defined, jobs with a self-defined performance
|
||||
* monitor won't be allowed.
|
||||
*/
|
||||
struct drm_v3d_perfmon_set_global {
|
||||
__u32 flags;
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -97,6 +97,7 @@ struct drm_virtgpu_execbuffer {
|
|||
#define VIRTGPU_PARAM_CROSS_DEVICE 5 /* Cross virtio-device resource sharing */
|
||||
#define VIRTGPU_PARAM_CONTEXT_INIT 6 /* DRM_VIRTGPU_CONTEXT_INIT */
|
||||
#define VIRTGPU_PARAM_SUPPORTED_CAPSET_IDs 7 /* Bitmask of supported capability set ids */
|
||||
#define VIRTGPU_PARAM_EXPLICIT_DEBUG_NAME 8 /* Ability to set debug name from userspace */
|
||||
|
||||
struct drm_virtgpu_getparam {
|
||||
__u64 param;
|
||||
|
@ -162,6 +163,12 @@ struct drm_virtgpu_3d_wait {
|
|||
__u32 flags;
|
||||
};
|
||||
|
||||
#define VIRTGPU_DRM_CAPSET_VIRGL 1
|
||||
#define VIRTGPU_DRM_CAPSET_VIRGL2 2
|
||||
#define VIRTGPU_DRM_CAPSET_GFXSTREAM_VULKAN 3
|
||||
#define VIRTGPU_DRM_CAPSET_VENUS 4
|
||||
#define VIRTGPU_DRM_CAPSET_CROSS_DOMAIN 5
|
||||
#define VIRTGPU_DRM_CAPSET_DRM 6
|
||||
struct drm_virtgpu_get_caps {
|
||||
__u32 cap_set_id;
|
||||
__u32 cap_set_ver;
|
||||
|
@ -198,6 +205,7 @@ struct drm_virtgpu_resource_create_blob {
|
|||
#define VIRTGPU_CONTEXT_PARAM_CAPSET_ID 0x0001
|
||||
#define VIRTGPU_CONTEXT_PARAM_NUM_RINGS 0x0002
|
||||
#define VIRTGPU_CONTEXT_PARAM_POLL_RINGS_MASK 0x0003
|
||||
#define VIRTGPU_CONTEXT_PARAM_DEBUG_NAME 0x0004
|
||||
struct drm_virtgpu_context_set_param {
|
||||
__u64 param;
|
||||
__u64 value;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright © 2009-2022 VMware, Inc., Palo Alto, CA., USA
|
||||
* Copyright © 2009-2023 VMware, Inc., Palo Alto, CA., USA
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
@ -902,7 +903,8 @@ struct drm_vmw_shader_arg {
|
|||
/**
|
||||
* enum drm_vmw_surface_flags
|
||||
*
|
||||
* @drm_vmw_surface_flag_shareable: Whether the surface is shareable
|
||||
* @drm_vmw_surface_flag_shareable: Deprecated - all userspace surfaces are
|
||||
* shareable.
|
||||
* @drm_vmw_surface_flag_scanout: Whether the surface is a scanout
|
||||
* surface.
|
||||
* @drm_vmw_surface_flag_create_buffer: Create a backup buffer if none is
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,56 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (c) 2024-2025 Intel Corporation
|
||||
*
|
||||
* These are definitions for the mailbox command interface of CXL subsystem.
|
||||
*/
|
||||
#ifndef _FWCTL_CXL_H_
|
||||
#define _FWCTL_CXL_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <cxl/features.h>
|
||||
|
||||
/**
|
||||
* struct fwctl_rpc_cxl - ioctl(FWCTL_RPC) input for CXL
|
||||
* @opcode: CXL mailbox command opcode
|
||||
* @flags: Flags for the command (input).
|
||||
* @op_size: Size of input payload.
|
||||
* @reserved1: Reserved. Must be 0s.
|
||||
* @get_sup_feats_in: Get Supported Features input
|
||||
* @get_feat_in: Get Feature input
|
||||
* @set_feat_in: Set Feature input
|
||||
*/
|
||||
struct fwctl_rpc_cxl {
|
||||
__struct_group(fwctl_rpc_cxl_hdr, hdr, /* no attrs */,
|
||||
__u32 opcode;
|
||||
__u32 flags;
|
||||
__u32 op_size;
|
||||
__u32 reserved1;
|
||||
);
|
||||
union {
|
||||
struct cxl_mbox_get_sup_feats_in get_sup_feats_in;
|
||||
struct cxl_mbox_get_feat_in get_feat_in;
|
||||
struct cxl_mbox_set_feat_in set_feat_in;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fwctl_rpc_cxl_out - ioctl(FWCTL_RPC) output for CXL
|
||||
* @size: Size of the output payload
|
||||
* @retval: Return value from device
|
||||
* @get_sup_feats_out: Get Supported Features output
|
||||
* @payload: raw byte stream of payload
|
||||
*/
|
||||
struct fwctl_rpc_cxl_out {
|
||||
__struct_group(fwctl_rpc_cxl_out_hdr, hdr, /* no attrs */,
|
||||
__u32 size;
|
||||
__u32 retval;
|
||||
);
|
||||
union {
|
||||
struct cxl_mbox_get_sup_feats_out get_sup_feats_out;
|
||||
__DECLARE_FLEX_ARRAY(__u8, payload);
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,141 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES.
|
||||
*/
|
||||
#ifndef _FWCTL_H
|
||||
#define _FWCTL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define FWCTL_TYPE 0x9A
|
||||
|
||||
/**
|
||||
* DOC: General ioctl format
|
||||
*
|
||||
* The ioctl interface follows a general format to allow for extensibility. Each
|
||||
* ioctl is passed a structure pointer as the argument providing the size of
|
||||
* the structure in the first u32. The kernel checks that any structure space
|
||||
* beyond what it understands is 0. This allows userspace to use the backward
|
||||
* compatible portion while consistently using the newer, larger, structures.
|
||||
*
|
||||
* ioctls use a standard meaning for common errnos:
|
||||
*
|
||||
* - ENOTTY: The IOCTL number itself is not supported at all
|
||||
* - E2BIG: The IOCTL number is supported, but the provided structure has
|
||||
* non-zero in a part the kernel does not understand.
|
||||
* - EOPNOTSUPP: The IOCTL number is supported, and the structure is
|
||||
* understood, however a known field has a value the kernel does not
|
||||
* understand or support.
|
||||
* - EINVAL: Everything about the IOCTL was understood, but a field is not
|
||||
* correct.
|
||||
* - ENOMEM: Out of memory.
|
||||
* - ENODEV: The underlying device has been hot-unplugged and the FD is
|
||||
* orphaned.
|
||||
*
|
||||
* As well as additional errnos, within specific ioctls.
|
||||
*/
|
||||
enum {
|
||||
FWCTL_CMD_BASE = 0,
|
||||
FWCTL_CMD_INFO = 0,
|
||||
FWCTL_CMD_RPC = 1,
|
||||
};
|
||||
|
||||
enum fwctl_device_type {
|
||||
FWCTL_DEVICE_TYPE_ERROR = 0,
|
||||
FWCTL_DEVICE_TYPE_MLX5 = 1,
|
||||
FWCTL_DEVICE_TYPE_CXL = 2,
|
||||
FWCTL_DEVICE_TYPE_PDS = 4,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fwctl_info - ioctl(FWCTL_INFO)
|
||||
* @size: sizeof(struct fwctl_info)
|
||||
* @flags: Must be 0
|
||||
* @out_device_type: Returns the type of the device from enum fwctl_device_type
|
||||
* @device_data_len: On input the length of the out_device_data memory. On
|
||||
* output the size of the kernel's device_data which may be larger or
|
||||
* smaller than the input. Maybe 0 on input.
|
||||
* @out_device_data: Pointer to a memory of device_data_len bytes. Kernel will
|
||||
* fill the entire memory, zeroing as required.
|
||||
*
|
||||
* Returns basic information about this fwctl instance, particularly what driver
|
||||
* is being used to define the device_data format.
|
||||
*/
|
||||
struct fwctl_info {
|
||||
__u32 size;
|
||||
__u32 flags;
|
||||
__u32 out_device_type;
|
||||
__u32 device_data_len;
|
||||
__aligned_u64 out_device_data;
|
||||
};
|
||||
#define FWCTL_INFO _IO(FWCTL_TYPE, FWCTL_CMD_INFO)
|
||||
|
||||
/**
|
||||
* enum fwctl_rpc_scope - Scope of access for the RPC
|
||||
*
|
||||
* Refer to fwctl.rst for a more detailed discussion of these scopes.
|
||||
*/
|
||||
enum fwctl_rpc_scope {
|
||||
/**
|
||||
* @FWCTL_RPC_CONFIGURATION: Device configuration access scope
|
||||
*
|
||||
* Read/write access to device configuration. When configuration
|
||||
* is written to the device it remains in a fully supported state.
|
||||
*/
|
||||
FWCTL_RPC_CONFIGURATION = 0,
|
||||
/**
|
||||
* @FWCTL_RPC_DEBUG_READ_ONLY: Read only access to debug information
|
||||
*
|
||||
* Readable debug information. Debug information is compatible with
|
||||
* kernel lockdown, and does not disclose any sensitive information. For
|
||||
* instance exposing any encryption secrets from this information is
|
||||
* forbidden.
|
||||
*/
|
||||
FWCTL_RPC_DEBUG_READ_ONLY = 1,
|
||||
/**
|
||||
* @FWCTL_RPC_DEBUG_WRITE: Writable access to lockdown compatible debug information
|
||||
*
|
||||
* Allows write access to data in the device which may leave a fully
|
||||
* supported state. This is intended to permit intensive and possibly
|
||||
* invasive debugging. This scope will taint the kernel.
|
||||
*/
|
||||
FWCTL_RPC_DEBUG_WRITE = 2,
|
||||
/**
|
||||
* @FWCTL_RPC_DEBUG_WRITE_FULL: Write access to all debug information
|
||||
*
|
||||
* Allows read/write access to everything. Requires CAP_SYS_RAW_IO, so
|
||||
* it is not required to follow lockdown principals. If in doubt
|
||||
* debugging should be placed in this scope. This scope will taint the
|
||||
* kernel.
|
||||
*/
|
||||
FWCTL_RPC_DEBUG_WRITE_FULL = 3,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fwctl_rpc - ioctl(FWCTL_RPC)
|
||||
* @size: sizeof(struct fwctl_rpc)
|
||||
* @scope: One of enum fwctl_rpc_scope, required scope for the RPC
|
||||
* @in_len: Length of the in memory
|
||||
* @out_len: Length of the out memory
|
||||
* @in: Request message in device specific format
|
||||
* @out: Response message in device specific format
|
||||
*
|
||||
* Deliver a Remote Procedure Call to the device FW and return the response. The
|
||||
* call's parameters and return are marshaled into linear buffers of memory. Any
|
||||
* errno indicates that delivery of the RPC to the device failed. Return status
|
||||
* originating in the device during a successful delivery must be encoded into
|
||||
* out.
|
||||
*
|
||||
* The format of the buffers matches the out_device_type from FWCTL_INFO.
|
||||
*/
|
||||
struct fwctl_rpc {
|
||||
__u32 size;
|
||||
__u32 scope;
|
||||
__u32 in_len;
|
||||
__u32 out_len;
|
||||
__aligned_u64 in;
|
||||
__aligned_u64 out;
|
||||
};
|
||||
#define FWCTL_RPC _IO(FWCTL_TYPE, FWCTL_CMD_RPC)
|
||||
|
||||
#endif
|
|
@ -0,0 +1,36 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES
|
||||
*
|
||||
* These are definitions for the command interface for mlx5 HW. mlx5 FW has a
|
||||
* User Context mechanism which allows the FW to understand a security scope.
|
||||
* FWCTL binds each FD to a FW user context and then places the User Context ID
|
||||
* (UID) in each command header. The created User Context has a capability set
|
||||
* that is appropriate for FWCTL's security model.
|
||||
*
|
||||
* Command formation should use a copy of the structs in mlx5_ifc.h following
|
||||
* the Programmers Reference Manual. A open release is available here:
|
||||
*
|
||||
* https://network.nvidia.com/files/doc-2020/ethernet-adapters-programming-manual.pdf
|
||||
*
|
||||
* The device_type for this file is FWCTL_DEVICE_TYPE_MLX5.
|
||||
*/
|
||||
#ifndef _FWCTL_MLX5_H
|
||||
#define _FWCTL_MLX5_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* struct fwctl_info_mlx5 - ioctl(FWCTL_INFO) out_device_data
|
||||
* @uid: The FW UID this FD is bound to. Each command header will force
|
||||
* this value.
|
||||
* @uctx_caps: The FW capabilities that are enabled for the uid.
|
||||
*
|
||||
* Return basic information about the FW interface available.
|
||||
*/
|
||||
struct fwctl_info_mlx5 {
|
||||
__u32 uid;
|
||||
__u32 uctx_caps;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,62 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Copyright(c) Advanced Micro Devices, Inc */
|
||||
|
||||
/*
|
||||
* fwctl interface info for pds_fwctl
|
||||
*/
|
||||
|
||||
#ifndef _FWCTL_PDS_H_
|
||||
#define _FWCTL_PDS_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* struct fwctl_info_pds
|
||||
* @uctx_caps: bitmap of firmware capabilities
|
||||
*
|
||||
* Return basic information about the FW interface available.
|
||||
*/
|
||||
struct fwctl_info_pds {
|
||||
__u32 uctx_caps;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum pds_fwctl_capabilities
|
||||
* @PDS_FWCTL_QUERY_CAP: firmware can be queried for information
|
||||
* @PDS_FWCTL_SEND_CAP: firmware can be sent commands
|
||||
*/
|
||||
enum pds_fwctl_capabilities {
|
||||
PDS_FWCTL_QUERY_CAP = 0,
|
||||
PDS_FWCTL_SEND_CAP,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fwctl_rpc_pds
|
||||
* @in.op: requested operation code
|
||||
* @in.ep: firmware endpoint to operate on
|
||||
* @in.rsvd: reserved
|
||||
* @in.len: length of payload data
|
||||
* @in.payload: address of payload buffer
|
||||
* @in: rpc in parameters
|
||||
* @out.retval: operation result value
|
||||
* @out.rsvd: reserved
|
||||
* @out.len: length of result data buffer
|
||||
* @out.payload: address of payload data buffer
|
||||
* @out: rpc out parameters
|
||||
*/
|
||||
struct fwctl_rpc_pds {
|
||||
struct {
|
||||
__u32 op;
|
||||
__u32 ep;
|
||||
__u32 rsvd;
|
||||
__u32 len;
|
||||
__aligned_u64 payload;
|
||||
} in;
|
||||
struct {
|
||||
__u32 retval;
|
||||
__u32 rsvd[2];
|
||||
__u32 len;
|
||||
__aligned_u64 payload;
|
||||
} out;
|
||||
};
|
||||
#endif /* _FWCTL_PDS_H_ */
|
|
@ -236,6 +236,12 @@ struct binder_frozen_status_info {
|
|||
__u32 async_recv;
|
||||
};
|
||||
|
||||
struct binder_frozen_state_info {
|
||||
binder_uintptr_t cookie;
|
||||
__u32 is_frozen;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
/* struct binder_extened_error - extended error information
|
||||
* @id: identifier for the failed operation
|
||||
* @command: command as defined by binder_driver_return_protocol
|
||||
|
@ -251,20 +257,22 @@ struct binder_extended_error {
|
|||
__s32 param;
|
||||
};
|
||||
|
||||
#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
|
||||
#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
|
||||
#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
|
||||
#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32)
|
||||
#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, __s32)
|
||||
#define BINDER_THREAD_EXIT _IOW('b', 8, __s32)
|
||||
#define BINDER_VERSION _IOWR('b', 9, struct binder_version)
|
||||
#define BINDER_GET_NODE_DEBUG_INFO _IOWR('b', 11, struct binder_node_debug_info)
|
||||
#define BINDER_GET_NODE_INFO_FOR_REF _IOWR('b', 12, struct binder_node_info_for_ref)
|
||||
#define BINDER_SET_CONTEXT_MGR_EXT _IOW('b', 13, struct flat_binder_object)
|
||||
#define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
|
||||
#define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
|
||||
#define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
|
||||
#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
|
||||
enum {
|
||||
BINDER_WRITE_READ = _IOWR('b', 1, struct binder_write_read),
|
||||
BINDER_SET_IDLE_TIMEOUT = _IOW('b', 3, __s64),
|
||||
BINDER_SET_MAX_THREADS = _IOW('b', 5, __u32),
|
||||
BINDER_SET_IDLE_PRIORITY = _IOW('b', 6, __s32),
|
||||
BINDER_SET_CONTEXT_MGR = _IOW('b', 7, __s32),
|
||||
BINDER_THREAD_EXIT = _IOW('b', 8, __s32),
|
||||
BINDER_VERSION = _IOWR('b', 9, struct binder_version),
|
||||
BINDER_GET_NODE_DEBUG_INFO = _IOWR('b', 11, struct binder_node_debug_info),
|
||||
BINDER_GET_NODE_INFO_FOR_REF = _IOWR('b', 12, struct binder_node_info_for_ref),
|
||||
BINDER_SET_CONTEXT_MGR_EXT = _IOW('b', 13, struct flat_binder_object),
|
||||
BINDER_FREEZE = _IOW('b', 14, struct binder_freeze_info),
|
||||
BINDER_GET_FROZEN_INFO = _IOWR('b', 15, struct binder_frozen_status_info),
|
||||
BINDER_ENABLE_ONEWAY_SPAM_DETECTION = _IOW('b', 16, __u32),
|
||||
BINDER_GET_EXTENDED_ERROR = _IOWR('b', 17, struct binder_extended_error),
|
||||
};
|
||||
|
||||
/*
|
||||
* NOTE: Two special error codes you should check for when calling
|
||||
|
@ -465,6 +473,17 @@ enum binder_driver_return_protocol {
|
|||
/*
|
||||
* The target of the last async transaction is frozen. No parameters.
|
||||
*/
|
||||
|
||||
BR_FROZEN_BINDER = _IOR('r', 21, struct binder_frozen_state_info),
|
||||
/*
|
||||
* The cookie and a boolean (is_frozen) that indicates whether the process
|
||||
* transitioned into a frozen or an unfrozen state.
|
||||
*/
|
||||
|
||||
BR_CLEAR_FREEZE_NOTIFICATION_DONE = _IOR('r', 22, binder_uintptr_t),
|
||||
/*
|
||||
* void *: cookie
|
||||
*/
|
||||
};
|
||||
|
||||
enum binder_driver_command_protocol {
|
||||
|
@ -548,6 +567,25 @@ enum binder_driver_command_protocol {
|
|||
/*
|
||||
* binder_transaction_data_sg: the sent command.
|
||||
*/
|
||||
|
||||
BC_REQUEST_FREEZE_NOTIFICATION =
|
||||
_IOW('c', 19, struct binder_handle_cookie),
|
||||
/*
|
||||
* int: handle
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
BC_CLEAR_FREEZE_NOTIFICATION = _IOW('c', 20,
|
||||
struct binder_handle_cookie),
|
||||
/*
|
||||
* int: handle
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
BC_FREEZE_NOTIFICATION_DONE = _IOW('c', 21, binder_uintptr_t),
|
||||
/*
|
||||
* void *: cookie
|
||||
*/
|
||||
};
|
||||
|
||||
#endif /* _LINUX_BINDER_H */
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
* 1100 - 1199 user space trusted application messages
|
||||
* 1200 - 1299 messages internal to the audit daemon
|
||||
* 1300 - 1399 audit event messages
|
||||
* 1400 - 1499 SE Linux use
|
||||
* 1400 - 1499 access control messages
|
||||
* 1500 - 1599 kernel LSPP events
|
||||
* 1600 - 1699 kernel crypto events
|
||||
* 1700 - 1799 kernel anomaly records
|
||||
|
@ -143,6 +143,11 @@
|
|||
#define AUDIT_MAC_UNLBL_STCDEL 1417 /* NetLabel: del a static label */
|
||||
#define AUDIT_MAC_CALIPSO_ADD 1418 /* NetLabel: add CALIPSO DOI entry */
|
||||
#define AUDIT_MAC_CALIPSO_DEL 1419 /* NetLabel: del CALIPSO DOI entry */
|
||||
#define AUDIT_IPE_ACCESS 1420 /* IPE denial or grant */
|
||||
#define AUDIT_IPE_CONFIG_CHANGE 1421 /* IPE config change */
|
||||
#define AUDIT_IPE_POLICY_LOAD 1422 /* IPE policy load */
|
||||
#define AUDIT_LANDLOCK_ACCESS 1423 /* Landlock denial */
|
||||
#define AUDIT_LANDLOCK_DOMAIN 1424 /* Landlock domain status */
|
||||
|
||||
#define AUDIT_FIRST_KERN_ANOM_MSG 1700
|
||||
#define AUDIT_LAST_KERN_ANOM_MSG 1799
|
||||
|
@ -158,6 +163,7 @@
|
|||
#define AUDIT_INTEGRITY_RULE 1805 /* policy rule */
|
||||
#define AUDIT_INTEGRITY_EVM_XATTR 1806 /* New EVM-covered xattr */
|
||||
#define AUDIT_INTEGRITY_POLICY_RULE 1807 /* IMA policy rules */
|
||||
#define AUDIT_INTEGRITY_USERSPACE 1808 /* Userspace enforced data integrity */
|
||||
|
||||
#define AUDIT_KERNEL 2000 /* Asynchronous audit record. NOT A REQUEST. */
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#define AUTOFS_MIN_PROTO_VERSION 3
|
||||
#define AUTOFS_MAX_PROTO_VERSION 5
|
||||
|
||||
#define AUTOFS_PROTO_SUBVERSION 5
|
||||
#define AUTOFS_PROTO_SUBVERSION 6
|
||||
|
||||
/*
|
||||
* The wait_queue_token (autofs_wqt_t) is part of a structure which is passed
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#define AT_HWCAP2 26 /* extension of AT_HWCAP */
|
||||
#define AT_RSEQ_FEATURE_SIZE 27 /* rseq supported feature size */
|
||||
#define AT_RSEQ_ALIGN 28 /* rseq allocation alignment */
|
||||
#define AT_HWCAP3 29 /* extension of AT_HWCAP */
|
||||
#define AT_HWCAP4 30 /* extension of AT_HWCAP */
|
||||
|
||||
#define AT_EXECFN 31 /* filename of program */
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
|
@ -116,6 +117,9 @@ enum batadv_icmp_packettype {
|
|||
* only need routable IPv4 multicast packets we signed up for explicitly
|
||||
* @BATADV_MCAST_WANT_NO_RTR6: we have no IPv6 multicast router and therefore
|
||||
* only need routable IPv6 multicast packets we signed up for explicitly
|
||||
* @BATADV_MCAST_HAVE_MC_PTYPE_CAPA: we can parse, receive and forward
|
||||
* batman-adv multicast packets with a multicast tracker TVLV. And all our
|
||||
* hard interfaces have an MTU of at least 1280 bytes.
|
||||
*/
|
||||
enum batadv_mcast_flags {
|
||||
BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0,
|
||||
|
@ -123,6 +127,7 @@ enum batadv_mcast_flags {
|
|||
BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2,
|
||||
BATADV_MCAST_WANT_NO_RTR4 = 1UL << 3,
|
||||
BATADV_MCAST_WANT_NO_RTR6 = 1UL << 4,
|
||||
BATADV_MCAST_HAVE_MC_PTYPE_CAPA = 1UL << 5,
|
||||
};
|
||||
|
||||
/* tt data subtypes */
|
||||
|
@ -174,14 +179,16 @@ enum batadv_bla_claimframe {
|
|||
* @BATADV_TVLV_TT: translation table tvlv
|
||||
* @BATADV_TVLV_ROAM: roaming advertisement tvlv
|
||||
* @BATADV_TVLV_MCAST: multicast capability tvlv
|
||||
* @BATADV_TVLV_MCAST_TRACKER: multicast tracker tvlv
|
||||
*/
|
||||
enum batadv_tvlv_type {
|
||||
BATADV_TVLV_GW = 0x01,
|
||||
BATADV_TVLV_DAT = 0x02,
|
||||
BATADV_TVLV_NC = 0x03,
|
||||
BATADV_TVLV_TT = 0x04,
|
||||
BATADV_TVLV_ROAM = 0x05,
|
||||
BATADV_TVLV_MCAST = 0x06,
|
||||
BATADV_TVLV_GW = 0x01,
|
||||
BATADV_TVLV_DAT = 0x02,
|
||||
BATADV_TVLV_NC = 0x03,
|
||||
BATADV_TVLV_TT = 0x04,
|
||||
BATADV_TVLV_ROAM = 0x05,
|
||||
BATADV_TVLV_MCAST = 0x06,
|
||||
BATADV_TVLV_MCAST_TRACKER = 0x07,
|
||||
};
|
||||
|
||||
#pragma pack(2)
|
||||
|
@ -487,6 +494,25 @@ struct batadv_bcast_packet {
|
|||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_mcast_packet - multicast packet for network payload
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the general header
|
||||
* @ttl: time to live for this packet, part of the general header
|
||||
* @reserved: reserved byte for alignment
|
||||
* @tvlv_len: length of the appended tvlv buffer (in bytes)
|
||||
*/
|
||||
struct batadv_mcast_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 reserved;
|
||||
__be16 tvlv_len;
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_coded_packet - network coded packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
|
@ -567,19 +593,6 @@ struct batadv_tvlv_gateway_data {
|
|||
__be32 bandwidth_up;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_data - tt data propagated through the tt tvlv container
|
||||
* @flags: translation table flags (see batadv_tt_data_flags)
|
||||
* @ttvn: translation table version number
|
||||
* @num_vlan: number of announced VLANs. In the TVLV this struct is followed by
|
||||
* one batadv_tvlv_tt_vlan_data object per announced vlan
|
||||
*/
|
||||
struct batadv_tvlv_tt_data {
|
||||
__u8 flags;
|
||||
__u8 ttvn;
|
||||
__be16 num_vlan;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_vlan_data - vlan specific tt data propagated through
|
||||
* the tt tvlv container
|
||||
|
@ -593,6 +606,21 @@ struct batadv_tvlv_tt_vlan_data {
|
|||
__u16 reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_data - tt data propagated through the tt tvlv container
|
||||
* @flags: translation table flags (see batadv_tt_data_flags)
|
||||
* @ttvn: translation table version number
|
||||
* @num_vlan: number of announced VLANs. In the TVLV this struct is followed by
|
||||
* one batadv_tvlv_tt_vlan_data object per announced vlan
|
||||
* @vlan_data: array of batadv_tvlv_tt_vlan_data objects
|
||||
*/
|
||||
struct batadv_tvlv_tt_data {
|
||||
__u8 flags;
|
||||
__u8 ttvn;
|
||||
__be16 num_vlan;
|
||||
struct batadv_tvlv_tt_vlan_data vlan_data[] __counted_by_be(num_vlan);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_change - translation table diff data
|
||||
* @flags: status indicators concerning the non-mesh client (see
|
||||
|
@ -628,6 +656,14 @@ struct batadv_tvlv_mcast_data {
|
|||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_mcast_tracker - payload of a multicast tracker tvlv
|
||||
* @num_dests: number of subsequent destination originator MAC addresses
|
||||
*/
|
||||
struct batadv_tvlv_mcast_tracker {
|
||||
__be16 num_dests;
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* _LINUX_BATADV_PACKET_H_ */
|
||||
|
|
|
@ -342,7 +342,7 @@ enum batadv_nl_attrs {
|
|||
BATADV_ATTR_MCAST_FLAGS_PRIV,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_VLANID: VLAN id on top of soft interface
|
||||
* @BATADV_ATTR_VLANID: VLAN id on top of mesh interface
|
||||
*/
|
||||
BATADV_ATTR_VLANID,
|
||||
|
||||
|
@ -380,7 +380,7 @@ enum batadv_nl_attrs {
|
|||
/**
|
||||
* @BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED: whether the bridge loop
|
||||
* avoidance feature is enabled. This feature detects and avoids loops
|
||||
* between the mesh and devices bridged with the soft interface
|
||||
* between the mesh and devices bridged with the mesh interface
|
||||
*/
|
||||
BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,
|
||||
|
||||
|
@ -509,7 +509,7 @@ enum batadv_nl_commands {
|
|||
BATADV_CMD_UNSPEC,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_MESH: Get attributes from softif/mesh
|
||||
* @BATADV_CMD_GET_MESH: Get attributes from mesh(if)
|
||||
*/
|
||||
BATADV_CMD_GET_MESH,
|
||||
|
||||
|
@ -535,7 +535,7 @@ enum batadv_nl_commands {
|
|||
|
||||
/**
|
||||
* @BATADV_CMD_GET_HARDIF: Get attributes from a hardif of the
|
||||
* current softif
|
||||
* current mesh(if)
|
||||
*/
|
||||
BATADV_CMD_GET_HARDIF,
|
||||
|
||||
|
@ -591,25 +591,25 @@ enum batadv_nl_commands {
|
|||
BATADV_CMD_GET_MCAST_FLAGS,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_SET_MESH: Set attributes for softif/mesh
|
||||
* @BATADV_CMD_SET_MESH: Set attributes for mesh(if)
|
||||
*/
|
||||
BATADV_CMD_SET_MESH,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_SET_HARDIF: Set attributes for hardif of the
|
||||
* current softif
|
||||
* current mesh(if)
|
||||
*/
|
||||
BATADV_CMD_SET_HARDIF,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_VLAN: Get attributes from a VLAN of the
|
||||
* current softif
|
||||
* current mesh(if)
|
||||
*/
|
||||
BATADV_CMD_GET_VLAN,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_SET_VLAN: Set attributes for VLAN of the
|
||||
* current softif
|
||||
* current mesh(if)
|
||||
*/
|
||||
BATADV_CMD_SET_VLAN,
|
||||
|
||||
|
@ -691,7 +691,7 @@ enum batadv_ifla_attrs {
|
|||
*/
|
||||
IFLA_BATADV_ALGO_NAME,
|
||||
|
||||
/* add attributes above here, update the policy in soft-interface.c */
|
||||
/* add attributes above here, update the policy in mesh-interface.c */
|
||||
|
||||
/**
|
||||
* @__IFLA_BATADV_MAX: internal use
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* bits.h: Macros for dealing with bitmasks. */
|
||||
|
||||
#ifndef _LINUX_BITS_H
|
||||
#define _LINUX_BITS_H
|
||||
|
||||
#define __GENMASK(h, l) (((~_UL(0)) << (l)) & (~_UL(0) >> (__BITS_PER_LONG - 1 - (h))))
|
||||
|
||||
#define __GENMASK_ULL(h, l) (((~_ULL(0)) << (l)) & (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))
|
||||
|
||||
#define __GENMASK_U128(h, l) \
|
||||
((_BIT128((h)) << 1) - (_BIT128(l)))
|
||||
|
||||
#endif /* _LINUX_BITS_H */
|
|
@ -0,0 +1,44 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BLK_CRYPTO_H
|
||||
#define _LINUX_BLK_CRYPTO_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
struct blk_crypto_import_key_arg {
|
||||
/* Raw key (input) */
|
||||
__u64 raw_key_ptr;
|
||||
__u64 raw_key_size;
|
||||
/* Long-term wrapped key blob (output) */
|
||||
__u64 lt_key_ptr;
|
||||
__u64 lt_key_size;
|
||||
__u64 reserved[4];
|
||||
};
|
||||
|
||||
struct blk_crypto_generate_key_arg {
|
||||
/* Long-term wrapped key blob (output) */
|
||||
__u64 lt_key_ptr;
|
||||
__u64 lt_key_size;
|
||||
__u64 reserved[4];
|
||||
};
|
||||
|
||||
struct blk_crypto_prepare_key_arg {
|
||||
/* Long-term wrapped key blob (input) */
|
||||
__u64 lt_key_ptr;
|
||||
__u64 lt_key_size;
|
||||
/* Ephemerally-wrapped key blob (output) */
|
||||
__u64 eph_key_ptr;
|
||||
__u64 eph_key_size;
|
||||
__u64 reserved[4];
|
||||
};
|
||||
|
||||
/*
|
||||
* These ioctls share the block device ioctl space; see uapi/linux/fs.h.
|
||||
* 140-141 are reserved for future blk-crypto ioctls; any more than that would
|
||||
* require an additional allocation from the block device ioctl space.
|
||||
*/
|
||||
#define BLKCRYPTOIMPORTKEY _IOWR(0x12, 137, struct blk_crypto_import_key_arg)
|
||||
#define BLKCRYPTOGENERATEKEY _IOWR(0x12, 138, struct blk_crypto_generate_key_arg)
|
||||
#define BLKCRYPTOPREPAREKEY _IOWR(0x12, 139, struct blk_crypto_prepare_key_arg)
|
||||
|
||||
#endif /* _LINUX_BLK_CRYPTO_H */
|
|
@ -0,0 +1,14 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BLKDEV_H
|
||||
#define _LINUX_BLKDEV_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* io_uring block file commands, see IORING_OP_URING_CMD.
|
||||
* It's a different number space from ioctl(), reuse the block's code 0x12.
|
||||
*/
|
||||
#define BLOCK_URING_CMD_DISCARD _IO(0x12, 0)
|
||||
|
||||
#endif
|
|
@ -49,7 +49,7 @@ enum blktrace_act {
|
|||
__BLK_TA_UNPLUG_TIMER, /* queue was unplugged by timer */
|
||||
__BLK_TA_INSERT, /* insert request */
|
||||
__BLK_TA_SPLIT, /* bio was split */
|
||||
__BLK_TA_BOUNCE, /* bio was bounced */
|
||||
__BLK_TA_BOUNCE, /* unused, was: bio was bounced */
|
||||
__BLK_TA_REMAP, /* bio was remapped */
|
||||
__BLK_TA_ABORT, /* request aborted */
|
||||
__BLK_TA_DRV_DATA, /* driver-specific binary data */
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#define BPF_JSGE 0x70 /* SGE is signed '>=', GE in x86 */
|
||||
#define BPF_JSLT 0xc0 /* SLT is signed, '<' */
|
||||
#define BPF_JSLE 0xd0 /* SLE is signed, '<=' */
|
||||
#define BPF_JCOND 0xe0 /* conditional pseudo jumps: may_goto, goto_or_nop */
|
||||
#define BPF_CALL 0x80 /* function call */
|
||||
#define BPF_EXIT 0x90 /* function return */
|
||||
|
||||
|
@ -50,6 +51,13 @@
|
|||
#define BPF_XCHG (0xe0 | BPF_FETCH) /* atomic exchange */
|
||||
#define BPF_CMPXCHG (0xf0 | BPF_FETCH) /* atomic compare-and-write */
|
||||
|
||||
#define BPF_LOAD_ACQ 0x100 /* load-acquire */
|
||||
#define BPF_STORE_REL 0x110 /* store-release */
|
||||
|
||||
enum bpf_cond_pseudo_jmp {
|
||||
BPF_MAY_GOTO = 0,
|
||||
};
|
||||
|
||||
/* Register numbers */
|
||||
enum {
|
||||
BPF_REG_0 = 0,
|
||||
|
@ -77,12 +85,29 @@ struct bpf_insn {
|
|||
__s32 imm; /* signed immediate constant */
|
||||
};
|
||||
|
||||
/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */
|
||||
/* Deprecated: use struct bpf_lpm_trie_key_u8 (when the "data" member is needed for
|
||||
* byte access) or struct bpf_lpm_trie_key_hdr (when using an alternative type for
|
||||
* the trailing flexible array member) instead.
|
||||
*/
|
||||
struct bpf_lpm_trie_key {
|
||||
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
|
||||
__u8 data[0]; /* Arbitrary size */
|
||||
};
|
||||
|
||||
/* Header for bpf_lpm_trie_key structs */
|
||||
struct bpf_lpm_trie_key_hdr {
|
||||
__u32 prefixlen;
|
||||
};
|
||||
|
||||
/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry, with trailing byte array. */
|
||||
struct bpf_lpm_trie_key_u8 {
|
||||
union {
|
||||
struct bpf_lpm_trie_key_hdr hdr;
|
||||
__u32 prefixlen;
|
||||
};
|
||||
__u8 data[]; /* Arbitrary size */
|
||||
};
|
||||
|
||||
struct bpf_cgroup_storage_key {
|
||||
__u64 cgroup_inode_id; /* cgroup inode id */
|
||||
__u32 attach_type; /* program attach type (enum bpf_attach_type) */
|
||||
|
@ -617,7 +642,11 @@ union bpf_iter_link_info {
|
|||
* to NULL to begin the batched operation. After each subsequent
|
||||
* **BPF_MAP_LOOKUP_BATCH**, the caller should pass the resultant
|
||||
* *out_batch* as the *in_batch* for the next operation to
|
||||
* continue iteration from the current point.
|
||||
* continue iteration from the current point. Both *in_batch* and
|
||||
* *out_batch* must point to memory large enough to hold a key,
|
||||
* except for maps of type **BPF_MAP_TYPE_{HASH, PERCPU_HASH,
|
||||
* LRU_HASH, LRU_PERCPU_HASH}**, for which batch parameters
|
||||
* must be at least 4 bytes wide regardless of key size.
|
||||
*
|
||||
* The *keys* and *values* are output parameters which must point
|
||||
* to memory large enough to hold *count* items based on the key
|
||||
|
@ -847,6 +876,36 @@ union bpf_iter_link_info {
|
|||
* Returns zero on success. On error, -1 is returned and *errno*
|
||||
* is set appropriately.
|
||||
*
|
||||
* BPF_TOKEN_CREATE
|
||||
* Description
|
||||
* Create BPF token with embedded information about what
|
||||
* BPF-related functionality it allows:
|
||||
* - a set of allowed bpf() syscall commands;
|
||||
* - a set of allowed BPF map types to be created with
|
||||
* BPF_MAP_CREATE command, if BPF_MAP_CREATE itself is allowed;
|
||||
* - a set of allowed BPF program types and BPF program attach
|
||||
* types to be loaded with BPF_PROG_LOAD command, if
|
||||
* BPF_PROG_LOAD itself is allowed.
|
||||
*
|
||||
* BPF token is created (derived) from an instance of BPF FS,
|
||||
* assuming it has necessary delegation mount options specified.
|
||||
* This BPF token can be passed as an extra parameter to various
|
||||
* bpf() syscall commands to grant BPF subsystem functionality to
|
||||
* unprivileged processes.
|
||||
*
|
||||
* When created, BPF token is "associated" with the owning
|
||||
* user namespace of BPF FS instance (super block) that it was
|
||||
* derived from, and subsequent BPF operations performed with
|
||||
* BPF token would be performing capabilities checks (i.e.,
|
||||
* CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN, CAP_SYS_ADMIN) within
|
||||
* that user namespace. Without BPF token, such capabilities
|
||||
* have to be granted in init user namespace, making bpf()
|
||||
* syscall incompatible with user namespace, for the most part.
|
||||
*
|
||||
* Return
|
||||
* A new file descriptor (a nonnegative integer), or -1 if an
|
||||
* error occurred (in which case, *errno* is set appropriately).
|
||||
*
|
||||
* NOTES
|
||||
* eBPF objects (maps and programs) can be shared between processes.
|
||||
*
|
||||
|
@ -901,6 +960,8 @@ enum bpf_cmd {
|
|||
BPF_ITER_CREATE,
|
||||
BPF_LINK_DETACH,
|
||||
BPF_PROG_BIND_MAP,
|
||||
BPF_TOKEN_CREATE,
|
||||
__MAX_BPF_CMD,
|
||||
};
|
||||
|
||||
enum bpf_map_type {
|
||||
|
@ -932,7 +993,14 @@ enum bpf_map_type {
|
|||
*/
|
||||
BPF_MAP_TYPE_CGROUP_STORAGE = BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED,
|
||||
BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED,
|
||||
/* BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE is available to bpf programs
|
||||
* attaching to a cgroup. The new mechanism (BPF_MAP_TYPE_CGRP_STORAGE +
|
||||
* local percpu kptr) supports all BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
|
||||
* functionality and more. So mark * BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
|
||||
* deprecated.
|
||||
*/
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED,
|
||||
BPF_MAP_TYPE_QUEUE,
|
||||
BPF_MAP_TYPE_STACK,
|
||||
BPF_MAP_TYPE_SK_STORAGE,
|
||||
|
@ -944,6 +1012,8 @@ enum bpf_map_type {
|
|||
BPF_MAP_TYPE_BLOOM_FILTER,
|
||||
BPF_MAP_TYPE_USER_RINGBUF,
|
||||
BPF_MAP_TYPE_CGRP_STORAGE,
|
||||
BPF_MAP_TYPE_ARENA,
|
||||
__MAX_BPF_MAP_TYPE
|
||||
};
|
||||
|
||||
/* Note that tracing related programs such as
|
||||
|
@ -988,6 +1058,7 @@ enum bpf_prog_type {
|
|||
BPF_PROG_TYPE_SK_LOOKUP,
|
||||
BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */
|
||||
BPF_PROG_TYPE_NETFILTER,
|
||||
__MAX_BPF_PROG_TYPE
|
||||
};
|
||||
|
||||
enum bpf_attach_type {
|
||||
|
@ -1040,11 +1111,23 @@ enum bpf_attach_type {
|
|||
BPF_TCX_INGRESS,
|
||||
BPF_TCX_EGRESS,
|
||||
BPF_TRACE_UPROBE_MULTI,
|
||||
BPF_CGROUP_UNIX_CONNECT,
|
||||
BPF_CGROUP_UNIX_SENDMSG,
|
||||
BPF_CGROUP_UNIX_RECVMSG,
|
||||
BPF_CGROUP_UNIX_GETPEERNAME,
|
||||
BPF_CGROUP_UNIX_GETSOCKNAME,
|
||||
BPF_NETKIT_PRIMARY,
|
||||
BPF_NETKIT_PEER,
|
||||
BPF_TRACE_KPROBE_SESSION,
|
||||
BPF_TRACE_UPROBE_SESSION,
|
||||
__MAX_BPF_ATTACH_TYPE
|
||||
};
|
||||
|
||||
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
|
||||
|
||||
/* Add BPF_LINK_TYPE(type, name) in bpf_types.h to keep bpf_link_type_strs[]
|
||||
* in sync with the definitions below.
|
||||
*/
|
||||
enum bpf_link_type {
|
||||
BPF_LINK_TYPE_UNSPEC = 0,
|
||||
BPF_LINK_TYPE_RAW_TRACEPOINT = 1,
|
||||
|
@ -1059,9 +1142,13 @@ enum bpf_link_type {
|
|||
BPF_LINK_TYPE_NETFILTER = 10,
|
||||
BPF_LINK_TYPE_TCX = 11,
|
||||
BPF_LINK_TYPE_UPROBE_MULTI = 12,
|
||||
MAX_BPF_LINK_TYPE,
|
||||
BPF_LINK_TYPE_NETKIT = 13,
|
||||
BPF_LINK_TYPE_SOCKMAP = 14,
|
||||
__MAX_BPF_LINK_TYPE,
|
||||
};
|
||||
|
||||
#define MAX_BPF_LINK_TYPE __MAX_BPF_LINK_TYPE
|
||||
|
||||
enum bpf_perf_event_type {
|
||||
BPF_PERF_EVENT_UNSPEC = 0,
|
||||
BPF_PERF_EVENT_UPROBE = 1,
|
||||
|
@ -1123,6 +1210,7 @@ enum bpf_perf_event_type {
|
|||
#define BPF_F_BEFORE (1U << 3)
|
||||
#define BPF_F_AFTER (1U << 4)
|
||||
#define BPF_F_ID (1U << 5)
|
||||
#define BPF_F_PREORDER (1U << 6)
|
||||
#define BPF_F_LINK BPF_F_LINK /* 1 << 13 */
|
||||
|
||||
/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
|
||||
|
@ -1185,6 +1273,9 @@ enum bpf_perf_event_type {
|
|||
*/
|
||||
#define BPF_F_XDP_DEV_BOUND_ONLY (1U << 6)
|
||||
|
||||
/* The verifier internal test flag. Behavior is undefined */
|
||||
#define BPF_F_TEST_REG_INVARIANTS (1U << 7)
|
||||
|
||||
/* link_create.kprobe_multi.flags used in LINK_CREATE command for
|
||||
* BPF_TRACE_KPROBE_MULTI attach type to create return probe.
|
||||
*/
|
||||
|
@ -1258,6 +1349,10 @@ enum {
|
|||
*/
|
||||
#define BPF_PSEUDO_KFUNC_CALL 2
|
||||
|
||||
enum bpf_addr_space_cast {
|
||||
BPF_ADDR_SPACE_CAST = 1,
|
||||
};
|
||||
|
||||
/* flags for BPF_MAP_UPDATE_ELEM command */
|
||||
enum {
|
||||
BPF_ANY = 0, /* create new element or update existing */
|
||||
|
@ -1310,6 +1405,18 @@ enum {
|
|||
|
||||
/* Get path from provided FD in BPF_OBJ_PIN/BPF_OBJ_GET commands */
|
||||
BPF_F_PATH_FD = (1U << 14),
|
||||
|
||||
/* Flag for value_type_btf_obj_fd, the fd is available */
|
||||
BPF_F_VTYPE_BTF_OBJ_FD = (1U << 15),
|
||||
|
||||
/* BPF token FD is passed in a corresponding command's token_fd field */
|
||||
BPF_F_TOKEN_FD = (1U << 16),
|
||||
|
||||
/* When user space page faults in bpf_arena send SIGSEGV instead of inserting new page */
|
||||
BPF_F_SEGV_ON_FAULT = (1U << 17),
|
||||
|
||||
/* Do not translate kernel bpf_arena pointers to user pointers */
|
||||
BPF_F_NO_USER_CONV = (1U << 18),
|
||||
};
|
||||
|
||||
/* Flags for BPF_PROG_QUERY. */
|
||||
|
@ -1326,6 +1433,8 @@ enum {
|
|||
#define BPF_F_TEST_RUN_ON_CPU (1U << 0)
|
||||
/* If set, XDP frames will be transmitted after processing */
|
||||
#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
|
||||
/* If set, apply CHECKSUM_COMPLETE to skb and validate the checksum */
|
||||
#define BPF_F_TEST_SKB_CHECKSUM_COMPLETE (1U << 2)
|
||||
|
||||
/* type for BPF_ENABLE_STATS */
|
||||
enum bpf_stats_type {
|
||||
|
@ -1381,11 +1490,23 @@ union bpf_attr {
|
|||
* BPF_MAP_TYPE_BLOOM_FILTER - the lowest 4 bits indicate the
|
||||
* number of hash functions (if 0, the bloom filter will default
|
||||
* to using 5 hash functions).
|
||||
*
|
||||
* BPF_MAP_TYPE_ARENA - contains the address where user space
|
||||
* is going to mmap() the arena. It has to be page aligned.
|
||||
*/
|
||||
__u64 map_extra;
|
||||
|
||||
__s32 value_type_btf_obj_fd; /* fd pointing to a BTF
|
||||
* type data for
|
||||
* btf_vmlinux_value_type_id.
|
||||
*/
|
||||
/* BPF token FD to use with BPF_MAP_CREATE operation.
|
||||
* If provided, map_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 map_token_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
|
||||
struct { /* anonymous struct used by BPF_MAP_*_ELEM and BPF_MAP_FREEZE commands */
|
||||
__u32 map_fd;
|
||||
__aligned_u64 key;
|
||||
union {
|
||||
|
@ -1452,6 +1573,20 @@ union bpf_attr {
|
|||
* truncated), or smaller (if log buffer wasn't filled completely).
|
||||
*/
|
||||
__u32 log_true_size;
|
||||
/* BPF token FD to use with BPF_PROG_LOAD operation.
|
||||
* If provided, prog_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 prog_token_fd;
|
||||
/* The fd_array_cnt can be used to pass the length of the
|
||||
* fd_array array. In this case all the [map] file descriptors
|
||||
* passed in this array will be bound to the program, even if
|
||||
* the maps are not referenced directly. The functionality is
|
||||
* similar to the BPF_PROG_BIND_MAP syscall, but maps can be
|
||||
* used by the verifier during the program load. If provided,
|
||||
* then the fd_array[0,...,fd_array_cnt-1] is expected to be
|
||||
* continuous.
|
||||
*/
|
||||
__u32 fd_array_cnt;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_OBJ_* commands */
|
||||
|
@ -1517,6 +1652,7 @@ union bpf_attr {
|
|||
};
|
||||
__u32 next_id;
|
||||
__u32 open_flags;
|
||||
__s32 fd_by_id_token_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_OBJ_GET_INFO_BY_FD */
|
||||
|
@ -1549,8 +1685,10 @@ union bpf_attr {
|
|||
} query;
|
||||
|
||||
struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */
|
||||
__u64 name;
|
||||
__u32 prog_fd;
|
||||
__u64 name;
|
||||
__u32 prog_fd;
|
||||
__u32 :32;
|
||||
__aligned_u64 cookie;
|
||||
} raw_tracepoint;
|
||||
|
||||
struct { /* anonymous struct for BPF_BTF_LOAD */
|
||||
|
@ -1564,6 +1702,11 @@ union bpf_attr {
|
|||
* truncated), or smaller (if log buffer wasn't filled completely).
|
||||
*/
|
||||
__u32 btf_log_true_size;
|
||||
__u32 btf_flags;
|
||||
/* BPF token FD to use with BPF_BTF_LOAD operation.
|
||||
* If provided, btf_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 btf_token_fd;
|
||||
};
|
||||
|
||||
struct {
|
||||
|
@ -1644,6 +1787,13 @@ union bpf_attr {
|
|||
__u32 flags;
|
||||
__u32 pid;
|
||||
} uprobe_multi;
|
||||
struct {
|
||||
union {
|
||||
__u32 relative_fd;
|
||||
__u32 relative_id;
|
||||
};
|
||||
__u64 expected_revision;
|
||||
} netkit;
|
||||
};
|
||||
} link_create;
|
||||
|
||||
|
@ -1687,6 +1837,11 @@ union bpf_attr {
|
|||
__u32 flags; /* extra flags */
|
||||
} prog_bind_map;
|
||||
|
||||
struct { /* struct used by BPF_TOKEN_CREATE command */
|
||||
__u32 flags;
|
||||
__u32 bpffs_fd;
|
||||
} token_create;
|
||||
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/* The description below is an attempt at providing documentation to eBPF
|
||||
|
@ -1834,15 +1989,21 @@ union bpf_attr {
|
|||
* program.
|
||||
* Return
|
||||
* The SMP id of the processor running the program.
|
||||
* Attributes
|
||||
* __bpf_fastcall
|
||||
*
|
||||
* long bpf_skb_store_bytes(struct sk_buff *skb, u32 offset, const void *from, u32 len, u64 flags)
|
||||
* Description
|
||||
* Store *len* bytes from address *from* into the packet
|
||||
* associated to *skb*, at *offset*. *flags* are a combination of
|
||||
* **BPF_F_RECOMPUTE_CSUM** (automatically recompute the
|
||||
* checksum for the packet after storing the bytes) and
|
||||
* **BPF_F_INVALIDATE_HASH** (set *skb*\ **->hash**, *skb*\
|
||||
* **->swhash** and *skb*\ **->l4hash** to 0).
|
||||
* associated to *skb*, at *offset*. The *flags* are a combination
|
||||
* of the following values:
|
||||
*
|
||||
* **BPF_F_RECOMPUTE_CSUM**
|
||||
* Automatically update *skb*\ **->csum** after storing the
|
||||
* bytes.
|
||||
* **BPF_F_INVALIDATE_HASH**
|
||||
* Set *skb*\ **->hash**, *skb*\ **->swhash** and *skb*\
|
||||
* **->l4hash** to 0.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
|
@ -1894,7 +2055,8 @@ union bpf_attr {
|
|||
* untouched (unless **BPF_F_MARK_ENFORCE** is added as well), and
|
||||
* for updates resulting in a null checksum the value is set to
|
||||
* **CSUM_MANGLED_0** instead. Flag **BPF_F_PSEUDO_HDR** indicates
|
||||
* the checksum is to be computed against a pseudo-header.
|
||||
* that the modified header field is part of the pseudo-header.
|
||||
* Flag **BPF_F_IPV6** should be set for IPv6 packets.
|
||||
*
|
||||
* This helper works in combination with **bpf_csum_diff**\ (),
|
||||
* which does not update the checksum in-place, but offers more
|
||||
|
@ -2697,8 +2859,8 @@ union bpf_attr {
|
|||
* *bpf_socket* should be one of the following:
|
||||
*
|
||||
* * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**
|
||||
* and **BPF_CGROUP_INET6_CONNECT**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**,
|
||||
* **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**.
|
||||
*
|
||||
* This helper actually implements a subset of **setsockopt()**.
|
||||
* It supports the following *level*\ s:
|
||||
|
@ -2715,7 +2877,7 @@ union bpf_attr {
|
|||
* **TCP_SYNCNT**, **TCP_USER_TIMEOUT**, **TCP_NOTSENT_LOWAT**,
|
||||
* **TCP_NODELAY**, **TCP_MAXSEG**, **TCP_WINDOW_CLAMP**,
|
||||
* **TCP_THIN_LINEAR_TIMEOUTS**, **TCP_BPF_DELACK_MAX**,
|
||||
* **TCP_BPF_RTO_MIN**.
|
||||
* **TCP_BPF_RTO_MIN**, **TCP_BPF_SOCK_OPS_CB_FLAGS**.
|
||||
* * **IPPROTO_IP**, which supports *optname* **IP_TOS**.
|
||||
* * **IPPROTO_IPV6**, which supports the following *optname*\ s:
|
||||
* **IPV6_TCLASS**, **IPV6_AUTOFLOWLABEL**.
|
||||
|
@ -2936,8 +3098,8 @@ union bpf_attr {
|
|||
* *bpf_socket* should be one of the following:
|
||||
*
|
||||
* * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**
|
||||
* and **BPF_CGROUP_INET6_CONNECT**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**,
|
||||
* **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**.
|
||||
*
|
||||
* This helper actually implements a subset of **getsockopt()**.
|
||||
* It supports the same set of *optname*\ s that is supported by
|
||||
|
@ -2965,10 +3127,6 @@ union bpf_attr {
|
|||
* with the **CONFIG_BPF_KPROBE_OVERRIDE** configuration
|
||||
* option, and in this case it only works on functions tagged with
|
||||
* **ALLOW_ERROR_INJECTION** in the kernel code.
|
||||
*
|
||||
* Also, the helper is only available for the architectures having
|
||||
* the CONFIG_FUNCTION_ERROR_INJECTION option. As of this writing,
|
||||
* x86 architecture is the only one to support this feature.
|
||||
* Return
|
||||
* 0
|
||||
*
|
||||
|
@ -3257,6 +3415,15 @@ union bpf_attr {
|
|||
* and *params*->smac will not be set as output. A common
|
||||
* use case is to call **bpf_redirect_neigh**\ () after
|
||||
* doing **bpf_fib_lookup**\ ().
|
||||
* **BPF_FIB_LOOKUP_SRC**
|
||||
* Derive and set source IP addr in *params*->ipv{4,6}_src
|
||||
* for the nexthop. If the src addr cannot be derived,
|
||||
* **BPF_FIB_LKUP_RET_NO_SRC_ADDR** is returned. In this
|
||||
* case, *params*->dmac and *params*->smac are not set either.
|
||||
* **BPF_FIB_LOOKUP_MARK**
|
||||
* Use the mark present in *params*->mark for the fib lookup.
|
||||
* This option should not be used with BPF_FIB_LOOKUP_DIRECT,
|
||||
* as it only has meaning for full lookups.
|
||||
*
|
||||
* *ctx* is either **struct xdp_md** for XDP programs or
|
||||
* **struct sk_buff** tc cls_act programs.
|
||||
|
@ -4490,6 +4657,8 @@ union bpf_attr {
|
|||
* long bpf_get_task_stack(struct task_struct *task, void *buf, u32 size, u64 flags)
|
||||
* Description
|
||||
* Return a user or a kernel stack in bpf program provided buffer.
|
||||
* Note: the user stack will only be populated if the *task* is
|
||||
* the current task; all other tasks will return -EOPNOTSUPP.
|
||||
* To achieve this, the helper needs *task*, which is a valid
|
||||
* pointer to **struct task_struct**. To store the stacktrace, the
|
||||
* bpf program provides *buf* with a nonnegative *size*.
|
||||
|
@ -4501,6 +4670,7 @@ union bpf_attr {
|
|||
*
|
||||
* **BPF_F_USER_STACK**
|
||||
* Collect a user space stack instead of a kernel stack.
|
||||
* The *task* must be the current task.
|
||||
* **BPF_F_USER_BUILD_ID**
|
||||
* Collect buildid+offset instead of ips for user stack,
|
||||
* only valid if **BPF_F_USER_STACK** is also specified.
|
||||
|
@ -4803,10 +4973,13 @@ union bpf_attr {
|
|||
* the netns switch takes place from ingress to ingress without
|
||||
* going through the CPU's backlog queue.
|
||||
*
|
||||
* *skb*\ **->mark** and *skb*\ **->tstamp** are not cleared during
|
||||
* the netns switch.
|
||||
*
|
||||
* The *flags* argument is reserved and must be 0. The helper is
|
||||
* currently only supported for tc BPF program types at the ingress
|
||||
* hook and for veth device types. The peer device must reside in a
|
||||
* different network namespace.
|
||||
* currently only supported for tc BPF program types at the
|
||||
* ingress hook and for veth and netkit target device types. The
|
||||
* peer device must reside in a different network namespace.
|
||||
* Return
|
||||
* The helper returns **TC_ACT_REDIRECT** on success or
|
||||
* **TC_ACT_SHOT** on error.
|
||||
|
@ -4882,7 +5055,7 @@ union bpf_attr {
|
|||
* bytes will be copied to *dst*
|
||||
* Return
|
||||
* The **hash_algo** is returned on success,
|
||||
* **-EOPNOTSUP** if IMA is disabled or **-EINVAL** if
|
||||
* **-EOPNOTSUPP** if IMA is disabled or **-EINVAL** if
|
||||
* invalid arguments are passed.
|
||||
*
|
||||
* struct socket *bpf_sock_from_file(struct file *file)
|
||||
|
@ -5089,6 +5262,8 @@ union bpf_attr {
|
|||
* **BPF_F_TIMER_ABS**
|
||||
* Start the timer in absolute expire value instead of the
|
||||
* default relative one.
|
||||
* **BPF_F_TIMER_CPU_PIN**
|
||||
* Timer will be pinned to the CPU of the caller.
|
||||
*
|
||||
* Return
|
||||
* 0 on success.
|
||||
|
@ -5219,7 +5394,7 @@ union bpf_attr {
|
|||
* Currently, the **flags** must be 0. Currently, nr_loops is
|
||||
* limited to 1 << 23 (~8 million) loops.
|
||||
*
|
||||
* long (\*callback_fn)(u32 index, void \*ctx);
|
||||
* long (\*callback_fn)(u64 index, void \*ctx);
|
||||
*
|
||||
* where **index** is the current index in the loop. The index
|
||||
* is zero-indexed.
|
||||
|
@ -5366,14 +5541,15 @@ union bpf_attr {
|
|||
* bytes will be copied to *dst*
|
||||
* Return
|
||||
* The **hash_algo** is returned on success,
|
||||
* **-EOPNOTSUP** if the hash calculation failed or **-EINVAL** if
|
||||
* **-EOPNOTSUPP** if the hash calculation failed or **-EINVAL** if
|
||||
* invalid arguments are passed.
|
||||
*
|
||||
* void *bpf_kptr_xchg(void *map_value, void *ptr)
|
||||
* void *bpf_kptr_xchg(void *dst, void *ptr)
|
||||
* Description
|
||||
* Exchange kptr at pointer *map_value* with *ptr*, and return the
|
||||
* old value. *ptr* can be NULL, otherwise it must be a referenced
|
||||
* pointer which will be released when this helper is called.
|
||||
* Exchange kptr at pointer *dst* with *ptr*, and return the old value.
|
||||
* *dst* can be map value or local kptr. *ptr* can be NULL, otherwise
|
||||
* it must be a referenced pointer which will be released when this helper
|
||||
* is called.
|
||||
* Return
|
||||
* The old value of kptr (which can be NULL). The returned pointer
|
||||
* if not NULL, is a reference which must be released using its
|
||||
|
@ -5856,7 +6032,10 @@ union bpf_attr {
|
|||
FN(user_ringbuf_drain, 209, ##ctx) \
|
||||
FN(cgrp_storage_get, 210, ##ctx) \
|
||||
FN(cgrp_storage_delete, 211, ##ctx) \
|
||||
/* */
|
||||
/* This helper list is effectively frozen. If you are trying to \
|
||||
* add a new helper, you should add a kfunc instead which has \
|
||||
* less stability guarantees. See Documentation/bpf/kfuncs.rst \
|
||||
*/
|
||||
|
||||
/* backwards-compatibility macros for users of __BPF_FUNC_MAPPER that don't
|
||||
* know or care about integer value that is now passed as second argument
|
||||
|
@ -5894,11 +6073,7 @@ enum {
|
|||
BPF_F_PSEUDO_HDR = (1ULL << 4),
|
||||
BPF_F_MARK_MANGLED_0 = (1ULL << 5),
|
||||
BPF_F_MARK_ENFORCE = (1ULL << 6),
|
||||
};
|
||||
|
||||
/* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */
|
||||
enum {
|
||||
BPF_F_INGRESS = (1ULL << 0),
|
||||
BPF_F_IPV6 = (1ULL << 7),
|
||||
};
|
||||
|
||||
/* BPF_FUNC_skb_set_tunnel_key and BPF_FUNC_skb_get_tunnel_key flags. */
|
||||
|
@ -6047,10 +6222,12 @@ enum {
|
|||
BPF_F_BPRM_SECUREEXEC = (1ULL << 0),
|
||||
};
|
||||
|
||||
/* Flags for bpf_redirect_map helper */
|
||||
/* Flags for bpf_redirect and bpf_redirect_map helpers */
|
||||
enum {
|
||||
BPF_F_BROADCAST = (1ULL << 3),
|
||||
BPF_F_EXCLUDE_INGRESS = (1ULL << 4),
|
||||
BPF_F_INGRESS = (1ULL << 0), /* used for skb path */
|
||||
BPF_F_BROADCAST = (1ULL << 3), /* used for XDP path */
|
||||
BPF_F_EXCLUDE_INGRESS = (1ULL << 4), /* used for XDP path */
|
||||
#define BPF_F_REDIRECT_FLAGS (BPF_F_INGRESS | BPF_F_BROADCAST | BPF_F_EXCLUDE_INGRESS)
|
||||
};
|
||||
|
||||
#define __bpf_md_ptr(type, name) \
|
||||
|
@ -6059,12 +6236,17 @@ union { \
|
|||
__u64 :64; \
|
||||
} __attribute__((aligned(8)))
|
||||
|
||||
/* The enum used in skb->tstamp_type. It specifies the clock type
|
||||
* of the time stored in the skb->tstamp.
|
||||
*/
|
||||
enum {
|
||||
BPF_SKB_TSTAMP_UNSPEC,
|
||||
BPF_SKB_TSTAMP_DELIVERY_MONO, /* tstamp has mono delivery time */
|
||||
/* For any BPF_SKB_TSTAMP_* that the bpf prog cannot handle,
|
||||
* the bpf prog should handle it like BPF_SKB_TSTAMP_UNSPEC
|
||||
* and try to deduce it by ingress, egress or skb->sk->sk_clockid.
|
||||
BPF_SKB_TSTAMP_UNSPEC = 0, /* DEPRECATED */
|
||||
BPF_SKB_TSTAMP_DELIVERY_MONO = 1, /* DEPRECATED */
|
||||
BPF_SKB_CLOCK_REALTIME = 0,
|
||||
BPF_SKB_CLOCK_MONOTONIC = 1,
|
||||
BPF_SKB_CLOCK_TAI = 2,
|
||||
/* For any future BPF_SKB_CLOCK_* that the bpf prog cannot handle,
|
||||
* the bpf prog can try to deduce it by ingress/egress/skb->sk->sk_clockid.
|
||||
*/
|
||||
};
|
||||
|
||||
|
@ -6450,7 +6632,7 @@ struct bpf_map_info {
|
|||
__u32 btf_id;
|
||||
__u32 btf_key_type_id;
|
||||
__u32 btf_value_type_id;
|
||||
__u32 :32; /* alignment pad */
|
||||
__u32 btf_vmlinux_id;
|
||||
__u64 map_extra;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
|
@ -6525,7 +6707,19 @@ struct bpf_link_info {
|
|||
__aligned_u64 addrs;
|
||||
__u32 count; /* in/out: kprobe_multi function count */
|
||||
__u32 flags;
|
||||
__u64 missed;
|
||||
__aligned_u64 cookies;
|
||||
} kprobe_multi;
|
||||
struct {
|
||||
__aligned_u64 path;
|
||||
__aligned_u64 offsets;
|
||||
__aligned_u64 ref_ctr_offsets;
|
||||
__aligned_u64 cookies;
|
||||
__u32 path_size; /* in/out: real path size on success, including zero byte */
|
||||
__u32 count; /* in/out: uprobe_multi offsets/ref_ctr_offsets/cookies count */
|
||||
__u32 flags;
|
||||
__u32 pid;
|
||||
} uprobe_multi;
|
||||
struct {
|
||||
__u32 type; /* enum bpf_perf_event_type */
|
||||
__u32 :32;
|
||||
|
@ -6534,20 +6728,28 @@ struct bpf_link_info {
|
|||
__aligned_u64 file_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 offset; /* offset from file_name */
|
||||
__u64 cookie;
|
||||
__u64 ref_ctr_offset;
|
||||
} uprobe; /* BPF_PERF_EVENT_UPROBE, BPF_PERF_EVENT_URETPROBE */
|
||||
struct {
|
||||
__aligned_u64 func_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 offset; /* offset from func_name */
|
||||
__u64 addr;
|
||||
__u64 missed;
|
||||
__u64 cookie;
|
||||
} kprobe; /* BPF_PERF_EVENT_KPROBE, BPF_PERF_EVENT_KRETPROBE */
|
||||
struct {
|
||||
__aligned_u64 tp_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 :32;
|
||||
__u64 cookie;
|
||||
} tracepoint; /* BPF_PERF_EVENT_TRACEPOINT */
|
||||
struct {
|
||||
__u64 config;
|
||||
__u32 type;
|
||||
__u32 :32;
|
||||
__u64 cookie;
|
||||
} event; /* BPF_PERF_EVENT_EVENT */
|
||||
};
|
||||
} perf_event;
|
||||
|
@ -6555,6 +6757,14 @@ struct bpf_link_info {
|
|||
__u32 ifindex;
|
||||
__u32 attach_type;
|
||||
} tcx;
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
__u32 attach_type;
|
||||
} netkit;
|
||||
struct {
|
||||
__u32 map_id;
|
||||
__u32 attach_type;
|
||||
} sockmap;
|
||||
};
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
|
@ -6721,6 +6931,12 @@ enum {
|
|||
BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7F,
|
||||
};
|
||||
|
||||
enum {
|
||||
SK_BPF_CB_TX_TIMESTAMPING = 1<<0,
|
||||
SK_BPF_CB_MASK = (SK_BPF_CB_TX_TIMESTAMPING - 1) |
|
||||
SK_BPF_CB_TX_TIMESTAMPING
|
||||
};
|
||||
|
||||
/* List of known BPF sock_ops operators.
|
||||
* New entries can only be added at the end
|
||||
*/
|
||||
|
@ -6773,6 +6989,8 @@ enum {
|
|||
* socket transition to LISTEN state.
|
||||
*/
|
||||
BPF_SOCK_OPS_RTT_CB, /* Called on every RTT.
|
||||
* Arg1: measured RTT input (mrtt)
|
||||
* Arg2: updated srtt
|
||||
*/
|
||||
BPF_SOCK_OPS_PARSE_HDR_OPT_CB, /* Parse the header option.
|
||||
* It will be called to handle
|
||||
|
@ -6831,6 +7049,29 @@ enum {
|
|||
* by the kernel or the
|
||||
* earlier bpf-progs.
|
||||
*/
|
||||
BPF_SOCK_OPS_TSTAMP_SCHED_CB, /* Called when skb is passing
|
||||
* through dev layer when
|
||||
* SK_BPF_CB_TX_TIMESTAMPING
|
||||
* feature is on.
|
||||
*/
|
||||
BPF_SOCK_OPS_TSTAMP_SND_SW_CB, /* Called when skb is about to send
|
||||
* to the nic when SK_BPF_CB_TX_TIMESTAMPING
|
||||
* feature is on.
|
||||
*/
|
||||
BPF_SOCK_OPS_TSTAMP_SND_HW_CB, /* Called in hardware phase when
|
||||
* SK_BPF_CB_TX_TIMESTAMPING feature
|
||||
* is on.
|
||||
*/
|
||||
BPF_SOCK_OPS_TSTAMP_ACK_CB, /* Called when all the skbs in the
|
||||
* same sendmsg call are acked
|
||||
* when SK_BPF_CB_TX_TIMESTAMPING
|
||||
* feature is on.
|
||||
*/
|
||||
BPF_SOCK_OPS_TSTAMP_SENDMSG_CB, /* Called when every sendmsg syscall
|
||||
* is triggered. It's used to correlate
|
||||
* sendmsg timestamp with corresponding
|
||||
* tskey.
|
||||
*/
|
||||
};
|
||||
|
||||
/* List of TCP states. There is a build check in net/ipv4/tcp.c to detect
|
||||
|
@ -6851,6 +7092,7 @@ enum {
|
|||
BPF_TCP_LISTEN,
|
||||
BPF_TCP_CLOSING, /* Now a valid state */
|
||||
BPF_TCP_NEW_SYN_RECV,
|
||||
BPF_TCP_BOUND_INACTIVE,
|
||||
|
||||
BPF_TCP_MAX_STATES /* Leave at the end! */
|
||||
};
|
||||
|
@ -6895,6 +7137,8 @@ enum {
|
|||
TCP_BPF_SYN = 1005, /* Copy the TCP header */
|
||||
TCP_BPF_SYN_IP = 1006, /* Copy the IP[46] and TCP header */
|
||||
TCP_BPF_SYN_MAC = 1007, /* Copy the MAC, IP[46], and TCP header */
|
||||
TCP_BPF_SOCK_OPS_CB_FLAGS = 1008, /* Get or Set TCP sock ops flags */
|
||||
SK_BPF_CB_FLAGS = 1009, /* Get or set sock ops flags in socket */
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -6953,6 +7197,8 @@ enum {
|
|||
BPF_FIB_LOOKUP_OUTPUT = (1U << 1),
|
||||
BPF_FIB_LOOKUP_SKIP_NEIGH = (1U << 2),
|
||||
BPF_FIB_LOOKUP_TBID = (1U << 3),
|
||||
BPF_FIB_LOOKUP_SRC = (1U << 4),
|
||||
BPF_FIB_LOOKUP_MARK = (1U << 5),
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -6965,6 +7211,7 @@ enum {
|
|||
BPF_FIB_LKUP_RET_UNSUPP_LWT, /* fwd requires encapsulation */
|
||||
BPF_FIB_LKUP_RET_NO_NEIGH, /* no neighbor entry for nh */
|
||||
BPF_FIB_LKUP_RET_FRAG_NEEDED, /* fragmentation required to fwd */
|
||||
BPF_FIB_LKUP_RET_NO_SRC_ADDR, /* failed to derive IP src addr */
|
||||
};
|
||||
|
||||
struct bpf_fib_lookup {
|
||||
|
@ -6984,7 +7231,7 @@ struct bpf_fib_lookup {
|
|||
|
||||
/* output: MTU value */
|
||||
__u16 mtu_result;
|
||||
};
|
||||
} __attribute__((packed, aligned(2)));
|
||||
/* input: L3 device index for lookup
|
||||
* output: device index from FIB lookup
|
||||
*/
|
||||
|
@ -6999,6 +7246,9 @@ struct bpf_fib_lookup {
|
|||
__u32 rt_metric;
|
||||
};
|
||||
|
||||
/* input: source address to consider for lookup
|
||||
* output: source address result from lookup
|
||||
*/
|
||||
union {
|
||||
__be32 ipv4_src;
|
||||
__u32 ipv6_src[4]; /* in6_addr; network order */
|
||||
|
@ -7026,8 +7276,19 @@ struct bpf_fib_lookup {
|
|||
__u32 tbid;
|
||||
};
|
||||
|
||||
__u8 smac[6]; /* ETH_ALEN */
|
||||
__u8 dmac[6]; /* ETH_ALEN */
|
||||
union {
|
||||
/* input */
|
||||
struct {
|
||||
__u32 mark; /* policy routing */
|
||||
/* 2 4-byte holes for input */
|
||||
};
|
||||
|
||||
/* output: source and dest mac */
|
||||
struct {
|
||||
__u8 smac[6]; /* ETH_ALEN */
|
||||
__u8 dmac[6]; /* ETH_ALEN */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
struct bpf_redir_neigh {
|
||||
|
@ -7111,40 +7372,35 @@ struct bpf_spin_lock {
|
|||
};
|
||||
|
||||
struct bpf_timer {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_wq {
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_dynptr {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_list_head {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_list_node {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[3];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_rb_root {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_rb_node {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[4];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_refcount {
|
||||
__u32 :32;
|
||||
__u32 __opaque[1];
|
||||
} __attribute__((aligned(4)));
|
||||
|
||||
struct bpf_sysctl {
|
||||
|
@ -7300,9 +7556,11 @@ struct bpf_core_relo {
|
|||
* Flags to control bpf_timer_start() behaviour.
|
||||
* - BPF_F_TIMER_ABS: Timeout passed is absolute time, by default it is
|
||||
* relative to current time.
|
||||
* - BPF_F_TIMER_CPU_PIN: Timer will be pinned to the CPU of the caller.
|
||||
*/
|
||||
enum {
|
||||
BPF_F_TIMER_ABS = (1ULL << 0),
|
||||
BPF_F_TIMER_CPU_PIN = (1ULL << 1),
|
||||
};
|
||||
|
||||
/* BPF numbers iterator state */
|
||||
|
@ -7313,4 +7571,13 @@ struct bpf_iter_num {
|
|||
__u64 __opaque[1];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/*
|
||||
* Flags to control BPF kfunc behaviour.
|
||||
* - BPF_F_PAD_ZEROS: Pad destination buffer with zeros. (See the respective
|
||||
* helper documentation for details.)
|
||||
*/
|
||||
enum bpf_kfunc_flags {
|
||||
BPF_F_PAD_ZEROS = (1ULL << 0),
|
||||
};
|
||||
|
||||
#endif /* __LINUX_BPF_H__ */
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BPFILTER_H
|
||||
#define _LINUX_BPFILTER_H
|
||||
|
||||
#include <linux/if.h>
|
||||
|
||||
enum {
|
||||
BPFILTER_IPT_SO_SET_REPLACE = 64,
|
||||
BPFILTER_IPT_SO_SET_ADD_COUNTERS = 65,
|
||||
BPFILTER_IPT_SET_MAX,
|
||||
};
|
||||
|
||||
enum {
|
||||
BPFILTER_IPT_SO_GET_INFO = 64,
|
||||
BPFILTER_IPT_SO_GET_ENTRIES = 65,
|
||||
BPFILTER_IPT_SO_GET_REVISION_MATCH = 66,
|
||||
BPFILTER_IPT_SO_GET_REVISION_TARGET = 67,
|
||||
BPFILTER_IPT_GET_MAX,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_BPFILTER_H */
|
|
@ -36,7 +36,8 @@ struct btf_type {
|
|||
* bits 24-28: kind (e.g. int, ptr, array...etc)
|
||||
* bits 29-30: unused
|
||||
* bit 31: kind_flag, currently used by
|
||||
* struct, union, enum, fwd and enum64
|
||||
* struct, union, enum, fwd, enum64,
|
||||
* decl_tag and type_tag
|
||||
*/
|
||||
__u32 info;
|
||||
/* "size" is used by INT, ENUM, STRUCT, UNION, DATASEC and ENUM64.
|
||||
|
|
|
@ -90,6 +90,7 @@ struct btrfs_qgroup_limit {
|
|||
* struct btrfs_qgroup_inherit.flags
|
||||
*/
|
||||
#define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0)
|
||||
#define BTRFS_QGROUP_INHERIT_FLAGS_SUPP (BTRFS_QGROUP_INHERIT_SET_LIMITS)
|
||||
|
||||
struct btrfs_qgroup_inherit {
|
||||
__u64 flags;
|
||||
|
@ -331,6 +332,8 @@ struct btrfs_ioctl_fs_info_args {
|
|||
#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
|
||||
#define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
|
||||
#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
|
||||
#define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14)
|
||||
#define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16)
|
||||
|
||||
struct btrfs_ioctl_feature_flags {
|
||||
__u64 compat_flags;
|
||||
|
@ -610,6 +613,11 @@ struct btrfs_ioctl_clone_range_args {
|
|||
*/
|
||||
#define BTRFS_DEFRAG_RANGE_COMPRESS 1
|
||||
#define BTRFS_DEFRAG_RANGE_START_IO 2
|
||||
#define BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL 4
|
||||
#define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \
|
||||
BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL | \
|
||||
BTRFS_DEFRAG_RANGE_START_IO)
|
||||
|
||||
struct btrfs_ioctl_defrag_range_args {
|
||||
/* start of the defrag operation */
|
||||
__u64 start;
|
||||
|
@ -632,10 +640,18 @@ struct btrfs_ioctl_defrag_range_args {
|
|||
|
||||
/*
|
||||
* which compression method to use if turning on compression
|
||||
* for this defrag operation. If unspecified, zlib will
|
||||
* be used
|
||||
* for this defrag operation. If unspecified, zlib will be
|
||||
* used. If compression level is also being specified, set the
|
||||
* BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL flag and fill the compress
|
||||
* member structure instead of the compress_type field.
|
||||
*/
|
||||
__u32 compress_type;
|
||||
union {
|
||||
__u32 compress_type;
|
||||
struct {
|
||||
__u8 type;
|
||||
__s8 level;
|
||||
} compress;
|
||||
};
|
||||
|
||||
/* spare for later */
|
||||
__u32 unused[4];
|
||||
|
@ -751,6 +767,7 @@ struct btrfs_ioctl_get_dev_stats {
|
|||
#define BTRFS_QUOTA_CTL_ENABLE 1
|
||||
#define BTRFS_QUOTA_CTL_DISABLE 2
|
||||
#define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
|
||||
#define BTRFS_QUOTA_CTL_ENABLE_SIMPLE_QUOTA 4
|
||||
struct btrfs_ioctl_quota_ctl_args {
|
||||
__u64 cmd;
|
||||
__u64 status;
|
||||
|
@ -1040,6 +1057,29 @@ struct btrfs_ioctl_encoded_io_args {
|
|||
#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
|
||||
#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
|
||||
|
||||
/*
|
||||
* Wait for subvolume cleaning process. This queries the kernel queue and it
|
||||
* can change between the calls.
|
||||
*
|
||||
* - FOR_ONE - specify the subvolid
|
||||
* - FOR_QUEUED - wait for all currently queued
|
||||
* - COUNT - count number of queued
|
||||
* - PEEK_FIRST - read which is the first in the queue (to be cleaned or being
|
||||
* cleaned already), or 0 if the queue is empty
|
||||
* - PEEK_LAST - read the last subvolid in the queue, or 0 if the queue is empty
|
||||
*/
|
||||
struct btrfs_ioctl_subvol_wait {
|
||||
__u64 subvolid;
|
||||
__u32 mode;
|
||||
__u32 count;
|
||||
};
|
||||
|
||||
#define BTRFS_SUBVOL_SYNC_WAIT_FOR_ONE (0)
|
||||
#define BTRFS_SUBVOL_SYNC_WAIT_FOR_QUEUED (1)
|
||||
#define BTRFS_SUBVOL_SYNC_COUNT (2)
|
||||
#define BTRFS_SUBVOL_SYNC_PEEK_FIRST (3)
|
||||
#define BTRFS_SUBVOL_SYNC_PEEK_LAST (4)
|
||||
|
||||
/* Error codes as returned by the kernel */
|
||||
enum btrfs_err_code {
|
||||
BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
|
||||
|
@ -1172,6 +1212,8 @@ enum btrfs_err_code {
|
|||
struct btrfs_ioctl_encoded_io_args)
|
||||
#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, \
|
||||
struct btrfs_ioctl_encoded_io_args)
|
||||
#define BTRFS_IOC_SUBVOL_SYNC_WAIT _IOW(BTRFS_IOCTL_MAGIC, 65, \
|
||||
struct btrfs_ioctl_subvol_wait)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -69,6 +69,9 @@
|
|||
/* Holds the block group items for extent tree v2. */
|
||||
#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
|
||||
|
||||
/* Tracks RAID stripes in block groups. */
|
||||
#define BTRFS_RAID_STRIPE_TREE_OBJECTID 12ULL
|
||||
|
||||
/* device stats in the device tree */
|
||||
#define BTRFS_DEV_STATS_OBJECTID 0ULL
|
||||
|
||||
|
@ -212,6 +215,22 @@
|
|||
*/
|
||||
#define BTRFS_METADATA_ITEM_KEY 169
|
||||
|
||||
/*
|
||||
* Special __inline__ ref key which stores the id of the subvolume which originally
|
||||
* created the extent. This subvolume owns the extent permanently from the
|
||||
* perspective of simple quotas. Needed to know which subvolume to free quota
|
||||
* usage from when the extent is deleted.
|
||||
*
|
||||
* Stored as an __inline__ ref rather to avoid wasting space on a separate item on
|
||||
* top of the existing extent item. However, unlike the other __inline__ refs,
|
||||
* there is one one owner ref per extent rather than one per extent.
|
||||
*
|
||||
* Because of this, it goes at the front of the list of __inline__ refs, and thus
|
||||
* must have a lower type value than any other __inline__ ref type (to satisfy the
|
||||
* disk format rule that __inline__ refs have non-decreasing type).
|
||||
*/
|
||||
#define BTRFS_EXTENT_OWNER_REF_KEY 172
|
||||
|
||||
#define BTRFS_TREE_BLOCK_REF_KEY 176
|
||||
|
||||
#define BTRFS_EXTENT_DATA_REF_KEY 178
|
||||
|
@ -257,6 +276,8 @@
|
|||
#define BTRFS_DEV_ITEM_KEY 216
|
||||
#define BTRFS_CHUNK_ITEM_KEY 228
|
||||
|
||||
#define BTRFS_RAID_STRIPE_KEY 230
|
||||
|
||||
/*
|
||||
* Records the overall state of the qgroups.
|
||||
* There's only one instance of this key present,
|
||||
|
@ -715,6 +736,18 @@ struct btrfs_free_space_header {
|
|||
__le64 num_bitmaps;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_raid_stride {
|
||||
/* The id of device this raid extent lives on. */
|
||||
__le64 devid;
|
||||
/* The physical location on disk. */
|
||||
__le64 physical;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_stripe_extent {
|
||||
/* An array of raid strides this stripe is composed of. */
|
||||
__DECLARE_FLEX_ARRAY(struct btrfs_raid_stride, strides);
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_HEADER_FLAG_WRITTEN (1ULL << 0)
|
||||
#define BTRFS_HEADER_FLAG_RELOC (1ULL << 1)
|
||||
|
||||
|
@ -728,6 +761,14 @@ struct btrfs_free_space_header {
|
|||
#define BTRFS_SUPER_FLAG_CHANGING_FSID (1ULL << 35)
|
||||
#define BTRFS_SUPER_FLAG_CHANGING_FSID_V2 (1ULL << 36)
|
||||
|
||||
/*
|
||||
* Those are temporaray flags utilized by btrfs-progs to do offline conversion.
|
||||
* They are rejected by kernel.
|
||||
* But still keep them all here to avoid conflicts.
|
||||
*/
|
||||
#define BTRFS_SUPER_FLAG_CHANGING_BG_TREE (1ULL << 38)
|
||||
#define BTRFS_SUPER_FLAG_CHANGING_DATA_CSUM (1ULL << 39)
|
||||
#define BTRFS_SUPER_FLAG_CHANGING_META_CSUM (1ULL << 40)
|
||||
|
||||
/*
|
||||
* items in the extent btree are used to record the objectid of the
|
||||
|
@ -783,6 +824,10 @@ struct btrfs_shared_data_ref {
|
|||
__le32 count;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_owner_ref {
|
||||
__le64 root_id;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_inline_ref {
|
||||
__u8 type;
|
||||
__le64 offset;
|
||||
|
@ -1200,9 +1245,17 @@ static __inline__ __u16 btrfs_qgroup_level(__u64 qgroupid)
|
|||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
|
||||
|
||||
/*
|
||||
* Whether or not this filesystem is using simple quotas. Not exactly the
|
||||
* incompat bit, because we support using simple quotas, disabling it, then
|
||||
* going back to full qgroup quotas.
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE (1ULL << 3)
|
||||
|
||||
#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_RESCAN | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
|
||||
BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE)
|
||||
|
||||
#define BTRFS_QGROUP_STATUS_VERSION 1
|
||||
|
||||
|
@ -1224,6 +1277,15 @@ struct btrfs_qgroup_status_item {
|
|||
* of the scan. It contains a logical address
|
||||
*/
|
||||
__le64 rescan;
|
||||
|
||||
/*
|
||||
* The generation when quotas were last enabled. Used by simple quotas to
|
||||
* avoid decrementing when freeing an extent that was written before
|
||||
* enable.
|
||||
*
|
||||
* Set only if flags contain BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE.
|
||||
*/
|
||||
__le64 enable_gen;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_qgroup_info_item {
|
||||
|
|
|
@ -182,7 +182,7 @@ struct canfd_frame {
|
|||
/*
|
||||
* defined bits for canxl_frame.flags
|
||||
*
|
||||
* The canxl_frame.flags element contains two bits CANXL_XLF and CANXL_SEC
|
||||
* The canxl_frame.flags element contains three bits CANXL_[XLF|SEC|RRS]
|
||||
* and shares the relative position of the struct can[fd]_frame.len element.
|
||||
* The CANXL_XLF bit ALWAYS needs to be set to indicate a valid CAN XL frame.
|
||||
* As a side effect setting this bit intentionally breaks the length checks
|
||||
|
@ -192,10 +192,16 @@ struct canfd_frame {
|
|||
*/
|
||||
#define CANXL_XLF 0x80 /* mandatory CAN XL frame flag (must always be set!) */
|
||||
#define CANXL_SEC 0x01 /* Simple Extended Content (security/segmentation) */
|
||||
#define CANXL_RRS 0x02 /* Remote Request Substitution */
|
||||
|
||||
/* the 8-bit VCID is optionally placed in the canxl_frame.prio element */
|
||||
#define CANXL_VCID_OFFSET 16 /* bit offset of VCID in prio element */
|
||||
#define CANXL_VCID_VAL_MASK 0xFFUL /* VCID is an 8-bit value */
|
||||
#define CANXL_VCID_MASK (CANXL_VCID_VAL_MASK << CANXL_VCID_OFFSET)
|
||||
|
||||
/**
|
||||
* struct canxl_frame - CAN with e'X'tended frame 'L'ength frame structure
|
||||
* @prio: 11 bit arbitration priority with zero'ed CAN_*_FLAG flags
|
||||
* @prio: 11 bit arbitration priority with zero'ed CAN_*_FLAG flags / VCID
|
||||
* @flags: additional flags for CAN XL
|
||||
* @sdt: SDU (service data unit) type
|
||||
* @len: frame payload length in byte (CANXL_MIN_DLEN .. CANXL_MAX_DLEN)
|
||||
|
@ -205,7 +211,7 @@ struct canfd_frame {
|
|||
* @prio shares the same position as @can_id from struct can[fd]_frame.
|
||||
*/
|
||||
struct canxl_frame {
|
||||
canid_t prio; /* 11 bit priority for arbitration (canid_t) */
|
||||
canid_t prio; /* 11 bit priority for arbitration / 8 bit VCID */
|
||||
__u8 flags; /* additional flags for CAN XL */
|
||||
__u8 sdt; /* SDU (service data unit) type */
|
||||
__u16 len; /* frame payload length in byte */
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/*
|
||||
* linux/can/isotp.h
|
||||
*
|
||||
* Definitions for isotp CAN sockets (ISO 15765-2:2016)
|
||||
* Definitions for ISO 15765-2 CAN transport protocol sockets
|
||||
*
|
||||
* Copyright (c) 2020 Volkswagen Group Electronic Research
|
||||
* All rights reserved.
|
||||
|
@ -137,6 +137,7 @@ struct can_isotp_ll_options {
|
|||
#define CAN_ISOTP_WAIT_TX_DONE 0x0400 /* wait for tx completion */
|
||||
#define CAN_ISOTP_SF_BROADCAST 0x0800 /* 1-to-N functional addressing */
|
||||
#define CAN_ISOTP_CF_BROADCAST 0x1000 /* 1-to-N transmission w/o FC */
|
||||
#define CAN_ISOTP_DYN_FC_PARMS 0x2000 /* dynamic FC parameters BS/STmin */
|
||||
|
||||
/* protocol machine default values */
|
||||
|
||||
|
|
|
@ -65,6 +65,22 @@ enum {
|
|||
CAN_RAW_FD_FRAMES, /* allow CAN FD frames (default:off) */
|
||||
CAN_RAW_JOIN_FILTERS, /* all filters must match to trigger */
|
||||
CAN_RAW_XL_FRAMES, /* allow CAN XL frames (default:off) */
|
||||
CAN_RAW_XL_VCID_OPTS, /* CAN XL VCID configuration options */
|
||||
};
|
||||
|
||||
/* configuration for CAN XL virtual CAN identifier (VCID) handling */
|
||||
struct can_raw_vcid_options {
|
||||
|
||||
__u8 flags; /* flags for vcid (filter) behaviour */
|
||||
__u8 tx_vcid; /* VCID value set into canxl_frame.prio */
|
||||
__u8 rx_vcid; /* VCID value for VCID filter */
|
||||
__u8 rx_vcid_mask; /* VCID mask for VCID filter */
|
||||
|
||||
};
|
||||
|
||||
/* can_raw_vcid_options.flags for CAN XL virtual CAN identifier handling */
|
||||
#define CAN_RAW_XL_VCID_TX_SET 0x01
|
||||
#define CAN_RAW_XL_VCID_TX_PASS 0x02
|
||||
#define CAN_RAW_XL_VCID_RX_FILTER 0x04
|
||||
|
||||
#endif /* !_UAPI_CAN_RAW_H */
|
||||
|
|
|
@ -273,6 +273,7 @@ struct vfs_ns_cap_data {
|
|||
/* Allow setting encryption key on loopback filesystem */
|
||||
/* Allow setting zone reclaim policy */
|
||||
/* Allow everything under CAP_BPF and CAP_PERFMON for backward compatibility */
|
||||
/* Allow setting hardware protection emergency action */
|
||||
|
||||
#define CAP_SYS_ADMIN 21
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
static __inline__ void cec_msg_active_source(struct cec_msg *msg, __u16 phys_addr)
|
||||
{
|
||||
msg->len = 4;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_ACTIVE_SOURCE;
|
||||
msg->msg[2] = phys_addr >> 8;
|
||||
msg->msg[3] = phys_addr & 0xff;
|
||||
|
@ -59,7 +59,7 @@ static __inline__ void cec_msg_request_active_source(struct cec_msg *msg,
|
|||
int reply)
|
||||
{
|
||||
msg->len = 2;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_REQUEST_ACTIVE_SOURCE;
|
||||
msg->reply = reply ? CEC_MSG_ACTIVE_SOURCE : 0;
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ static __inline__ void cec_msg_routing_information(struct cec_msg *msg,
|
|||
__u16 phys_addr)
|
||||
{
|
||||
msg->len = 4;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_ROUTING_INFORMATION;
|
||||
msg->msg[2] = phys_addr >> 8;
|
||||
msg->msg[3] = phys_addr & 0xff;
|
||||
|
@ -86,7 +86,7 @@ static __inline__ void cec_msg_routing_change(struct cec_msg *msg,
|
|||
__u16 new_phys_addr)
|
||||
{
|
||||
msg->len = 6;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_ROUTING_CHANGE;
|
||||
msg->msg[2] = orig_phys_addr >> 8;
|
||||
msg->msg[3] = orig_phys_addr & 0xff;
|
||||
|
@ -106,7 +106,7 @@ static __inline__ void cec_ops_routing_change(const struct cec_msg *msg,
|
|||
static __inline__ void cec_msg_set_stream_path(struct cec_msg *msg, __u16 phys_addr)
|
||||
{
|
||||
msg->len = 4;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_SET_STREAM_PATH;
|
||||
msg->msg[2] = phys_addr >> 8;
|
||||
msg->msg[3] = phys_addr & 0xff;
|
||||
|
@ -791,7 +791,7 @@ static __inline__ void cec_msg_report_physical_addr(struct cec_msg *msg,
|
|||
__u16 phys_addr, __u8 prim_devtype)
|
||||
{
|
||||
msg->len = 5;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_REPORT_PHYSICAL_ADDR;
|
||||
msg->msg[2] = phys_addr >> 8;
|
||||
msg->msg[3] = phys_addr & 0xff;
|
||||
|
@ -817,7 +817,7 @@ static __inline__ void cec_msg_set_menu_language(struct cec_msg *msg,
|
|||
const char *language)
|
||||
{
|
||||
msg->len = 5;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_SET_MENU_LANGUAGE;
|
||||
memcpy(msg->msg + 2, language, 3);
|
||||
}
|
||||
|
@ -850,7 +850,7 @@ static __inline__ void cec_msg_report_features(struct cec_msg *msg,
|
|||
__u8 rc_profile, __u8 dev_features)
|
||||
{
|
||||
msg->len = 6;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_REPORT_FEATURES;
|
||||
msg->msg[2] = cec_version;
|
||||
msg->msg[3] = all_device_types;
|
||||
|
@ -1092,7 +1092,7 @@ static __inline__ void cec_msg_tuner_step_increment(struct cec_msg *msg)
|
|||
static __inline__ void cec_msg_device_vendor_id(struct cec_msg *msg, __u32 vendor_id)
|
||||
{
|
||||
msg->len = 5;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_DEVICE_VENDOR_ID;
|
||||
msg->msg[2] = vendor_id >> 16;
|
||||
msg->msg[3] = (vendor_id >> 8) & 0xff;
|
||||
|
@ -1655,7 +1655,7 @@ static __inline__ void cec_msg_report_current_latency(struct cec_msg *msg,
|
|||
__u8 audio_out_delay)
|
||||
{
|
||||
msg->len = 6;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_REPORT_CURRENT_LATENCY;
|
||||
msg->msg[2] = phys_addr >> 8;
|
||||
msg->msg[3] = phys_addr & 0xff;
|
||||
|
@ -1687,7 +1687,7 @@ static __inline__ void cec_msg_request_current_latency(struct cec_msg *msg,
|
|||
__u16 phys_addr)
|
||||
{
|
||||
msg->len = 4;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_REQUEST_CURRENT_LATENCY;
|
||||
msg->msg[2] = phys_addr >> 8;
|
||||
msg->msg[3] = phys_addr & 0xff;
|
||||
|
@ -1707,7 +1707,7 @@ static __inline__ void cec_msg_cdc_hec_inquire_state(struct cec_msg *msg,
|
|||
__u16 phys_addr2)
|
||||
{
|
||||
msg->len = 9;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HEC_INQUIRE_STATE;
|
||||
|
@ -1737,7 +1737,7 @@ static __inline__ void cec_msg_cdc_hec_report_state(struct cec_msg *msg,
|
|||
__u16 hec_field)
|
||||
{
|
||||
msg->len = has_field ? 10 : 8;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HEC_REPORT_STATE;
|
||||
|
@ -1782,7 +1782,7 @@ static __inline__ void cec_msg_cdc_hec_set_state(struct cec_msg *msg,
|
|||
__u16 phys_addr5)
|
||||
{
|
||||
msg->len = 10;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HEC_INQUIRE_STATE;
|
||||
|
@ -1832,7 +1832,7 @@ static __inline__ void cec_msg_cdc_hec_set_state_adjacent(struct cec_msg *msg,
|
|||
__u8 hec_set_state)
|
||||
{
|
||||
msg->len = 8;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HEC_SET_STATE_ADJACENT;
|
||||
|
@ -1857,7 +1857,7 @@ static __inline__ void cec_msg_cdc_hec_request_deactivation(struct cec_msg *msg,
|
|||
__u16 phys_addr3)
|
||||
{
|
||||
msg->len = 11;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HEC_REQUEST_DEACTIVATION;
|
||||
|
@ -1884,7 +1884,7 @@ static __inline__ void cec_ops_cdc_hec_request_deactivation(const struct cec_msg
|
|||
static __inline__ void cec_msg_cdc_hec_notify_alive(struct cec_msg *msg)
|
||||
{
|
||||
msg->len = 5;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HEC_NOTIFY_ALIVE;
|
||||
|
@ -1899,7 +1899,7 @@ static __inline__ void cec_ops_cdc_hec_notify_alive(const struct cec_msg *msg,
|
|||
static __inline__ void cec_msg_cdc_hec_discover(struct cec_msg *msg)
|
||||
{
|
||||
msg->len = 5;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HEC_DISCOVER;
|
||||
|
@ -1916,7 +1916,7 @@ static __inline__ void cec_msg_cdc_hpd_set_state(struct cec_msg *msg,
|
|||
__u8 hpd_state)
|
||||
{
|
||||
msg->len = 6;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HPD_SET_STATE;
|
||||
|
@ -1938,7 +1938,7 @@ static __inline__ void cec_msg_cdc_hpd_report_state(struct cec_msg *msg,
|
|||
__u8 hpd_error)
|
||||
{
|
||||
msg->len = 6;
|
||||
msg->msg[0] |= 0xf; /* broadcast */
|
||||
msg->msg[0] |= CEC_LOG_ADDR_BROADCAST;
|
||||
msg->msg[1] = CEC_MSG_CDC_MESSAGE;
|
||||
/* msg[2] and msg[3] (phys_addr) are filled in by the CEC framework */
|
||||
msg->msg[4] = CEC_MSG_CDC_HPD_REPORT_STATE;
|
||||
|
|
|
@ -132,6 +132,8 @@ static __inline__ void cec_msg_init(struct cec_msg *msg,
|
|||
* Set the msg destination to the orig initiator and the msg initiator to the
|
||||
* orig destination. Note that msg and orig may be the same pointer, in which
|
||||
* case the change is done in place.
|
||||
*
|
||||
* It also zeroes the reply, timeout and flags fields.
|
||||
*/
|
||||
static __inline__ void cec_msg_set_reply_to(struct cec_msg *msg,
|
||||
struct cec_msg *orig)
|
||||
|
@ -139,7 +141,9 @@ static __inline__ void cec_msg_set_reply_to(struct cec_msg *msg,
|
|||
/* The destination becomes the initiator and vice versa */
|
||||
msg->msg[0] = (cec_msg_destination(orig) << 4) |
|
||||
cec_msg_initiator(orig);
|
||||
msg->reply = msg->timeout = 0;
|
||||
msg->reply = 0;
|
||||
msg->timeout = 0;
|
||||
msg->flags = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -165,6 +169,7 @@ static __inline__ int cec_msg_recv_is_rx_result(const struct cec_msg *msg)
|
|||
/* cec_msg flags field */
|
||||
#define CEC_MSG_FL_REPLY_TO_FOLLOWERS (1 << 0)
|
||||
#define CEC_MSG_FL_RAW (1 << 1)
|
||||
#define CEC_MSG_FL_REPLY_VENDOR_ID (1 << 2)
|
||||
|
||||
/* cec_msg tx/rx_status field */
|
||||
#define CEC_TX_STATUS_OK (1 << 0)
|
||||
|
@ -339,6 +344,8 @@ static __inline__ int cec_is_unconfigured(__u16 log_addr_mask)
|
|||
#define CEC_CAP_MONITOR_PIN (1 << 7)
|
||||
/* CEC_ADAP_G_CONNECTOR_INFO is available */
|
||||
#define CEC_CAP_CONNECTOR_INFO (1 << 8)
|
||||
/* CEC_MSG_FL_REPLY_VENDOR_ID is available */
|
||||
#define CEC_CAP_REPLY_VENDOR_ID (1 << 9)
|
||||
|
||||
/**
|
||||
* struct cec_caps - CEC capabilities structure.
|
||||
|
|
|
@ -69,8 +69,7 @@ struct proc_input {
|
|||
|
||||
static __inline__ enum proc_cn_event valid_event(enum proc_cn_event ev_type)
|
||||
{
|
||||
ev_type &= PROC_EVENT_ALL;
|
||||
return ev_type;
|
||||
return (enum proc_cn_event)(ev_type & PROC_EVENT_ALL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -28,6 +28,23 @@
|
|||
#define _BITUL(x) (_UL(1) << (x))
|
||||
#define _BITULL(x) (_ULL(1) << (x))
|
||||
|
||||
#if !defined(__ASSEMBLY__)
|
||||
/*
|
||||
* Missing __asm__ support
|
||||
*
|
||||
* __BIT128() would not work in the __asm__ code, as it shifts an
|
||||
* 'unsigned __int128' data type as direct representation of
|
||||
* 128 bit constants is not supported in the gcc compiler, as
|
||||
* they get silently truncated.
|
||||
*
|
||||
* TODO: Please revisit this implementation when gcc compiler
|
||||
* starts representing 128 bit constants directly like long
|
||||
* and unsigned long etc. Subsequently drop the comment for
|
||||
* GENMASK_U128() which would then start supporting __asm__ code.
|
||||
*/
|
||||
#define _BIT128(x) ((unsigned __int128)(1) << (x))
|
||||
#endif
|
||||
|
||||
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (__typeof__(x))(a) - 1)
|
||||
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ enum counter_scope {
|
|||
*
|
||||
* For example, if the Count 2 ceiling extension of Counter device 4 is desired,
|
||||
* set type equal to COUNTER_COMPONENT_EXTENSION, scope equal to
|
||||
* COUNTER_COUNT_SCOPE, parent equal to 2, and id equal to the value provided by
|
||||
* COUNTER_SCOPE_COUNT, parent equal to 2, and id equal to the value provided by
|
||||
* the respective /sys/bus/counter/devices/counter4/count2/ceiling_component_id
|
||||
* sysfs attribute.
|
||||
*/
|
||||
|
@ -65,6 +65,8 @@ enum counter_event_type {
|
|||
COUNTER_EVENT_CHANGE_OF_STATE,
|
||||
/* Count value captured */
|
||||
COUNTER_EVENT_CAPTURE,
|
||||
/* Direction change detected */
|
||||
COUNTER_EVENT_DIRECTION_CHANGE,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Channel numbers used by the microchip-tcb-capture driver
|
||||
* Copyright (C) 2025 Bence Csókás
|
||||
*/
|
||||
#ifndef _COUNTER_MCHP_TCB_H_
|
||||
#define _COUNTER_MCHP_TCB_H_
|
||||
|
||||
/*
|
||||
* The driver defines the following components:
|
||||
*
|
||||
* Count 0
|
||||
* \__ Synapse 0 -- Signal 0 (Channel A, i.e. TIOA)
|
||||
* \__ Synapse 1 -- Signal 1 (Channel B, i.e. TIOB)
|
||||
* \__ Extension capture0 (RA register)
|
||||
* \__ Extension capture1 (RB register)
|
||||
*
|
||||
* It also supports the following events:
|
||||
*
|
||||
* Channel 0:
|
||||
* - CV register changed
|
||||
* - CV overflowed
|
||||
* - RA captured
|
||||
* Channel 1:
|
||||
* - RB captured
|
||||
* Channel 2:
|
||||
* - RC compare triggered
|
||||
*/
|
||||
|
||||
/* Capture extensions */
|
||||
#define COUNTER_MCHP_EXCAP_RA 0
|
||||
#define COUNTER_MCHP_EXCAP_RB 1
|
||||
|
||||
/* Event channels */
|
||||
#define COUNTER_MCHP_EVCHN_CV 0
|
||||
#define COUNTER_MCHP_EVCHN_RA 0
|
||||
#define COUNTER_MCHP_EVCHN_RB 1
|
||||
#define COUNTER_MCHP_EVCHN_RC 2
|
||||
|
||||
#endif /* _COUNTER_MCHP_TCB_H_ */
|
|
@ -32,7 +32,7 @@ enum {
|
|||
CRYPTO_MSG_UPDATEALG,
|
||||
CRYPTO_MSG_GETALG,
|
||||
CRYPTO_MSG_DELRNG,
|
||||
CRYPTO_MSG_GETSTAT,
|
||||
CRYPTO_MSG_GETSTAT, /* No longer supported, do not use. */
|
||||
__CRYPTO_MSG_MAX
|
||||
};
|
||||
#define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
|
||||
|
@ -54,16 +54,17 @@ enum crypto_attr_type_t {
|
|||
CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */
|
||||
CRYPTOCFGA_REPORT_KPP, /* struct crypto_report_kpp */
|
||||
CRYPTOCFGA_REPORT_ACOMP, /* struct crypto_report_acomp */
|
||||
CRYPTOCFGA_STAT_LARVAL, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_HASH, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_BLKCIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_AEAD, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_COMPRESS, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_RNG, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_CIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_AKCIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_KPP, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_ACOMP, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_LARVAL, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_HASH, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_BLKCIPHER, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_AEAD, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_COMPRESS, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_RNG, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_CIPHER, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_AKCIPHER, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_KPP, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_ACOMP, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_REPORT_SIG, /* struct crypto_report_sig */
|
||||
__CRYPTOCFGA_MAX
|
||||
|
||||
#define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
|
||||
|
@ -79,6 +80,7 @@ struct crypto_user_alg {
|
|||
__u32 cru_flags;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_aead {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
|
@ -88,6 +90,7 @@ struct crypto_stat_aead {
|
|||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_akcipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
|
@ -99,6 +102,7 @@ struct crypto_stat_akcipher {
|
|||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_cipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
|
@ -108,6 +112,7 @@ struct crypto_stat_cipher {
|
|||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_compress {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_compress_cnt;
|
||||
|
@ -117,6 +122,7 @@ struct crypto_stat_compress {
|
|||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_hash {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_hash_cnt;
|
||||
|
@ -124,6 +130,7 @@ struct crypto_stat_hash {
|
|||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_kpp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_setsecret_cnt;
|
||||
|
@ -132,6 +139,7 @@ struct crypto_stat_kpp {
|
|||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_rng {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_generate_cnt;
|
||||
|
@ -140,6 +148,7 @@ struct crypto_stat_rng {
|
|||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_larval {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
@ -199,6 +208,10 @@ struct crypto_report_acomp {
|
|||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
struct crypto_report_sig {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
#define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \
|
||||
sizeof(struct crypto_report_blkcipher))
|
||||
|
||||
|
|
|
@ -46,6 +46,10 @@
|
|||
___C(GET_SCAN_MEDIA_CAPS, "Get Scan Media Capabilities"), \
|
||||
___DEPRECATED(SCAN_MEDIA, "Scan Media"), \
|
||||
___DEPRECATED(GET_SCAN_MEDIA, "Get Scan Media Results"), \
|
||||
___C(GET_TIMESTAMP, "Get Timestamp"), \
|
||||
___C(GET_LOG_CAPS, "Get Log Capabilities"), \
|
||||
___C(CLEAR_LOG, "Clear Log"), \
|
||||
___C(GET_SUP_LOG_SUBLIST, "Get Supported Logs Sub-List"), \
|
||||
___C(MAX, "invalid / last command")
|
||||
|
||||
#define ___C(a, b) CXL_MEM_COMMAND_ID_##a
|
||||
|
|
|
@ -139,6 +139,8 @@ enum devlink_command {
|
|||
DEVLINK_CMD_SELFTESTS_GET, /* can dump */
|
||||
DEVLINK_CMD_SELFTESTS_RUN,
|
||||
|
||||
DEVLINK_CMD_NOTIFY_FILTER_SET,
|
||||
|
||||
/* add new commands above here */
|
||||
__DEVLINK_CMD_MAX,
|
||||
DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
|
||||
|
@ -265,7 +267,7 @@ enum {
|
|||
* Documentation/networking/devlink/devlink-flash.rst
|
||||
*
|
||||
*/
|
||||
enum {
|
||||
enum devlink_flash_overwrite {
|
||||
DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT,
|
||||
DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT,
|
||||
|
||||
|
@ -383,6 +385,21 @@ enum devlink_linecard_state {
|
|||
DEVLINK_LINECARD_STATE_MAX = __DEVLINK_LINECARD_STATE_MAX - 1
|
||||
};
|
||||
|
||||
/* Variable attribute type. */
|
||||
enum devlink_var_attr_type {
|
||||
/* Following values relate to the internal NLA_* values */
|
||||
DEVLINK_VAR_ATTR_TYPE_U8 = 1,
|
||||
DEVLINK_VAR_ATTR_TYPE_U16,
|
||||
DEVLINK_VAR_ATTR_TYPE_U32,
|
||||
DEVLINK_VAR_ATTR_TYPE_U64,
|
||||
DEVLINK_VAR_ATTR_TYPE_STRING,
|
||||
DEVLINK_VAR_ATTR_TYPE_FLAG,
|
||||
DEVLINK_VAR_ATTR_TYPE_NUL_STRING = 10,
|
||||
DEVLINK_VAR_ATTR_TYPE_BINARY,
|
||||
__DEVLINK_VAR_ATTR_TYPE_CUSTOM_BASE = 0x80,
|
||||
/* Any possible custom types, unrelated to NLA_* values go below */
|
||||
};
|
||||
|
||||
enum devlink_attr {
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
DEVLINK_ATTR_UNSPEC,
|
||||
|
@ -612,7 +629,10 @@ enum devlink_attr {
|
|||
|
||||
DEVLINK_ATTR_REGION_DIRECT, /* flag */
|
||||
|
||||
/* add new attributes above here, update the policy in devlink.c */
|
||||
/* Add new attributes above here, update the spec in
|
||||
* Documentation/netlink/specs/devlink.yaml and re-generate
|
||||
* net/devlink/netlink_gen.c.
|
||||
*/
|
||||
|
||||
__DEVLINK_ATTR_MAX,
|
||||
DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
|
||||
|
@ -680,6 +700,8 @@ enum devlink_port_function_attr {
|
|||
DEVLINK_PORT_FN_ATTR_STATE, /* u8 */
|
||||
DEVLINK_PORT_FN_ATTR_OPSTATE, /* u8 */
|
||||
DEVLINK_PORT_FN_ATTR_CAPS, /* bitfield32 */
|
||||
DEVLINK_PORT_FN_ATTR_DEVLINK, /* nested */
|
||||
DEVLINK_PORT_FN_ATTR_MAX_IO_EQS, /* u32 */
|
||||
|
||||
__DEVLINK_PORT_FUNCTION_ATTR_MAX,
|
||||
DEVLINK_PORT_FUNCTION_ATTR_MAX = __DEVLINK_PORT_FUNCTION_ATTR_MAX - 1
|
||||
|
|
|
@ -71,6 +71,8 @@ struct dlm_lksb {
|
|||
/* DLM_LSFL_TIMEWARN is deprecated and reserved. DO NOT USE! */
|
||||
#define DLM_LSFL_TIMEWARN 0x00000002
|
||||
#define DLM_LSFL_NEWEXCL 0x00000008
|
||||
/* currently reserved due in-kernel use */
|
||||
#define __DLM_LSFL_RESERVED0 0x00000010
|
||||
|
||||
|
||||
#endif /* __DLM_DOT_H__ */
|
||||
|
|
|
@ -258,10 +258,12 @@ enum {
|
|||
DM_DEV_SET_GEOMETRY_CMD,
|
||||
DM_DEV_ARM_POLL_CMD,
|
||||
DM_GET_TARGET_VERSION_CMD,
|
||||
DM_MPATH_PROBE_PATHS_CMD,
|
||||
};
|
||||
|
||||
#define DM_IOCTL 0xfd
|
||||
|
||||
/* Control device ioctls */
|
||||
#define DM_VERSION _IOWR(DM_IOCTL, DM_VERSION_CMD, struct dm_ioctl)
|
||||
#define DM_REMOVE_ALL _IOWR(DM_IOCTL, DM_REMOVE_ALL_CMD, struct dm_ioctl)
|
||||
#define DM_LIST_DEVICES _IOWR(DM_IOCTL, DM_LIST_DEVICES_CMD, struct dm_ioctl)
|
||||
|
@ -285,10 +287,13 @@ enum {
|
|||
#define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
|
||||
#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
|
||||
|
||||
/* Block device ioctls */
|
||||
#define DM_MPATH_PROBE_PATHS _IO(DM_IOCTL, DM_MPATH_PROBE_PATHS_CMD)
|
||||
|
||||
#define DM_VERSION_MAJOR 4
|
||||
#define DM_VERSION_MINOR 48
|
||||
#define DM_VERSION_MINOR 50
|
||||
#define DM_VERSION_PATCHLEVEL 0
|
||||
#define DM_VERSION_EXTRA "-ioctl (2023-03-01)"
|
||||
#define DM_VERSION_EXTRA "-ioctl (2025-04-28)"
|
||||
|
||||
/* Status bits */
|
||||
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#define DMA_HEAP_VALID_FD_FLAGS (O_CLOEXEC | O_ACCMODE)
|
||||
|
||||
/* Currently no heap flags */
|
||||
#define DMA_HEAP_VALID_HEAP_FLAGS (0)
|
||||
#define DMA_HEAP_VALID_HEAP_FLAGS (0ULL)
|
||||
|
||||
/**
|
||||
* struct dma_heap_allocation_data - metadata passed from userspace for
|
||||
|
|
|
@ -0,0 +1,265 @@
|
|||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/* Do not edit directly, auto-generated from: */
|
||||
/* Documentation/netlink/specs/dpll.yaml */
|
||||
/* YNL-GEN uapi header */
|
||||
|
||||
#ifndef _LINUX_DPLL_H
|
||||
#define _LINUX_DPLL_H
|
||||
|
||||
#define DPLL_FAMILY_NAME "dpll"
|
||||
#define DPLL_FAMILY_VERSION 1
|
||||
|
||||
/**
|
||||
* enum dpll_mode - working modes a dpll can support, differentiates if and how
|
||||
* dpll selects one of its inputs to syntonize with it, valid values for
|
||||
* DPLL_A_MODE attribute
|
||||
* @DPLL_MODE_MANUAL: input can be only selected by sending a request to dpll
|
||||
* @DPLL_MODE_AUTOMATIC: highest prio input pin auto selected by dpll
|
||||
*/
|
||||
enum dpll_mode {
|
||||
DPLL_MODE_MANUAL = 1,
|
||||
DPLL_MODE_AUTOMATIC,
|
||||
|
||||
/* private: */
|
||||
__DPLL_MODE_MAX,
|
||||
DPLL_MODE_MAX = (__DPLL_MODE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_lock_status - provides information of dpll device lock status,
|
||||
* valid values for DPLL_A_LOCK_STATUS attribute
|
||||
* @DPLL_LOCK_STATUS_UNLOCKED: dpll was not yet locked to any valid input (or
|
||||
* forced by setting DPLL_A_MODE to DPLL_MODE_DETACHED)
|
||||
* @DPLL_LOCK_STATUS_LOCKED: dpll is locked to a valid signal, but no holdover
|
||||
* available
|
||||
* @DPLL_LOCK_STATUS_LOCKED_HO_ACQ: dpll is locked and holdover acquired
|
||||
* @DPLL_LOCK_STATUS_HOLDOVER: dpll is in holdover state - lost a valid lock or
|
||||
* was forced by disconnecting all the pins (latter possible only when dpll
|
||||
* lock-state was already DPLL_LOCK_STATUS_LOCKED_HO_ACQ, if dpll lock-state
|
||||
* was not DPLL_LOCK_STATUS_LOCKED_HO_ACQ, the dpll's lock-state shall remain
|
||||
* DPLL_LOCK_STATUS_UNLOCKED)
|
||||
*/
|
||||
enum dpll_lock_status {
|
||||
DPLL_LOCK_STATUS_UNLOCKED = 1,
|
||||
DPLL_LOCK_STATUS_LOCKED,
|
||||
DPLL_LOCK_STATUS_LOCKED_HO_ACQ,
|
||||
DPLL_LOCK_STATUS_HOLDOVER,
|
||||
|
||||
/* private: */
|
||||
__DPLL_LOCK_STATUS_MAX,
|
||||
DPLL_LOCK_STATUS_MAX = (__DPLL_LOCK_STATUS_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_lock_status_error - if previous status change was done due to a
|
||||
* failure, this provides information of dpll device lock status error. Valid
|
||||
* values for DPLL_A_LOCK_STATUS_ERROR attribute
|
||||
* @DPLL_LOCK_STATUS_ERROR_NONE: dpll device lock status was changed without
|
||||
* any error
|
||||
* @DPLL_LOCK_STATUS_ERROR_UNDEFINED: dpll device lock status was changed due
|
||||
* to undefined error. Driver fills this value up in case it is not able to
|
||||
* obtain suitable exact error type.
|
||||
* @DPLL_LOCK_STATUS_ERROR_MEDIA_DOWN: dpll device lock status was changed
|
||||
* because of associated media got down. This may happen for example if dpll
|
||||
* device was previously locked on an input pin of type
|
||||
* PIN_TYPE_SYNCE_ETH_PORT.
|
||||
* @DPLL_LOCK_STATUS_ERROR_FRACTIONAL_FREQUENCY_OFFSET_TOO_HIGH: the FFO
|
||||
* (Fractional Frequency Offset) between the RX and TX symbol rate on the
|
||||
* media got too high. This may happen for example if dpll device was
|
||||
* previously locked on an input pin of type PIN_TYPE_SYNCE_ETH_PORT.
|
||||
*/
|
||||
enum dpll_lock_status_error {
|
||||
DPLL_LOCK_STATUS_ERROR_NONE = 1,
|
||||
DPLL_LOCK_STATUS_ERROR_UNDEFINED,
|
||||
DPLL_LOCK_STATUS_ERROR_MEDIA_DOWN,
|
||||
DPLL_LOCK_STATUS_ERROR_FRACTIONAL_FREQUENCY_OFFSET_TOO_HIGH,
|
||||
|
||||
/* private: */
|
||||
__DPLL_LOCK_STATUS_ERROR_MAX,
|
||||
DPLL_LOCK_STATUS_ERROR_MAX = (__DPLL_LOCK_STATUS_ERROR_MAX - 1)
|
||||
};
|
||||
|
||||
/*
|
||||
* level of quality of a clock device. This mainly applies when the dpll
|
||||
* lock-status is DPLL_LOCK_STATUS_HOLDOVER. The current list is defined
|
||||
* according to the table 11-7 contained in ITU-T G.8264/Y.1364 document. One
|
||||
* may extend this list freely by other ITU-T defined clock qualities, or
|
||||
* different ones defined by another standardization body (for those, please
|
||||
* use different prefix).
|
||||
*/
|
||||
enum dpll_clock_quality_level {
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_PRC = 1,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_SSU_A,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_SSU_B,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EEC1,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_PRTC,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EPRTC,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EEEC,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EPRC,
|
||||
|
||||
/* private: */
|
||||
__DPLL_CLOCK_QUALITY_LEVEL_MAX,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_MAX = (__DPLL_CLOCK_QUALITY_LEVEL_MAX - 1)
|
||||
};
|
||||
|
||||
#define DPLL_TEMP_DIVIDER 1000
|
||||
|
||||
/**
|
||||
* enum dpll_type - type of dpll, valid values for DPLL_A_TYPE attribute
|
||||
* @DPLL_TYPE_PPS: dpll produces Pulse-Per-Second signal
|
||||
* @DPLL_TYPE_EEC: dpll drives the Ethernet Equipment Clock
|
||||
*/
|
||||
enum dpll_type {
|
||||
DPLL_TYPE_PPS = 1,
|
||||
DPLL_TYPE_EEC,
|
||||
|
||||
/* private: */
|
||||
__DPLL_TYPE_MAX,
|
||||
DPLL_TYPE_MAX = (__DPLL_TYPE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_pin_type - defines possible types of a pin, valid values for
|
||||
* DPLL_A_PIN_TYPE attribute
|
||||
* @DPLL_PIN_TYPE_MUX: aggregates another layer of selectable pins
|
||||
* @DPLL_PIN_TYPE_EXT: external input
|
||||
* @DPLL_PIN_TYPE_SYNCE_ETH_PORT: ethernet port PHY's recovered clock
|
||||
* @DPLL_PIN_TYPE_INT_OSCILLATOR: device internal oscillator
|
||||
* @DPLL_PIN_TYPE_GNSS: GNSS recovered clock
|
||||
*/
|
||||
enum dpll_pin_type {
|
||||
DPLL_PIN_TYPE_MUX = 1,
|
||||
DPLL_PIN_TYPE_EXT,
|
||||
DPLL_PIN_TYPE_SYNCE_ETH_PORT,
|
||||
DPLL_PIN_TYPE_INT_OSCILLATOR,
|
||||
DPLL_PIN_TYPE_GNSS,
|
||||
|
||||
/* private: */
|
||||
__DPLL_PIN_TYPE_MAX,
|
||||
DPLL_PIN_TYPE_MAX = (__DPLL_PIN_TYPE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_pin_direction - defines possible direction of a pin, valid values
|
||||
* for DPLL_A_PIN_DIRECTION attribute
|
||||
* @DPLL_PIN_DIRECTION_INPUT: pin used as a input of a signal
|
||||
* @DPLL_PIN_DIRECTION_OUTPUT: pin used to output the signal
|
||||
*/
|
||||
enum dpll_pin_direction {
|
||||
DPLL_PIN_DIRECTION_INPUT = 1,
|
||||
DPLL_PIN_DIRECTION_OUTPUT,
|
||||
|
||||
/* private: */
|
||||
__DPLL_PIN_DIRECTION_MAX,
|
||||
DPLL_PIN_DIRECTION_MAX = (__DPLL_PIN_DIRECTION_MAX - 1)
|
||||
};
|
||||
|
||||
#define DPLL_PIN_FREQUENCY_1_HZ 1
|
||||
#define DPLL_PIN_FREQUENCY_10_KHZ 10000
|
||||
#define DPLL_PIN_FREQUENCY_77_5_KHZ 77500
|
||||
#define DPLL_PIN_FREQUENCY_10_MHZ 10000000
|
||||
|
||||
/**
|
||||
* enum dpll_pin_state - defines possible states of a pin, valid values for
|
||||
* DPLL_A_PIN_STATE attribute
|
||||
* @DPLL_PIN_STATE_CONNECTED: pin connected, active input of phase locked loop
|
||||
* @DPLL_PIN_STATE_DISCONNECTED: pin disconnected, not considered as a valid
|
||||
* input
|
||||
* @DPLL_PIN_STATE_SELECTABLE: pin enabled for automatic input selection
|
||||
*/
|
||||
enum dpll_pin_state {
|
||||
DPLL_PIN_STATE_CONNECTED = 1,
|
||||
DPLL_PIN_STATE_DISCONNECTED,
|
||||
DPLL_PIN_STATE_SELECTABLE,
|
||||
|
||||
/* private: */
|
||||
__DPLL_PIN_STATE_MAX,
|
||||
DPLL_PIN_STATE_MAX = (__DPLL_PIN_STATE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_pin_capabilities - defines possible capabilities of a pin, valid
|
||||
* flags on DPLL_A_PIN_CAPABILITIES attribute
|
||||
* @DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE: pin direction can be changed
|
||||
* @DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE: pin priority can be changed
|
||||
* @DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE: pin state can be changed
|
||||
*/
|
||||
enum dpll_pin_capabilities {
|
||||
DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE = 1,
|
||||
DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE = 2,
|
||||
DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE = 4,
|
||||
};
|
||||
|
||||
#define DPLL_PHASE_OFFSET_DIVIDER 1000
|
||||
|
||||
enum dpll_a {
|
||||
DPLL_A_ID = 1,
|
||||
DPLL_A_MODULE_NAME,
|
||||
DPLL_A_PAD,
|
||||
DPLL_A_CLOCK_ID,
|
||||
DPLL_A_MODE,
|
||||
DPLL_A_MODE_SUPPORTED,
|
||||
DPLL_A_LOCK_STATUS,
|
||||
DPLL_A_TEMP,
|
||||
DPLL_A_TYPE,
|
||||
DPLL_A_LOCK_STATUS_ERROR,
|
||||
DPLL_A_CLOCK_QUALITY_LEVEL,
|
||||
|
||||
__DPLL_A_MAX,
|
||||
DPLL_A_MAX = (__DPLL_A_MAX - 1)
|
||||
};
|
||||
|
||||
enum dpll_a_pin {
|
||||
DPLL_A_PIN_ID = 1,
|
||||
DPLL_A_PIN_PARENT_ID,
|
||||
DPLL_A_PIN_MODULE_NAME,
|
||||
DPLL_A_PIN_PAD,
|
||||
DPLL_A_PIN_CLOCK_ID,
|
||||
DPLL_A_PIN_BOARD_LABEL,
|
||||
DPLL_A_PIN_PANEL_LABEL,
|
||||
DPLL_A_PIN_PACKAGE_LABEL,
|
||||
DPLL_A_PIN_TYPE,
|
||||
DPLL_A_PIN_DIRECTION,
|
||||
DPLL_A_PIN_FREQUENCY,
|
||||
DPLL_A_PIN_FREQUENCY_SUPPORTED,
|
||||
DPLL_A_PIN_FREQUENCY_MIN,
|
||||
DPLL_A_PIN_FREQUENCY_MAX,
|
||||
DPLL_A_PIN_PRIO,
|
||||
DPLL_A_PIN_STATE,
|
||||
DPLL_A_PIN_CAPABILITIES,
|
||||
DPLL_A_PIN_PARENT_DEVICE,
|
||||
DPLL_A_PIN_PARENT_PIN,
|
||||
DPLL_A_PIN_PHASE_ADJUST_MIN,
|
||||
DPLL_A_PIN_PHASE_ADJUST_MAX,
|
||||
DPLL_A_PIN_PHASE_ADJUST,
|
||||
DPLL_A_PIN_PHASE_OFFSET,
|
||||
DPLL_A_PIN_FRACTIONAL_FREQUENCY_OFFSET,
|
||||
DPLL_A_PIN_ESYNC_FREQUENCY,
|
||||
DPLL_A_PIN_ESYNC_FREQUENCY_SUPPORTED,
|
||||
DPLL_A_PIN_ESYNC_PULSE,
|
||||
|
||||
__DPLL_A_PIN_MAX,
|
||||
DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1)
|
||||
};
|
||||
|
||||
enum dpll_cmd {
|
||||
DPLL_CMD_DEVICE_ID_GET = 1,
|
||||
DPLL_CMD_DEVICE_GET,
|
||||
DPLL_CMD_DEVICE_SET,
|
||||
DPLL_CMD_DEVICE_CREATE_NTF,
|
||||
DPLL_CMD_DEVICE_DELETE_NTF,
|
||||
DPLL_CMD_DEVICE_CHANGE_NTF,
|
||||
DPLL_CMD_PIN_ID_GET,
|
||||
DPLL_CMD_PIN_GET,
|
||||
DPLL_CMD_PIN_SET,
|
||||
DPLL_CMD_PIN_CREATE_NTF,
|
||||
DPLL_CMD_PIN_DELETE_NTF,
|
||||
DPLL_CMD_PIN_CHANGE_NTF,
|
||||
|
||||
__DPLL_CMD_MAX,
|
||||
DPLL_CMD_MAX = (__DPLL_CMD_MAX - 1)
|
||||
};
|
||||
|
||||
#define DPLL_MCGRP_MONITOR "monitor"
|
||||
|
||||
#endif /* _LINUX_DPLL_H */
|
|
@ -854,7 +854,7 @@ struct dtv_stats {
|
|||
union {
|
||||
__u64 uvalue; /* for counters and relative scales */
|
||||
__s64 svalue; /* for 0.001 dB measures */
|
||||
};
|
||||
} __attribute__ ((packed));
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ typedef __u16 Elf32_Half;
|
|||
typedef __u32 Elf32_Off;
|
||||
typedef __s32 Elf32_Sword;
|
||||
typedef __u32 Elf32_Word;
|
||||
typedef __u16 Elf32_Versym;
|
||||
|
||||
/* 64-bit ELF base types. */
|
||||
typedef __u64 Elf64_Addr;
|
||||
|
@ -21,6 +22,7 @@ typedef __s32 Elf64_Sword;
|
|||
typedef __u32 Elf64_Word;
|
||||
typedef __u64 Elf64_Xword;
|
||||
typedef __s64 Elf64_Sxword;
|
||||
typedef __u16 Elf64_Versym;
|
||||
|
||||
/* These constants are for the segment types stored in the image headers */
|
||||
#define PT_NULL 0
|
||||
|
@ -107,6 +109,7 @@ typedef __s64 Elf64_Sxword;
|
|||
#define DT_VALRNGLO 0x6ffffd00
|
||||
#define DT_VALRNGHI 0x6ffffdff
|
||||
#define DT_ADDRRNGLO 0x6ffffe00
|
||||
#define DT_GNU_HASH 0x6ffffef5
|
||||
#define DT_ADDRRNGHI 0x6ffffeff
|
||||
#define DT_VERSYM 0x6ffffff0
|
||||
#define DT_RELACOUNT 0x6ffffff9
|
||||
|
@ -125,6 +128,8 @@ typedef __s64 Elf64_Sxword;
|
|||
#define STB_GLOBAL 1
|
||||
#define STB_WEAK 2
|
||||
|
||||
#define STN_UNDEF 0
|
||||
|
||||
#define STT_NOTYPE 0
|
||||
#define STT_OBJECT 1
|
||||
#define STT_FUNC 2
|
||||
|
@ -133,6 +138,9 @@ typedef __s64 Elf64_Sxword;
|
|||
#define STT_COMMON 5
|
||||
#define STT_TLS 6
|
||||
|
||||
#define VER_FLG_BASE 0x1
|
||||
#define VER_FLG_WEAK 0x2
|
||||
|
||||
#define ELF_ST_BIND(x) ((x) >> 4)
|
||||
#define ELF_ST_TYPE(x) ((x) & 0xf)
|
||||
#define ELF32_ST_BIND(x) ELF_ST_BIND(x)
|
||||
|
@ -140,7 +148,7 @@ typedef __s64 Elf64_Sxword;
|
|||
#define ELF64_ST_BIND(x) ELF_ST_BIND(x)
|
||||
#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
|
||||
|
||||
typedef struct dynamic {
|
||||
typedef struct {
|
||||
Elf32_Sword d_tag;
|
||||
union {
|
||||
Elf32_Sword d_val;
|
||||
|
@ -291,8 +299,18 @@ typedef struct elf64_phdr {
|
|||
#define SHF_WRITE 0x1
|
||||
#define SHF_ALLOC 0x2
|
||||
#define SHF_EXECINSTR 0x4
|
||||
#define SHF_MERGE 0x10
|
||||
#define SHF_STRINGS 0x20
|
||||
#define SHF_INFO_LINK 0x40
|
||||
#define SHF_LINK_ORDER 0x80
|
||||
#define SHF_OS_NONCONFORMING 0x100
|
||||
#define SHF_GROUP 0x200
|
||||
#define SHF_TLS 0x400
|
||||
#define SHF_RELA_LIVEPATCH 0x00100000
|
||||
#define SHF_RO_AFTER_INIT 0x00200000
|
||||
#define SHF_ORDERED 0x04000000
|
||||
#define SHF_EXCLUDE 0x08000000
|
||||
#define SHF_MASKOS 0x0ff00000
|
||||
#define SHF_MASKPROC 0xf0000000
|
||||
|
||||
/* special section indexes */
|
||||
|
@ -368,96 +386,180 @@ typedef struct elf64_shdr {
|
|||
#define ELF_OSABI ELFOSABI_NONE
|
||||
#endif
|
||||
|
||||
/* Note definitions: NN_ defines names. NT_ defines types. */
|
||||
|
||||
#define NN_GNU_PROPERTY_TYPE_0 "GNU"
|
||||
#define NT_GNU_PROPERTY_TYPE_0 5
|
||||
|
||||
/*
|
||||
* Notes used in ET_CORE. Architectures export some of the arch register sets
|
||||
* using the corresponding note types via the PTRACE_GETREGSET and
|
||||
* PTRACE_SETREGSET requests.
|
||||
* The note name for these types is "LINUX", except NT_PRFPREG that is named
|
||||
* "CORE".
|
||||
*/
|
||||
#define NN_PRSTATUS "CORE"
|
||||
#define NT_PRSTATUS 1
|
||||
#define NN_PRFPREG "CORE"
|
||||
#define NT_PRFPREG 2
|
||||
#define NN_PRPSINFO "CORE"
|
||||
#define NT_PRPSINFO 3
|
||||
#define NN_TASKSTRUCT "CORE"
|
||||
#define NT_TASKSTRUCT 4
|
||||
#define NN_AUXV "CORE"
|
||||
#define NT_AUXV 6
|
||||
/*
|
||||
* Note to userspace developers: size of NT_SIGINFO note may increase
|
||||
* in the future to accomodate more fields, don't assume it is fixed!
|
||||
*/
|
||||
#define NN_SIGINFO "CORE"
|
||||
#define NT_SIGINFO 0x53494749
|
||||
#define NN_FILE "CORE"
|
||||
#define NT_FILE 0x46494c45
|
||||
#define NN_PRXFPREG "LINUX"
|
||||
#define NT_PRXFPREG 0x46e62b7f /* copied from gdb5.1/include/elf/common.h */
|
||||
#define NN_PPC_VMX "LINUX"
|
||||
#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */
|
||||
#define NN_PPC_SPE "LINUX"
|
||||
#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */
|
||||
#define NN_PPC_VSX "LINUX"
|
||||
#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */
|
||||
#define NN_PPC_TAR "LINUX"
|
||||
#define NT_PPC_TAR 0x103 /* Target Address Register */
|
||||
#define NN_PPC_PPR "LINUX"
|
||||
#define NT_PPC_PPR 0x104 /* Program Priority Register */
|
||||
#define NN_PPC_DSCR "LINUX"
|
||||
#define NT_PPC_DSCR 0x105 /* Data Stream Control Register */
|
||||
#define NN_PPC_EBB "LINUX"
|
||||
#define NT_PPC_EBB 0x106 /* Event Based Branch Registers */
|
||||
#define NN_PPC_PMU "LINUX"
|
||||
#define NT_PPC_PMU 0x107 /* Performance Monitor Registers */
|
||||
#define NN_PPC_TM_CGPR "LINUX"
|
||||
#define NT_PPC_TM_CGPR 0x108 /* TM checkpointed GPR Registers */
|
||||
#define NN_PPC_TM_CFPR "LINUX"
|
||||
#define NT_PPC_TM_CFPR 0x109 /* TM checkpointed FPR Registers */
|
||||
#define NN_PPC_TM_CVMX "LINUX"
|
||||
#define NT_PPC_TM_CVMX 0x10a /* TM checkpointed VMX Registers */
|
||||
#define NN_PPC_TM_CVSX "LINUX"
|
||||
#define NT_PPC_TM_CVSX 0x10b /* TM checkpointed VSX Registers */
|
||||
#define NN_PPC_TM_SPR "LINUX"
|
||||
#define NT_PPC_TM_SPR 0x10c /* TM Special Purpose Registers */
|
||||
#define NN_PPC_TM_CTAR "LINUX"
|
||||
#define NT_PPC_TM_CTAR 0x10d /* TM checkpointed Target Address Register */
|
||||
#define NN_PPC_TM_CPPR "LINUX"
|
||||
#define NT_PPC_TM_CPPR 0x10e /* TM checkpointed Program Priority Register */
|
||||
#define NN_PPC_TM_CDSCR "LINUX"
|
||||
#define NT_PPC_TM_CDSCR 0x10f /* TM checkpointed Data Stream Control Register */
|
||||
#define NN_PPC_PKEY "LINUX"
|
||||
#define NT_PPC_PKEY 0x110 /* Memory Protection Keys registers */
|
||||
#define NN_PPC_DEXCR "LINUX"
|
||||
#define NT_PPC_DEXCR 0x111 /* PowerPC DEXCR registers */
|
||||
#define NN_PPC_HASHKEYR "LINUX"
|
||||
#define NT_PPC_HASHKEYR 0x112 /* PowerPC HASHKEYR register */
|
||||
#define NN_386_TLS "LINUX"
|
||||
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
|
||||
#define NN_386_IOPERM "LINUX"
|
||||
#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
|
||||
#define NN_X86_XSTATE "LINUX"
|
||||
#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */
|
||||
/* Old binutils treats 0x203 as a CET state */
|
||||
#define NN_X86_SHSTK "LINUX"
|
||||
#define NT_X86_SHSTK 0x204 /* x86 SHSTK state */
|
||||
#define NN_X86_XSAVE_LAYOUT "LINUX"
|
||||
#define NT_X86_XSAVE_LAYOUT 0x205 /* XSAVE layout description */
|
||||
#define NN_S390_HIGH_GPRS "LINUX"
|
||||
#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */
|
||||
#define NN_S390_TIMER "LINUX"
|
||||
#define NT_S390_TIMER 0x301 /* s390 timer register */
|
||||
#define NN_S390_TODCMP "LINUX"
|
||||
#define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */
|
||||
#define NN_S390_TODPREG "LINUX"
|
||||
#define NT_S390_TODPREG 0x303 /* s390 TOD programmable register */
|
||||
#define NN_S390_CTRS "LINUX"
|
||||
#define NT_S390_CTRS 0x304 /* s390 control registers */
|
||||
#define NN_S390_PREFIX "LINUX"
|
||||
#define NT_S390_PREFIX 0x305 /* s390 prefix register */
|
||||
#define NN_S390_LAST_BREAK "LINUX"
|
||||
#define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */
|
||||
#define NN_S390_SYSTEM_CALL "LINUX"
|
||||
#define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */
|
||||
#define NN_S390_TDB "LINUX"
|
||||
#define NT_S390_TDB 0x308 /* s390 transaction diagnostic block */
|
||||
#define NN_S390_VXRS_LOW "LINUX"
|
||||
#define NT_S390_VXRS_LOW 0x309 /* s390 vector registers 0-15 upper half */
|
||||
#define NN_S390_VXRS_HIGH "LINUX"
|
||||
#define NT_S390_VXRS_HIGH 0x30a /* s390 vector registers 16-31 */
|
||||
#define NN_S390_GS_CB "LINUX"
|
||||
#define NT_S390_GS_CB 0x30b /* s390 guarded storage registers */
|
||||
#define NN_S390_GS_BC "LINUX"
|
||||
#define NT_S390_GS_BC 0x30c /* s390 guarded storage broadcast control block */
|
||||
#define NN_S390_RI_CB "LINUX"
|
||||
#define NT_S390_RI_CB 0x30d /* s390 runtime instrumentation */
|
||||
#define NN_S390_PV_CPU_DATA "LINUX"
|
||||
#define NT_S390_PV_CPU_DATA 0x30e /* s390 protvirt cpu dump data */
|
||||
#define NN_ARM_VFP "LINUX"
|
||||
#define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */
|
||||
#define NN_ARM_TLS "LINUX"
|
||||
#define NT_ARM_TLS 0x401 /* ARM TLS register */
|
||||
#define NN_ARM_HW_BREAK "LINUX"
|
||||
#define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */
|
||||
#define NN_ARM_HW_WATCH "LINUX"
|
||||
#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */
|
||||
#define NN_ARM_SYSTEM_CALL "LINUX"
|
||||
#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */
|
||||
#define NN_ARM_SVE "LINUX"
|
||||
#define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension registers */
|
||||
#define NN_ARM_PAC_MASK "LINUX"
|
||||
#define NT_ARM_PAC_MASK 0x406 /* ARM pointer authentication code masks */
|
||||
#define NN_ARM_PACA_KEYS "LINUX"
|
||||
#define NT_ARM_PACA_KEYS 0x407 /* ARM pointer authentication address keys */
|
||||
#define NN_ARM_PACG_KEYS "LINUX"
|
||||
#define NT_ARM_PACG_KEYS 0x408 /* ARM pointer authentication generic key */
|
||||
#define NN_ARM_TAGGED_ADDR_CTRL "LINUX"
|
||||
#define NT_ARM_TAGGED_ADDR_CTRL 0x409 /* arm64 tagged address control (prctl()) */
|
||||
#define NN_ARM_PAC_ENABLED_KEYS "LINUX"
|
||||
#define NT_ARM_PAC_ENABLED_KEYS 0x40a /* arm64 ptr auth enabled keys (prctl()) */
|
||||
#define NN_ARM_SSVE "LINUX"
|
||||
#define NT_ARM_SSVE 0x40b /* ARM Streaming SVE registers */
|
||||
#define NN_ARM_ZA "LINUX"
|
||||
#define NT_ARM_ZA 0x40c /* ARM SME ZA registers */
|
||||
#define NN_ARM_ZT "LINUX"
|
||||
#define NT_ARM_ZT 0x40d /* ARM SME ZT registers */
|
||||
#define NN_ARM_FPMR "LINUX"
|
||||
#define NT_ARM_FPMR 0x40e /* ARM floating point mode register */
|
||||
#define NN_ARM_POE "LINUX"
|
||||
#define NT_ARM_POE 0x40f /* ARM POE registers */
|
||||
#define NN_ARM_GCS "LINUX"
|
||||
#define NT_ARM_GCS 0x410 /* ARM GCS state */
|
||||
#define NN_ARC_V2 "LINUX"
|
||||
#define NT_ARC_V2 0x600 /* ARCv2 accumulator/extra registers */
|
||||
#define NN_VMCOREDD "LINUX"
|
||||
#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note */
|
||||
#define NN_MIPS_DSP "LINUX"
|
||||
#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers */
|
||||
#define NN_MIPS_FP_MODE "LINUX"
|
||||
#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode */
|
||||
#define NN_MIPS_MSA "LINUX"
|
||||
#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers */
|
||||
#define NN_RISCV_CSR "LINUX"
|
||||
#define NT_RISCV_CSR 0x900 /* RISC-V Control and Status Registers */
|
||||
#define NN_RISCV_VECTOR "LINUX"
|
||||
#define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */
|
||||
#define NN_RISCV_TAGGED_ADDR_CTRL "LINUX"
|
||||
#define NT_RISCV_TAGGED_ADDR_CTRL 0x902 /* RISC-V tagged address control (prctl()) */
|
||||
#define NN_LOONGARCH_CPUCFG "LINUX"
|
||||
#define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */
|
||||
#define NN_LOONGARCH_CSR "LINUX"
|
||||
#define NT_LOONGARCH_CSR 0xa01 /* LoongArch control and status registers */
|
||||
#define NN_LOONGARCH_LSX "LINUX"
|
||||
#define NT_LOONGARCH_LSX 0xa02 /* LoongArch Loongson SIMD Extension registers */
|
||||
#define NN_LOONGARCH_LASX "LINUX"
|
||||
#define NT_LOONGARCH_LASX 0xa03 /* LoongArch Loongson Advanced SIMD Extension registers */
|
||||
#define NN_LOONGARCH_LBT "LINUX"
|
||||
#define NT_LOONGARCH_LBT 0xa04 /* LoongArch Loongson Binary Translation registers */
|
||||
#define NN_LOONGARCH_HW_BREAK "LINUX"
|
||||
#define NT_LOONGARCH_HW_BREAK 0xa05 /* LoongArch hardware breakpoint registers */
|
||||
#define NN_LOONGARCH_HW_WATCH "LINUX"
|
||||
#define NT_LOONGARCH_HW_WATCH 0xa06 /* LoongArch hardware watchpoint registers */
|
||||
|
||||
/* Note types with note name "GNU" */
|
||||
#define NT_GNU_PROPERTY_TYPE_0 5
|
||||
|
||||
/* Note header in a PT_NOTE section */
|
||||
typedef struct elf32_note {
|
||||
Elf32_Word n_namesz; /* Name size */
|
||||
|
@ -478,4 +580,34 @@ typedef struct elf64_note {
|
|||
/* Bits for GNU_PROPERTY_AARCH64_FEATURE_1_BTI */
|
||||
#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
|
||||
|
||||
typedef struct {
|
||||
Elf32_Half vd_version;
|
||||
Elf32_Half vd_flags;
|
||||
Elf32_Half vd_ndx;
|
||||
Elf32_Half vd_cnt;
|
||||
Elf32_Word vd_hash;
|
||||
Elf32_Word vd_aux;
|
||||
Elf32_Word vd_next;
|
||||
} Elf32_Verdef;
|
||||
|
||||
typedef struct {
|
||||
Elf64_Half vd_version;
|
||||
Elf64_Half vd_flags;
|
||||
Elf64_Half vd_ndx;
|
||||
Elf64_Half vd_cnt;
|
||||
Elf64_Word vd_hash;
|
||||
Elf64_Word vd_aux;
|
||||
Elf64_Word vd_next;
|
||||
} Elf64_Verdef;
|
||||
|
||||
typedef struct {
|
||||
Elf32_Word vda_name;
|
||||
Elf32_Word vda_next;
|
||||
} Elf32_Verdaux;
|
||||
|
||||
typedef struct {
|
||||
Elf64_Word vda_name;
|
||||
Elf64_Word vda_next;
|
||||
} Elf64_Verdaux;
|
||||
|
||||
#endif /* _LINUX_ELF_H */
|
||||
|
|
|
@ -69,6 +69,7 @@ enum {
|
|||
SCM_TSTAMP_SND, /* driver passed skb to NIC, or HW */
|
||||
SCM_TSTAMP_SCHED, /* data entered the packet scheduler */
|
||||
SCM_TSTAMP_ACK, /* data acknowledged by peer */
|
||||
SCM_TSTAMP_COMPLETION, /* packet tx completion */
|
||||
};
|
||||
|
||||
#endif /* _LINUX_ERRQUEUE_H */
|
||||
|
|
|
@ -679,6 +679,8 @@ enum ethtool_link_ext_substate_module {
|
|||
* @ETH_SS_STATS_ETH_MAC: names of IEEE 802.3 MAC statistics
|
||||
* @ETH_SS_STATS_ETH_CTRL: names of IEEE 802.3 MAC Control statistics
|
||||
* @ETH_SS_STATS_RMON: names of RMON statistics
|
||||
* @ETH_SS_STATS_PHY: names of PHY(dev) statistics
|
||||
* @ETH_SS_TS_FLAGS: hardware timestamping flags
|
||||
*
|
||||
* @ETH_SS_COUNT: number of defined string sets
|
||||
*/
|
||||
|
@ -704,6 +706,8 @@ enum ethtool_stringset {
|
|||
ETH_SS_STATS_ETH_MAC,
|
||||
ETH_SS_STATS_ETH_CTRL,
|
||||
ETH_SS_STATS_RMON,
|
||||
ETH_SS_STATS_PHY,
|
||||
ETH_SS_TS_FLAGS,
|
||||
|
||||
/* add new constants above here */
|
||||
ETH_SS_COUNT
|
||||
|
@ -750,6 +754,252 @@ enum ethtool_module_power_mode {
|
|||
ETHTOOL_MODULE_POWER_MODE_HIGH,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_state - groups of PSE extended states
|
||||
* functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_ERROR_CONDITION: Group of error_condition states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_MR_MPS_VALID: Group of mr_mps_valid states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_MR_PSE_ENABLE: Group of mr_pse_enable states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_OPTION_DETECT_TED: Group of option_detect_ted
|
||||
* states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_OPTION_VPORT_LIM: Group of option_vport_lim states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_OVLD_DETECTED: Group of ovld_detected states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_PD_DLL_POWER_TYPE: Group of pd_dll_power_type
|
||||
* states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_POWER_NOT_AVAILABLE: Group of power_not_available
|
||||
* states
|
||||
* @ETHTOOL_C33_PSE_EXT_STATE_SHORT_DETECTED: Group of short_detected states
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_state {
|
||||
ETHTOOL_C33_PSE_EXT_STATE_ERROR_CONDITION = 1,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_MR_MPS_VALID,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_MR_PSE_ENABLE,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_OPTION_DETECT_TED,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_OPTION_VPORT_LIM,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_OVLD_DETECTED,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_PD_DLL_POWER_TYPE,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_POWER_NOT_AVAILABLE,
|
||||
ETHTOOL_C33_PSE_EXT_STATE_SHORT_DETECTED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_mr_mps_valid - mr_mps_valid states
|
||||
* functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_MPS_VALID_DETECTED_UNDERLOAD: Underload
|
||||
* state
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_MPS_VALID_CONNECTION_OPEN: Port is not
|
||||
* connected
|
||||
*
|
||||
* The PSE monitors either the DC or AC Maintain Power Signature
|
||||
* (MPS, see 33.2.9.1). This variable indicates the presence or absence of
|
||||
* a valid MPS.
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_mr_mps_valid {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_MPS_VALID_DETECTED_UNDERLOAD = 1,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_MPS_VALID_CONNECTION_OPEN,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_error_condition - error_condition states
|
||||
* functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_NON_EXISTING_PORT: Non-existing
|
||||
* port number
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNDEFINED_PORT: Undefined port
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_INTERNAL_HW_FAULT: Internal
|
||||
* hardware fault
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_COMM_ERROR_AFTER_FORCE_ON:
|
||||
* Communication error after force on
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNKNOWN_PORT_STATUS: Unknown
|
||||
* port status
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_TURN_OFF: Host
|
||||
* crash turn off
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_FORCE_SHUTDOWN:
|
||||
* Host crash force shutdown
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_CONFIG_CHANGE: Configuration
|
||||
* change
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_DETECTED_OVER_TEMP: Over
|
||||
* temperature detected
|
||||
*
|
||||
* error_condition is a variable indicating the status of
|
||||
* implementation-specific fault conditions or optionally other system faults
|
||||
* that prevent the PSE from meeting the specifications in Table 33–11 and that
|
||||
* require the PSE not to source power. These error conditions are different
|
||||
* from those monitored by the state diagrams in Figure 33–10.
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_error_condition {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_NON_EXISTING_PORT = 1,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNDEFINED_PORT,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_INTERNAL_HW_FAULT,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_COMM_ERROR_AFTER_FORCE_ON,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNKNOWN_PORT_STATUS,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_TURN_OFF,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_FORCE_SHUTDOWN,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_CONFIG_CHANGE,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_DETECTED_OVER_TEMP,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_mr_pse_enable - mr_pse_enable states
|
||||
* functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_PSE_ENABLE_DISABLE_PIN_ACTIVE: Disable
|
||||
* pin active
|
||||
*
|
||||
* mr_pse_enable is control variable that selects PSE operation and test
|
||||
* functions.
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_mr_pse_enable {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_PSE_ENABLE_DISABLE_PIN_ACTIVE = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_option_detect_ted - option_detect_ted
|
||||
* states functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_DET_IN_PROCESS: Detection
|
||||
* in process
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_CONNECTION_CHECK_ERROR:
|
||||
* Connection check error
|
||||
*
|
||||
* option_detect_ted is a variable indicating if detection can be performed
|
||||
* by the PSE during the ted_timer interval.
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_option_detect_ted {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_DET_IN_PROCESS = 1,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_CONNECTION_CHECK_ERROR,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_option_vport_lim - option_vport_lim states
|
||||
* functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_HIGH_VOLTAGE: Main supply
|
||||
* voltage is high
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_LOW_VOLTAGE: Main supply
|
||||
* voltage is low
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_VOLTAGE_INJECTION: Voltage
|
||||
* injection into the port
|
||||
*
|
||||
* option_vport_lim is an optional variable indicates if VPSE is out of the
|
||||
* operating range during normal operating state.
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_option_vport_lim {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_HIGH_VOLTAGE = 1,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_LOW_VOLTAGE,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_VOLTAGE_INJECTION,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_ovld_detected - ovld_detected states
|
||||
* functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_OVLD_DETECTED_OVERLOAD: Overload state
|
||||
*
|
||||
* ovld_detected is a variable indicating if the PSE output current has been
|
||||
* in an overload condition (see 33.2.7.6) for at least TCUT of a one-second
|
||||
* sliding time.
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_ovld_detected {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_OVLD_DETECTED_OVERLOAD = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_power_not_available - power_not_available
|
||||
* states functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_BUDGET_EXCEEDED: Power
|
||||
* budget exceeded for the controller
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PORT_PW_LIMIT_EXCEEDS_CONTROLLER_BUDGET:
|
||||
* Configured port power limit exceeded controller power budget
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PD_REQUEST_EXCEEDS_PORT_LIMIT:
|
||||
* Power request from PD exceeds port limit
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_HW_PW_LIMIT: Power
|
||||
* denied due to Hardware power limit
|
||||
*
|
||||
* power_not_available is a variable that is asserted in an
|
||||
* implementation-dependent manner when the PSE is no longer capable of
|
||||
* sourcing sufficient power to support the attached PD. Sufficient power
|
||||
* is defined by classification; see 33.2.6.
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_power_not_available {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_BUDGET_EXCEEDED = 1,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PORT_PW_LIMIT_EXCEEDS_CONTROLLER_BUDGET,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PD_REQUEST_EXCEEDS_PORT_LIMIT,
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_HW_PW_LIMIT,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_ext_substate_short_detected - short_detected states
|
||||
* functions. IEEE 802.3-2022 33.2.4.4 Variables
|
||||
*
|
||||
* @ETHTOOL_C33_PSE_EXT_SUBSTATE_SHORT_DETECTED_SHORT_CONDITION: Short
|
||||
* condition was detected
|
||||
*
|
||||
* short_detected is a variable indicating if the PSE output current has been
|
||||
* in a short circuit condition for TLIM within a sliding window (see 33.2.7.7).
|
||||
*/
|
||||
enum ethtool_c33_pse_ext_substate_short_detected {
|
||||
ETHTOOL_C33_PSE_EXT_SUBSTATE_SHORT_DETECTED_SHORT_CONDITION = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_pse_types - Types of PSE controller.
|
||||
* @ETHTOOL_PSE_UNKNOWN: Type of PSE controller is unknown
|
||||
* @ETHTOOL_PSE_PODL: PSE controller which support PoDL
|
||||
* @ETHTOOL_PSE_C33: PSE controller which support Clause 33 (PoE)
|
||||
*/
|
||||
enum ethtool_pse_types {
|
||||
ETHTOOL_PSE_UNKNOWN = 1 << 0,
|
||||
ETHTOOL_PSE_PODL = 1 << 1,
|
||||
ETHTOOL_PSE_C33 = 1 << 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_admin_state - operational state of the PoDL PSE
|
||||
* functions. IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWN: state of PSE functions is unknown
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_DISABLED: PSE functions are disabled
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED: PSE functions are enabled
|
||||
*/
|
||||
enum ethtool_c33_pse_admin_state {
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWN = 1,
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_DISABLED,
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_pw_d_status - power detection status of the PSE.
|
||||
* IEEE 802.3-2022 30.9.1.1.3 aPoDLPSEPowerDetectionStatus:
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWN: PSE status is unknown
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_DISABLED: The enumeration "disabled"
|
||||
* indicates that the PSE State diagram is in the state DISABLED.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHING: The enumeration "searching"
|
||||
* indicates the PSE State diagram is in a state other than those
|
||||
* listed.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERING: The enumeration
|
||||
* "deliveringPower" indicates that the PSE State diagram is in the
|
||||
* state POWER_ON.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_TEST: The enumeration "test" indicates that
|
||||
* the PSE State diagram is in the state TEST_MODE.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_FAULT: The enumeration "fault" indicates that
|
||||
* the PSE State diagram is in the state TEST_ERROR.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULT: The enumeration "otherFault"
|
||||
* indicates that the PSE State diagram is in the state IDLE due to
|
||||
* the variable error_condition = true.
|
||||
*/
|
||||
enum ethtool_c33_pse_pw_d_status {
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWN = 1,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_DISABLED,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHING,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERING,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_TEST,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_FAULT,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULT,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_podl_pse_admin_state - operational state of the PoDL PSE
|
||||
* functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
|
||||
|
@ -820,6 +1070,24 @@ enum ethtool_mm_verify_status {
|
|||
ETHTOOL_MM_VERIFY_STATUS_DISABLED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_module_fw_flash_status - plug-in module firmware flashing status
|
||||
* @ETHTOOL_MODULE_FW_FLASH_STATUS_STARTED: The firmware flashing process has
|
||||
* started.
|
||||
* @ETHTOOL_MODULE_FW_FLASH_STATUS_IN_PROGRESS: The firmware flashing process
|
||||
* is in progress.
|
||||
* @ETHTOOL_MODULE_FW_FLASH_STATUS_COMPLETED: The firmware flashing process was
|
||||
* completed successfully.
|
||||
* @ETHTOOL_MODULE_FW_FLASH_STATUS_ERROR: The firmware flashing process was
|
||||
* stopped due to an error.
|
||||
*/
|
||||
enum ethtool_module_fw_flash_status {
|
||||
ETHTOOL_MODULE_FW_FLASH_STATUS_STARTED = 1,
|
||||
ETHTOOL_MODULE_FW_FLASH_STATUS_IN_PROGRESS,
|
||||
ETHTOOL_MODULE_FW_FLASH_STATUS_COMPLETED,
|
||||
ETHTOOL_MODULE_FW_FLASH_STATUS_ERROR,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_gstrings - string set for data tagging
|
||||
* @cmd: Command number = %ETHTOOL_GSTRINGS
|
||||
|
@ -1264,6 +1532,8 @@ struct ethtool_rxfh_indir {
|
|||
* hardware hash key.
|
||||
* @hfunc: Defines the current RSS hash function used by HW (or to be set to).
|
||||
* Valid values are one of the %ETH_RSS_HASH_*.
|
||||
* @input_xfrm: Defines how the input data is transformed. Valid values are one
|
||||
* of %RXH_XFRM_*.
|
||||
* @rsvd8: Reserved for future use; see the note on reserved space.
|
||||
* @rsvd32: Reserved for future use; see the note on reserved space.
|
||||
* @rss_config: RX ring/queue index for each hash value i.e., indirection table
|
||||
|
@ -1283,7 +1553,8 @@ struct ethtool_rxfh {
|
|||
__u32 indir_size;
|
||||
__u32 key_size;
|
||||
__u8 hfunc;
|
||||
__u8 rsvd8[3];
|
||||
__u8 input_xfrm;
|
||||
__u8 rsvd8[2];
|
||||
__u32 rsvd32;
|
||||
__u32 rss_config[];
|
||||
};
|
||||
|
@ -1785,6 +2056,25 @@ enum ethtool_link_mode_bit_indices {
|
|||
ETHTOOL_LINK_MODE_10baseT1S_Full_BIT = 99,
|
||||
ETHTOOL_LINK_MODE_10baseT1S_Half_BIT = 100,
|
||||
ETHTOOL_LINK_MODE_10baseT1S_P2MP_Half_BIT = 101,
|
||||
ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT = 102,
|
||||
ETHTOOL_LINK_MODE_200000baseCR_Full_BIT = 103,
|
||||
ETHTOOL_LINK_MODE_200000baseKR_Full_BIT = 104,
|
||||
ETHTOOL_LINK_MODE_200000baseDR_Full_BIT = 105,
|
||||
ETHTOOL_LINK_MODE_200000baseDR_2_Full_BIT = 106,
|
||||
ETHTOOL_LINK_MODE_200000baseSR_Full_BIT = 107,
|
||||
ETHTOOL_LINK_MODE_200000baseVR_Full_BIT = 108,
|
||||
ETHTOOL_LINK_MODE_400000baseCR2_Full_BIT = 109,
|
||||
ETHTOOL_LINK_MODE_400000baseKR2_Full_BIT = 110,
|
||||
ETHTOOL_LINK_MODE_400000baseDR2_Full_BIT = 111,
|
||||
ETHTOOL_LINK_MODE_400000baseDR2_2_Full_BIT = 112,
|
||||
ETHTOOL_LINK_MODE_400000baseSR2_Full_BIT = 113,
|
||||
ETHTOOL_LINK_MODE_400000baseVR2_Full_BIT = 114,
|
||||
ETHTOOL_LINK_MODE_800000baseCR4_Full_BIT = 115,
|
||||
ETHTOOL_LINK_MODE_800000baseKR4_Full_BIT = 116,
|
||||
ETHTOOL_LINK_MODE_800000baseDR4_Full_BIT = 117,
|
||||
ETHTOOL_LINK_MODE_800000baseDR4_2_Full_BIT = 118,
|
||||
ETHTOOL_LINK_MODE_800000baseSR4_Full_BIT = 119,
|
||||
ETHTOOL_LINK_MODE_800000baseVR4_Full_BIT = 120,
|
||||
|
||||
/* must be last entry */
|
||||
__ETHTOOL_LINK_MODE_MASK_NBITS
|
||||
|
@ -1990,25 +2280,89 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
|||
|
||||
#define WOL_MODE_COUNT 8
|
||||
|
||||
/* L2-L4 network traffic flow types */
|
||||
#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */
|
||||
#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */
|
||||
#define SCTP_V4_FLOW 0x03 /* hash or spec (sctp_ip4_spec) */
|
||||
#define AH_ESP_V4_FLOW 0x04 /* hash only */
|
||||
#define TCP_V6_FLOW 0x05 /* hash or spec (tcp_ip6_spec; nfc only) */
|
||||
#define UDP_V6_FLOW 0x06 /* hash or spec (udp_ip6_spec; nfc only) */
|
||||
#define SCTP_V6_FLOW 0x07 /* hash or spec (sctp_ip6_spec; nfc only) */
|
||||
#define AH_ESP_V6_FLOW 0x08 /* hash only */
|
||||
#define AH_V4_FLOW 0x09 /* hash or spec (ah_ip4_spec) */
|
||||
#define ESP_V4_FLOW 0x0a /* hash or spec (esp_ip4_spec) */
|
||||
#define AH_V6_FLOW 0x0b /* hash or spec (ah_ip6_spec; nfc only) */
|
||||
#define ESP_V6_FLOW 0x0c /* hash or spec (esp_ip6_spec; nfc only) */
|
||||
#define IPV4_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */
|
||||
#define IP_USER_FLOW IPV4_USER_FLOW
|
||||
#define IPV6_USER_FLOW 0x0e /* spec only (usr_ip6_spec; nfc only) */
|
||||
#define IPV4_FLOW 0x10 /* hash only */
|
||||
#define IPV6_FLOW 0x11 /* hash only */
|
||||
#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
|
||||
/* RSS hash function data
|
||||
* XOR the corresponding source and destination fields of each specified
|
||||
* protocol. Both copies of the XOR'ed fields are fed into the RSS and RXHASH
|
||||
* calculation. Note that this XORing reduces the input set entropy and could
|
||||
* be exploited to reduce the RSS queue spread.
|
||||
*/
|
||||
#define RXH_XFRM_SYM_XOR (1 << 0)
|
||||
/* Similar to SYM_XOR, except that one copy of the XOR'ed fields is replaced by
|
||||
* an OR of the same fields
|
||||
*/
|
||||
#define RXH_XFRM_SYM_OR_XOR (1 << 1)
|
||||
#define RXH_XFRM_NO_CHANGE 0xff
|
||||
|
||||
enum {
|
||||
/* L2-L4 network traffic flow types */
|
||||
TCP_V4_FLOW = 0x01, /* hash or spec (tcp_ip4_spec) */
|
||||
UDP_V4_FLOW = 0x02, /* hash or spec (udp_ip4_spec) */
|
||||
SCTP_V4_FLOW = 0x03, /* hash or spec (sctp_ip4_spec) */
|
||||
AH_ESP_V4_FLOW = 0x04, /* hash only */
|
||||
TCP_V6_FLOW = 0x05, /* hash or spec (tcp_ip6_spec; nfc only) */
|
||||
UDP_V6_FLOW = 0x06, /* hash or spec (udp_ip6_spec; nfc only) */
|
||||
SCTP_V6_FLOW = 0x07, /* hash or spec (sctp_ip6_spec; nfc only) */
|
||||
AH_ESP_V6_FLOW = 0x08, /* hash only */
|
||||
AH_V4_FLOW = 0x09, /* hash or spec (ah_ip4_spec) */
|
||||
ESP_V4_FLOW = 0x0a, /* hash or spec (esp_ip4_spec) */
|
||||
AH_V6_FLOW = 0x0b, /* hash or spec (ah_ip6_spec; nfc only) */
|
||||
ESP_V6_FLOW = 0x0c, /* hash or spec (esp_ip6_spec; nfc only) */
|
||||
IPV4_USER_FLOW = 0x0d, /* spec only (usr_ip4_spec) */
|
||||
IP_USER_FLOW = IPV4_USER_FLOW,
|
||||
IPV6_USER_FLOW = 0x0e, /* spec only (usr_ip6_spec; nfc only) */
|
||||
IPV4_FLOW = 0x10, /* hash only */
|
||||
IPV6_FLOW = 0x11, /* hash only */
|
||||
ETHER_FLOW = 0x12, /* spec only (ether_spec) */
|
||||
|
||||
/* Used for GTP-U IPv4 and IPv6.
|
||||
* The format of GTP packets only includes
|
||||
* elements such as TEID and GTP version.
|
||||
* It is primarily intended for data communication of the UE.
|
||||
*/
|
||||
GTPU_V4_FLOW = 0x13, /* hash only */
|
||||
GTPU_V6_FLOW = 0x14, /* hash only */
|
||||
|
||||
/* Use for GTP-C IPv4 and v6.
|
||||
* The format of these GTP packets does not include TEID.
|
||||
* Primarily expected to be used for communication
|
||||
* to create sessions for UE data communication,
|
||||
* commonly referred to as CSR (Create Session Request).
|
||||
*/
|
||||
GTPC_V4_FLOW = 0x15, /* hash only */
|
||||
GTPC_V6_FLOW = 0x16, /* hash only */
|
||||
|
||||
/* Use for GTP-C IPv4 and v6.
|
||||
* Unlike GTPC_V4_FLOW, the format of these GTP packets includes TEID.
|
||||
* After session creation, it becomes this packet.
|
||||
* This is mainly used for requests to realize UE handover.
|
||||
*/
|
||||
GTPC_TEID_V4_FLOW = 0x17, /* hash only */
|
||||
GTPC_TEID_V6_FLOW = 0x18, /* hash only */
|
||||
|
||||
/* Use for GTP-U and extended headers for the PSC (PDU Session Container).
|
||||
* The format of these GTP packets includes TEID and QFI.
|
||||
* In 5G communication using UPF (User Plane Function),
|
||||
* data communication with this extended header is performed.
|
||||
*/
|
||||
GTPU_EH_V4_FLOW = 0x19, /* hash only */
|
||||
GTPU_EH_V6_FLOW = 0x1a, /* hash only */
|
||||
|
||||
/* Use for GTP-U IPv4 and v6 PSC (PDU Session Container) extended headers.
|
||||
* This differs from GTPU_EH_V(4|6)_FLOW in that it is distinguished by
|
||||
* UL/DL included in the PSC.
|
||||
* There are differences in the data included based on Downlink/Uplink,
|
||||
* and can be used to distinguish packets.
|
||||
* The functions described so far are useful when you want to
|
||||
* handle communication from the mobile network in UPF, PGW, etc.
|
||||
*/
|
||||
GTPU_UL_V4_FLOW = 0x1b, /* hash only */
|
||||
GTPU_UL_V6_FLOW = 0x1c, /* hash only */
|
||||
GTPU_DL_V4_FLOW = 0x1d, /* hash only */
|
||||
GTPU_DL_V6_FLOW = 0x1e, /* hash only */
|
||||
|
||||
__FLOW_TYPE_COUNT,
|
||||
};
|
||||
|
||||
/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
|
||||
#define FLOW_EXT 0x80000000
|
||||
#define FLOW_MAC_EXT 0x40000000
|
||||
|
@ -2023,6 +2377,7 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
|||
#define RXH_IP_DST (1 << 5)
|
||||
#define RXH_L4_B_0_1 (1 << 6) /* src port in case of TCP/UDP/SCTP */
|
||||
#define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */
|
||||
#define RXH_GTP_TEID (1 << 8) /* teid in case of GTP */
|
||||
#define RXH_DISCARD (1 << 31)
|
||||
|
||||
#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
|
||||
|
@ -2126,18 +2481,6 @@ enum ethtool_reset_flags {
|
|||
* refused. For drivers: ignore this field (use kernel's
|
||||
* __ETHTOOL_LINK_MODE_MASK_NBITS instead), any change to it will
|
||||
* be overwritten by kernel.
|
||||
* @supported: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features for which the interface
|
||||
* supports autonegotiation or auto-detection. Read-only.
|
||||
* @advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features that are advertised through
|
||||
* autonegotiation or enabled for auto-detection.
|
||||
* @lp_advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, and other
|
||||
* link features that the link partner advertised through
|
||||
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
||||
* @transceiver: Used to distinguish different possible PHY types,
|
||||
* reported consistently by PHYLIB. Read-only.
|
||||
* @master_slave_cfg: Master/slave port mode.
|
||||
|
@ -2179,6 +2522,21 @@ enum ethtool_reset_flags {
|
|||
* %set_link_ksettings() should validate all fields other than @cmd
|
||||
* and @link_mode_masks_nwords that are not described as read-only or
|
||||
* deprecated, and must ignore all fields described as read-only.
|
||||
*
|
||||
* @link_mode_masks is divided into three bitfields, each of length
|
||||
* @link_mode_masks_nwords:
|
||||
* - supported: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features for which the interface
|
||||
* supports autonegotiation or auto-detection. Read-only.
|
||||
* - advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features that are advertised through
|
||||
* autonegotiation or enabled for auto-detection.
|
||||
* - lp_advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, and other
|
||||
* link features that the link partner advertised through
|
||||
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
||||
*/
|
||||
struct ethtool_link_settings {
|
||||
__u32 cmd;
|
||||
|
@ -2196,6 +2554,11 @@ struct ethtool_link_settings {
|
|||
__u8 master_slave_state;
|
||||
__u8 rate_matching;
|
||||
__u32 reserved[7];
|
||||
/* Linux builds with -Wflex-array-member-not-at-end but does
|
||||
* not use the "link_mode_masks" member. Leave it defined for
|
||||
* userspace for now, and when userspace wants to start using
|
||||
* -Wfamnae, we'll need a new solution.
|
||||
*/
|
||||
__u32 link_mode_masks[];
|
||||
/* layout of link_mode_masks fields:
|
||||
* __u32 map_supported[link_mode_masks_nwords];
|
||||
|
@ -2203,4 +2566,20 @@ struct ethtool_link_settings {
|
|||
* __u32 map_lp_advertising[link_mode_masks_nwords];
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* enum phy_upstream - Represents the upstream component a given PHY device
|
||||
* is connected to, as in what is on the other end of the MII bus. Most PHYs
|
||||
* will be attached to an Ethernet MAC controller, but in some cases, there's
|
||||
* an intermediate PHY used as a media-converter, which will driver another
|
||||
* MII interface as its output.
|
||||
* @PHY_UPSTREAM_MAC: Upstream component is a MAC (a switch port,
|
||||
* or ethernet controller)
|
||||
* @PHY_UPSTREAM_PHY: Upstream component is a PHY (likely a media converter)
|
||||
*/
|
||||
enum phy_upstream {
|
||||
PHY_UPSTREAM_MAC,
|
||||
PHY_UPSTREAM_PHY,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_ETHTOOL_H */
|
||||
|
|
|
@ -10,504 +10,12 @@
|
|||
#define _LINUX_ETHTOOL_NETLINK_H_
|
||||
|
||||
#include <linux/ethtool.h>
|
||||
|
||||
/* message types - userspace to kernel */
|
||||
enum {
|
||||
ETHTOOL_MSG_USER_NONE,
|
||||
ETHTOOL_MSG_STRSET_GET,
|
||||
ETHTOOL_MSG_LINKINFO_GET,
|
||||
ETHTOOL_MSG_LINKINFO_SET,
|
||||
ETHTOOL_MSG_LINKMODES_GET,
|
||||
ETHTOOL_MSG_LINKMODES_SET,
|
||||
ETHTOOL_MSG_LINKSTATE_GET,
|
||||
ETHTOOL_MSG_DEBUG_GET,
|
||||
ETHTOOL_MSG_DEBUG_SET,
|
||||
ETHTOOL_MSG_WOL_GET,
|
||||
ETHTOOL_MSG_WOL_SET,
|
||||
ETHTOOL_MSG_FEATURES_GET,
|
||||
ETHTOOL_MSG_FEATURES_SET,
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET,
|
||||
ETHTOOL_MSG_PRIVFLAGS_SET,
|
||||
ETHTOOL_MSG_RINGS_GET,
|
||||
ETHTOOL_MSG_RINGS_SET,
|
||||
ETHTOOL_MSG_CHANNELS_GET,
|
||||
ETHTOOL_MSG_CHANNELS_SET,
|
||||
ETHTOOL_MSG_COALESCE_GET,
|
||||
ETHTOOL_MSG_COALESCE_SET,
|
||||
ETHTOOL_MSG_PAUSE_GET,
|
||||
ETHTOOL_MSG_PAUSE_SET,
|
||||
ETHTOOL_MSG_EEE_GET,
|
||||
ETHTOOL_MSG_EEE_SET,
|
||||
ETHTOOL_MSG_TSINFO_GET,
|
||||
ETHTOOL_MSG_CABLE_TEST_ACT,
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET,
|
||||
ETHTOOL_MSG_FEC_GET,
|
||||
ETHTOOL_MSG_FEC_SET,
|
||||
ETHTOOL_MSG_MODULE_EEPROM_GET,
|
||||
ETHTOOL_MSG_STATS_GET,
|
||||
ETHTOOL_MSG_PHC_VCLOCKS_GET,
|
||||
ETHTOOL_MSG_MODULE_GET,
|
||||
ETHTOOL_MSG_MODULE_SET,
|
||||
ETHTOOL_MSG_PSE_GET,
|
||||
ETHTOOL_MSG_PSE_SET,
|
||||
ETHTOOL_MSG_RSS_GET,
|
||||
ETHTOOL_MSG_PLCA_GET_CFG,
|
||||
ETHTOOL_MSG_PLCA_SET_CFG,
|
||||
ETHTOOL_MSG_PLCA_GET_STATUS,
|
||||
ETHTOOL_MSG_MM_GET,
|
||||
ETHTOOL_MSG_MM_SET,
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_MSG_USER_CNT,
|
||||
ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
|
||||
};
|
||||
|
||||
/* message types - kernel to userspace */
|
||||
enum {
|
||||
ETHTOOL_MSG_KERNEL_NONE,
|
||||
ETHTOOL_MSG_STRSET_GET_REPLY,
|
||||
ETHTOOL_MSG_LINKINFO_GET_REPLY,
|
||||
ETHTOOL_MSG_LINKINFO_NTF,
|
||||
ETHTOOL_MSG_LINKMODES_GET_REPLY,
|
||||
ETHTOOL_MSG_LINKMODES_NTF,
|
||||
ETHTOOL_MSG_LINKSTATE_GET_REPLY,
|
||||
ETHTOOL_MSG_DEBUG_GET_REPLY,
|
||||
ETHTOOL_MSG_DEBUG_NTF,
|
||||
ETHTOOL_MSG_WOL_GET_REPLY,
|
||||
ETHTOOL_MSG_WOL_NTF,
|
||||
ETHTOOL_MSG_FEATURES_GET_REPLY,
|
||||
ETHTOOL_MSG_FEATURES_SET_REPLY,
|
||||
ETHTOOL_MSG_FEATURES_NTF,
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
|
||||
ETHTOOL_MSG_PRIVFLAGS_NTF,
|
||||
ETHTOOL_MSG_RINGS_GET_REPLY,
|
||||
ETHTOOL_MSG_RINGS_NTF,
|
||||
ETHTOOL_MSG_CHANNELS_GET_REPLY,
|
||||
ETHTOOL_MSG_CHANNELS_NTF,
|
||||
ETHTOOL_MSG_COALESCE_GET_REPLY,
|
||||
ETHTOOL_MSG_COALESCE_NTF,
|
||||
ETHTOOL_MSG_PAUSE_GET_REPLY,
|
||||
ETHTOOL_MSG_PAUSE_NTF,
|
||||
ETHTOOL_MSG_EEE_GET_REPLY,
|
||||
ETHTOOL_MSG_EEE_NTF,
|
||||
ETHTOOL_MSG_TSINFO_GET_REPLY,
|
||||
ETHTOOL_MSG_CABLE_TEST_NTF,
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
|
||||
ETHTOOL_MSG_FEC_GET_REPLY,
|
||||
ETHTOOL_MSG_FEC_NTF,
|
||||
ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
|
||||
ETHTOOL_MSG_STATS_GET_REPLY,
|
||||
ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
|
||||
ETHTOOL_MSG_MODULE_GET_REPLY,
|
||||
ETHTOOL_MSG_MODULE_NTF,
|
||||
ETHTOOL_MSG_PSE_GET_REPLY,
|
||||
ETHTOOL_MSG_RSS_GET_REPLY,
|
||||
ETHTOOL_MSG_PLCA_GET_CFG_REPLY,
|
||||
ETHTOOL_MSG_PLCA_GET_STATUS_REPLY,
|
||||
ETHTOOL_MSG_PLCA_NTF,
|
||||
ETHTOOL_MSG_MM_GET_REPLY,
|
||||
ETHTOOL_MSG_MM_NTF,
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_MSG_KERNEL_CNT,
|
||||
ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
|
||||
};
|
||||
|
||||
/* request header */
|
||||
|
||||
/* use compact bitsets in reply */
|
||||
#define ETHTOOL_FLAG_COMPACT_BITSETS (1 << 0)
|
||||
/* provide optional reply for SET or ACT requests */
|
||||
#define ETHTOOL_FLAG_OMIT_REPLY (1 << 1)
|
||||
/* request statistics, if supported by the driver */
|
||||
#define ETHTOOL_FLAG_STATS (1 << 2)
|
||||
#include <linux/ethtool_netlink_generated.h>
|
||||
|
||||
#define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \
|
||||
ETHTOOL_FLAG_OMIT_REPLY | \
|
||||
ETHTOOL_FLAG_STATS)
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_HEADER_UNSPEC,
|
||||
ETHTOOL_A_HEADER_DEV_INDEX, /* u32 */
|
||||
ETHTOOL_A_HEADER_DEV_NAME, /* string */
|
||||
ETHTOOL_A_HEADER_FLAGS, /* u32 - ETHTOOL_FLAG_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_HEADER_CNT,
|
||||
ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1
|
||||
};
|
||||
|
||||
/* bit sets */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_BITSET_BIT_UNSPEC,
|
||||
ETHTOOL_A_BITSET_BIT_INDEX, /* u32 */
|
||||
ETHTOOL_A_BITSET_BIT_NAME, /* string */
|
||||
ETHTOOL_A_BITSET_BIT_VALUE, /* flag */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_BITSET_BIT_CNT,
|
||||
ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_BITSET_BITS_UNSPEC,
|
||||
ETHTOOL_A_BITSET_BITS_BIT, /* nest - _A_BITSET_BIT_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_BITSET_BITS_CNT,
|
||||
ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_BITSET_UNSPEC,
|
||||
ETHTOOL_A_BITSET_NOMASK, /* flag */
|
||||
ETHTOOL_A_BITSET_SIZE, /* u32 */
|
||||
ETHTOOL_A_BITSET_BITS, /* nest - _A_BITSET_BITS_* */
|
||||
ETHTOOL_A_BITSET_VALUE, /* binary */
|
||||
ETHTOOL_A_BITSET_MASK, /* binary */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_BITSET_CNT,
|
||||
ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1
|
||||
};
|
||||
|
||||
/* string sets */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRING_UNSPEC,
|
||||
ETHTOOL_A_STRING_INDEX, /* u32 */
|
||||
ETHTOOL_A_STRING_VALUE, /* string */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STRING_CNT,
|
||||
ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRINGS_UNSPEC,
|
||||
ETHTOOL_A_STRINGS_STRING, /* nest - _A_STRINGS_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STRINGS_CNT,
|
||||
ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRINGSET_UNSPEC,
|
||||
ETHTOOL_A_STRINGSET_ID, /* u32 */
|
||||
ETHTOOL_A_STRINGSET_COUNT, /* u32 */
|
||||
ETHTOOL_A_STRINGSET_STRINGS, /* nest - _A_STRINGS_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STRINGSET_CNT,
|
||||
ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRINGSETS_UNSPEC,
|
||||
ETHTOOL_A_STRINGSETS_STRINGSET, /* nest - _A_STRINGSET_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STRINGSETS_CNT,
|
||||
ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1
|
||||
};
|
||||
|
||||
/* STRSET */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRSET_UNSPEC,
|
||||
ETHTOOL_A_STRSET_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_STRSET_STRINGSETS, /* nest - _A_STRINGSETS_* */
|
||||
ETHTOOL_A_STRSET_COUNTS_ONLY, /* flag */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STRSET_CNT,
|
||||
ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1
|
||||
};
|
||||
|
||||
/* LINKINFO */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_LINKINFO_UNSPEC,
|
||||
ETHTOOL_A_LINKINFO_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_LINKINFO_PORT, /* u8 */
|
||||
ETHTOOL_A_LINKINFO_PHYADDR, /* u8 */
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX, /* u8 */
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX_CTRL, /* u8 */
|
||||
ETHTOOL_A_LINKINFO_TRANSCEIVER, /* u8 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_LINKINFO_CNT,
|
||||
ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1
|
||||
};
|
||||
|
||||
/* LINKMODES */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_LINKMODES_UNSPEC,
|
||||
ETHTOOL_A_LINKMODES_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_LINKMODES_AUTONEG, /* u8 */
|
||||
ETHTOOL_A_LINKMODES_OURS, /* bitset */
|
||||
ETHTOOL_A_LINKMODES_PEER, /* bitset */
|
||||
ETHTOOL_A_LINKMODES_SPEED, /* u32 */
|
||||
ETHTOOL_A_LINKMODES_DUPLEX, /* u8 */
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG, /* u8 */
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE, /* u8 */
|
||||
ETHTOOL_A_LINKMODES_LANES, /* u32 */
|
||||
ETHTOOL_A_LINKMODES_RATE_MATCHING, /* u8 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_LINKMODES_CNT,
|
||||
ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
|
||||
};
|
||||
|
||||
/* LINKSTATE */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_LINKSTATE_UNSPEC,
|
||||
ETHTOOL_A_LINKSTATE_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_LINKSTATE_LINK, /* u8 */
|
||||
ETHTOOL_A_LINKSTATE_SQI, /* u32 */
|
||||
ETHTOOL_A_LINKSTATE_SQI_MAX, /* u32 */
|
||||
ETHTOOL_A_LINKSTATE_EXT_STATE, /* u8 */
|
||||
ETHTOOL_A_LINKSTATE_EXT_SUBSTATE, /* u8 */
|
||||
ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_LINKSTATE_CNT,
|
||||
ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1
|
||||
};
|
||||
|
||||
/* DEBUG */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_DEBUG_UNSPEC,
|
||||
ETHTOOL_A_DEBUG_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_DEBUG_MSGMASK, /* bitset */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_DEBUG_CNT,
|
||||
ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1
|
||||
};
|
||||
|
||||
/* WOL */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_WOL_UNSPEC,
|
||||
ETHTOOL_A_WOL_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_WOL_MODES, /* bitset */
|
||||
ETHTOOL_A_WOL_SOPASS, /* binary */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_WOL_CNT,
|
||||
ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1
|
||||
};
|
||||
|
||||
/* FEATURES */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_FEATURES_UNSPEC,
|
||||
ETHTOOL_A_FEATURES_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_FEATURES_HW, /* bitset */
|
||||
ETHTOOL_A_FEATURES_WANTED, /* bitset */
|
||||
ETHTOOL_A_FEATURES_ACTIVE, /* bitset */
|
||||
ETHTOOL_A_FEATURES_NOCHANGE, /* bitset */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_FEATURES_CNT,
|
||||
ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1
|
||||
};
|
||||
|
||||
/* PRIVFLAGS */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PRIVFLAGS_UNSPEC,
|
||||
ETHTOOL_A_PRIVFLAGS_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_PRIVFLAGS_FLAGS, /* bitset */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_PRIVFLAGS_CNT,
|
||||
ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
|
||||
};
|
||||
|
||||
/* RINGS */
|
||||
|
||||
enum {
|
||||
ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
|
||||
ETHTOOL_TCP_DATA_SPLIT_DISABLED,
|
||||
ETHTOOL_TCP_DATA_SPLIT_ENABLED,
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_RINGS_UNSPEC,
|
||||
ETHTOOL_A_RINGS_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_RINGS_RX_MAX, /* u32 */
|
||||
ETHTOOL_A_RINGS_RX_MINI_MAX, /* u32 */
|
||||
ETHTOOL_A_RINGS_RX_JUMBO_MAX, /* u32 */
|
||||
ETHTOOL_A_RINGS_TX_MAX, /* u32 */
|
||||
ETHTOOL_A_RINGS_RX, /* u32 */
|
||||
ETHTOOL_A_RINGS_RX_MINI, /* u32 */
|
||||
ETHTOOL_A_RINGS_RX_JUMBO, /* u32 */
|
||||
ETHTOOL_A_RINGS_TX, /* u32 */
|
||||
ETHTOOL_A_RINGS_RX_BUF_LEN, /* u32 */
|
||||
ETHTOOL_A_RINGS_TCP_DATA_SPLIT, /* u8 */
|
||||
ETHTOOL_A_RINGS_CQE_SIZE, /* u32 */
|
||||
ETHTOOL_A_RINGS_TX_PUSH, /* u8 */
|
||||
ETHTOOL_A_RINGS_RX_PUSH, /* u8 */
|
||||
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN, /* u32 */
|
||||
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_RINGS_CNT,
|
||||
ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
|
||||
};
|
||||
|
||||
/* CHANNELS */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CHANNELS_UNSPEC,
|
||||
ETHTOOL_A_CHANNELS_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_CHANNELS_RX_MAX, /* u32 */
|
||||
ETHTOOL_A_CHANNELS_TX_MAX, /* u32 */
|
||||
ETHTOOL_A_CHANNELS_OTHER_MAX, /* u32 */
|
||||
ETHTOOL_A_CHANNELS_COMBINED_MAX, /* u32 */
|
||||
ETHTOOL_A_CHANNELS_RX_COUNT, /* u32 */
|
||||
ETHTOOL_A_CHANNELS_TX_COUNT, /* u32 */
|
||||
ETHTOOL_A_CHANNELS_OTHER_COUNT, /* u32 */
|
||||
ETHTOOL_A_CHANNELS_COMBINED_COUNT, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_CHANNELS_CNT,
|
||||
ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
|
||||
};
|
||||
|
||||
/* COALESCE */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_COALESCE_UNSPEC,
|
||||
ETHTOOL_A_COALESCE_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_COALESCE_RX_USECS, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RX_USECS_IRQ, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_USECS, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_USECS_IRQ, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ, /* u32 */
|
||||
ETHTOOL_A_COALESCE_STATS_BLOCK_USECS, /* u32 */
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX, /* u8 */
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX, /* u8 */
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_LOW, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RX_USECS_LOW, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_USECS_LOW, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW, /* u32 */
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_HIGH, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RX_USECS_HIGH, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_USECS_HIGH, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH, /* u32 */
|
||||
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL, /* u32 */
|
||||
ETHTOOL_A_COALESCE_USE_CQE_MODE_TX, /* u8 */
|
||||
ETHTOOL_A_COALESCE_USE_CQE_MODE_RX, /* u8 */
|
||||
ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES, /* u32 */
|
||||
ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_COALESCE_CNT,
|
||||
ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
|
||||
};
|
||||
|
||||
/* PAUSE */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PAUSE_UNSPEC,
|
||||
ETHTOOL_A_PAUSE_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_PAUSE_AUTONEG, /* u8 */
|
||||
ETHTOOL_A_PAUSE_RX, /* u8 */
|
||||
ETHTOOL_A_PAUSE_TX, /* u8 */
|
||||
ETHTOOL_A_PAUSE_STATS, /* nest - _PAUSE_STAT_* */
|
||||
ETHTOOL_A_PAUSE_STATS_SRC, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_PAUSE_CNT,
|
||||
ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PAUSE_STAT_UNSPEC,
|
||||
ETHTOOL_A_PAUSE_STAT_PAD,
|
||||
|
||||
ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
|
||||
ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
|
||||
|
||||
/* add new constants above here
|
||||
* adjust ETHTOOL_PAUSE_STAT_CNT if adding non-stats!
|
||||
*/
|
||||
__ETHTOOL_A_PAUSE_STAT_CNT,
|
||||
ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
|
||||
};
|
||||
|
||||
/* EEE */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_EEE_UNSPEC,
|
||||
ETHTOOL_A_EEE_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_EEE_MODES_OURS, /* bitset */
|
||||
ETHTOOL_A_EEE_MODES_PEER, /* bitset */
|
||||
ETHTOOL_A_EEE_ACTIVE, /* u8 */
|
||||
ETHTOOL_A_EEE_ENABLED, /* u8 */
|
||||
ETHTOOL_A_EEE_TX_LPI_ENABLED, /* u8 */
|
||||
ETHTOOL_A_EEE_TX_LPI_TIMER, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_EEE_CNT,
|
||||
ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
|
||||
};
|
||||
|
||||
/* TSINFO */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TSINFO_UNSPEC,
|
||||
ETHTOOL_A_TSINFO_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_TSINFO_TIMESTAMPING, /* bitset */
|
||||
ETHTOOL_A_TSINFO_TX_TYPES, /* bitset */
|
||||
ETHTOOL_A_TSINFO_RX_FILTERS, /* bitset */
|
||||
ETHTOOL_A_TSINFO_PHC_INDEX, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_TSINFO_CNT,
|
||||
ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
|
||||
};
|
||||
|
||||
/* PHC VCLOCKS */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PHC_VCLOCKS_UNSPEC,
|
||||
ETHTOOL_A_PHC_VCLOCKS_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_PHC_VCLOCKS_NUM, /* u32 */
|
||||
ETHTOOL_A_PHC_VCLOCKS_INDEX, /* array, s32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_PHC_VCLOCKS_CNT,
|
||||
ETHTOOL_A_PHC_VCLOCKS_MAX = (__ETHTOOL_A_PHC_VCLOCKS_CNT - 1)
|
||||
};
|
||||
|
||||
/* CABLE TEST */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_HEADER, /* nest - _A_HEADER_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_CABLE_TEST_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_MAX = __ETHTOOL_A_CABLE_TEST_CNT - 1
|
||||
};
|
||||
|
||||
/* CABLE TEST NOTIFY */
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC,
|
||||
|
@ -515,6 +23,14 @@ enum {
|
|||
ETHTOOL_A_CABLE_RESULT_CODE_OPEN,
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT,
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT,
|
||||
/* detected reflection caused by the impedance discontinuity between
|
||||
* a regular 100 Ohm cable and a part with the abnormal impedance value
|
||||
*/
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_IMPEDANCE_MISMATCH,
|
||||
/* TDR not possible due to high noise level */
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_NOISE,
|
||||
/* TDR resolution not possible / out of distance */
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_RESOLUTION_NOT_POSSIBLE,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -524,22 +40,13 @@ enum {
|
|||
ETHTOOL_A_CABLE_PAIR_D,
|
||||
};
|
||||
|
||||
/* Information source for specific results. */
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_RESULT_UNSPEC,
|
||||
ETHTOOL_A_CABLE_RESULT_PAIR, /* u8 ETHTOOL_A_CABLE_PAIR_ */
|
||||
ETHTOOL_A_CABLE_RESULT_CODE, /* u8 ETHTOOL_A_CABLE_RESULT_CODE_ */
|
||||
|
||||
__ETHTOOL_A_CABLE_RESULT_CNT,
|
||||
ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR, /* u8 ETHTOOL_A_CABLE_PAIR_ */
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_CM, /* u32 */
|
||||
|
||||
__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
|
||||
ETHTOOL_A_CABLE_INF_SRC_UNSPEC,
|
||||
/* Results provided by the Time Domain Reflectometry (TDR) */
|
||||
ETHTOOL_A_CABLE_INF_SRC_TDR,
|
||||
/* Results provided by the Active Link Cable Diagnostic (ALCD) */
|
||||
ETHTOOL_A_CABLE_INF_SRC_ALCD,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -548,48 +55,6 @@ enum {
|
|||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_NEST_UNSPEC,
|
||||
ETHTOOL_A_CABLE_NEST_RESULT, /* nest - ETHTOOL_A_CABLE_RESULT_ */
|
||||
ETHTOOL_A_CABLE_NEST_FAULT_LENGTH, /* nest - ETHTOOL_A_CABLE_FAULT_LENGTH_ */
|
||||
__ETHTOOL_A_CABLE_NEST_CNT,
|
||||
ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_NTF_HEADER, /* nest - ETHTOOL_A_HEADER_* */
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS, /* u8 - _STARTED/_COMPLETE */
|
||||
ETHTOOL_A_CABLE_TEST_NTF_NEST, /* nest - of results: */
|
||||
|
||||
__ETHTOOL_A_CABLE_TEST_NTF_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
|
||||
};
|
||||
|
||||
/* CABLE TEST TDR */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST, /* u32 */
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST, /* u32 */
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP, /* u32 */
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR, /* u8 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG, /* nest - *_TDR_CFG_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_CABLE_TEST_TDR_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CNT - 1
|
||||
};
|
||||
|
||||
/* CABLE TEST TDR NOTIFY */
|
||||
|
||||
enum {
|
||||
|
@ -629,163 +94,17 @@ enum {
|
|||
ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER, /* nest - ETHTOOL_A_HEADER_* */
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS, /* u8 - _STARTED/_COMPLETE */
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST, /* nest - of results: */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1
|
||||
};
|
||||
|
||||
/* TUNNEL INFO */
|
||||
|
||||
enum {
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
|
||||
|
||||
__ETHTOOL_UDP_TUNNEL_TYPE_CNT
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
|
||||
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT, /* be16 */
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
|
||||
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE, /* u32 */
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES, /* bitset */
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY, /* nest - _UDP_ENTRY_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_UDP_UNSPEC,
|
||||
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE, /* nest - _UDP_TABLE_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_TUNNEL_UDP_CNT,
|
||||
ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_INFO_UNSPEC,
|
||||
ETHTOOL_A_TUNNEL_INFO_HEADER, /* nest - _A_HEADER_* */
|
||||
|
||||
ETHTOOL_A_TUNNEL_INFO_UDP_PORTS, /* nest - _UDP_TABLE */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_TUNNEL_INFO_CNT,
|
||||
ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
|
||||
};
|
||||
|
||||
/* FEC */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_FEC_UNSPEC,
|
||||
ETHTOOL_A_FEC_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_FEC_MODES, /* bitset */
|
||||
ETHTOOL_A_FEC_AUTO, /* u8 */
|
||||
ETHTOOL_A_FEC_ACTIVE, /* u32 */
|
||||
ETHTOOL_A_FEC_STATS, /* nest - _A_FEC_STAT */
|
||||
|
||||
__ETHTOOL_A_FEC_CNT,
|
||||
ETHTOOL_A_FEC_MAX = (__ETHTOOL_A_FEC_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_FEC_STAT_UNSPEC,
|
||||
ETHTOOL_A_FEC_STAT_PAD,
|
||||
|
||||
ETHTOOL_A_FEC_STAT_CORRECTED, /* array, u64 */
|
||||
ETHTOOL_A_FEC_STAT_UNCORR, /* array, u64 */
|
||||
ETHTOOL_A_FEC_STAT_CORR_BITS, /* array, u64 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_FEC_STAT_CNT,
|
||||
ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
|
||||
};
|
||||
|
||||
/* MODULE EEPROM */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MODULE_EEPROM_UNSPEC,
|
||||
ETHTOOL_A_MODULE_EEPROM_HEADER, /* nest - _A_HEADER_* */
|
||||
|
||||
ETHTOOL_A_MODULE_EEPROM_OFFSET, /* u32 */
|
||||
ETHTOOL_A_MODULE_EEPROM_LENGTH, /* u32 */
|
||||
ETHTOOL_A_MODULE_EEPROM_PAGE, /* u8 */
|
||||
ETHTOOL_A_MODULE_EEPROM_BANK, /* u8 */
|
||||
ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS, /* u8 */
|
||||
ETHTOOL_A_MODULE_EEPROM_DATA, /* binary */
|
||||
|
||||
__ETHTOOL_A_MODULE_EEPROM_CNT,
|
||||
ETHTOOL_A_MODULE_EEPROM_MAX = (__ETHTOOL_A_MODULE_EEPROM_CNT - 1)
|
||||
};
|
||||
|
||||
/* STATS */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STATS_UNSPEC,
|
||||
ETHTOOL_A_STATS_PAD,
|
||||
ETHTOOL_A_STATS_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_STATS_GROUPS, /* bitset */
|
||||
|
||||
ETHTOOL_A_STATS_GRP, /* nest - _A_STATS_GRP_* */
|
||||
|
||||
ETHTOOL_A_STATS_SRC, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STATS_CNT,
|
||||
ETHTOOL_A_STATS_MAX = (__ETHTOOL_A_STATS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_STATS_ETH_PHY,
|
||||
ETHTOOL_STATS_ETH_MAC,
|
||||
ETHTOOL_STATS_ETH_CTRL,
|
||||
ETHTOOL_STATS_RMON,
|
||||
ETHTOOL_STATS_PHY,
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_STATS_CNT
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STATS_GRP_UNSPEC,
|
||||
ETHTOOL_A_STATS_GRP_PAD,
|
||||
|
||||
ETHTOOL_A_STATS_GRP_ID, /* u32 */
|
||||
ETHTOOL_A_STATS_GRP_SS_ID, /* u32 */
|
||||
|
||||
ETHTOOL_A_STATS_GRP_STAT, /* nest */
|
||||
|
||||
ETHTOOL_A_STATS_GRP_HIST_RX, /* nest */
|
||||
ETHTOOL_A_STATS_GRP_HIST_TX, /* nest */
|
||||
|
||||
ETHTOOL_A_STATS_GRP_HIST_BKT_LOW, /* u32 */
|
||||
ETHTOOL_A_STATS_GRP_HIST_BKT_HI, /* u32 */
|
||||
ETHTOOL_A_STATS_GRP_HIST_VAL, /* u64 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STATS_GRP_CNT,
|
||||
ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_GRP_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
/* 30.3.2.1.5 aSymbolErrorDuringCarrier */
|
||||
ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR,
|
||||
|
@ -875,110 +194,20 @@ enum {
|
|||
ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1)
|
||||
};
|
||||
|
||||
/* MODULE */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MODULE_UNSPEC,
|
||||
ETHTOOL_A_MODULE_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_MODULE_POWER_MODE_POLICY, /* u8 */
|
||||
ETHTOOL_A_MODULE_POWER_MODE, /* u8 */
|
||||
/* Basic packet counters if PHY has separate counters from the MAC */
|
||||
ETHTOOL_A_STATS_PHY_RX_PKTS,
|
||||
ETHTOOL_A_STATS_PHY_RX_BYTES,
|
||||
ETHTOOL_A_STATS_PHY_RX_ERRORS,
|
||||
ETHTOOL_A_STATS_PHY_TX_PKTS,
|
||||
ETHTOOL_A_STATS_PHY_TX_BYTES,
|
||||
ETHTOOL_A_STATS_PHY_TX_ERRORS,
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_MODULE_CNT,
|
||||
ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
|
||||
__ETHTOOL_A_STATS_PHY_CNT,
|
||||
ETHTOOL_A_STATS_PHY_MAX = (__ETHTOOL_A_STATS_PHY_CNT - 1)
|
||||
};
|
||||
|
||||
/* Power Sourcing Equipment */
|
||||
enum {
|
||||
ETHTOOL_A_PSE_UNSPEC,
|
||||
ETHTOOL_A_PSE_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_PODL_PSE_ADMIN_STATE, /* u32 */
|
||||
ETHTOOL_A_PODL_PSE_ADMIN_CONTROL, /* u32 */
|
||||
ETHTOOL_A_PODL_PSE_PW_D_STATUS, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_PSE_CNT,
|
||||
ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_RSS_UNSPEC,
|
||||
ETHTOOL_A_RSS_HEADER,
|
||||
ETHTOOL_A_RSS_CONTEXT, /* u32 */
|
||||
ETHTOOL_A_RSS_HFUNC, /* u32 */
|
||||
ETHTOOL_A_RSS_INDIR, /* binary */
|
||||
ETHTOOL_A_RSS_HKEY, /* binary */
|
||||
|
||||
__ETHTOOL_A_RSS_CNT,
|
||||
ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1),
|
||||
};
|
||||
|
||||
/* PLCA */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PLCA_UNSPEC,
|
||||
ETHTOOL_A_PLCA_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_PLCA_VERSION, /* u16 */
|
||||
ETHTOOL_A_PLCA_ENABLED, /* u8 */
|
||||
ETHTOOL_A_PLCA_STATUS, /* u8 */
|
||||
ETHTOOL_A_PLCA_NODE_CNT, /* u32 */
|
||||
ETHTOOL_A_PLCA_NODE_ID, /* u32 */
|
||||
ETHTOOL_A_PLCA_TO_TMR, /* u32 */
|
||||
ETHTOOL_A_PLCA_BURST_CNT, /* u32 */
|
||||
ETHTOOL_A_PLCA_BURST_TMR, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_PLCA_CNT,
|
||||
ETHTOOL_A_PLCA_MAX = (__ETHTOOL_A_PLCA_CNT - 1)
|
||||
};
|
||||
|
||||
/* MAC Merge (802.3) */
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MM_STAT_UNSPEC,
|
||||
ETHTOOL_A_MM_STAT_PAD,
|
||||
|
||||
/* aMACMergeFrameAssErrorCount */
|
||||
ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS, /* u64 */
|
||||
/* aMACMergeFrameSmdErrorCount */
|
||||
ETHTOOL_A_MM_STAT_SMD_ERRORS, /* u64 */
|
||||
/* aMACMergeFrameAssOkCount */
|
||||
ETHTOOL_A_MM_STAT_REASSEMBLY_OK, /* u64 */
|
||||
/* aMACMergeFragCountRx */
|
||||
ETHTOOL_A_MM_STAT_RX_FRAG_COUNT, /* u64 */
|
||||
/* aMACMergeFragCountTx */
|
||||
ETHTOOL_A_MM_STAT_TX_FRAG_COUNT, /* u64 */
|
||||
/* aMACMergeHoldCount */
|
||||
ETHTOOL_A_MM_STAT_HOLD_COUNT, /* u64 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_MM_STAT_CNT,
|
||||
ETHTOOL_A_MM_STAT_MAX = (__ETHTOOL_A_MM_STAT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MM_UNSPEC,
|
||||
ETHTOOL_A_MM_HEADER, /* nest - _A_HEADER_* */
|
||||
ETHTOOL_A_MM_PMAC_ENABLED, /* u8 */
|
||||
ETHTOOL_A_MM_TX_ENABLED, /* u8 */
|
||||
ETHTOOL_A_MM_TX_ACTIVE, /* u8 */
|
||||
ETHTOOL_A_MM_TX_MIN_FRAG_SIZE, /* u32 */
|
||||
ETHTOOL_A_MM_RX_MIN_FRAG_SIZE, /* u32 */
|
||||
ETHTOOL_A_MM_VERIFY_ENABLED, /* u8 */
|
||||
ETHTOOL_A_MM_VERIFY_STATUS, /* u8 */
|
||||
ETHTOOL_A_MM_VERIFY_TIME, /* u32 */
|
||||
ETHTOOL_A_MM_MAX_VERIFY_TIME, /* u32 */
|
||||
ETHTOOL_A_MM_STATS, /* nest - _A_MM_STAT_* */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_MM_CNT,
|
||||
ETHTOOL_A_MM_MAX = (__ETHTOOL_A_MM_CNT - 1)
|
||||
};
|
||||
|
||||
/* generic netlink info */
|
||||
#define ETHTOOL_GENL_NAME "ethtool"
|
||||
#define ETHTOOL_GENL_VERSION 1
|
||||
|
||||
#define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
|
||||
|
||||
#endif /* _LINUX_ETHTOOL_NETLINK_H_ */
|
||||
|
|
|
@ -0,0 +1,830 @@
|
|||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/* Do not edit directly, auto-generated from: */
|
||||
/* Documentation/netlink/specs/ethtool.yaml */
|
||||
/* YNL-GEN uapi header */
|
||||
|
||||
#ifndef _LINUX_ETHTOOL_NETLINK_GENERATED_H
|
||||
#define _LINUX_ETHTOOL_NETLINK_GENERATED_H
|
||||
|
||||
#define ETHTOOL_GENL_NAME "ethtool"
|
||||
#define ETHTOOL_GENL_VERSION 1
|
||||
|
||||
enum {
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
|
||||
|
||||
/* private: */
|
||||
__ETHTOOL_UDP_TUNNEL_TYPE_CNT,
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_MAX = (__ETHTOOL_UDP_TUNNEL_TYPE_CNT - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_header_flags - common ethtool header flags
|
||||
* @ETHTOOL_FLAG_COMPACT_BITSETS: use compact bitsets in reply
|
||||
* @ETHTOOL_FLAG_OMIT_REPLY: provide optional reply for SET or ACT requests
|
||||
* @ETHTOOL_FLAG_STATS: request statistics, if supported by the driver
|
||||
*/
|
||||
enum ethtool_header_flags {
|
||||
ETHTOOL_FLAG_COMPACT_BITSETS = 1,
|
||||
ETHTOOL_FLAG_OMIT_REPLY = 2,
|
||||
ETHTOOL_FLAG_STATS = 4,
|
||||
};
|
||||
|
||||
enum ethtool_tcp_data_split {
|
||||
ETHTOOL_TCP_DATA_SPLIT_UNKNOWN,
|
||||
ETHTOOL_TCP_DATA_SPLIT_DISABLED,
|
||||
ETHTOOL_TCP_DATA_SPLIT_ENABLED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum hwtstamp_source - Source of the hardware timestamp
|
||||
* @HWTSTAMP_SOURCE_NETDEV: Hardware timestamp comes from a MAC or a device
|
||||
* which has MAC and PHY integrated
|
||||
* @HWTSTAMP_SOURCE_PHYLIB: Hardware timestamp comes from one PHY device of the
|
||||
* network topology
|
||||
*/
|
||||
enum hwtstamp_source {
|
||||
HWTSTAMP_SOURCE_NETDEV = 1,
|
||||
HWTSTAMP_SOURCE_PHYLIB,
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_HEADER_UNSPEC,
|
||||
ETHTOOL_A_HEADER_DEV_INDEX,
|
||||
ETHTOOL_A_HEADER_DEV_NAME,
|
||||
ETHTOOL_A_HEADER_FLAGS,
|
||||
ETHTOOL_A_HEADER_PHY_INDEX,
|
||||
|
||||
__ETHTOOL_A_HEADER_CNT,
|
||||
ETHTOOL_A_HEADER_MAX = (__ETHTOOL_A_HEADER_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_BITSET_BIT_UNSPEC,
|
||||
ETHTOOL_A_BITSET_BIT_INDEX,
|
||||
ETHTOOL_A_BITSET_BIT_NAME,
|
||||
ETHTOOL_A_BITSET_BIT_VALUE,
|
||||
|
||||
__ETHTOOL_A_BITSET_BIT_CNT,
|
||||
ETHTOOL_A_BITSET_BIT_MAX = (__ETHTOOL_A_BITSET_BIT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_BITSET_BITS_UNSPEC,
|
||||
ETHTOOL_A_BITSET_BITS_BIT,
|
||||
|
||||
__ETHTOOL_A_BITSET_BITS_CNT,
|
||||
ETHTOOL_A_BITSET_BITS_MAX = (__ETHTOOL_A_BITSET_BITS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_BITSET_UNSPEC,
|
||||
ETHTOOL_A_BITSET_NOMASK,
|
||||
ETHTOOL_A_BITSET_SIZE,
|
||||
ETHTOOL_A_BITSET_BITS,
|
||||
ETHTOOL_A_BITSET_VALUE,
|
||||
ETHTOOL_A_BITSET_MASK,
|
||||
|
||||
__ETHTOOL_A_BITSET_CNT,
|
||||
ETHTOOL_A_BITSET_MAX = (__ETHTOOL_A_BITSET_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRING_UNSPEC,
|
||||
ETHTOOL_A_STRING_INDEX,
|
||||
ETHTOOL_A_STRING_VALUE,
|
||||
|
||||
__ETHTOOL_A_STRING_CNT,
|
||||
ETHTOOL_A_STRING_MAX = (__ETHTOOL_A_STRING_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRINGS_UNSPEC,
|
||||
ETHTOOL_A_STRINGS_STRING,
|
||||
|
||||
__ETHTOOL_A_STRINGS_CNT,
|
||||
ETHTOOL_A_STRINGS_MAX = (__ETHTOOL_A_STRINGS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRINGSET_UNSPEC,
|
||||
ETHTOOL_A_STRINGSET_ID,
|
||||
ETHTOOL_A_STRINGSET_COUNT,
|
||||
ETHTOOL_A_STRINGSET_STRINGS,
|
||||
|
||||
__ETHTOOL_A_STRINGSET_CNT,
|
||||
ETHTOOL_A_STRINGSET_MAX = (__ETHTOOL_A_STRINGSET_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRINGSETS_UNSPEC,
|
||||
ETHTOOL_A_STRINGSETS_STRINGSET,
|
||||
|
||||
__ETHTOOL_A_STRINGSETS_CNT,
|
||||
ETHTOOL_A_STRINGSETS_MAX = (__ETHTOOL_A_STRINGSETS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STRSET_UNSPEC,
|
||||
ETHTOOL_A_STRSET_HEADER,
|
||||
ETHTOOL_A_STRSET_STRINGSETS,
|
||||
ETHTOOL_A_STRSET_COUNTS_ONLY,
|
||||
|
||||
__ETHTOOL_A_STRSET_CNT,
|
||||
ETHTOOL_A_STRSET_MAX = (__ETHTOOL_A_STRSET_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PRIVFLAGS_UNSPEC,
|
||||
ETHTOOL_A_PRIVFLAGS_HEADER,
|
||||
ETHTOOL_A_PRIVFLAGS_FLAGS,
|
||||
|
||||
__ETHTOOL_A_PRIVFLAGS_CNT,
|
||||
ETHTOOL_A_PRIVFLAGS_MAX = (__ETHTOOL_A_PRIVFLAGS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_RINGS_UNSPEC,
|
||||
ETHTOOL_A_RINGS_HEADER,
|
||||
ETHTOOL_A_RINGS_RX_MAX,
|
||||
ETHTOOL_A_RINGS_RX_MINI_MAX,
|
||||
ETHTOOL_A_RINGS_RX_JUMBO_MAX,
|
||||
ETHTOOL_A_RINGS_TX_MAX,
|
||||
ETHTOOL_A_RINGS_RX,
|
||||
ETHTOOL_A_RINGS_RX_MINI,
|
||||
ETHTOOL_A_RINGS_RX_JUMBO,
|
||||
ETHTOOL_A_RINGS_TX,
|
||||
ETHTOOL_A_RINGS_RX_BUF_LEN,
|
||||
ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
|
||||
ETHTOOL_A_RINGS_CQE_SIZE,
|
||||
ETHTOOL_A_RINGS_TX_PUSH,
|
||||
ETHTOOL_A_RINGS_RX_PUSH,
|
||||
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN,
|
||||
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX,
|
||||
ETHTOOL_A_RINGS_HDS_THRESH,
|
||||
ETHTOOL_A_RINGS_HDS_THRESH_MAX,
|
||||
|
||||
__ETHTOOL_A_RINGS_CNT,
|
||||
ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MM_STAT_UNSPEC,
|
||||
ETHTOOL_A_MM_STAT_PAD,
|
||||
ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS,
|
||||
ETHTOOL_A_MM_STAT_SMD_ERRORS,
|
||||
ETHTOOL_A_MM_STAT_REASSEMBLY_OK,
|
||||
ETHTOOL_A_MM_STAT_RX_FRAG_COUNT,
|
||||
ETHTOOL_A_MM_STAT_TX_FRAG_COUNT,
|
||||
ETHTOOL_A_MM_STAT_HOLD_COUNT,
|
||||
|
||||
__ETHTOOL_A_MM_STAT_CNT,
|
||||
ETHTOOL_A_MM_STAT_MAX = (__ETHTOOL_A_MM_STAT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MM_UNSPEC,
|
||||
ETHTOOL_A_MM_HEADER,
|
||||
ETHTOOL_A_MM_PMAC_ENABLED,
|
||||
ETHTOOL_A_MM_TX_ENABLED,
|
||||
ETHTOOL_A_MM_TX_ACTIVE,
|
||||
ETHTOOL_A_MM_TX_MIN_FRAG_SIZE,
|
||||
ETHTOOL_A_MM_RX_MIN_FRAG_SIZE,
|
||||
ETHTOOL_A_MM_VERIFY_ENABLED,
|
||||
ETHTOOL_A_MM_VERIFY_STATUS,
|
||||
ETHTOOL_A_MM_VERIFY_TIME,
|
||||
ETHTOOL_A_MM_MAX_VERIFY_TIME,
|
||||
ETHTOOL_A_MM_STATS,
|
||||
|
||||
__ETHTOOL_A_MM_CNT,
|
||||
ETHTOOL_A_MM_MAX = (__ETHTOOL_A_MM_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_LINKINFO_UNSPEC,
|
||||
ETHTOOL_A_LINKINFO_HEADER,
|
||||
ETHTOOL_A_LINKINFO_PORT,
|
||||
ETHTOOL_A_LINKINFO_PHYADDR,
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX,
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX_CTRL,
|
||||
ETHTOOL_A_LINKINFO_TRANSCEIVER,
|
||||
|
||||
__ETHTOOL_A_LINKINFO_CNT,
|
||||
ETHTOOL_A_LINKINFO_MAX = (__ETHTOOL_A_LINKINFO_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_LINKMODES_UNSPEC,
|
||||
ETHTOOL_A_LINKMODES_HEADER,
|
||||
ETHTOOL_A_LINKMODES_AUTONEG,
|
||||
ETHTOOL_A_LINKMODES_OURS,
|
||||
ETHTOOL_A_LINKMODES_PEER,
|
||||
ETHTOOL_A_LINKMODES_SPEED,
|
||||
ETHTOOL_A_LINKMODES_DUPLEX,
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
|
||||
ETHTOOL_A_LINKMODES_LANES,
|
||||
ETHTOOL_A_LINKMODES_RATE_MATCHING,
|
||||
|
||||
__ETHTOOL_A_LINKMODES_CNT,
|
||||
ETHTOOL_A_LINKMODES_MAX = (__ETHTOOL_A_LINKMODES_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_LINKSTATE_UNSPEC,
|
||||
ETHTOOL_A_LINKSTATE_HEADER,
|
||||
ETHTOOL_A_LINKSTATE_LINK,
|
||||
ETHTOOL_A_LINKSTATE_SQI,
|
||||
ETHTOOL_A_LINKSTATE_SQI_MAX,
|
||||
ETHTOOL_A_LINKSTATE_EXT_STATE,
|
||||
ETHTOOL_A_LINKSTATE_EXT_SUBSTATE,
|
||||
ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT,
|
||||
|
||||
__ETHTOOL_A_LINKSTATE_CNT,
|
||||
ETHTOOL_A_LINKSTATE_MAX = (__ETHTOOL_A_LINKSTATE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_DEBUG_UNSPEC,
|
||||
ETHTOOL_A_DEBUG_HEADER,
|
||||
ETHTOOL_A_DEBUG_MSGMASK,
|
||||
|
||||
__ETHTOOL_A_DEBUG_CNT,
|
||||
ETHTOOL_A_DEBUG_MAX = (__ETHTOOL_A_DEBUG_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_WOL_UNSPEC,
|
||||
ETHTOOL_A_WOL_HEADER,
|
||||
ETHTOOL_A_WOL_MODES,
|
||||
ETHTOOL_A_WOL_SOPASS,
|
||||
|
||||
__ETHTOOL_A_WOL_CNT,
|
||||
ETHTOOL_A_WOL_MAX = (__ETHTOOL_A_WOL_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_FEATURES_UNSPEC,
|
||||
ETHTOOL_A_FEATURES_HEADER,
|
||||
ETHTOOL_A_FEATURES_HW,
|
||||
ETHTOOL_A_FEATURES_WANTED,
|
||||
ETHTOOL_A_FEATURES_ACTIVE,
|
||||
ETHTOOL_A_FEATURES_NOCHANGE,
|
||||
|
||||
__ETHTOOL_A_FEATURES_CNT,
|
||||
ETHTOOL_A_FEATURES_MAX = (__ETHTOOL_A_FEATURES_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CHANNELS_UNSPEC,
|
||||
ETHTOOL_A_CHANNELS_HEADER,
|
||||
ETHTOOL_A_CHANNELS_RX_MAX,
|
||||
ETHTOOL_A_CHANNELS_TX_MAX,
|
||||
ETHTOOL_A_CHANNELS_OTHER_MAX,
|
||||
ETHTOOL_A_CHANNELS_COMBINED_MAX,
|
||||
ETHTOOL_A_CHANNELS_RX_COUNT,
|
||||
ETHTOOL_A_CHANNELS_TX_COUNT,
|
||||
ETHTOOL_A_CHANNELS_OTHER_COUNT,
|
||||
ETHTOOL_A_CHANNELS_COMBINED_COUNT,
|
||||
|
||||
__ETHTOOL_A_CHANNELS_CNT,
|
||||
ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_IRQ_MODERATION_UNSPEC,
|
||||
ETHTOOL_A_IRQ_MODERATION_USEC,
|
||||
ETHTOOL_A_IRQ_MODERATION_PKTS,
|
||||
ETHTOOL_A_IRQ_MODERATION_COMPS,
|
||||
|
||||
__ETHTOOL_A_IRQ_MODERATION_CNT,
|
||||
ETHTOOL_A_IRQ_MODERATION_MAX = (__ETHTOOL_A_IRQ_MODERATION_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PROFILE_UNSPEC,
|
||||
ETHTOOL_A_PROFILE_IRQ_MODERATION,
|
||||
|
||||
__ETHTOOL_A_PROFILE_CNT,
|
||||
ETHTOOL_A_PROFILE_MAX = (__ETHTOOL_A_PROFILE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_COALESCE_UNSPEC,
|
||||
ETHTOOL_A_COALESCE_HEADER,
|
||||
ETHTOOL_A_COALESCE_RX_USECS,
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES,
|
||||
ETHTOOL_A_COALESCE_RX_USECS_IRQ,
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ,
|
||||
ETHTOOL_A_COALESCE_TX_USECS,
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES,
|
||||
ETHTOOL_A_COALESCE_TX_USECS_IRQ,
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ,
|
||||
ETHTOOL_A_COALESCE_STATS_BLOCK_USECS,
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX,
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX,
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_LOW,
|
||||
ETHTOOL_A_COALESCE_RX_USECS_LOW,
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW,
|
||||
ETHTOOL_A_COALESCE_TX_USECS_LOW,
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW,
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_HIGH,
|
||||
ETHTOOL_A_COALESCE_RX_USECS_HIGH,
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH,
|
||||
ETHTOOL_A_COALESCE_TX_USECS_HIGH,
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH,
|
||||
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL,
|
||||
ETHTOOL_A_COALESCE_USE_CQE_MODE_TX,
|
||||
ETHTOOL_A_COALESCE_USE_CQE_MODE_RX,
|
||||
ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES,
|
||||
ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES,
|
||||
ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS,
|
||||
ETHTOOL_A_COALESCE_RX_PROFILE,
|
||||
ETHTOOL_A_COALESCE_TX_PROFILE,
|
||||
|
||||
__ETHTOOL_A_COALESCE_CNT,
|
||||
ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PAUSE_STAT_UNSPEC,
|
||||
ETHTOOL_A_PAUSE_STAT_PAD,
|
||||
ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
|
||||
ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
|
||||
|
||||
__ETHTOOL_A_PAUSE_STAT_CNT,
|
||||
ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PAUSE_UNSPEC,
|
||||
ETHTOOL_A_PAUSE_HEADER,
|
||||
ETHTOOL_A_PAUSE_AUTONEG,
|
||||
ETHTOOL_A_PAUSE_RX,
|
||||
ETHTOOL_A_PAUSE_TX,
|
||||
ETHTOOL_A_PAUSE_STATS,
|
||||
ETHTOOL_A_PAUSE_STATS_SRC,
|
||||
|
||||
__ETHTOOL_A_PAUSE_CNT,
|
||||
ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_EEE_UNSPEC,
|
||||
ETHTOOL_A_EEE_HEADER,
|
||||
ETHTOOL_A_EEE_MODES_OURS,
|
||||
ETHTOOL_A_EEE_MODES_PEER,
|
||||
ETHTOOL_A_EEE_ACTIVE,
|
||||
ETHTOOL_A_EEE_ENABLED,
|
||||
ETHTOOL_A_EEE_TX_LPI_ENABLED,
|
||||
ETHTOOL_A_EEE_TX_LPI_TIMER,
|
||||
|
||||
__ETHTOOL_A_EEE_CNT,
|
||||
ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TS_STAT_UNSPEC,
|
||||
ETHTOOL_A_TS_STAT_TX_PKTS,
|
||||
ETHTOOL_A_TS_STAT_TX_LOST,
|
||||
ETHTOOL_A_TS_STAT_TX_ERR,
|
||||
ETHTOOL_A_TS_STAT_TX_ONESTEP_PKTS_UNCONFIRMED,
|
||||
|
||||
__ETHTOOL_A_TS_STAT_CNT,
|
||||
ETHTOOL_A_TS_STAT_MAX = (__ETHTOOL_A_TS_STAT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_UNSPEC,
|
||||
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_INDEX,
|
||||
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_QUALIFIER,
|
||||
|
||||
__ETHTOOL_A_TS_HWTSTAMP_PROVIDER_CNT,
|
||||
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_MAX = (__ETHTOOL_A_TS_HWTSTAMP_PROVIDER_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TSINFO_UNSPEC,
|
||||
ETHTOOL_A_TSINFO_HEADER,
|
||||
ETHTOOL_A_TSINFO_TIMESTAMPING,
|
||||
ETHTOOL_A_TSINFO_TX_TYPES,
|
||||
ETHTOOL_A_TSINFO_RX_FILTERS,
|
||||
ETHTOOL_A_TSINFO_PHC_INDEX,
|
||||
ETHTOOL_A_TSINFO_STATS,
|
||||
ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER,
|
||||
ETHTOOL_A_TSINFO_HWTSTAMP_SOURCE,
|
||||
ETHTOOL_A_TSINFO_HWTSTAMP_PHYINDEX,
|
||||
|
||||
__ETHTOOL_A_TSINFO_CNT,
|
||||
ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_RESULT_UNSPEC,
|
||||
ETHTOOL_A_CABLE_RESULT_PAIR,
|
||||
ETHTOOL_A_CABLE_RESULT_CODE,
|
||||
ETHTOOL_A_CABLE_RESULT_SRC,
|
||||
|
||||
__ETHTOOL_A_CABLE_RESULT_CNT,
|
||||
ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_CM,
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_SRC,
|
||||
|
||||
__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_NEST_UNSPEC,
|
||||
ETHTOOL_A_CABLE_NEST_RESULT,
|
||||
ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,
|
||||
|
||||
__ETHTOOL_A_CABLE_NEST_CNT,
|
||||
ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_HEADER,
|
||||
|
||||
__ETHTOOL_A_CABLE_TEST_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_MAX = (__ETHTOOL_A_CABLE_TEST_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_NTF_HEADER,
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS,
|
||||
ETHTOOL_A_CABLE_TEST_NTF_NEST,
|
||||
|
||||
__ETHTOOL_A_CABLE_TEST_NTF_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR,
|
||||
|
||||
__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = (__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,
|
||||
|
||||
__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_HEADER,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG,
|
||||
|
||||
__ETHTOOL_A_CABLE_TEST_TDR_CNT,
|
||||
ETHTOOL_A_CABLE_TEST_TDR_MAX = (__ETHTOOL_A_CABLE_TEST_TDR_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE,
|
||||
|
||||
__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE,
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES,
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY,
|
||||
|
||||
__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_UDP_UNSPEC,
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE,
|
||||
|
||||
__ETHTOOL_A_TUNNEL_UDP_CNT,
|
||||
ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TUNNEL_INFO_UNSPEC,
|
||||
ETHTOOL_A_TUNNEL_INFO_HEADER,
|
||||
ETHTOOL_A_TUNNEL_INFO_UDP_PORTS,
|
||||
|
||||
__ETHTOOL_A_TUNNEL_INFO_CNT,
|
||||
ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_FEC_STAT_UNSPEC,
|
||||
ETHTOOL_A_FEC_STAT_PAD,
|
||||
ETHTOOL_A_FEC_STAT_CORRECTED,
|
||||
ETHTOOL_A_FEC_STAT_UNCORR,
|
||||
ETHTOOL_A_FEC_STAT_CORR_BITS,
|
||||
|
||||
__ETHTOOL_A_FEC_STAT_CNT,
|
||||
ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_FEC_UNSPEC,
|
||||
ETHTOOL_A_FEC_HEADER,
|
||||
ETHTOOL_A_FEC_MODES,
|
||||
ETHTOOL_A_FEC_AUTO,
|
||||
ETHTOOL_A_FEC_ACTIVE,
|
||||
ETHTOOL_A_FEC_STATS,
|
||||
|
||||
__ETHTOOL_A_FEC_CNT,
|
||||
ETHTOOL_A_FEC_MAX = (__ETHTOOL_A_FEC_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MODULE_EEPROM_UNSPEC,
|
||||
ETHTOOL_A_MODULE_EEPROM_HEADER,
|
||||
ETHTOOL_A_MODULE_EEPROM_OFFSET,
|
||||
ETHTOOL_A_MODULE_EEPROM_LENGTH,
|
||||
ETHTOOL_A_MODULE_EEPROM_PAGE,
|
||||
ETHTOOL_A_MODULE_EEPROM_BANK,
|
||||
ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS,
|
||||
ETHTOOL_A_MODULE_EEPROM_DATA,
|
||||
|
||||
__ETHTOOL_A_MODULE_EEPROM_CNT,
|
||||
ETHTOOL_A_MODULE_EEPROM_MAX = (__ETHTOOL_A_MODULE_EEPROM_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STATS_GRP_UNSPEC,
|
||||
ETHTOOL_A_STATS_GRP_PAD,
|
||||
ETHTOOL_A_STATS_GRP_ID,
|
||||
ETHTOOL_A_STATS_GRP_SS_ID,
|
||||
ETHTOOL_A_STATS_GRP_STAT,
|
||||
ETHTOOL_A_STATS_GRP_HIST_RX,
|
||||
ETHTOOL_A_STATS_GRP_HIST_TX,
|
||||
ETHTOOL_A_STATS_GRP_HIST_BKT_LOW,
|
||||
ETHTOOL_A_STATS_GRP_HIST_BKT_HI,
|
||||
ETHTOOL_A_STATS_GRP_HIST_VAL,
|
||||
|
||||
__ETHTOOL_A_STATS_GRP_CNT,
|
||||
ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_GRP_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_STATS_UNSPEC,
|
||||
ETHTOOL_A_STATS_PAD,
|
||||
ETHTOOL_A_STATS_HEADER,
|
||||
ETHTOOL_A_STATS_GROUPS,
|
||||
ETHTOOL_A_STATS_GRP,
|
||||
ETHTOOL_A_STATS_SRC,
|
||||
|
||||
__ETHTOOL_A_STATS_CNT,
|
||||
ETHTOOL_A_STATS_MAX = (__ETHTOOL_A_STATS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PHC_VCLOCKS_UNSPEC,
|
||||
ETHTOOL_A_PHC_VCLOCKS_HEADER,
|
||||
ETHTOOL_A_PHC_VCLOCKS_NUM,
|
||||
ETHTOOL_A_PHC_VCLOCKS_INDEX,
|
||||
|
||||
__ETHTOOL_A_PHC_VCLOCKS_CNT,
|
||||
ETHTOOL_A_PHC_VCLOCKS_MAX = (__ETHTOOL_A_PHC_VCLOCKS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MODULE_UNSPEC,
|
||||
ETHTOOL_A_MODULE_HEADER,
|
||||
ETHTOOL_A_MODULE_POWER_MODE_POLICY,
|
||||
ETHTOOL_A_MODULE_POWER_MODE,
|
||||
|
||||
__ETHTOOL_A_MODULE_CNT,
|
||||
ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_C33_PSE_PW_LIMIT_UNSPEC,
|
||||
ETHTOOL_A_C33_PSE_PW_LIMIT_MIN,
|
||||
ETHTOOL_A_C33_PSE_PW_LIMIT_MAX,
|
||||
|
||||
__ETHTOOL_A_C33_PSE_PW_LIMIT_CNT,
|
||||
__ETHTOOL_A_C33_PSE_PW_LIMIT_MAX = (__ETHTOOL_A_C33_PSE_PW_LIMIT_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PSE_UNSPEC,
|
||||
ETHTOOL_A_PSE_HEADER,
|
||||
ETHTOOL_A_PODL_PSE_ADMIN_STATE,
|
||||
ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
|
||||
ETHTOOL_A_PODL_PSE_PW_D_STATUS,
|
||||
ETHTOOL_A_C33_PSE_ADMIN_STATE,
|
||||
ETHTOOL_A_C33_PSE_ADMIN_CONTROL,
|
||||
ETHTOOL_A_C33_PSE_PW_D_STATUS,
|
||||
ETHTOOL_A_C33_PSE_PW_CLASS,
|
||||
ETHTOOL_A_C33_PSE_ACTUAL_PW,
|
||||
ETHTOOL_A_C33_PSE_EXT_STATE,
|
||||
ETHTOOL_A_C33_PSE_EXT_SUBSTATE,
|
||||
ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT,
|
||||
ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES,
|
||||
|
||||
__ETHTOOL_A_PSE_CNT,
|
||||
ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_RSS_UNSPEC,
|
||||
ETHTOOL_A_RSS_HEADER,
|
||||
ETHTOOL_A_RSS_CONTEXT,
|
||||
ETHTOOL_A_RSS_HFUNC,
|
||||
ETHTOOL_A_RSS_INDIR,
|
||||
ETHTOOL_A_RSS_HKEY,
|
||||
ETHTOOL_A_RSS_INPUT_XFRM,
|
||||
ETHTOOL_A_RSS_START_CONTEXT,
|
||||
|
||||
__ETHTOOL_A_RSS_CNT,
|
||||
ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PLCA_UNSPEC,
|
||||
ETHTOOL_A_PLCA_HEADER,
|
||||
ETHTOOL_A_PLCA_VERSION,
|
||||
ETHTOOL_A_PLCA_ENABLED,
|
||||
ETHTOOL_A_PLCA_STATUS,
|
||||
ETHTOOL_A_PLCA_NODE_CNT,
|
||||
ETHTOOL_A_PLCA_NODE_ID,
|
||||
ETHTOOL_A_PLCA_TO_TMR,
|
||||
ETHTOOL_A_PLCA_BURST_CNT,
|
||||
ETHTOOL_A_PLCA_BURST_TMR,
|
||||
|
||||
__ETHTOOL_A_PLCA_CNT,
|
||||
ETHTOOL_A_PLCA_MAX = (__ETHTOOL_A_PLCA_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_MODULE_FW_FLASH_UNSPEC,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_HEADER,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_PASSWORD,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_STATUS,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_DONE,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_TOTAL,
|
||||
|
||||
__ETHTOOL_A_MODULE_FW_FLASH_CNT,
|
||||
ETHTOOL_A_MODULE_FW_FLASH_MAX = (__ETHTOOL_A_MODULE_FW_FLASH_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_PHY_UNSPEC,
|
||||
ETHTOOL_A_PHY_HEADER,
|
||||
ETHTOOL_A_PHY_INDEX,
|
||||
ETHTOOL_A_PHY_DRVNAME,
|
||||
ETHTOOL_A_PHY_NAME,
|
||||
ETHTOOL_A_PHY_UPSTREAM_TYPE,
|
||||
ETHTOOL_A_PHY_UPSTREAM_INDEX,
|
||||
ETHTOOL_A_PHY_UPSTREAM_SFP_NAME,
|
||||
ETHTOOL_A_PHY_DOWNSTREAM_SFP_NAME,
|
||||
|
||||
__ETHTOOL_A_PHY_CNT,
|
||||
ETHTOOL_A_PHY_MAX = (__ETHTOOL_A_PHY_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TSCONFIG_UNSPEC,
|
||||
ETHTOOL_A_TSCONFIG_HEADER,
|
||||
ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER,
|
||||
ETHTOOL_A_TSCONFIG_TX_TYPES,
|
||||
ETHTOOL_A_TSCONFIG_RX_FILTERS,
|
||||
ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGS,
|
||||
|
||||
__ETHTOOL_A_TSCONFIG_CNT,
|
||||
ETHTOOL_A_TSCONFIG_MAX = (__ETHTOOL_A_TSCONFIG_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_MSG_USER_NONE = 0,
|
||||
ETHTOOL_MSG_STRSET_GET = 1,
|
||||
ETHTOOL_MSG_LINKINFO_GET,
|
||||
ETHTOOL_MSG_LINKINFO_SET,
|
||||
ETHTOOL_MSG_LINKMODES_GET,
|
||||
ETHTOOL_MSG_LINKMODES_SET,
|
||||
ETHTOOL_MSG_LINKSTATE_GET,
|
||||
ETHTOOL_MSG_DEBUG_GET,
|
||||
ETHTOOL_MSG_DEBUG_SET,
|
||||
ETHTOOL_MSG_WOL_GET,
|
||||
ETHTOOL_MSG_WOL_SET,
|
||||
ETHTOOL_MSG_FEATURES_GET,
|
||||
ETHTOOL_MSG_FEATURES_SET,
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET,
|
||||
ETHTOOL_MSG_PRIVFLAGS_SET,
|
||||
ETHTOOL_MSG_RINGS_GET,
|
||||
ETHTOOL_MSG_RINGS_SET,
|
||||
ETHTOOL_MSG_CHANNELS_GET,
|
||||
ETHTOOL_MSG_CHANNELS_SET,
|
||||
ETHTOOL_MSG_COALESCE_GET,
|
||||
ETHTOOL_MSG_COALESCE_SET,
|
||||
ETHTOOL_MSG_PAUSE_GET,
|
||||
ETHTOOL_MSG_PAUSE_SET,
|
||||
ETHTOOL_MSG_EEE_GET,
|
||||
ETHTOOL_MSG_EEE_SET,
|
||||
ETHTOOL_MSG_TSINFO_GET,
|
||||
ETHTOOL_MSG_CABLE_TEST_ACT,
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET,
|
||||
ETHTOOL_MSG_FEC_GET,
|
||||
ETHTOOL_MSG_FEC_SET,
|
||||
ETHTOOL_MSG_MODULE_EEPROM_GET,
|
||||
ETHTOOL_MSG_STATS_GET,
|
||||
ETHTOOL_MSG_PHC_VCLOCKS_GET,
|
||||
ETHTOOL_MSG_MODULE_GET,
|
||||
ETHTOOL_MSG_MODULE_SET,
|
||||
ETHTOOL_MSG_PSE_GET,
|
||||
ETHTOOL_MSG_PSE_SET,
|
||||
ETHTOOL_MSG_RSS_GET,
|
||||
ETHTOOL_MSG_PLCA_GET_CFG,
|
||||
ETHTOOL_MSG_PLCA_SET_CFG,
|
||||
ETHTOOL_MSG_PLCA_GET_STATUS,
|
||||
ETHTOOL_MSG_MM_GET,
|
||||
ETHTOOL_MSG_MM_SET,
|
||||
ETHTOOL_MSG_MODULE_FW_FLASH_ACT,
|
||||
ETHTOOL_MSG_PHY_GET,
|
||||
ETHTOOL_MSG_TSCONFIG_GET,
|
||||
ETHTOOL_MSG_TSCONFIG_SET,
|
||||
|
||||
__ETHTOOL_MSG_USER_CNT,
|
||||
ETHTOOL_MSG_USER_MAX = (__ETHTOOL_MSG_USER_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_MSG_KERNEL_NONE = 0,
|
||||
ETHTOOL_MSG_STRSET_GET_REPLY = 1,
|
||||
ETHTOOL_MSG_LINKINFO_GET_REPLY,
|
||||
ETHTOOL_MSG_LINKINFO_NTF,
|
||||
ETHTOOL_MSG_LINKMODES_GET_REPLY,
|
||||
ETHTOOL_MSG_LINKMODES_NTF,
|
||||
ETHTOOL_MSG_LINKSTATE_GET_REPLY,
|
||||
ETHTOOL_MSG_DEBUG_GET_REPLY,
|
||||
ETHTOOL_MSG_DEBUG_NTF,
|
||||
ETHTOOL_MSG_WOL_GET_REPLY,
|
||||
ETHTOOL_MSG_WOL_NTF,
|
||||
ETHTOOL_MSG_FEATURES_GET_REPLY,
|
||||
ETHTOOL_MSG_FEATURES_SET_REPLY,
|
||||
ETHTOOL_MSG_FEATURES_NTF,
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
|
||||
ETHTOOL_MSG_PRIVFLAGS_NTF,
|
||||
ETHTOOL_MSG_RINGS_GET_REPLY,
|
||||
ETHTOOL_MSG_RINGS_NTF,
|
||||
ETHTOOL_MSG_CHANNELS_GET_REPLY,
|
||||
ETHTOOL_MSG_CHANNELS_NTF,
|
||||
ETHTOOL_MSG_COALESCE_GET_REPLY,
|
||||
ETHTOOL_MSG_COALESCE_NTF,
|
||||
ETHTOOL_MSG_PAUSE_GET_REPLY,
|
||||
ETHTOOL_MSG_PAUSE_NTF,
|
||||
ETHTOOL_MSG_EEE_GET_REPLY,
|
||||
ETHTOOL_MSG_EEE_NTF,
|
||||
ETHTOOL_MSG_TSINFO_GET_REPLY,
|
||||
ETHTOOL_MSG_CABLE_TEST_NTF,
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
|
||||
ETHTOOL_MSG_FEC_GET_REPLY,
|
||||
ETHTOOL_MSG_FEC_NTF,
|
||||
ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
|
||||
ETHTOOL_MSG_STATS_GET_REPLY,
|
||||
ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
|
||||
ETHTOOL_MSG_MODULE_GET_REPLY,
|
||||
ETHTOOL_MSG_MODULE_NTF,
|
||||
ETHTOOL_MSG_PSE_GET_REPLY,
|
||||
ETHTOOL_MSG_RSS_GET_REPLY,
|
||||
ETHTOOL_MSG_PLCA_GET_CFG_REPLY,
|
||||
ETHTOOL_MSG_PLCA_GET_STATUS_REPLY,
|
||||
ETHTOOL_MSG_PLCA_NTF,
|
||||
ETHTOOL_MSG_MM_GET_REPLY,
|
||||
ETHTOOL_MSG_MM_NTF,
|
||||
ETHTOOL_MSG_MODULE_FW_FLASH_NTF,
|
||||
ETHTOOL_MSG_PHY_GET_REPLY,
|
||||
ETHTOOL_MSG_PHY_NTF,
|
||||
ETHTOOL_MSG_TSCONFIG_GET_REPLY,
|
||||
ETHTOOL_MSG_TSCONFIG_SET_REPLY,
|
||||
|
||||
__ETHTOOL_MSG_KERNEL_CNT,
|
||||
ETHTOOL_MSG_KERNEL_MAX = (__ETHTOOL_MSG_KERNEL_CNT - 1)
|
||||
};
|
||||
|
||||
#endif /* _LINUX_ETHTOOL_NETLINK_GENERATED_H */
|
|
@ -85,4 +85,17 @@ struct epoll_event {
|
|||
__u64 data;
|
||||
} EPOLL_PACKED;
|
||||
|
||||
struct epoll_params {
|
||||
__u32 busy_poll_usecs;
|
||||
__u16 busy_poll_budget;
|
||||
__u8 prefer_busy_poll;
|
||||
|
||||
/* pad the struct to a multiple of 64bits */
|
||||
__u8 __pad;
|
||||
};
|
||||
|
||||
#define EPOLL_IOC_TYPE 0x8A
|
||||
#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
|
||||
#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
|
||||
|
||||
#endif /* _LINUX_EVENTPOLL_H */
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2024 Unisoc Technologies Co., Ltd.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_EXFAT_H
|
||||
#define _LINUX_EXFAT_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/*
|
||||
* exfat-specific ioctl commands
|
||||
*/
|
||||
|
||||
#define EXFAT_IOC_SHUTDOWN _IOR('X', 125, __u32)
|
||||
|
||||
/*
|
||||
* Flags used by EXFAT_IOC_SHUTDOWN
|
||||
*/
|
||||
|
||||
#define EXFAT_GOING_DOWN_DEFAULT 0x0 /* default with full sync */
|
||||
#define EXFAT_GOING_DOWN_FULLSYNC 0x1 /* going down with full sync*/
|
||||
#define EXFAT_GOING_DOWN_NOSYNC 0x2 /* going down */
|
||||
|
||||
#endif /* _LINUX_EXFAT_H */
|
|
@ -43,6 +43,8 @@
|
|||
#define F2FS_IOC_DECOMPRESS_FILE _IO(F2FS_IOCTL_MAGIC, 23)
|
||||
#define F2FS_IOC_COMPRESS_FILE _IO(F2FS_IOCTL_MAGIC, 24)
|
||||
#define F2FS_IOC_START_ATOMIC_REPLACE _IO(F2FS_IOCTL_MAGIC, 25)
|
||||
#define F2FS_IOC_GET_DEV_ALIAS_FILE _IOR(F2FS_IOCTL_MAGIC, 26, __u32)
|
||||
#define F2FS_IOC_IO_PRIO _IOW(F2FS_IOCTL_MAGIC, 27, __u32)
|
||||
|
||||
/*
|
||||
* should be same as XFS_IOC_GOINGDOWN.
|
||||
|
@ -62,6 +64,12 @@
|
|||
#define F2FS_TRIM_FILE_ZEROOUT 0x2 /* zero out */
|
||||
#define F2FS_TRIM_FILE_MASK 0x3
|
||||
|
||||
/* for F2FS_IOC_IO_PRIO */
|
||||
enum {
|
||||
F2FS_IOPRIO_WRITE = 1, /* high write priority */
|
||||
F2FS_IOPRIO_MAX,
|
||||
};
|
||||
|
||||
struct f2fs_gc_range {
|
||||
__u32 sync;
|
||||
__u64 start;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#ifndef _FALLOC_H_
|
||||
#define _FALLOC_H_
|
||||
|
||||
#define FALLOC_FL_ALLOCATE_RANGE 0x00 /* allocate range */
|
||||
#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */
|
||||
#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */
|
||||
#define FALLOC_FL_NO_HIDE_STALE 0x04 /* reserved codepoint */
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
#define FAN_ACCESS 0x00000001 /* File was accessed */
|
||||
#define FAN_MODIFY 0x00000002 /* File was modified */
|
||||
#define FAN_ATTRIB 0x00000004 /* Metadata changed */
|
||||
#define FAN_CLOSE_WRITE 0x00000008 /* Writtable file closed */
|
||||
#define FAN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */
|
||||
#define FAN_CLOSE_WRITE 0x00000008 /* Writable file closed */
|
||||
#define FAN_CLOSE_NOWRITE 0x00000010 /* Unwritable file closed */
|
||||
#define FAN_OPEN 0x00000020 /* File was opened */
|
||||
#define FAN_MOVED_FROM 0x00000040 /* File was moved from X */
|
||||
#define FAN_MOVED_TO 0x00000080 /* File was moved to Y */
|
||||
|
@ -25,6 +25,11 @@
|
|||
#define FAN_OPEN_PERM 0x00010000 /* File open in perm check */
|
||||
#define FAN_ACCESS_PERM 0x00020000 /* File accessed in perm check */
|
||||
#define FAN_OPEN_EXEC_PERM 0x00040000 /* File open/exec in perm check */
|
||||
/* #define FAN_DIR_MODIFY 0x00080000 */ /* Deprecated (reserved) */
|
||||
|
||||
#define FAN_PRE_ACCESS 0x00100000 /* Pre-content access hook */
|
||||
#define FAN_MNT_ATTACH 0x01000000 /* Mount was attached */
|
||||
#define FAN_MNT_DETACH 0x02000000 /* Mount was detached */
|
||||
|
||||
#define FAN_EVENT_ON_CHILD 0x08000000 /* Interested in child events */
|
||||
|
||||
|
@ -60,6 +65,8 @@
|
|||
#define FAN_REPORT_DIR_FID 0x00000400 /* Report unique directory id */
|
||||
#define FAN_REPORT_NAME 0x00000800 /* Report events with name */
|
||||
#define FAN_REPORT_TARGET_FID 0x00001000 /* Report dirent target id */
|
||||
#define FAN_REPORT_FD_ERROR 0x00002000 /* event->fd can report error */
|
||||
#define FAN_REPORT_MNT 0x00004000 /* Report mount events */
|
||||
|
||||
/* Convenience macro - FAN_REPORT_NAME requires FAN_REPORT_DIR_FID */
|
||||
#define FAN_REPORT_DFID_NAME (FAN_REPORT_DIR_FID | FAN_REPORT_NAME)
|
||||
|
@ -90,6 +97,7 @@
|
|||
#define FAN_MARK_INODE 0x00000000
|
||||
#define FAN_MARK_MOUNT 0x00000010
|
||||
#define FAN_MARK_FILESYSTEM 0x00000100
|
||||
#define FAN_MARK_MNTNS 0x00000110
|
||||
|
||||
/*
|
||||
* Convenience macro - FAN_MARK_IGNORE requires FAN_MARK_IGNORED_SURV_MODIFY
|
||||
|
@ -142,6 +150,8 @@ struct fanotify_event_metadata {
|
|||
#define FAN_EVENT_INFO_TYPE_DFID 3
|
||||
#define FAN_EVENT_INFO_TYPE_PIDFD 4
|
||||
#define FAN_EVENT_INFO_TYPE_ERROR 5
|
||||
#define FAN_EVENT_INFO_TYPE_RANGE 6
|
||||
#define FAN_EVENT_INFO_TYPE_MNT 7
|
||||
|
||||
/* Special info types for FAN_RENAME */
|
||||
#define FAN_EVENT_INFO_TYPE_OLD_DFID_NAME 10
|
||||
|
@ -188,6 +198,18 @@ struct fanotify_event_info_error {
|
|||
__u32 error_count;
|
||||
};
|
||||
|
||||
struct fanotify_event_info_range {
|
||||
struct fanotify_event_info_header hdr;
|
||||
__u32 pad;
|
||||
__u64 offset;
|
||||
__u64 count;
|
||||
};
|
||||
|
||||
struct fanotify_event_info_mnt {
|
||||
struct fanotify_event_info_header hdr;
|
||||
__u64 mnt_id;
|
||||
};
|
||||
|
||||
/*
|
||||
* User space may need to record additional information about its decision.
|
||||
* The extra information type records what kind of information is included.
|
||||
|
@ -223,6 +245,13 @@ struct fanotify_response_info_audit_rule {
|
|||
/* Legit userspace responses to a _PERM event */
|
||||
#define FAN_ALLOW 0x01
|
||||
#define FAN_DENY 0x02
|
||||
/* errno other than EPERM can specified in upper byte of deny response */
|
||||
#define FAN_ERRNO_BITS 8
|
||||
#define FAN_ERRNO_SHIFT (32 - FAN_ERRNO_BITS)
|
||||
#define FAN_ERRNO_MASK ((1 << FAN_ERRNO_BITS) - 1)
|
||||
#define FAN_DENY_ERRNO(err) \
|
||||
(FAN_DENY | ((((__u32)(err)) & FAN_ERRNO_MASK) << FAN_ERRNO_SHIFT))
|
||||
|
||||
#define FAN_AUDIT 0x10 /* Bitmask to create audit record for result */
|
||||
#define FAN_INFO 0x20 /* Bitmask to indicate additional information */
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/vesa.h>
|
||||
|
||||
/* Definitions of frame buffers */
|
||||
|
||||
|
@ -291,13 +292,6 @@ struct fb_con2fbmap {
|
|||
__u32 framebuffer;
|
||||
};
|
||||
|
||||
/* VESA Blanking Levels */
|
||||
#define VESA_NO_BLANKING 0
|
||||
#define VESA_VSYNC_SUSPEND 1
|
||||
#define VESA_HSYNC_SUSPEND 2
|
||||
#define VESA_POWERDOWN 3
|
||||
|
||||
|
||||
enum {
|
||||
/* screen: unblanked, hsync: on, vsync: on */
|
||||
FB_BLANK_UNBLANK = VESA_NO_BLANKING,
|
||||
|
|
|
@ -8,6 +8,17 @@
|
|||
#define F_SETLEASE (F_LINUX_SPECIFIC_BASE + 0)
|
||||
#define F_GETLEASE (F_LINUX_SPECIFIC_BASE + 1)
|
||||
|
||||
/*
|
||||
* Request nofications on a directory.
|
||||
* See below for events that may be notified.
|
||||
*/
|
||||
#define F_NOTIFY (F_LINUX_SPECIFIC_BASE + 2)
|
||||
|
||||
#define F_DUPFD_QUERY (F_LINUX_SPECIFIC_BASE + 3)
|
||||
|
||||
/* Was the file just created? */
|
||||
#define F_CREATED_QUERY (F_LINUX_SPECIFIC_BASE + 4)
|
||||
|
||||
/*
|
||||
* Cancel a blocking posix lock; internal use only until we expose an
|
||||
* asynchronous lock api to userspace:
|
||||
|
@ -17,12 +28,6 @@
|
|||
/* Create a file descriptor with FD_CLOEXEC set. */
|
||||
#define F_DUPFD_CLOEXEC (F_LINUX_SPECIFIC_BASE + 6)
|
||||
|
||||
/*
|
||||
* Request nofications on a directory.
|
||||
* See below for events that may be notified.
|
||||
*/
|
||||
#define F_NOTIFY (F_LINUX_SPECIFIC_BASE+2)
|
||||
|
||||
/*
|
||||
* Set and get of pipe page size array
|
||||
*/
|
||||
|
@ -85,36 +90,73 @@
|
|||
#define DN_ATTRIB 0x00000020 /* File changed attibutes */
|
||||
#define DN_MULTISHOT 0x80000000 /* Don't remove notifier */
|
||||
|
||||
#define AT_FDCWD -100 /* Special value for dirfd used to
|
||||
indicate openat should use the
|
||||
current working directory. */
|
||||
|
||||
|
||||
/* Generic flags for the *at(2) family of syscalls. */
|
||||
|
||||
/* Reserved for per-syscall flags 0xff. */
|
||||
#define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic
|
||||
links. */
|
||||
/* Reserved for per-syscall flags 0x200 */
|
||||
#define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */
|
||||
#define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount
|
||||
traversal. */
|
||||
#define AT_EMPTY_PATH 0x1000 /* Allow empty relative
|
||||
pathname to operate on dirfd
|
||||
directly. */
|
||||
/*
|
||||
* The constants AT_REMOVEDIR and AT_EACCESS have the same value. AT_EACCESS is
|
||||
* meaningful only to faccessat, while AT_REMOVEDIR is meaningful only to
|
||||
* unlinkat. The two functions do completely different things and therefore,
|
||||
* the flags can be allowed to overlap. For example, passing AT_REMOVEDIR to
|
||||
* faccessat would be undefined behavior and thus treating it equivalent to
|
||||
* AT_EACCESS is valid undefined behavior.
|
||||
* These flags are currently statx(2)-specific, but they could be made generic
|
||||
* in the future and so they should not be used for other per-syscall flags.
|
||||
*/
|
||||
#define AT_FDCWD -100 /* Special value used to indicate
|
||||
openat should use the current
|
||||
working directory. */
|
||||
#define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */
|
||||
#define AT_STATX_SYNC_TYPE 0x6000 /* Type of synchronisation required from statx() */
|
||||
#define AT_STATX_SYNC_AS_STAT 0x0000 /* - Do whatever stat() does */
|
||||
#define AT_STATX_FORCE_SYNC 0x2000 /* - Force the attributes to be sync'd with the server */
|
||||
#define AT_STATX_DONT_SYNC 0x4000 /* - Don't sync attributes with the server */
|
||||
|
||||
#define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */
|
||||
|
||||
/*
|
||||
* Per-syscall flags for the *at(2) family of syscalls.
|
||||
*
|
||||
* These are flags that are so syscall-specific that a user passing these flags
|
||||
* to the wrong syscall is so "clearly wrong" that we can safely call such
|
||||
* usage "undefined behaviour".
|
||||
*
|
||||
* For example, the constants AT_REMOVEDIR and AT_EACCESS have the same value.
|
||||
* AT_EACCESS is meaningful only to faccessat, while AT_REMOVEDIR is meaningful
|
||||
* only to unlinkat. The two functions do completely different things and
|
||||
* therefore, the flags can be allowed to overlap. For example, passing
|
||||
* AT_REMOVEDIR to faccessat would be undefined behavior and thus treating it
|
||||
* equivalent to AT_EACCESS is valid undefined behavior.
|
||||
*
|
||||
* Note for implementers: When picking a new per-syscall AT_* flag, try to
|
||||
* reuse already existing flags first. This leaves us with as many unused bits
|
||||
* as possible, so we can use them for generic bits in the future if necessary.
|
||||
*/
|
||||
|
||||
/* Flags for renameat2(2) (must match legacy RENAME_* flags). */
|
||||
#define AT_RENAME_NOREPLACE 0x0001
|
||||
#define AT_RENAME_EXCHANGE 0x0002
|
||||
#define AT_RENAME_WHITEOUT 0x0004
|
||||
|
||||
/* Flag for faccessat(2). */
|
||||
#define AT_EACCESS 0x200 /* Test access permitted for
|
||||
effective IDs, not real IDs. */
|
||||
/* Flag for unlinkat(2). */
|
||||
#define AT_REMOVEDIR 0x200 /* Remove directory instead of
|
||||
unlinking file. */
|
||||
#define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */
|
||||
#define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount traversal */
|
||||
#define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname */
|
||||
/* Flags for name_to_handle_at(2). */
|
||||
#define AT_HANDLE_FID 0x200 /* File handle is needed to compare
|
||||
object identity and may not be
|
||||
usable with open_by_handle_at(2). */
|
||||
#define AT_HANDLE_MNT_ID_UNIQUE 0x001 /* Return the u64 unique mount ID. */
|
||||
#define AT_HANDLE_CONNECTABLE 0x002 /* Request a connectable file handle */
|
||||
|
||||
#define AT_STATX_SYNC_TYPE 0x6000 /* Type of synchronisation required from statx() */
|
||||
#define AT_STATX_SYNC_AS_STAT 0x0000 /* - Do whatever stat() does */
|
||||
#define AT_STATX_FORCE_SYNC 0x2000 /* - Force the attributes to be sync'd with the server */
|
||||
#define AT_STATX_DONT_SYNC 0x4000 /* - Don't sync attributes with the server */
|
||||
|
||||
#define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */
|
||||
|
||||
/* Flags for name_to_handle_at(2). We reuse AT_ flag space to save bits... */
|
||||
#define AT_HANDLE_FID AT_REMOVEDIR /* file handle is needed to
|
||||
compare object identity and may not
|
||||
be usable to open_by_handle_at(2) */
|
||||
/* Flags for execveat2(2). */
|
||||
#define AT_EXECVE_CHECK 0x10000 /* Only perform a check if execution
|
||||
would be allowed. */
|
||||
|
||||
#endif /* _LINUX_FCNTL_H */
|
||||
|
|
|
@ -67,6 +67,12 @@ enum {
|
|||
FRA_IP_PROTO, /* ip proto */
|
||||
FRA_SPORT_RANGE, /* sport */
|
||||
FRA_DPORT_RANGE, /* dport */
|
||||
FRA_DSCP, /* dscp */
|
||||
FRA_FLOWLABEL, /* flowlabel */
|
||||
FRA_FLOWLABEL_MASK, /* flowlabel mask */
|
||||
FRA_SPORT_MASK, /* sport mask */
|
||||
FRA_DPORT_MASK, /* dport mask */
|
||||
FRA_DSCP_MASK, /* dscp mask */
|
||||
__FRA_MAX
|
||||
};
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue