From 9c3d2a4137c64dce161fc8d719110de40b73cca6 Mon Sep 17 00:00:00 2001 From: Markus Fritsche Date: Sat, 18 Jul 2026 20:33:35 +0200 Subject: [PATCH] rkopnu Phase 1: swap rocket uAPI for rknpu 6-ioctl ABI - rkopnu_ioctl.c: RKNPU_ACTION handler (DRV ver 0.9.8, IOMMU-en, freq/power probe responses); SUBMIT + MEM_CREATE/MAP/DESTROY/SYNC stubbed (-ENOSYS). - rocket_drv.c: ioctl table -> 6 rknpu ioctls; DRIVER_COMPUTE_ACCEL -> DRIVER_RENDER (card node librknnrt opens); DEFINE_DRM_GEM_FOPS; driver name 'rocket' -> 'rknpu'. - Builds rkopnu.ko on 7.0.0-rc3-npuclk+. Next: boot w/ rocket blacklisted, load rkopnu, confirm librknnrt opens the card + probes versions (fails at MEM_CREATE). Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01EWpfhDgYNA21tETDP9ueBE --- .rkopnu.mod.cmd | 2 +- .rkopnu_ioctl.o.cmd | 1119 +++++++++++++++++++++++++++++++++++++++++++ .rocket_drv.o.cmd | 2 + rkopnu.h | 12 + rkopnu.ko | Bin 46688 -> 47984 bytes rkopnu.mod | 2 + rkopnu.o | Bin 44184 -> 47376 bytes rkopnu_ioctl.c | 53 ++ rkopnu_ioctl.o | Bin 0 -> 1544 bytes rocket_drv.c | 31 +- rocket_drv.o | Bin 13304 -> 13672 bytes 11 files changed, 1205 insertions(+), 16 deletions(-) create mode 100644 .rkopnu_ioctl.o.cmd create mode 100644 rkopnu.h create mode 100644 rkopnu_ioctl.c create mode 100644 rkopnu_ioctl.o diff --git a/.rkopnu.mod.cmd b/.rkopnu.mod.cmd index c704c7a..4fde412 100644 --- a/.rkopnu.mod.cmd +++ b/.rkopnu.mod.cmd @@ -1 +1 @@ -savedcmd_rkopnu.mod := printf '%s\n' rocket_core.o rocket_device.o rocket_drv.o rocket_gem.o rocket_job.o | awk '!x[$$0]++ { print("./"$$0) }' > rkopnu.mod +savedcmd_rkopnu.mod := printf '%s\n' rkopnu.mod.o rkopnu_ioctl.o rocket_core.o rocket_device.o rocket_drv.o rocket_gem.o rocket_job.o | awk '!x[$$0]++ { print("./"$$0) }' > rkopnu.mod diff --git a/.rkopnu_ioctl.o.cmd b/.rkopnu_ioctl.o.cmd new file mode 100644 index 0000000..89dbf1c --- /dev/null +++ b/.rkopnu_ioctl.o.cmd @@ -0,0 +1,1119 @@ +savedcmd_rkopnu_ioctl.o := gcc -Wp,-MMD,./.rkopnu_ioctl.o.d -nostdinc -I/home/mfritsche/src/linux-a1-npuclk/arch/arm64/include -I/home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated -I/home/mfritsche/src/linux-a1-npuclk/include -I/home/mfritsche/src/linux-a1-npuclk/build-npuclk/include -I/home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi -I/home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi -I/home/mfritsche/src/linux-a1-npuclk/include/uapi -I/home/mfritsche/src/linux-a1-npuclk/build-npuclk/include/generated/uapi -include /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler-version.h -include /home/mfritsche/src/linux-a1-npuclk/include/linux/kconfig.h -include /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -DKASAN_SHADOW_SCALE_SHIFT= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mgeneral-regs-only -DCONFIG_CC_HAS_K_CONSTRAINT=1 -Wno-psabi -mabi=lp64 -fno-asynchronous-unwind-tables -fno-unwind-tables -mbranch-protection=pac-ret -Wa,-march=armv8.5-a -DARM64_ASM_ARCH='"armv8.5-a"' -DKASAN_SHADOW_SCALE_SHIFT= -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -fzero-init-padding-bits=all -fno-stack-clash-protection -fdiagnostics-show-context=2 -fno-inline-functions-called-once -fmin-function-alignment=4 -fstrict-flex-arrays=3 -fms-extensions -fno-strict-overflow -fno-stack-check -fconserve-stack -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wno-type-limits -Wno-dangling-pointer -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-unterminated-string-initialization -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -mstack-protector-guard=sysreg -mstack-protector-guard-reg=sp_el0 -mstack-protector-guard-offset=1536 -DMODULE -DKBUILD_BASENAME='"rkopnu_ioctl"' -DKBUILD_MODNAME='"rkopnu"' -D__KBUILD_MODNAME=rkopnu -c -o rkopnu_ioctl.o rkopnu_ioctl.c + +source_rkopnu_ioctl.o := rkopnu_ioctl.c + +deps_rkopnu_ioctl.o := \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler-version.h \ + $(wildcard include/config/CC_VERSION_TEXT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kconfig.h \ + $(wildcard include/config/CPU_BIG_ENDIAN) \ + $(wildcard include/config/BOOGER) \ + $(wildcard include/config/FOO) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler_types.h \ + $(wildcard include/config/DEBUG_INFO_BTF) \ + $(wildcard include/config/PAHOLE_HAS_BTF_TAG) \ + $(wildcard include/config/FUNCTION_ALIGNMENT) \ + $(wildcard include/config/CC_HAS_SANE_FUNCTION_ALIGNMENT) \ + $(wildcard include/config/X86_64) \ + $(wildcard include/config/ARM64) \ + $(wildcard include/config/LD_DEAD_CODE_DATA_ELIMINATION) \ + $(wildcard include/config/LTO_CLANG) \ + $(wildcard include/config/HAVE_ARCH_COMPILER_H) \ + $(wildcard include/config/KCSAN) \ + $(wildcard include/config/CC_HAS_ASSUME) \ + $(wildcard include/config/CC_HAS_COUNTED_BY) \ + $(wildcard include/config/FORTIFY_SOURCE) \ + $(wildcard include/config/UBSAN_BOUNDS) \ + $(wildcard include/config/CC_HAS_COUNTED_BY_PTR) \ + $(wildcard include/config/CC_HAS_MULTIDIMENSIONAL_NONSTRING) \ + $(wildcard include/config/UBSAN_INTEGER_WRAP) \ + $(wildcard include/config/CFI) \ + $(wildcard include/config/ARCH_USES_CFI_GENERIC_LLVM_PASS) \ + $(wildcard include/config/CC_HAS_BROKEN_COUNTED_BY_REF) \ + $(wildcard include/config/CC_HAS_ASM_INLINE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler-context-analysis.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler_attributes.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler-gcc.h \ + $(wildcard include/config/ARCH_USE_BUILTIN_BSWAP) \ + $(wildcard include/config/SHADOW_CALL_STACK) \ + $(wildcard include/config/KCOV) \ + $(wildcard include/config/CC_HAS_TYPEOF_UNQUAL) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/compiler.h \ + $(wildcard include/config/ARM64_PTR_AUTH_KERNEL) \ + $(wildcard include/config/ARM64_PTR_AUTH) \ + $(wildcard include/config/BUILTIN_RETURN_ADDRESS_STRIPS_PAC) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kernel.h \ + $(wildcard include/config/PREEMPT_VOLUNTARY_BUILD) \ + $(wildcard include/config/PREEMPT_DYNAMIC) \ + $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_CALL) \ + $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_KEY) \ + $(wildcard include/config/PREEMPT_) \ + $(wildcard include/config/DEBUG_ATOMIC_SLEEP) \ + $(wildcard include/config/SMP) \ + $(wildcard include/config/MMU) \ + $(wildcard include/config/PROVE_LOCKING) \ + $(wildcard include/config/DYNAMIC_FTRACE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/stdarg.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/align.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/align.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/const.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/const.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/array_size.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/compiler.h \ + $(wildcard include/config/TRACE_BRANCH_PROFILING) \ + $(wildcard include/config/PROFILE_ALL_BRANCHES) \ + $(wildcard include/config/OBJTOOL) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/rwonce.h \ + $(wildcard include/config/LTO) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/rwonce.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kasan-checks.h \ + $(wildcard include/config/KASAN_GENERIC) \ + $(wildcard include/config/KASAN_SW_TAGS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/types.h \ + $(wildcard include/config/HAVE_UID16) \ + $(wildcard include/config/UID16) \ + $(wildcard include/config/ARCH_DMA_ADDR_T_64BIT) \ + $(wildcard include/config/PHYS_ADDR_T_64BIT) \ + $(wildcard include/config/64BIT) \ + $(wildcard include/config/ARCH_32BIT_USTAT_F_TINODE) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/types.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi/asm/types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/int-ll64.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/int-ll64.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/bitsperlong.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitsperlong.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/bitsperlong.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/posix_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/stddef.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/stddef.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/posix_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/posix_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kcsan-checks.h \ + $(wildcard include/config/KCSAN_WEAK_MEMORY) \ + $(wildcard include/config/KCSAN_IGNORE_ATOMICS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/limits.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/limits.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/limits.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/linkage.h \ + $(wildcard include/config/ARCH_USE_SYM_ANNOTATIONS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/stringify.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/export.h \ + $(wildcard include/config/MODVERSIONS) \ + $(wildcard include/config/GENDWARFKSYMS) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/linkage.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/container_of.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/build_bug.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bitops.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bits.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/bits.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/bits.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/overflow.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/const.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/typecheck.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/kernel.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/sysinfo.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/generic-non-atomic.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/barrier.h \ + $(wildcard include/config/ARM64_PSEUDO_NMI) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/alternative-macros.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/cpucaps.h \ + $(wildcard include/config/ARM64_EPAN) \ + $(wildcard include/config/ARM64_SVE) \ + $(wildcard include/config/ARM64_SME) \ + $(wildcard include/config/ARM64_CNP) \ + $(wildcard include/config/ARM64_MTE) \ + $(wildcard include/config/ARM64_BTI) \ + $(wildcard include/config/ARM64_TLB_RANGE) \ + $(wildcard include/config/ARM64_POE) \ + $(wildcard include/config/ARM64_GCS) \ + $(wildcard include/config/ARM64_HAFT) \ + $(wildcard include/config/UNMAP_KERNEL_AT_EL0) \ + $(wildcard include/config/ARM64_ERRATUM_843419) \ + $(wildcard include/config/ARM64_ERRATUM_1742098) \ + $(wildcard include/config/ARM64_ERRATUM_2645198) \ + $(wildcard include/config/ARM64_ERRATUM_2658417) \ + $(wildcard include/config/CAVIUM_ERRATUM_23154) \ + $(wildcard include/config/NVIDIA_CARMEL_CNP_ERRATUM) \ + $(wildcard include/config/ARM64_WORKAROUND_REPEAT_TLBI) \ + $(wildcard include/config/ARM64_ERRATUM_3194386) \ + $(wildcard include/config/HW_PERF_EVENTS) \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/cpucap-defs.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/insn-def.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/brk-imm.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/barrier.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/bitops.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/builtin-__ffs.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/builtin-ffs.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/builtin-__fls.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/builtin-fls.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/ffz.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/fls64.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/sched.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/hweight.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/arch_hweight.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/const_hweight.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/atomic.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/atomic.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/atomic.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/cmpxchg.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/lse.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/atomic_ll_sc.h \ + $(wildcard include/config/CC_HAS_K_CONSTRAINT) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/alternative.h \ + $(wildcard include/config/MODULES) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/init.h \ + $(wildcard include/config/MEMORY_HOTPLUG) \ + $(wildcard include/config/HAVE_ARCH_PREL32_RELOCATIONS) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/atomic_lse.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/atomic/atomic-arch-fallback.h \ + $(wildcard include/config/GENERIC_ATOMIC64) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/atomic/atomic-long.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/atomic/atomic-instrumented.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/instrumented.h \ + $(wildcard include/config/DEBUG_ATOMIC) \ + $(wildcard include/config/DEBUG_ATOMIC_LARGEST_ALIGN) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bug.h \ + $(wildcard include/config/GENERIC_BUG) \ + $(wildcard include/config/PRINTK) \ + $(wildcard include/config/BUG_ON_DATA_CORRUPTION) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/bug.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/asm-bug.h \ + $(wildcard include/config/DEBUG_BUGVERBOSE) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bug.h \ + $(wildcard include/config/DEBUG_BUGVERBOSE_DETAILED) \ + $(wildcard include/config/BUG) \ + $(wildcard include/config/GENERIC_BUG_RELATIVE_POINTERS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/instrumentation.h \ + $(wildcard include/config/NOINSTR_VALIDATION) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/once_lite.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/panic.h \ + $(wildcard include/config/PANIC_TIMEOUT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/printk.h \ + $(wildcard include/config/MESSAGE_LOGLEVEL_DEFAULT) \ + $(wildcard include/config/CONSOLE_LOGLEVEL_DEFAULT) \ + $(wildcard include/config/CONSOLE_LOGLEVEL_QUIET) \ + $(wildcard include/config/EARLY_PRINTK) \ + $(wildcard include/config/PRINTK_INDEX) \ + $(wildcard include/config/DYNAMIC_DEBUG) \ + $(wildcard include/config/DYNAMIC_DEBUG_CORE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kern_levels.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/ratelimit_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/param.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/param.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/param.h \ + $(wildcard include/config/HZ) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/param.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/spinlock_types_raw.h \ + $(wildcard include/config/DEBUG_SPINLOCK) \ + $(wildcard include/config/DEBUG_LOCK_ALLOC) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/spinlock_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/qspinlock_types.h \ + $(wildcard include/config/NR_CPUS) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/qrwlock_types.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/byteorder.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/byteorder/little_endian.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/byteorder/little_endian.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/swab.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/swab.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi/asm/swab.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/swab.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/byteorder/generic.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/lockdep_types.h \ + $(wildcard include/config/PROVE_RAW_LOCK_NESTING) \ + $(wildcard include/config/LOCKDEP) \ + $(wildcard include/config/LOCK_STAT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/dynamic_debug.h \ + $(wildcard include/config/JUMP_LABEL) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/jump_label.h \ + $(wildcard include/config/HAVE_ARCH_JUMP_LABEL_RELATIVE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/cleanup.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/err.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi/asm/errno.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/errno.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/errno-base.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/args.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/jump_label.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/insn.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kmsan-checks.h \ + $(wildcard include/config/KMSAN) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/instrumented-atomic.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/lock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/instrumented-lock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/non-atomic.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/non-instrumented-non-atomic.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/le.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/bitops/ext2-atomic-setbit.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kstrtox.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/log2.h \ + $(wildcard include/config/ARCH_HAS_ILOG2_U32) \ + $(wildcard include/config/ARCH_HAS_ILOG2_U64) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/math.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/div64.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/div64.h \ + $(wildcard include/config/CC_OPTIMIZE_FOR_PERFORMANCE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/minmax.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sprintf.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/static_call_types.h \ + $(wildcard include/config/HAVE_STATIC_CALL) \ + $(wildcard include/config/HAVE_STATIC_CALL_INLINE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/trace_printk.h \ + $(wildcard include/config/TRACING) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/instruction_pointer.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/util_macros.h \ + $(wildcard include/config/FOO_SUSPEND) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/wordpart.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/errno.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/errno.h \ + /home/mfritsche/src/linux-a1-npuclk/include/drm/drm_device.h \ + $(wildcard include/config/TRANSPARENT_HUGEPAGE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/list.h \ + $(wildcard include/config/LIST_HARDENED) \ + $(wildcard include/config/DEBUG_LIST) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/poison.h \ + $(wildcard include/config/ILLEGAL_POINTER_VALUE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kref.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/spinlock.h \ + $(wildcard include/config/PREEMPTION) \ + $(wildcard include/config/PREEMPT_RT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/preempt.h \ + $(wildcard include/config/PREEMPT_COUNT) \ + $(wildcard include/config/DEBUG_PREEMPT) \ + $(wildcard include/config/TRACE_PREEMPT_TOGGLE) \ + $(wildcard include/config/PREEMPT_NOTIFIERS) \ + $(wildcard include/config/PREEMPT_NONE) \ + $(wildcard include/config/PREEMPT_VOLUNTARY) \ + $(wildcard include/config/PREEMPT) \ + $(wildcard include/config/PREEMPT_LAZY) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/preempt.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/thread_info.h \ + $(wildcard include/config/THREAD_INFO_IN_TASK) \ + $(wildcard include/config/GENERIC_ENTRY) \ + $(wildcard include/config/ARCH_HAS_PREEMPT_LAZY) \ + $(wildcard include/config/HAVE_ARCH_WITHIN_STACK_FRAMES) \ + $(wildcard include/config/SH) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/restart_block.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/time64.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/math64.h \ + $(wildcard include/config/ARCH_SUPPORTS_INT128) \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/math64.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/time64.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/time.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/time_types.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/current.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/thread_info.h \ + $(wildcard include/config/ARM64_SW_TTBR0_PAN) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/memory.h \ + $(wildcard include/config/ARM64_VA_BITS) \ + $(wildcard include/config/ARM64_16K_PAGES) \ + $(wildcard include/config/KASAN_SHADOW_OFFSET) \ + $(wildcard include/config/KASAN) \ + $(wildcard include/config/ARM64_4K_PAGES) \ + $(wildcard include/config/RANDOMIZE_BASE) \ + $(wildcard include/config/KASAN_HW_TAGS) \ + $(wildcard include/config/DEBUG_VIRTUAL) \ + $(wildcard include/config/EFI) \ + $(wildcard include/config/ARM_GIC_V3_ITS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sizes.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/page-def.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/page.h \ + $(wildcard include/config/PAGE_SHIFT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mmdebug.h \ + $(wildcard include/config/DEBUG_VM) \ + $(wildcard include/config/DEBUG_VM_IRQSOFF) \ + $(wildcard include/config/DEBUG_VM_PGFLAGS) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/boot.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/sections.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/sections.h \ + $(wildcard include/config/HAVE_FUNCTION_DESCRIPTORS) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/sysreg.h \ + $(wildcard include/config/BROKEN_GAS_INST) \ + $(wildcard include/config/ARM64_PA_BITS_52) \ + $(wildcard include/config/ARM64_64K_PAGES) \ + $(wildcard include/config/AMPERE_ERRATUM_AC04_CPU_23) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kasan-tags.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/gpr-num.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/sysreg-defs.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bitfield.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/memory_model.h \ + $(wildcard include/config/FLATMEM) \ + $(wildcard include/config/SPARSEMEM_VMEMMAP) \ + $(wildcard include/config/SPARSEMEM) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/pfn.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/stack_pointer.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/irqflags.h \ + $(wildcard include/config/TRACE_IRQFLAGS) \ + $(wildcard include/config/IRQSOFF_TRACER) \ + $(wildcard include/config/PREEMPT_TRACER) \ + $(wildcard include/config/DEBUG_IRQFLAGS) \ + $(wildcard include/config/TRACE_IRQFLAGS_SUPPORT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/irqflags_types.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/irqflags.h \ + $(wildcard include/config/ARM64_DEBUG_PRIORITY_MASKING) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/ptrace.h \ + $(wildcard include/config/COMPAT) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/cpufeature.h \ + $(wildcard include/config/ARM64_BTI_KERNEL) \ + $(wildcard include/config/ARM64_PA_BITS) \ + $(wildcard include/config/ARM64_HW_AFDBM) \ + $(wildcard include/config/ARM64_AMU_EXTN) \ + $(wildcard include/config/ARM64_LPA2) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/cputype.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/hwcap.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/hwcap.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/cpumask.h \ + $(wildcard include/config/FORCE_NR_CPUS) \ + $(wildcard include/config/HOTPLUG_CPU) \ + $(wildcard include/config/DEBUG_PER_CPU_MAPS) \ + $(wildcard include/config/CPUMASK_OFFSTACK) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bitmap.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/find.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/string.h \ + $(wildcard include/config/BINARY_PRINTF) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/string.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/string.h \ + $(wildcard include/config/ARCH_HAS_UACCESS_FLUSHCACHE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bitmap-str.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/cpumask_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/threads.h \ + $(wildcard include/config/BASE_SMALL) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/gfp_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/numa.h \ + $(wildcard include/config/NUMA_KEEP_MEMINFO) \ + $(wildcard include/config/NUMA) \ + $(wildcard include/config/HAVE_ARCH_NODE_DEV_GROUP) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/nodemask.h \ + $(wildcard include/config/HIGHMEM) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/nodemask_types.h \ + $(wildcard include/config/NODES_SHIFT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/random.h \ + $(wildcard include/config/VMGENID) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/random.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/ioctl.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi/asm/ioctl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/ioctl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/ioctl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/irqnr.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/irqnr.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/ptrace.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/sve_context.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/irqchip/arm-gic-v3-prio.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/stacktrace/frame.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/percpu.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/percpu.h \ + $(wildcard include/config/HAVE_SETUP_PER_CPU_AREA) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/percpu-defs.h \ + $(wildcard include/config/ARCH_MODULE_NEEDS_WEAK_PER_CPU) \ + $(wildcard include/config/DEBUG_FORCE_WEAK_PER_CPU) \ + $(wildcard include/config/AMD_MEM_ENCRYPT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bottom_half.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/lockdep.h \ + $(wildcard include/config/DEBUG_LOCKING_API_SELFTESTS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/smp.h \ + $(wildcard include/config/UP_LATE_INIT) \ + $(wildcard include/config/CSD_LOCK_WAIT_DEBUG) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/smp_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/llist.h \ + $(wildcard include/config/ARCH_HAVE_NMI_SAFE_CMPXCHG) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/smp.h \ + $(wildcard include/config/ARM64_ACPI_PARKING_PROTOCOL) \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/mmiowb.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/mmiowb.h \ + $(wildcard include/config/MMIOWB) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/spinlock_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rwlock_types.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/spinlock.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/qspinlock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/qspinlock.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/qrwlock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/qrwlock.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/processor.h \ + $(wildcard include/config/KUSER_HELPERS) \ + $(wildcard include/config/ARM64_FORCE_52BIT) \ + $(wildcard include/config/HAVE_HW_BREAKPOINT) \ + $(wildcard include/config/ARM64_TAGGED_ADDR_ABI) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/cache.h \ + $(wildcard include/config/ARCH_HAS_CACHE_LINE_SIZE) \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/cache.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/cache.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kasan-enabled.h \ + $(wildcard include/config/ARCH_DEFER_KASAN) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/static_key.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/mte-def.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/processor.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/vdso/processor.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/hw_breakpoint.h \ + $(wildcard include/config/CPU_PM) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/virt.h \ + $(wildcard include/config/KVM) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/kasan.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/mte-kasan.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/pgtable-types.h \ + $(wildcard include/config/PGTABLE_LEVELS) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/pgtable-nop4d.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/pgtable-hwdef.h \ + $(wildcard include/config/ARM64_CONT_PTE_SHIFT) \ + $(wildcard include/config/ARM64_CONT_PMD_SHIFT) \ + $(wildcard include/config/ARM64_VA_BITS_52) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/pointer_auth.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/prctl.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/spectre.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/fpsimd.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/sigcontext.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rwlock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/spinlock_api_smp.h \ + $(wildcard include/config/INLINE_SPIN_LOCK) \ + $(wildcard include/config/INLINE_SPIN_LOCK_BH) \ + $(wildcard include/config/INLINE_SPIN_LOCK_IRQ) \ + $(wildcard include/config/INLINE_SPIN_LOCK_IRQSAVE) \ + $(wildcard include/config/INLINE_SPIN_TRYLOCK) \ + $(wildcard include/config/INLINE_SPIN_TRYLOCK_BH) \ + $(wildcard include/config/UNINLINE_SPIN_UNLOCK) \ + $(wildcard include/config/INLINE_SPIN_UNLOCK_BH) \ + $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQ) \ + $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQRESTORE) \ + $(wildcard include/config/GENERIC_LOCKBREAK) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rwlock_api_smp.h \ + $(wildcard include/config/INLINE_READ_LOCK) \ + $(wildcard include/config/INLINE_WRITE_LOCK) \ + $(wildcard include/config/INLINE_READ_LOCK_BH) \ + $(wildcard include/config/INLINE_WRITE_LOCK_BH) \ + $(wildcard include/config/INLINE_READ_LOCK_IRQ) \ + $(wildcard include/config/INLINE_WRITE_LOCK_IRQ) \ + $(wildcard include/config/INLINE_READ_LOCK_IRQSAVE) \ + $(wildcard include/config/INLINE_WRITE_LOCK_IRQSAVE) \ + $(wildcard include/config/INLINE_READ_TRYLOCK) \ + $(wildcard include/config/INLINE_WRITE_TRYLOCK) \ + $(wildcard include/config/INLINE_READ_UNLOCK) \ + $(wildcard include/config/INLINE_WRITE_UNLOCK) \ + $(wildcard include/config/INLINE_READ_UNLOCK_BH) \ + $(wildcard include/config/INLINE_WRITE_UNLOCK_BH) \ + $(wildcard include/config/INLINE_READ_UNLOCK_IRQ) \ + $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQ) \ + $(wildcard include/config/INLINE_READ_UNLOCK_IRQRESTORE) \ + $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQRESTORE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/refcount.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/refcount_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mutex.h \ + $(wildcard include/config/DEBUG_MUTEXES) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/osq_lock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/debug_locks.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mutex_types.h \ + $(wildcard include/config/MUTEX_SPIN_ON_OWNER) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/idr.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/radix-tree.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/percpu.h \ + $(wildcard include/config/RANDOM_KMALLOC_CACHES) \ + $(wildcard include/config/PAGE_SIZE_4KB) \ + $(wildcard include/config/NEED_PER_CPU_PAGE_FIRST_CHUNK) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/alloc_tag.h \ + $(wildcard include/config/MEM_ALLOC_PROFILING_DEBUG) \ + $(wildcard include/config/MEM_ALLOC_PROFILING) \ + $(wildcard include/config/MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/codetag.h \ + $(wildcard include/config/CODE_TAGGING) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched.h \ + $(wildcard include/config/VIRT_CPU_ACCOUNTING_NATIVE) \ + $(wildcard include/config/SCHED_INFO) \ + $(wildcard include/config/SCHEDSTATS) \ + $(wildcard include/config/SCHED_CORE) \ + $(wildcard include/config/FAIR_GROUP_SCHED) \ + $(wildcard include/config/RT_GROUP_SCHED) \ + $(wildcard include/config/RT_MUTEXES) \ + $(wildcard include/config/UCLAMP_TASK) \ + $(wildcard include/config/UCLAMP_BUCKETS_COUNT) \ + $(wildcard include/config/KMAP_LOCAL) \ + $(wildcard include/config/SCHED_CLASS_EXT) \ + $(wildcard include/config/CGROUP_SCHED) \ + $(wildcard include/config/CFS_BANDWIDTH) \ + $(wildcard include/config/BLK_DEV_IO_TRACE) \ + $(wildcard include/config/PREEMPT_RCU) \ + $(wildcard include/config/TASKS_RCU) \ + $(wildcard include/config/TASKS_TRACE_RCU) \ + $(wildcard include/config/MEMCG_V1) \ + $(wildcard include/config/LRU_GEN) \ + $(wildcard include/config/COMPAT_BRK) \ + $(wildcard include/config/CGROUPS) \ + $(wildcard include/config/BLK_CGROUP) \ + $(wildcard include/config/PSI) \ + $(wildcard include/config/PAGE_OWNER) \ + $(wildcard include/config/EVENTFD) \ + $(wildcard include/config/ARCH_HAS_CPU_PASID) \ + $(wildcard include/config/X86_BUS_LOCK_DETECT) \ + $(wildcard include/config/TASK_DELAY_ACCT) \ + $(wildcard include/config/STACKPROTECTOR) \ + $(wildcard include/config/ARCH_HAS_SCALED_CPUTIME) \ + $(wildcard include/config/VIRT_CPU_ACCOUNTING_GEN) \ + $(wildcard include/config/NO_HZ_FULL) \ + $(wildcard include/config/POSIX_CPUTIMERS) \ + $(wildcard include/config/POSIX_CPU_TIMERS_TASK_WORK) \ + $(wildcard include/config/KEYS) \ + $(wildcard include/config/SYSVIPC) \ + $(wildcard include/config/DETECT_HUNG_TASK) \ + $(wildcard include/config/IO_URING) \ + $(wildcard include/config/AUDIT) \ + $(wildcard include/config/AUDITSYSCALL) \ + $(wildcard include/config/DETECT_HUNG_TASK_BLOCKER) \ + $(wildcard include/config/UBSAN) \ + $(wildcard include/config/UBSAN_TRAP) \ + $(wildcard include/config/COMPACTION) \ + $(wildcard include/config/TASK_XACCT) \ + $(wildcard include/config/CPUSETS) \ + $(wildcard include/config/X86_CPU_RESCTRL) \ + $(wildcard include/config/FUTEX) \ + $(wildcard include/config/PERF_EVENTS) \ + $(wildcard include/config/NUMA_BALANCING) \ + $(wildcard include/config/ARCH_HAS_LAZY_MMU_MODE) \ + $(wildcard include/config/FAULT_INJECTION) \ + $(wildcard include/config/LATENCYTOP) \ + $(wildcard include/config/KUNIT) \ + $(wildcard include/config/FUNCTION_GRAPH_TRACER) \ + $(wildcard include/config/MEMCG) \ + $(wildcard include/config/UPROBES) \ + $(wildcard include/config/BCACHE) \ + $(wildcard include/config/VMAP_STACK) \ + $(wildcard include/config/LIVEPATCH) \ + $(wildcard include/config/SECURITY) \ + $(wildcard include/config/BPF_SYSCALL) \ + $(wildcard include/config/KSTACK_ERASE) \ + $(wildcard include/config/KSTACK_ERASE_METRICS) \ + $(wildcard include/config/X86_MCE) \ + $(wildcard include/config/KRETPROBES) \ + $(wildcard include/config/RETHOOK) \ + $(wildcard include/config/ARCH_HAS_PARANOID_L1D_FLUSH) \ + $(wildcard include/config/RV) \ + $(wildcard include/config/RV_PER_TASK_MONITORS) \ + $(wildcard include/config/USER_EVENTS) \ + $(wildcard include/config/UNWIND_USER) \ + $(wildcard include/config/SCHED_PROXY_EXEC) \ + $(wildcard include/config/SCHED_MM_CID) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/sched.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/pid_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sem_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/shm.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/page.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/personality.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/personality.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/getorder.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/shmparam.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/shmparam.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kmsan_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/plist_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/hrtimer_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/timerqueue_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rbtree_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/timer_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/seccomp_types.h \ + $(wildcard include/config/SECCOMP) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/resource.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/resource.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi/asm/resource.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/resource.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/resource.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/latencytop.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/prio.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/signal_types.h \ + $(wildcard include/config/OLD_SIGACTION) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/signal.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/signal.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/signal.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/signal.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/signal.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/signal-defs.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi/asm/siginfo.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/siginfo.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/syscall_user_dispatch_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mm_types_task.h \ + $(wildcard include/config/ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/tlbbatch.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/netdevice_xmit.h \ + $(wildcard include/config/NET_ACT_MIRRED) \ + $(wildcard include/config/NET_EGRESS) \ + $(wildcard include/config/NF_DUP_NETDEV) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/task_io_accounting.h \ + $(wildcard include/config/TASK_IO_ACCOUNTING) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/posix-timers_types.h \ + $(wildcard include/config/POSIX_TIMERS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rseq_types.h \ + $(wildcard include/config/RSEQ) \ + $(wildcard include/config/RSEQ_SLICE_EXTENSION) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/irq_work_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/workqueue_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/seqlock_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kcsan.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rv.h \ + $(wildcard include/config/RV_LTL_MONITOR) \ + $(wildcard include/config/RV_REACTORS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/uidgid_types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/tracepoint-defs.h \ + $(wildcard include/config/TRACEPOINTS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/unwind_deferred_types.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/kmap_size.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/kmap_size.h \ + $(wildcard include/config/DEBUG_KMAP_LOCAL) \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/include/generated/rq-offsets.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/ext.h \ + $(wildcard include/config/EXT_GROUP_SCHED) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rcupdate.h \ + $(wildcard include/config/TINY_RCU) \ + $(wildcard include/config/RCU_STRICT_GRACE_PERIOD) \ + $(wildcard include/config/RCU_LAZY) \ + $(wildcard include/config/RCU_STALL_COMMON) \ + $(wildcard include/config/VIRT_XFER_TO_GUEST_WORK) \ + $(wildcard include/config/RCU_NOCB_CPU) \ + $(wildcard include/config/TASKS_RCU_GENERIC) \ + $(wildcard include/config/TASKS_RUDE_RCU) \ + $(wildcard include/config/TREE_RCU) \ + $(wildcard include/config/DEBUG_OBJECTS_RCU_HEAD) \ + $(wildcard include/config/PROVE_RCU) \ + $(wildcard include/config/ARCH_WEAK_RELEASE_ACQUIRE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/context_tracking_irq.h \ + $(wildcard include/config/CONTEXT_TRACKING_IDLE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rcutree.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/xarray.h \ + $(wildcard include/config/XARRAY_MULTI) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/gfp.h \ + $(wildcard include/config/ZONE_DMA) \ + $(wildcard include/config/ZONE_DMA32) \ + $(wildcard include/config/ZONE_DEVICE) \ + $(wildcard include/config/CONTIG_ALLOC) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mmzone.h \ + $(wildcard include/config/ARCH_FORCE_MAX_ORDER) \ + $(wildcard include/config/PAGE_BLOCK_MAX_ORDER) \ + $(wildcard include/config/CMA) \ + $(wildcard include/config/MEMORY_ISOLATION) \ + $(wildcard include/config/ZSMALLOC) \ + $(wildcard include/config/UNACCEPTED_MEMORY) \ + $(wildcard include/config/IOMMU_SUPPORT) \ + $(wildcard include/config/SWAP) \ + $(wildcard include/config/HUGETLB_PAGE) \ + $(wildcard include/config/LRU_GEN_STATS) \ + $(wildcard include/config/LRU_GEN_WALKS_MMU) \ + $(wildcard include/config/MEMORY_FAILURE) \ + $(wildcard include/config/PAGE_EXTENSION) \ + $(wildcard include/config/DEFERRED_STRUCT_PAGE_INIT) \ + $(wildcard include/config/HAVE_MEMORYLESS_NODES) \ + $(wildcard include/config/SPARSEMEM_EXTREME) \ + $(wildcard include/config/SPARSEMEM_VMEMMAP_PREINIT) \ + $(wildcard include/config/HAVE_ARCH_PFN_VALID) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/list_nulls.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/wait.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/seqlock.h \ + $(wildcard include/config/CC_IS_GCC) \ + $(wildcard include/config/GCC_VERSION) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/pageblock-flags.h \ + $(wildcard include/config/HUGETLB_PAGE_SIZE_VARIABLE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/page-flags-layout.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/include/generated/bounds.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/sparsemem.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/pgtable-prot.h \ + $(wildcard include/config/HAVE_ARCH_USERFAULTFD_WP) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/rsi.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/rsi_cmds.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/arm-smccc.h \ + $(wildcard include/config/HAVE_ARM_SMCCC) \ + $(wildcard include/config/ARM) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/uuid.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/rsi_smc.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mm_types.h \ + $(wildcard include/config/HAVE_ALIGNED_STRUCT_PAGE) \ + $(wildcard include/config/SLAB_OBJ_EXT) \ + $(wildcard include/config/HUGETLB_PMD_PAGE_TABLE_SHARING) \ + $(wildcard include/config/SLAB_FREELIST_HARDENED) \ + $(wildcard include/config/USERFAULTFD) \ + $(wildcard include/config/ANON_VMA_NAME) \ + $(wildcard include/config/PER_VMA_LOCK) \ + $(wildcard include/config/HAVE_ARCH_COMPAT_MMAP_BASES) \ + $(wildcard include/config/MEMBARRIER) \ + $(wildcard include/config/FUTEX_PRIVATE_HASH) \ + $(wildcard include/config/ARCH_HAS_ELF_CORE_EFLAGS) \ + $(wildcard include/config/AIO) \ + $(wildcard include/config/MMU_NOTIFIER) \ + $(wildcard include/config/SPLIT_PMD_PTLOCKS) \ + $(wildcard include/config/IOMMU_MM_DATA) \ + $(wildcard include/config/KSM) \ + $(wildcard include/config/MM_ID) \ + $(wildcard include/config/CORE_DUMP_DEFAULT_ELF_HEADERS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/auxvec.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/auxvec.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/auxvec.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rbtree.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/maple_tree.h \ + $(wildcard include/config/MAPLE_RCU_DISABLED) \ + $(wildcard include/config/DEBUG_MAPLE_TREE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rwsem.h \ + $(wildcard include/config/RWSEM_SPIN_ON_OWNER) \ + $(wildcard include/config/DEBUG_RWSEMS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/completion.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/swait.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/uprobes.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/timer.h \ + $(wildcard include/config/DEBUG_OBJECTS_TIMERS) \ + $(wildcard include/config/NO_HZ_COMMON) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/ktime.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/jiffies.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/time.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/time32.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/timex.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/timex.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/timex.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/arch_timer.h \ + $(wildcard include/config/ARM_ARCH_TIMER_OOL_WORKAROUND) \ + /home/mfritsche/src/linux-a1-npuclk/include/clocksource/arm_arch_timer.h \ + $(wildcard include/config/ARM_ARCH_TIMER) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/timecounter.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/timex.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/time32.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/time.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/jiffies.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/include/generated/timeconst.h \ + /home/mfritsche/src/linux-a1-npuclk/include/vdso/ktime.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/timekeeping.h \ + $(wildcard include/config/POSIX_AUX_CLOCKS) \ + $(wildcard include/config/GENERIC_CMOS_UPDATE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/clocksource_ids.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/debugobjects.h \ + $(wildcard include/config/DEBUG_OBJECTS) \ + $(wildcard include/config/DEBUG_OBJECTS_FREE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/workqueue.h \ + $(wildcard include/config/DEBUG_OBJECTS_WORK) \ + $(wildcard include/config/FREEZER) \ + $(wildcard include/config/SYSFS) \ + $(wildcard include/config/WQ_WATCHDOG) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/percpu_counter.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/mmu.h \ + $(wildcard include/config/ARM64_E0PD) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/page-flags.h \ + $(wildcard include/config/PAGE_IDLE_FLAG) \ + $(wildcard include/config/ARCH_USES_PG_ARCH_2) \ + $(wildcard include/config/ARCH_USES_PG_ARCH_3) \ + $(wildcard include/config/MIGRATION) \ + $(wildcard include/config/HUGETLB_PAGE_OPTIMIZE_VMEMMAP) \ + $(wildcard include/config/DEBUG_KMAP_LOCAL_FORCE_MAP) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/local_lock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/local_lock_internal.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/zswap.h \ + $(wildcard include/config/ZSWAP) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/memory_hotplug.h \ + $(wildcard include/config/ARCH_HAS_ADD_PAGES) \ + $(wildcard include/config/MEMORY_HOTREMOVE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/notifier.h \ + $(wildcard include/config/TREE_SRCU) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/srcu.h \ + $(wildcard include/config/TINY_SRCU) \ + $(wildcard include/config/NEED_SRCU_NMI_SAFE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rcu_segcblist.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/srcutree.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rcu_node_tree.h \ + $(wildcard include/config/RCU_FANOUT) \ + $(wildcard include/config/RCU_FANOUT_LEAF) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/topology.h \ + $(wildcard include/config/USE_PERCPU_NUMA_NODE_ID) \ + $(wildcard include/config/SCHED_SMT) \ + $(wildcard include/config/GENERIC_ARCH_TOPOLOGY) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/arch_topology.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/topology.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/topology.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/mm.h \ + $(wildcard include/config/MMU_LAZY_TLB_REFCOUNT) \ + $(wildcard include/config/ARCH_HAS_MEMBARRIER_CALLBACKS) \ + $(wildcard include/config/ARCH_HAS_SYNC_CORE_BEFORE_USERMODE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sync_core.h \ + $(wildcard include/config/ARCH_HAS_PREPARE_SYNC_CORE_CMD) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/coredump.h \ + /home/mfritsche/src/linux-a1-npuclk/include/drm/drm_mode_config.h \ + /home/mfritsche/src/linux-a1-npuclk/include/drm/drm_modeset_lock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/stackdepot.h \ + $(wildcard include/config/STACKDEPOT) \ + $(wildcard include/config/STACKDEPOT_MAX_FRAMES) \ + $(wildcard include/config/STACKDEPOT_ALWAYS_INIT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/ww_mutex.h \ + $(wildcard include/config/DEBUG_RT_MUTEXES) \ + $(wildcard include/config/DEBUG_WW_MUTEX_SLOWPATH) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rtmutex.h \ + /home/mfritsche/src/linux-a1-npuclk/include/drm/drm_file.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/drm/drm.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/drm/drm_mode.h \ + /home/mfritsche/src/linux-a1-npuclk/include/drm/drm_prime.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/scatterlist.h \ + $(wildcard include/config/NEED_SG_DMA_LENGTH) \ + $(wildcard include/config/NEED_SG_DMA_FLAGS) \ + $(wildcard include/config/DEBUG_SG) \ + $(wildcard include/config/SGL_ALLOC) \ + $(wildcard include/config/ARCH_NO_SG_CHAIN) \ + $(wildcard include/config/SG_POOL) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mm.h \ + $(wildcard include/config/SYSCTL) \ + $(wildcard include/config/HAVE_ARCH_MMAP_RND_BITS) \ + $(wildcard include/config/HAVE_ARCH_MMAP_RND_COMPAT_BITS) \ + $(wildcard include/config/PPC32) \ + $(wildcard include/config/X86_USER_SHADOW_STACK) \ + $(wildcard include/config/RISCV_USER_CFI) \ + $(wildcard include/config/STACK_GROWSUP) \ + $(wildcard include/config/MEM_SOFT_DIRTY) \ + $(wildcard include/config/ARCH_HAS_PKEYS) \ + $(wildcard include/config/ARCH_PKEY_BITS) \ + $(wildcard include/config/PPC64) \ + $(wildcard include/config/PARISC) \ + $(wildcard include/config/SPARC64) \ + $(wildcard include/config/HAVE_ARCH_USERFAULTFD_MINOR) \ + $(wildcard include/config/MSEAL_SYSTEM_MAPPINGS) \ + $(wildcard include/config/FIND_NORMAL_PAGE) \ + $(wildcard include/config/SHMEM) \ + $(wildcard include/config/HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) \ + $(wildcard include/config/HAVE_GIGANTIC_FOLIOS) \ + $(wildcard include/config/ARCH_HAS_PTE_SPECIAL) \ + $(wildcard include/config/ARCH_SUPPORTS_PMD_PFNMAP) \ + $(wildcard include/config/ARCH_SUPPORTS_PUD_PFNMAP) \ + $(wildcard include/config/ASYNC_KERNEL_PGTABLE_FREE) \ + $(wildcard include/config/SPLIT_PTE_PTLOCKS) \ + $(wildcard include/config/HIGHPTE) \ + $(wildcard include/config/DEBUG_VM_RB) \ + $(wildcard include/config/PAGE_POISONING) \ + $(wildcard include/config/INIT_ON_ALLOC_DEFAULT_ON) \ + $(wildcard include/config/INIT_ON_FREE_DEFAULT_ON) \ + $(wildcard include/config/DEBUG_PAGEALLOC) \ + $(wildcard include/config/ARCH_WANT_OPTIMIZE_DAX_VMEMMAP) \ + $(wildcard include/config/HUGETLBFS) \ + $(wildcard include/config/MAPPING_DIRTY_HELPERS) \ + $(wildcard include/config/PAGE_POOL) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/pgalloc_tag.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mmap_lock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/range.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/percpu-refcount.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/bit_spinlock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/shrinker.h \ + $(wildcard include/config/SHRINKER_DEBUG) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/page_ext.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/stacktrace.h \ + $(wildcard include/config/ARCH_STACKWALK) \ + $(wildcard include/config/STACKTRACE) \ + $(wildcard include/config/HAVE_RELIABLE_STACKTRACE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/page_ref.h \ + $(wildcard include/config/DEBUG_PAGE_REF) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/pgtable.h \ + $(wildcard include/config/ARCH_HAS_NONLEAF_PMD_YOUNG) \ + $(wildcard include/config/ARCH_HAS_HW_PTE_YOUNG) \ + $(wildcard include/config/GUP_GET_PXX_LOW_HIGH) \ + $(wildcard include/config/ARCH_WANT_PMD_MKWRITE) \ + $(wildcard include/config/HAVE_ARCH_SOFT_DIRTY) \ + $(wildcard include/config/ARCH_ENABLE_THP_MIGRATION) \ + $(wildcard include/config/HAVE_ARCH_HUGE_VMAP) \ + $(wildcard include/config/X86_ESPFIX64) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/pgtable.h \ + $(wildcard include/config/PAGE_TABLE_CHECK) \ + $(wildcard include/config/ARM64_CONTPTE) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/proc-fns.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/mte.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/tlbflush.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mmu_notifier.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/interval_tree.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/fixmap.h \ + $(wildcard include/config/ACPI_APEI_GHES) \ + $(wildcard include/config/ARM_SDE_INTERFACE) \ + $(wildcard include/config/RELOCATABLE) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/fixmap.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/por.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/page_table_check.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/pgtable_uffd.h \ + $(wildcard include/config/PTE_MARKER_UFFD_WP) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kasan.h \ + $(wildcard include/config/KASAN_STACK) \ + $(wildcard include/config/KASAN_VMALLOC) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/memremap.h \ + $(wildcard include/config/DEVICE_PRIVATE) \ + $(wildcard include/config/PCI_P2PDMA) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/ioport.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/slab.h \ + $(wildcard include/config/FAILSLAB) \ + $(wildcard include/config/KFENCE) \ + $(wildcard include/config/SLUB_TINY) \ + $(wildcard include/config/SLUB_DEBUG) \ + $(wildcard include/config/SLAB_BUCKETS) \ + $(wildcard include/config/KVFREE_RCU_BATCHED) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/hash.h \ + $(wildcard include/config/HAVE_ARCH_HASH) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/cacheinfo.h \ + $(wildcard include/config/ACPI_PPTT) \ + $(wildcard include/config/ARCH_HAS_CPU_CACHE_ALIASING) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/cpuhplock.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rcuwait.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/signal.h \ + $(wildcard include/config/SCHED_AUTOGROUP) \ + $(wildcard include/config/BSD_PROCESS_ACCT) \ + $(wildcard include/config/TASKSTATS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rculist.h \ + $(wildcard include/config/PROVE_RCU_LIST) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/signal.h \ + $(wildcard include/config/DYNAMIC_SIGFRAME) \ + $(wildcard include/config/PROC_FS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/jobctl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/task.h \ + $(wildcard include/config/HAVE_EXIT_THREAD) \ + $(wildcard include/config/ARCH_WANTS_DYNAMIC_TASK_STRUCT) \ + $(wildcard include/config/HAVE_ARCH_THREAD_STRUCT_WHITELIST) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/uaccess.h \ + $(wildcard include/config/ARCH_HAS_SUBPAGE_FAULTS) \ + $(wildcard include/config/HARDENED_USERCOPY) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/fault-inject-usercopy.h \ + $(wildcard include/config/FAULT_INJECTION_USERCOPY) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/nospec.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/ucopysize.h \ + $(wildcard include/config/HARDENED_USERCOPY_DEFAULT_ON) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/uaccess.h \ + $(wildcard include/config/CC_HAS_ASM_GOTO_OUTPUT) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/kernel-pgtable.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/asm-extable.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/extable.h \ + $(wildcard include/config/BPF_JIT) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/access_ok.h \ + $(wildcard include/config/ALTERNATE_USER_ADDRESS_SPACE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/cred.h \ + $(wildcard include/config/MULTIUSER) \ + $(wildcard include/config/USER_NS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/capability.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/capability.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/uidgid.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/highuid.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/key.h \ + $(wildcard include/config/KEY_NOTIFICATIONS) \ + $(wildcard include/config/NET) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sysctl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/sysctl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/assoc_array.h \ + $(wildcard include/config/ASSOCIATIVE_ARRAY) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/user.h \ + $(wildcard include/config/EPOLL) \ + $(wildcard include/config/VFIO_PCI_ZDEV_KVM) \ + $(wildcard include/config/IOMMUFD) \ + $(wildcard include/config/WATCH_QUEUE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/ratelimit.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/pid.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rhashtable-types.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/posix-timers.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/alarmtimer.h \ + $(wildcard include/config/RTC_CLASS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/hrtimer.h \ + $(wildcard include/config/HIGH_RES_TIMERS) \ + $(wildcard include/config/TIME_LOW_RES) \ + $(wildcard include/config/TIMERFD) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/hrtimer_defs.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/timerqueue.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rcuref.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/iommu-debug-pagealloc.h \ + $(wildcard include/config/IOMMU_DEBUG_PAGEALLOC) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/huge_mm.h \ + $(wildcard include/config/PGTABLE_HAS_HUGE_LEAVES) \ + $(wildcard include/config/PERSISTENT_HUGE_ZERO_FOLIO) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/fs.h \ + $(wildcard include/config/FANOTIFY_ACCESS_PERMISSIONS) \ + $(wildcard include/config/READ_ONLY_THP_FOR_FS) \ + $(wildcard include/config/FS_POSIX_ACL) \ + $(wildcard include/config/CGROUP_WRITEBACK) \ + $(wildcard include/config/IMA) \ + $(wildcard include/config/FILE_LOCKING) \ + $(wildcard include/config/FSNOTIFY) \ + $(wildcard include/config/FS_DAX) \ + $(wildcard include/config/BLOCK) \ + $(wildcard include/config/UNICODE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/fs/super.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/fs/super_types.h \ + $(wildcard include/config/QUOTA) \ + $(wildcard include/config/FS_ENCRYPTION) \ + $(wildcard include/config/FS_VERITY) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/fs_dirent.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/stat.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/stat.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/uapi/asm/stat.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/stat.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/compat.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/compat.h \ + $(wildcard include/config/COMPAT_FOR_U64_ALIGNMENT) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/task_stack.h \ + $(wildcard include/config/DEBUG_STACK_USAGE) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/magic.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/stat.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/errseq.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/list_lru.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/list_bl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/percpu-rwsem.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rcu_sync.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/quota.h \ + $(wildcard include/config/QUOTA_NETLINK_INTERFACE) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/dqblk_xfs.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/dqblk_v1.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/dqblk_v2.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/dqblk_qtree.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/projid.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/quota.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/unicode.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/dcache.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rculist_bl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/lockref.h \ + $(wildcard include/config/ARCH_USE_CMPXCHG_LOCKREF) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/stringhash.h \ + $(wildcard include/config/DCACHE_WORD_ACCESS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/vfsdebug.h \ + $(wildcard include/config/DEBUG_VFS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/wait_bit.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kdev_t.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/kdev_t.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/path.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/semaphore.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/fcntl.h \ + $(wildcard include/config/ARCH_32BIT_OFF_T) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/fcntl.h \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/uapi/asm/fcntl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/asm-generic/fcntl.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/openat2.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/migrate_mode.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/delayed_call.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/ioprio.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sched/rt.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/iocontext.h \ + $(wildcard include/config/BLK_ICQ) \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/ioprio.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mount.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/mnt_idmapping.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/rw_hint.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/file_ref.h \ + /home/mfritsche/src/linux-a1-npuclk/include/uapi/linux/fs.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kobject.h \ + $(wildcard include/config/UEVENT_HELPER) \ + $(wildcard include/config/DEBUG_KOBJECT_RELEASE) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/sysfs.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kernfs.h \ + $(wildcard include/config/KERNFS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/kobject_ns.h \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/vmstat.h \ + $(wildcard include/config/VM_EVENT_COUNTERS) \ + $(wildcard include/config/DEBUG_TLBFLUSH) \ + $(wildcard include/config/PER_VMA_LOCK_STATS) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/vm_event_item.h \ + $(wildcard include/config/BALLOON) \ + $(wildcard include/config/BALLOON_MIGRATION) \ + $(wildcard include/config/X86) \ + /home/mfritsche/src/linux-a1-npuclk/arch/arm64/include/asm/io.h \ + /home/mfritsche/src/linux-a1-npuclk/build-npuclk/arch/arm64/include/generated/asm/early_ioremap.h \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/early_ioremap.h \ + $(wildcard include/config/GENERIC_EARLY_IOREMAP) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/io.h \ + $(wildcard include/config/GENERIC_IOMAP) \ + $(wildcard include/config/TRACE_MMIO_ACCESS) \ + $(wildcard include/config/HAS_IOPORT) \ + $(wildcard include/config/GENERIC_IOREMAP) \ + $(wildcard include/config/HAS_IOPORT_MAP) \ + /home/mfritsche/src/linux-a1-npuclk/include/asm-generic/pci_iomap.h \ + $(wildcard include/config/PCI) \ + $(wildcard include/config/NO_GENERIC_PCI_IOPORT_MAP) \ + $(wildcard include/config/GENERIC_PCI_IOMAP) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/logic_pio.h \ + $(wildcard include/config/INDIRECT_PIO) \ + /home/mfritsche/src/linux-a1-npuclk/include/linux/fwnode.h \ + rknpu_ioctl.h \ + rkopnu.h \ + +rkopnu_ioctl.o: $(deps_rkopnu_ioctl.o) + +$(deps_rkopnu_ioctl.o): diff --git a/.rocket_drv.o.cmd b/.rocket_drv.o.cmd index 2a7a049..ccd3387 100644 --- a/.rocket_drv.o.cmd +++ b/.rocket_drv.o.cmd @@ -1295,6 +1295,8 @@ deps_rocket_drv.o := \ $(wildcard include/config/DRM_DEBUG_MM) \ /home/mfritsche/src/linux-a1-npuclk/include/drm/drm_ioctl.h \ /home/mfritsche/src/linux-a1-npuclk/include/uapi/drm/rocket_accel.h \ + rknpu_ioctl.h \ + rkopnu.h \ /home/mfritsche/src/linux-a1-npuclk/include/linux/clk.h \ $(wildcard include/config/COMMON_CLK) \ $(wildcard include/config/HAVE_CLK_PREPARE) \ diff --git a/rkopnu.h b/rkopnu.h new file mode 100644 index 0000000..b03e53d --- /dev/null +++ b/rkopnu.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* rkopnu: rknpu-ABI ioctl handler prototypes (rkopnu_ioctl.c). */ +#ifndef __RKOPNU_H__ +#define __RKOPNU_H__ +struct drm_device; struct drm_file; +int rkopnu_ioctl_action(struct drm_device *dev, void *data, struct drm_file *file); +int rkopnu_ioctl_submit(struct drm_device *dev, void *data, struct drm_file *file); +int rkopnu_ioctl_mem_create(struct drm_device *dev, void *data, struct drm_file *file); +int rkopnu_ioctl_mem_map(struct drm_device *dev, void *data, struct drm_file *file); +int rkopnu_ioctl_mem_destroy(struct drm_device *dev, void *data, struct drm_file *file); +int rkopnu_ioctl_mem_sync(struct drm_device *dev, void *data, struct drm_file *file); +#endif diff --git a/rkopnu.ko b/rkopnu.ko index 9796d35913c0e18bfb10035b0ebcd4acaae51515..20f43081bf95476a153b5df5d68142f6742e87d1 100644 GIT binary patch literal 47984 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 literal 46688 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 E3ucxjA^-pY literal 44184 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 +#include +#include +#include + +#include "rknpu_ioctl.h" +#include "rkopnu.h" + +int rkopnu_ioctl_action(struct drm_device *dev, void *data, struct drm_file *file) +{ + struct rknpu_action *args = data; + + switch (args->flags) { + case RKNPU_GET_HW_VERSION: + args->value = 0; /* FIXME: reg read once core base is wired (Phase 3) */ + return 0; + case RKNPU_GET_DRV_VERSION: + args->value = RKNPU_GET_DRV_VERSION_CODE(0, 9, 8); + return 0; + case RKNPU_GET_IOMMU_EN: + args->value = 1; + return 0; + case RKNPU_GET_IOMMU_DOMAIN_ID: + args->value = 0; + return 0; + case RKNPU_GET_FREQ: + args->value = 1000000000u; /* 1 GHz */ + return 0; + case RKNPU_POWER_ON: + case RKNPU_POWER_OFF: + case RKNPU_ACT_RESET: + return 0; + case RKNPU_GET_TOTAL_SRAM_SIZE: + case RKNPU_GET_FREE_SRAM_SIZE: + args->value = 0; + return 0; + default: + /* permissive during probe: unhandled actions succeed with 0 */ + args->value = 0; + return 0; + } +} + +int rkopnu_ioctl_submit(struct drm_device *dev, void *data, struct drm_file *file) { return -ENOSYS; } +int rkopnu_ioctl_mem_create(struct drm_device *dev, void *data, struct drm_file *file) { return -ENOSYS; } +int rkopnu_ioctl_mem_map(struct drm_device *dev, void *data, struct drm_file *file) { return -ENOSYS; } +int rkopnu_ioctl_mem_destroy(struct drm_device *dev, void *data, struct drm_file *file) { return -ENOSYS; } +int rkopnu_ioctl_mem_sync(struct drm_device *dev, void *data, struct drm_file *file) { return -ENOSYS; } diff --git a/rkopnu_ioctl.o b/rkopnu_ioctl.o new file mode 100644 index 0000000000000000000000000000000000000000..36736499fb28bee13e26451857b14331828d90c3 GIT binary patch literal 1544 zcmbu8F>ljA6vv1@uV^Ds85sU*T=mR6z&U2#4*VZS&1zZBwpG?#b=cY3x*x3VJlnkybT>$sbc6NI z`bOvOoepeX!xy8B#%Z+2sF;*2qWK_-Q^D&!@w^5a+#&a@34dm;s_)!U03Y1*e5}}U zp$4umBj=p4?RDqB>_7k+P(gvjoC8UUEMqycybz4wk-NnOP4DO3WkWUgt5Pk2UMRhaD*Nq|_uKO6RC>*j=R}^3f9=1Cy>ey;FEjN0ub2?m z`uOT>ZBd+|`Xr?f$>_Z?AR$ literal 0 HcmV?d00001 diff --git a/rocket_drv.c b/rocket_drv.c index c3a73fa..ac25254 100644 --- a/rocket_drv.c +++ b/rocket_drv.c @@ -6,6 +6,8 @@ #include #include #include +#include "rknpu_ioctl.h" +#include "rkopnu.h" #include #include #include @@ -129,32 +131,31 @@ rocket_postclose(struct drm_device *dev, struct drm_file *file) module_put(THIS_MODULE); } -static const struct drm_ioctl_desc rocket_drm_driver_ioctls[] = { -#define ROCKET_IOCTL(n, func) \ - DRM_IOCTL_DEF_DRV(ROCKET_##n, rocket_ioctl_##func, 0) - - ROCKET_IOCTL(CREATE_BO, create_bo), - ROCKET_IOCTL(SUBMIT, submit), - ROCKET_IOCTL(PREP_BO, prep_bo), - ROCKET_IOCTL(FINI_BO, fini_bo), +static const struct drm_ioctl_desc rkopnu_ioctls[] = { + DRM_IOCTL_DEF_DRV(RKNPU_ACTION, rkopnu_ioctl_action, DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(RKNPU_SUBMIT, rkopnu_ioctl_submit, DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(RKNPU_MEM_CREATE, rkopnu_ioctl_mem_create, DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(RKNPU_MEM_MAP, rkopnu_ioctl_mem_map, DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(RKNPU_MEM_DESTROY, rkopnu_ioctl_mem_destroy, DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(RKNPU_MEM_SYNC, rkopnu_ioctl_mem_sync, DRM_RENDER_ALLOW), }; -DEFINE_DRM_ACCEL_FOPS(rocket_accel_driver_fops); +DEFINE_DRM_GEM_FOPS(rkopnu_driver_fops); /* * Rocket driver version: * - 1.0 - initial interface */ static const struct drm_driver rocket_drm_driver = { - .driver_features = DRIVER_COMPUTE_ACCEL | DRIVER_GEM, + .driver_features = DRIVER_RENDER | DRIVER_GEM, .open = rocket_open, .postclose = rocket_postclose, .gem_create_object = rocket_gem_create_object, - .ioctls = rocket_drm_driver_ioctls, - .num_ioctls = ARRAY_SIZE(rocket_drm_driver_ioctls), - .fops = &rocket_accel_driver_fops, - .name = "rocket", - .desc = "rocket DRM", + .ioctls = rkopnu_ioctls, + .num_ioctls = ARRAY_SIZE(rkopnu_ioctls), + .fops = &rkopnu_driver_fops, + .name = "rknpu", + .desc = "rkopnu (rknpu ABI on mainline rocket)", }; static int rocket_probe(struct platform_device *pdev) diff --git a/rocket_drv.o b/rocket_drv.o index 54a68d48a2edefd7ad97781c0fde5ddef1861552..0c2434f3fdf40a20900c1066da2f46bdf363c799 100644 GIT binary patch delta 1405 zcmZXUPfQa*6vlTJkQO!8ZJTXTaia;Azg;B4K|?LIDlr8Mn23p4YP&*(Zfjc%co0oI z7!QW_UBGDK!5E^KnqKgtXgqk69yG>yKu=AK5if>#a^`h{E6m}y-}~M-e=?cu`dInO zoJTCTJ#YSLnVm3FQ-UC*Cz2^+O7Wywt@wNUl%$~~B5`9fZs%3k zI>)ziLR|6^4=hMtcNY-^BGmAXAXvCM3SXsDBmhnJQzQXbDd*vZ-RoY)yu6WjaPSVi8MR#R9gS>#eip(J&A`8f6S9A-cRiKZnbzanw`w>S6sYZUt2vJODD8sN;d>1()y$x$>^xZ^n^C1XSFFK z5lN-=m=;Ov5k9rDkQRw%<4NOxFEe#15zqebCFoL7IyMuu9b|#Esso6#RboMvU9Pja-oF2xENe)miOuWhS^7@x6cOavNt;qxn}#m z%ji{bdQ)N%Uem;wDKWY!u>`-G?X%;i#Pp`b3h&)9`EgTz&g8RGt@7R@lYhmOUo`nF zzfN!BV9O68uI&e@?S`l{LcZ;#INu0^?I*=r0{7dy$P$#=ePW>zBySHXL)hyRj~{|O zEp9`J7NZ`J)E?_nU1g&JjHumKh5f|nn1%(ln_hIO;}EQ?E^)pUq>dhvLSwqaB^FvC zPmO76_{4X#d$@<(gz#Y>c@H_t?@&VS?)25!Y?VbVb#S4x%j&AHlpkQBv%7A!l{X1| H_BQ+l{DfQ- delta 1081 zcmZXS&rcIk5XavvjdY8GrKMXS{7L{TZEQ;sqA@K6`BAij2oa4*TiOLGziJDF6M@DP zUck9{Fah+W2O?=S9*k1rMK7i?{sG+Npm2nnZ)cYT@Fn}1neY3)H=Ei0{rGTn#U{)< zwi@>JgVWJ*d8Ybie~{7Y?`^-;F%W9+@9+o3~*7a`}#Zj$febt zfja?SXFiB;0hTb}s>&=DJj@fU+nCEY>-;fmDyo&nD&Xi9dnm%o20NU0ju%a74KdvyucBg?J#jpciYb<@i-Hm!@<|UtoRb)Yj|T z8$83iRta9yxlhDj#6QF%qJYLy2?{u!P*1ss=q2_LBg9$aat6w(pq74)P%JsgpZJ`d z48^CTGZQJ6R5v2gs63JJl;`WlDGg00%7#krXITeU1=xL$8Oo&fOAujkVk%dB4h0XT0zUlG%WqXZWpoU)E> z^SEI*RmiGH>^|dI!5nvtoN$ECIMxvyri#%Mj`=f=cbQekJ_v`En7*Pleiqj2 zaL3sxd|_yCHA4dZE}!tR4%03#tYelJ-SsHAy>J8lZl5rA3Da(`m@ueq7V(?AMYP$p zrYJVH2nU7O*60;%c1-hdScp43wAxYdc!8nc;}eGX7BBRe_4wdELX!_t=qD~U`3x_L e)a$lI{NB_o4wb6q8j4q23<dD(mHz-F8wc$G