[v4] devtools: spell check

Message ID 20211201165954.16153-1-hnadeau@iol.unh.edu (mailing list archive)
State Rejected, archived
Delegated to: Thomas Monjalon
Headers
Series [v4] devtools: spell check |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/github-robot: build success github build: passed
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS

Commit Message

Henry Nadeau Dec. 1, 2021, 4:59 p.m. UTC
  A spell check script to check for errors in patches. An
 example of usage being cat PATCH_FILE | spell_check.sh. Errors will be
 printed to console, following the file they are located in. Word exclusions
 can be made by making additions to the dictionary, and problematic patterns
 can be added to the regex filter.

Signed-off-by: Henry Nadeau <hnadeau@iol.unh.edu>
---
 devtools/spell_check.sh             |  121 ++
 devtools/spell_check_dictionary.txt | 2160 +++++++++++++++++++++++++++
 devtools/spell_check_regex.txt      |    2 +
 3 files changed, 2283 insertions(+)
 create mode 100755 devtools/spell_check.sh
 create mode 100644 devtools/spell_check_dictionary.txt
 create mode 100644 devtools/spell_check_regex.txt
  

Comments

Thomas Monjalon Jan. 20, 2022, 3:10 p.m. UTC | #1
01/12/2021 17:59, Henry Nadeau:
>  A spell check script to check for errors in patches. An
>  example of usage being cat PATCH_FILE | spell_check.sh.

Does it mean all words are checked? Code and comments?
I think there is no need to check the code.

Note we are already using another tool, codespell inside checkpatch,
based on a dictionary built with this script:	devtools/build-dict.sh

Do you know how aspell compares with codespell?

>  Errors will be
>  printed to console, following the file they are located in. Word exclusions
>  can be made by making additions to the dictionary, and problematic patterns
>  can be added to the regex filter.
> 
> Signed-off-by: Henry Nadeau <hnadeau@iol.unh.edu>
> ---
>  devtools/spell_check.sh             |  121 ++
>  devtools/spell_check_dictionary.txt | 2160 +++++++++++++++++++++++++++
>  devtools/spell_check_regex.txt      |    2 +
>  3 files changed, 2283 insertions(+)

I think it is too much effort to maintain the dictionary and exclusions.
I understand it avoids false positive, but I don't imagine contributors
updating the dictionary as part of their patch.
  

Patch

diff --git a/devtools/spell_check.sh b/devtools/spell_check.sh
new file mode 100755
index 0000000000..16ebe02406
--- /dev/null
+++ b/devtools/spell_check.sh
@@ -0,0 +1,121 @@ 
+#!/bin/bash
+
+file_count=0
+error_count=0
+non_doc=0
+simple_out=''
+output_dir=''
+regex_pattern=''
+output=''
+dir=$(git rev-parse --show-toplevel)
+if [ -z "$dir" ]; then
+  echo "Please execute this script from within a git repo"
+  exit 1
+fi
+
+# Function to spell check a single file
+function spellcheck() {
+	echo "$3" | sed "$2" | aspell --lang=en \
+				      --encoding=utf-8 \
+				      --ignore-case \
+				      --ignore=3 \
+				      --ignore-repl \
+				      list \
+				      --personal="$1""/devtools/spell_check_dictionary.txt"
+}
+
+function read_input {
+  while read -r data; do
+    echo "$data"
+  done
+}
+
+while test $# -gt 0; do
+	case "$1" in
+	-h | --help)
+		echo "Spell Check"
+		echo " "
+		echo "spell_check [options] [arguments]"
+		echo " "
+		echo "options:"
+		echo "-h, --help    Show shows list of flags and usages."
+		echo "-e            Excludes file (and dir) from being printed."
+		echo "-output-dir=            Output file."
+		exit 0
+		;;
+	-e)
+		shift
+		export simple_out='true'
+		;;
+	--output-dir*)
+		export output_dir=$(echo $1 | sed -e 's/^[^=]*=//g')
+		shift
+		;;
+	*)
+		break
+		;;
+	esac
+done
+
+# Requires patch file be piped into script
+PATCH_FILE=$(read_input)
+PATCH_FILE=$(echo "$PATCH_FILE" | sed 's/``.*``//' | grep ^+ | tr -d '*')
+
+# Build regex pattern from files
+while IFS= read -r line; do
+  if [[ ! $line =~ "#" ]]; then
+    regex_pattern+="s/$line/ /; "
+  fi
+done < "$dir/devtools/spell_check_regex.txt"
+
+if [ -n "$regex_pattern" ]; then
+  regex_pattern="${regex_pattern::-1}"
+fi
+
+if [ 's// /;' = "$regex_pattern" ]; then
+  regex_pattern=''
+fi
+
+
+while IFS= read -r line; do
+  if [[ ($line =~ ^\+\+\+) && ($line =~ .rst$)]]; then
+    output=$output"${line//+++ b\//}"$'\n'
+    ((file_count=file_count+1))
+    non_doc=0
+    continue
+  elif [[ ($line =~ ^\+\+\+) && (! $line =~ .rst$)]]; then
+    non_doc=1
+    continue;
+  fi
+
+  if [[ ($non_doc = 0 ) && (! $line =~ ^\+\+\+)]]; then
+    line=${line/+  /}
+    line=${line/+/}
+    for word in $line;
+    do
+	error=$(spellcheck "$dir" "$regex_pattern" "$(echo "$word" |
+	sed 's/>/ /;
+	     s/</ /;
+	     s/:/ /;
+	     s/:/ /;
+	     s/\*/ /;
+	     s/\+/ /;
+	     s/`/ /;
+	     s/"/ /;')")
+
+	if [ -n "$error" ]; then
+	  output=$output$error$'\n'
+	  ((error_count=error_count+1))
+	fi
+    done
+  fi
+done <<< "$PATCH_FILE"
+
+if [ -z "$simple_out" ]; then
+      echo "$output""Errors: $error_count"
+elif [ -n "$output_dir" ]; then
+  touch "$output_dir"
+  echo "$output""Errors: $error_count"$'\n' >> "$output_dir"
+fi
+
+exit 0
diff --git a/devtools/spell_check_dictionary.txt b/devtools/spell_check_dictionary.txt
new file mode 100644
index 0000000000..8a10d942d3
--- /dev/null
+++ b/devtools/spell_check_dictionary.txt
@@ -0,0 +1,2160 @@ 
+personal_ws-1.1 en 1
+AArch
+ABI's
+ABIs
+ACAT
+ACKs
+ACLs
+ADAT
+AEEOT
+AENQ
+AESN
+AFUs
+AIOP
+ALEF
+ALTQ
+AMDA
+APCI
+API's
+APIs
+ARKA
+ARKP
+ARMv
+ASCAT
+ASIC
+ASLR
+ASan
+AUPE
+AddressSanitizer
+AdminQ
+Agilex
+Agilio
+AltArch
+AltiVec
+Alveo
+Aquantia
+Aquantia's
+Arkville
+Arkville's
+Arria
+BBDev
+BBdev
+BCAT
+BDFs
+BMan
+BPSK
+BSPs
+BUFS
+BXNT
+Backports
+Blocklisting
+BlueField
+Broadcom
+Broadwell
+Broder
+BusA
+CAVP
+CAVS
+CBAR
+CBDMA
+CBFC
+CCAT
+CCITT
+CCed
+CDAT
+CEIL
+CFLAG
+CIDR
+CIMC
+CLIs
+CNTRS
+COMPDEV
+CPUFLAG
+CPUFreq
+CPUIdle
+CPUs
+CamelCase
+Cavium
+Cavium's
+CentOS
+Centos
+Cesnet
+Chelsio
+CollectD
+CommitID
+CompressDev
+ConnectX
+Coverity
+CryptoDev
+DALLOW
+DCBX
+DDEBUG
+DDIO
+DEINTERLEAVE
+DEINTERLEAVER
+DESTDIR
+DEVMEM
+DEVS
+DIMM
+DIMMs
+DLActive
+DLB's
+DMAdev
+DMFS
+DOCSISBPI
+DPBP
+DPBPs
+DPDK's
+DPDKVMS
+DPIO
+DPIOs
+DPMAC
+DPMCP
+DPRCs
+DRHD
+DRTE
+DSPs
+DTLB
+DVPT
+DWRR
+Dbuildtype
+Ddisable
+Deinitialising
+Denable
+DevA
+DevB
+DevC
+DevD
+DevF
+DevX
+DevxEnabled
+DevxFsRules
+Dexamples
+Dflexran
+DiffServ
+Diffie
+Dmachine
+Dmax
+Dmitry
+Dockerfile
+DomBDF
+Doption
+Dplatform
+DrvA
+DrvB
+DstMAC
+Dwerror
+EBUSY
+ECAT
+ECDSA
+ECPFs
+ECPM
+EDAT
+EEARBC
+EEXIST
+EFD's
+EINVAL
+ENAv
+ENOSPC
+ENOSYS
+ENOTSUP
+EPOLLIN
+ERANGE
+ESXi
+ETAG
+ETHPORTS
+ETQF
+ETrackId
+EVLAN
+EZchip
+Enablement
+EncryptExtIV
+EqualizationComplete
+Ericsson
+EthApp
+EtherType
+EventDev
+Extranet
+FAILOVER
+FALLTHROUGH
+FANOUT
+FCCT
+FDIRCTL
+FEXTNVM
+FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF
+FIFOs
+FMan
+FPGAs
+FQID
+FRAMESIZE
+FastLinQ
+FleXRAN
+FlexRAN
+FlexSparc
+FortPark
+Fortville
+Foxville
+FpgaDev
+FrameCheckSequenceErrors
+FreeBSD
+FreeBSD's
+Freescale
+GBASE
+GCAT
+GCMVS
+GFSbox
+GGAs
+GGRP
+GGRPs
+GLINKSETTINGS
+GNinja
+GPAs
+GPGPU
+GPIO
+GPLv
+GPUs
+GRE's
+GRENAT
+GROed
+GSET
+GSO'd
+GSOed
+GTPC
+GTPU
+GTPoGRE
+GTPv
+Gbps
+HCAT
+HIFS
+HQoS
+HTSS
+HUGEFILE
+HUGETLB
+HWRM
+HWaddr
+Haswell
+HiSilicon
+HowTo
+Huawei
+HugePages
+Hugepagesize
+IANA
+ICMPv
+IFCVF's
+IGEL
+IGMP
+INTLBK
+INTx
+IOPL
+IOSF
+IOTLB
+IOVM
+IPADs
+IPHDR
+IPSec
+IPsec
+IRQs
+ITERS
+IXIA
+InfiniBand
+InifiniBand
+Inkscape
+IntN
+Intels
+Ironpond
+JITed
+KBytes
+Kaminsky
+KeySbox
+Kozlyuk
+Kunpeng
+Kunpeng's
+LDFLAG
+LEDs
+LETCAM
+LF's
+LFSR
+LIBDIR
+LIBEAL
+LINEARBUF
+LINKINFO
+LKCF
+LKML
+LLDP
+LLQv
+LLRs
+LSB's
+LSBs
+LSDK
+LTTng
+Linaro
+LineSidePort
+LiquidIO
+LnkSta
+Lpmcore
+MACSec
+MACsec
+MAIA
+MAINT
+MBUFs
+MBytes
+MDATA
+MDIO
+MEMLOCK
+MESI
+MKEY
+MMAP's
+MMIO
+MODINV
+MPLSoGRE
+MPLSoUDP
+MPMC
+MPMCF
+MPSC
+MSBs
+MSDN
+MSIx
+MSRs
+MSVC
+MTUs
+MWAIT
+Maipo
+Mellanox
+MemC
+MemCache
+MinGW
+Mitzenmacher
+Moongen
+MySpecialDev
+MySpecialDrv
+NASM
+NCSI
+NDIS
+NGIO
+NIC's
+NICs
+NICsfor
+NIST
+NNNNN
+NOFILE
+NOLIVE
+NOTREACHED
+NREGIONS
+NSDI
+NSECPERSEC
+NXP's
+NetUIO
+NetVSC
+NetXtreme
+Netcope
+Netlink
+Netmap
+Netronome's
+Niantic
+Npcap
+OFPAT
+OKTET
+OPADs
+OPAE
+OR'd
+OcteonTX
+OcteonTx
+Ootpa
+OpenCL
+OpenFabrics
+OpenFlow
+OpenSSL
+OpenWRT
+OpenWrt
+PBSIZE
+PCDs
+PCIADDR
+PCIe
+PCRE
+PCTYPES
+PF's
+PFVF
+PFVMTXSSW
+PGSIZE
+PHYREG
+PMD's
+PMDs
+POSIX
+PPPOED
+PPPOES
+PPPoE
+PPPoL
+PQoS
+PRIu
+PRNG
+PROBLEMTYPE
+PYTHONPATH
+Pankaj
+Parallelize
+Paravirtual
+Pensando
+Permop
+Pfaff
+Pipelevel
+Powerlinux
+Prepend
+QATE
+QEMU's
+QLogic
+QMan
+QNUM
+QSFP
+QinQ
+QorIQ
+QuickAssist
+QuickData
+RETA's
+RETAs
+RFCE
+RFOE
+RHEL
+RINGSIZE
+ROUNDROBIN
+RSERV
+RSMBL
+RSPCIPHY
+ReEx
+ReTa
+Readme
+Redhat
+Regexes
+Retransmit
+Rootfile
+RxQs
+RxTx
+SA's
+SADB
+SAIDX
+SATP
+SCLK
+SELINUXTYPE
+SELinux
+SFID
+SFNX
+SGBT
+SGLs
+SIGBUS
+SIGCOMM
+SIGHUP
+SIGINT
+SLAs
+SLES
+SLINKSETTINGS
+SMMU
+SMMUv
+SMTP
+SOC's
+SOCs
+SPDK
+SPDX
+SPSC
+SRAM
+SRTD
+SSET
+SSOW
+SSOWS
+SXGMII
+ScaleBricks
+SeLockMemoryPrivilege
+SecMon
+Semihalf
+Sendto
+Shumway
+Silicom
+Skylake
+SlotClk
+SmartNICs
+SoCs
+SoftNIC
+SolarCapture
+Solarflare
+SpeedStep
+StrataGX
+Subfield
+Subkey
+Subtarget
+Sunsetting
+TAGCTRL
+TCAM
+TCPHDR
+TCPv
+TDES
+TIMvf
+TIPG
+TLBs
+TLVs
+TPAUSE
+TPID's
+TSDL
+TSOed
+TSOv
+TestPMD
+TestPoint
+TestPointShared
+Testpoint
+ThunderX
+Timebase
+ToolChain
+TrErr
+TruFlow
+Twinpond
+UCSM
+UCTX
+UDPv
+UEFI
+UMWAIT
+UTRA
+Unary
+UniPHY
+Unregistration
+VADT
+VCBs
+VDAT
+VEBs
+VF's
+VFTA
+VICs
+VIRQFD
+VLANs
+VLVF
+VLXAN
+VM's
+VMBus
+VMDq
+VMware
+VPCLMULQDQ
+VRRP
+VTEP
+VTune
+VXLan
+VarText
+Varkey
+Versal
+VirtIO
+VirtQ
+Virtio's
+VxLAN
+WAITPKG
+WORKDIR
+WQEs
+WangXun
+Wangxun
+WinOF
+WinPcap
+Wmissing
+XCAT
+XGBE
+XORed
+XXCC
+XXXXXXXXXX
+Xenial
+Xeon
+Xilinx
+XtremeScale
+Yocto
+ZIPVF
+Zhou
+aQtion
+aaaa
+aarch
+abar
+abcdefgh
+abidiff
+accel
+accessor
+acked
+acking
+acks
+acpi
+activeate
+addif
+addr
+addrs
+adminq
+adptrs
+aead
+aesni
+affinitize
+affinitized
+affinitizing
+aflag
+algo
+algos
+allmulti
+allmulticast
+alloc
+allocator
+allocator's
+allocators
+allowlist
+allports
+alrt
+altivec
+amumble
+amzn
+antispoof
+apis
+argc
+args
+argv
+armv
+asan
+asym
+async
+atexit
+atmost
+atoi
+atomicNN
+atomicity
+atomics
+attr
+auth
+autoconf
+autodetected
+autogen
+autoload
+autoneg
+autonegotiation
+autotest
+autotests
+autotools
+axgbe
+babeltrace
+backend
+backends
+backplane
+backport
+backported
+backporting
+backpressure
+backquotes
+baddr
+balancer
+barcharts
+baseband
+basegraph
+basename
+bbdev
+bbdevs
+bcac
+bcast
+bcde
+bcmfs
+beefd
+benchmarking
+bflag
+binded
+binutils
+bitcnt
+bitfield
+bitfields
+bitmask
+bitmasks
+bitrate
+bitrates
+bitratestats
+bitstream
+bitwidth
+bitwidths
+bitwise
+bler
+blocklist
+blocksz
+bluefield
+bnxt
+bondingX
+bool
+bootargs
+bootindex
+boxplot
+bphy
+bpid
+bpool
+branchless
+brctl
+breakpoint
+bsize
+bufring
+bufsz
+bugfixes
+builddir
+buildroot
+buildtools
+buildtype
+builtins
+bursty
+busybox
+byname
+bytecode
+byteswap
+cBPF
+caam
+caba
+cacheline
+cack
+calc
+callee
+callfd
+calloc
+callout
+capa
+cbaf
+cbps
+ccac
+ccbbffffaa
+cdev
+cdfd
+centric
+cfgfile
+cfilter
+cflags
+cgroup
+cgroups
+chacha
+changings
+charcrypto
+chardev
+charp
+cheatsheet
+checkpatch
+checkpatches
+checksumming
+checksums
+chipset
+chipsets
+chkr
+chksum
+chlen
+chmod
+chnk
+chown
+cint
+ciphertext
+cksum
+classif
+cldemote
+clks
+cmac
+cmake
+cman
+cmdif
+cmdline
+cmds
+cmit
+cnic
+cntvct
+cnxk
+codespell
+combov
+commandline
+committer's
+comms
+compN
+comparator
+comparators
+compat
+compilervars
+compressdev
+compressdevs
+cond
+conf
+config
+configfile
+configruration
+configs
+connectx
+conntrack
+const
+contig
+contigmalloc
+contigmem
+contiguousness
+contrib
+conv
+copybreak
+coredump
+coredumpsize
+corei
+corelist
+coremask
+cperf
+cppc
+cpuX
+cpufreq
+cpuinfo
+cpumask
+cpus
+cpuset
+cputune
+cron
+crypto
+cryptodev
+cryptodev's
+cryptodevs
+cryptographic
+cryptolib
+cryptoperf
+csiostor
+cstream
+csum
+csumonly
+ctod
+ctrl
+ctrlmbuf
+cuda
+cudaStream
+currentMemory
+cvlan
+cvss
+cxgb
+cxgbe
+cxgbetool
+cxgbevf
+cxgbtool
+cyclecount
+dPacket
+daemonize
+data's
+datagram
+datagrams
+datapath
+datapaths
+dataplane
+dataroom
+datasheet
+dataunit
+dbdf
+deallocate
+deallocated
+deallocates
+deallocating
+deallocation
+debugbuild
+debugfs
+debugoptimized
+decap
+decaped
+decaps
+decapsulate
+decapsulated
+decapsulating
+decapsulation
+decomp
+decrementing
+decrypt
+decrypted
+dedent
+dedented
+defs
+degradations
+deinit
+deinitialization
+deinitialized
+denylist
+deps
+deqd
+deque
+dequeing
+dequeue
+dequeued
+dequeueing
+dequeues
+dequeuing
+dereference
+dereferenced
+dereferencing
+desc
+descs
+dest
+deterministically
+devarg
+devargs
+devbind
+devel
+develconfig
+deviceID
+deviceid
+devid
+devinfo
+devinit
+devlink
+devtools
+devtype
+devuninit
+diag
+dirname
+disaggregated
+distr
+distrib
+distro
+distros
+dlopen
+dmac
+dmadev
+dmadevs
+dmafwd
+dmar
+dmarXXX
+dmas
+dmesg
+dmidecode
+docsis
+dont
+dostuff
+downlink
+downscript
+doxy
+doxygen
+dpaa
+dpci
+dpcon
+dpdk
+dpdmai
+dpni
+dport
+dprc
+dpseci
+dptmapi
+dqud
+dracut
+driverctl
+dropless
+droppper
+drvinfo
+drwxr
+dscp
+dsts
+dtap
+dtunX
+dumpcap
+dynf
+dynfield
+dynflag
+eBPF
+eCPRI
+eMPW
+ecid
+ecmp
+ecpri
+edab
+eeprom
+eetrack
+elftools
+elif
+elts
+emulatorpin
+encap
+encaped
+encapped
+endPtr
+endian
+endianness
+endif
+enetc
+enic
+enqd
+enqueue
+enqueued
+enqueueing
+enqueues
+enqueuing
+entrancy
+entres
+entryx
+enum
+enums
+enumtype
+epoll
+errno
+essb
+eswitch
+ethdev
+ethdev's
+ethdevs
+ethertype
+ethertypes
+ethtool
+evdev
+eventdev
+eventdevs
+eventport
+eventq
+evtim
+ewma
+exdsa
+executables
+expirations
+extbuf
+extconf
+extern
+extmbuf
+extmem
+extstats
+fPIC
+facto
+failsafe
+fastpath
+fbarray
+fd's
+fdir
+fdir's
+fdirmatch
+fdirmiss
+fdisk
+fdopen
+ffadc
+ffade
+ffea
+ffff
+ffffff
+filepath
+filesystem
+filetype
+fillcrypto
+filtermask
+filtermode
+fini
+fips
+firmwares
+fixline
+flexbytes
+flexpayload
+flexran
+flib
+flowapi
+flowgen
+flowid
+flowptr
+flowttl
+flowtype
+flushtime
+fman
+fmlib
+foohead
+foreach
+formatters
+fpavf
+fpga
+fprintf
+framecnt
+framesz
+freebsd
+freqs
+frontend
+frontends
+fslmc
+fstab
+ftag
+fullbuild
+fullchk
+fullq
+func
+funcs
+fwdbuild
+fwding
+geneve
+getcpuclockid
+getopt
+getschedparam
+getspecific
+getwork
+gfni
+glibc
+globbing
+glort
+gmac
+gmake
+gnueabihf
+goto
+gpudev
+gpus
+gragment
+grehdr
+grep'ed
+groupinstall
+guarant
+gzip
+hairpinq
+hardcoded
+harq
+hdls
+helloworld
+hexmask
+hier
+highlevel
+higig
+hinic
+hisilicon
+hmac
+hostdev
+hostfwd
+hostname
+hostnet
+hotplug
+hotplugged
+hotplugging
+howto
+hpet
+hrtp
+hthresh
+htonl
+hugepage
+hugepages
+hugepagesz
+hugetlbfs
+hwcap
+hwgrp
+hwissue
+hwloc
+hyperthreading
+hyst
+iAVF
+iSCSI
+iavf
+ibadcrc
+ibadlen
+ibverbs
+ibytes
+icmp
+icmpecho
+icmpv
+idxd
+ient
+ierrors
+ietf
+iface
+ifaceX
+ifconfig
+ifcvf
+ifdef
+ifname
+ifndef
+ifpga
+ifup
+igbvf
+imcasts
+imissed
+imix
+impl
+implementers
+incrementing
+infa
+infiniband
+inflight
+inflights
+infos
+init
+initializer
+initializers
+initializion
+inlined
+inlining
+inmigrate
+inorder
+insmod
+intXX
+interleaver
+interprocedural
+intf
+intr
+intra
+intrinsics
+ints
+intx
+ioat
+ioeventfd
+iofwd
+iomem
+iommu
+ioport
+ioports
+iova
+ipackets
+ipip
+iproute
+ipsec
+irqs
+isal
+iscard
+isdigit
+isolcpus
+isonum
+iter
+ivshmem
+ixgbe
+ixgbevf
+jansson
+jhash
+jitter
+jobstats
+json
+kaleido
+kasumi
+kbytes
+kdrv
+keepalive
+keepcfg
+kenv
+keyX
+keygen
+keytag
+keywidth
+kflows
+killall
+kldload
+kldstat
+kldunload
+kmod
+kmods
+kni's
+kqueue
+kstrtoul
+kthread
+kthreads
+ktrace
+kvargs
+lacp
+latencystats
+layerscape
+lbrm
+lcore
+lcoreid
+lcores
+ldconfig
+ldflags
+ldpc
+ldpcdec
+ldpcenc
+libAArch
+libSSO
+libX
+libabigail
+libarchive
+libasan
+libatomic
+libbpf
+libc
+libcrypto
+libcryptodev
+libdpdk
+libefx
+libelf
+libeventdev
+libexecinfo
+libgcc
+libibverbs
+libisal
+libjansson
+libmemif
+libmlx
+libmusdk
+libname
+libnfb
+libnl
+libnuma
+libpcap
+libpqos
+librte
+libs
+libsze
+libtool
+libudev
+libvhost
+libvirt
+libz
+linearization
+linearize
+linearized
+linearizing
+linuxapp
+liovf
+liquidio
+literalinclude
+liveness
+lkup
+lladdr
+llvm
+lmac
+loadcfg
+loadfw
+loadu
+lockfree
+lockless
+loglevel
+loglevels
+logtype
+lookaside
+lookups
+loopback
+lossy
+lrand
+lrte
+lrwxrwxrwx
+lscpu
+lsmod
+lspci
+lstopo
+lthread
+lthreads
+lundef
+macExtS
+macaddr
+macaddrs
+macsec
+macswap
+mainloop
+makefile
+makefiles
+malloc
+manpages
+mappable
+maskable
+maskbits
+masklen
+maxdepth
+maxflows
+maxhash
+maxlen
+maxp
+maxth
+mbcache
+mbox
+mbps
+mbuf
+mbuf's
+mbufs
+mcam
+mcast
+mcfg
+mcpu
+mcus
+mdev
+memAccess
+memconfig
+memcopy
+memcpy
+memdev
+memdump
+memfd
+memhdr
+memif
+meminfo
+memoryBacking
+mempool
+mempool's
+mempools
+memseg
+memsegs
+memset
+memsize
+memzone
+memzones
+menthod
+menuconfig
+mergeable
+mesonconf
+mgmt
+microarchitecture
+microarchitectures
+microblock
+middleboxes
+milli
+mingw
+miniCQE
+mins
+minth
+misalign
+misprediction
+mkconfig
+mkdir
+mlnx
+mlnxofedinstall
+mlockall
+mlxconfig
+mlxdevm
+mlxfwreset
+mlxreg
+mmap
+mmap'ed
+mmaping
+mmapped
+mmaps
+modex
+modexp
+modinfo
+modprobe
+mountpoint
+mpls
+mplsogre
+mplsoudp
+mpool
+mpps
+mprq
+mrvl
+msgs
+msix
+mspdc
+mtod
+mtophys
+mtrapi
+mtrr
+mtune
+multicast
+multicasting
+multicasts
+multicore
+multilib
+multiline
+multiport
+multiprocess
+multiqueue
+multithread
+multithreaded
+multithreading
+musdk
+musl
+mutex
+mutexes
+mvneta
+mvpp
+mvsam
+myapp
+mydoc
+mynet
+nack
+namespace
+nano
+nanosleep
+napi
+natively
+nbcore
+nbport
+negllr
+neoverse
+neta
+netcat
+netdev
+netdev's
+netdevice
+netif
+netlogdecode
+netperf
+netronome
+netuio
+netvf
+netvsc
+newdir
+newsize
+nexts
+nffw
+ngbe
+nics
+nicvf
+nitrox
+nixlf
+nocbs
+nodefaults
+nodeid
+nodeps
+nodesc
+nodeset
+nodev
+nodrop
+nographic
+nohz
+nointxmask
+noiommu
+nombuf
+noncontiguous
+nonleaf
+noreturn
+nowait
+npalf
+nrange
+nsec
+nseg
+ntohl
+ntuple
+numa
+numactl
+numatune
+numref
+numvfs
+nvgre
+oUDP
+obase
+objdump
+objhdr
+objs
+obytes
+octeon
+octeontx
+oerror
+oerrors
+ofed
+offsetof
+olflags
+onchip
+onwards
+opackets
+opdl
+openibd
+openssl
+openwrt
+optype
+osdep
+outb
+outes
+outoffset
+overcommitted
+oversubscription
+ovlan
+ovrd
+pCPU
+pCPUs
+packetbuffer
+pagefault
+pagemap
+pagemaps
+pagesize
+param
+paramX
+paramY
+paramZ
+params
+paravirtualized
+parm
+parsers
+passlist
+passthrough
+passthru
+patchset
+patchsets
+pcap
+pcapng
+pcaps
+pciconf
+pcidb
+pcifunc
+pcisf
+pcpu
+pctype
+pdcp
+pdev
+pdpe
+pdump
+perf
+performant
+personalization
+pfcp
+pflink
+pfnum
+phdr
+physaddr
+physmem
+pipelined
+pipelining
+pkgconf
+pkgconfig
+pkgo
+pkill
+pkivf
+pkmbuf
+pkovf
+pktgen
+pktlen
+pktmbuf
+pktmbufs
+pktmode
+pkts
+plaintext
+plcores
+plotly
+pluggable
+plugindir
+pmdinfo
+pmdinfogen
+pmds
+pmgmt
+policer
+popd
+portId
+portconf
+portid
+portlist
+portmap
+portmask
+portn
+portnum
+portstats
+postcopy
+postfix
+postmigrate
+powermonitor
+ppfe
+pppoe
+pqos
+prealloc
+preallocate
+preallocated
+preallocating
+prebuilt
+precompiled
+precomputed
+preconfigured
+preemptible
+prefetch
+prefetchable
+prefetched
+prefetches
+prefetching
+prefree
+prepended
+prepends
+preprocessor
+prerelease
+printf
+printk
+prio
+priv
+proc
+processfor
+procinfo
+procs
+profileid
+prog
+programmatically
+promisc
+promiscusity
+proto
+prototyped
+psec
+pseudocode
+pstate
+psutil
+ptest
+ptests
+pthread
+pthreads
+pthresh
+ptpclient
+ptrs
+ptype
+ptypes
+pushd
+pvalue
+pvid
+pyelftools
+qavg
+qbman
+qconf
+qcow
+qdisc
+qdma
+qede
+qedf
+qedi
+qedr
+qemu
+qidA
+qidB
+qidx
+qinq
+qint
+qmap
+qmapping
+qoriq
+qpairs
+qsbr
+qsize
+qtime
+queueid
+rarp
+rawdev
+rawdevice
+rawdevices
+rawdevs
+rdline
+rdlock
+rdma
+rdtsc
+reStructuredText
+readline
+readlink
+realloc
+rebalanced
+rebalancing
+reconfigurable
+reconfiguring
+reconnection
+recv
+refcnt
+refdir
+regbit
+regexdev
+regexdevs
+regfield
+regs
+reinitializes
+reinitializing
+repo
+representator
+representor
+representors
+reqs
+requestor
+responder
+restool
+resv
+reta
+retransmission
+retransmissions
+retval
+ringparam
+rlimit
+rmmod
+roadmap
+rootfs
+rply
+rqmts
+rsize
+rsrc
+rsvd
+rsync
+rtecryptodev
+rtemap
+rudimental
+runstate
+runtime
+rvIndex
+rwlock
+rwlocks
+rxbuf
+rxconf
+rxfreet
+rxht
+rxmode
+rxoffload
+rxoffs
+rxonly
+rxpkts
+rxportconf
+rxpt
+rxqs
+rxtx
+rxwt
+sPAPR
+sact
+sadv
+safexcel
+sbin
+scalability
+scalable
+scaleup
+scapy
+sched
+scheduler's
+sctp
+sdap
+secgw
+secpol
+segs
+segsize
+segsz
+seid
+selectable
+selftest
+selinux
+sendemail
+sendmsg
+sendp
+seqn
+sess
+sessionless
+setaffinity
+setcancelstate
+setcanceltype
+setcap
+setpci
+setschedparam
+setspecific
+setspeed
+sfboot
+sfnum
+sgmii
+shaper
+shapers
+shconf
+shmfd
+shortname
+signoff
+simd
+sizeof
+skiplist
+smac
+smallbuild
+smap
+smartNIC
+smartnic
+smtpencryption
+smtpserver
+smtpserverport
+smtpuser
+snat
+snprintf
+socat
+socketid
+socktype
+socs
+softirqs
+softmmu
+softnic
+softrss
+soname
+sonames
+spinlock
+spinlocks
+spoofable
+srTCM
+srcs
+sriov
+srtcm
+srtcmp
+ssopf
+ssovf
+stateful
+statefully
+stderr
+stdin
+stdint
+stdlib
+stdout
+stlist
+stmt
+strace
+strcmp
+strcpy
+strerror
+stripq
+strlen
+stroul
+strscpy
+strtoll
+strtoull
+struct
+structs
+stty
+stype
+subblock
+subdir
+subdirectories
+subdirectory
+subdirs
+subexpression
+subfolder
+sublists
+submode
+submodes
+subnet
+subport
+subports
+substream
+subtuple
+subvariant
+sudo
+sunsetted
+superpages
+svlan
+switchdev
+syncthreads
+sysctl
+sysfile
+sysfs
+syslog
+sysroot
+systemd
+szedata
+szedataII
+tabularcolumns
+taildrop
+tailroom
+tapvm
+taskset
+tcpdump
+tcpv
+teid
+telco
+testapp
+testbbdev
+testcancel
+testcase
+testcases
+testeventdev
+testpmd
+testpmd's
+testregex
+testsuite
+testsuites
+thash
+threadIdx
+threadfence
+thunderx
+timedlock
+timedrdlock
+timedwait
+timedwrlock
+timerdev
+timespec
+timestamping
+timesync
+timvf
+titi
+tmapi
+tmgr
+toctree
+toeplitz
+toolchain
+toolchains
+topologies
+totalvfs
+tpid
+tpmd
+trTCM
+tracebuild
+tracecompass
+tracepoint
+tracepoints
+tradeoff
+transactional
+transceiving
+trie
+trtcm
+trylock
+tryrdlock
+trywrlock
+tshark
+tswap
+ttyAMA
+tunX
+tuntap
+turb
+tuser
+txconf
+txfreet
+txgbe
+txgbevf
+txht
+txmode
+txoffload
+txonly
+txpkts
+txport
+txportconf
+txpt
+txqflags
+txqnum
+txqs
+txqueuelen
+txrate
+txrst
+txsplit
+txtimes
+txwt
+typedef
+typedefs
+ucast
+udata
+udevd
+udpv
+uevent
+uint
+uintXX
+uintptr
+uioX
+ulimit
+umem
+umount
+unack
+unacked
+uname
+uncachable
+uncomment
+uncompiled
+uncompress
+uncompressing
+unencrypted
+unfree
+unicast
+uninit
+uninitialization
+uninitialize
+uninitializes
+unint
+unioned
+uniq
+unittest
+unlink
+unmap
+unmapped
+unmapping
+unmount
+unregister
+unregistering
+unreserve
+unreserving
+unrouted
+unsetting
+untag
+untagged
+untags
+untar
+upgradable
+uplink
+upstreamable
+upstreamed
+uptime
+usec
+userdata
+userland
+userspace
+usertools
+usleep
+usvhost
+uucp
+uuid
+uverbs
+uwire
+vCPE
+vCPU
+vCPUs
+vDPA
+vEth
+vHost
+vIOMMU
+vNIC
+vNICs
+vPMD
+vPro
+vRAN
+vSphere
+vSwitch
+vSwitches
+validator
+vals
+variadic
+vchan
+vcpu
+vcpupin
+vdev
+vdevarg
+vdevs
+vdmq
+vdpa
+vdpadevs
+vdrv
+vect
+vectorization
+vectorize
+vectorized
+vendid
+vendorID
+verwrite
+verylongtypename
+vfio
+vhost
+vhostforce
+vhostuser
+virbr
+virsh
+virt
+virtaddr
+virtenv
+virtio
+virtq
+virtqueue
+virtqueues
+virtualised
+virtualized
+virtualport
+vlan
+vmbus
+vmdq
+vmname
+vmware
+vmxnet
+vnic
+vring
+vrings
+vswitch
+vsym
+vxlan
+wakeup
+webpage
+werror
+werrorbuild
+wget
+whitespace
+wireshark
+wlcore
+wlcores
+workqueue
+workqueues
+workslot
+wred
+writeback
+wrlock
+wrptr
+wthresh
+wwww
+xFEE
+xFFEF
+xFFF
+xFFFD
+xFFFELLU
+xFFFF
+xFFFFEF
+xFFFFFFFF
+xJvf
+xXXXXXXXX
+xbzrle
+xcast
+xcbc
+xdata
+xefff
+xenvirt
+xffff
+xffffff
+xffffffff
+xffffffffffffffff
+xform
+xforms
+xmem
+xmemhuge
+xmeta
+xmit
+xmode
+xoff
+xored
+xstat
+xstats
+xtype
+xxxx
+xxxxxx
+xxxxxxx
+yyyy
+zcat
+zlib
+zmalloc
+zxof
+QAT
+BCM
+IPC
+IPC
+TCs
+unassociated
diff --git a/devtools/spell_check_regex.txt b/devtools/spell_check_regex.txt
new file mode 100644
index 0000000000..efa8f63450
--- /dev/null
+++ b/devtools/spell_check_regex.txt
@@ -0,0 +1,2 @@ 
+# This file is used to exclude regex patterns from being passed to Aspell.
+# Each line is read as a single pattern.