sylware / nyanlinux (public) (License: AFFERO GPLv3) (since 2019-09-09) (hash sha1)
scripts for a lean, from scratch, amd hardware, linux distro
List of commits:
Subject Hash Author Date (UTC)
gfx stack update (a lot of new trash code in linux, microsoft? google? ibm?) 0e915966007eecfc71620a3852ae26c059725204 Sylvain BERTRAND 2022-03-20 16:15:55
more C compilers 6b8020c1ea2bca8d65b86740c850723f04f0cb9b Sylvain BERTRAND 2022-03-20 16:13:55
gfx stack update 031c1509740c7abf25aadac2136695c3e292ce5c Sylvain BERTRAND 2022-03-13 13:22:52
gfx stack update (linux is being trashed because of fanboys of compilers) c900fe1a5b86b2db51a694ef124513a31baf326f Sylvain BERTRAND 2022-03-06 13:53:59
dav1d: need an upstream fix 76a6d021cb56e9e81655d4f4391bcb088c7f3878 Sylvain BERTRAND 2022-03-04 20:59:18
gfx stack update (ffmpeg/dav1d glitched) 19612db67cc5c5d2389d25a4faaad6a38f9e6ead Sylvain BERTRAND 2022-02-28 21:11:10
gfx stack update 4d43e5f3f1cb8fe67ee7cad3a96c18e1be7b3232 Sylvain BERTRAND 2022-02-20 13:04:44
gfx stack update 656a6a347d377529db75f7a82487b7a23a6a05db Sylvain BERTRAND 2022-02-14 00:45:03
gfx stack update 2c431f853f8d938972aebe8ce9e4be29c93e9329 Sylvain BERTRAND 2022-02-06 17:53:13
gfx stack update 032d8009b7dbc3a02781fa708ea72a9199e23e74 Sylvain BERTRAND 2022-01-30 16:40:14
gfx stack update fed039d498c6b8c6c43f7012ba77a5a582c86c0c Sylvain BERTRAND 2022-01-24 02:43:25
gfx stack update a8ccdfe5ec91a1eed44965159059210b16322f0f Sylvain BERTRAND 2022-01-16 19:11:28
gfx stack update (AMD linux/x11 repos unreachable) 15abc62444150c19cbdfed902a4b809c2d3e1953 Sylvain BERTRAND 2022-01-09 15:39:18
gfx stack update 871f623caef6d555653e060c975609f7740c02d3 Sylvain BERTRAND 2022-01-02 16:27:47
gfx stack update 095f9a09ba235e2176b88a61e27fd052a53ab468 Sylvain BERTRAND 2021-12-19 19:46:37
gfx stack update 07808c7d585ce41a27f8250d1c6415fd0cca1e82 Sylvain BERTRAND 2021-12-12 21:24:35
xserver: custom explicit/idiotic/parallel build script a54a7f8c93626dd217af52184f5ee0f16db16ba0 Sylvain BERTRAND 2021-12-07 19:14:05
gfx stack update c17301fde8a03ef815ed240a3fd5185d70f76df7 Sylvain BERTRAND 2021-12-06 01:01:06
alcatel onetouch usb 4G modem 84d6c9519cbc37a34668ef0cc02457efc9d6023a Sylvain BERTRAND 2021-11-29 16:02:36
gfx stack update (all fixes are in) 00b2f8c68cf5890fcae9386fe856f860344a771e Sylvain BERTRAND 2021-11-28 17:23:28
Commit 0e915966007eecfc71620a3852ae26c059725204 - gfx stack update (a lot of new trash code in linux, microsoft? google? ibm?)
Author: Sylvain BERTRAND
Author date (UTC): 2022-03-20 16:15
Committer name: Sylvain BERTRAND
Committer date (UTC): 2022-03-20 16:15
Parent(s): 6b8020c1ea2bca8d65b86740c850723f04f0cb9b
Signer:
Signing key:
Signing status: N
Tree: 94cae4fae759efb136dc3c8f5d38b06e9a7cc88e
File Lines added Lines deleted
builders/dav1d-87f9a81cd770e49394a45deca7a3df41243de00b/builder.sh 1 1
builders/dav1d-87f9a81cd770e49394a45deca7a3df41243de00b/contrib/x86_64_linux_glibc_gcc.sh 2 1
builders/elfutils-0.186/builder.sh 63 0
builders/elfutils-0.186/contrib/libelf.sh 205 0
builders/ffmpeg-a24e6ca8bf3f9b6c8ecf17eacc0ead17d7b5795b/builder.sh 0 0
builders/linux-amd/all.patch 0 1213
builders/linux-amd/amd_ramfs.in 5 2
builders/linux-amd/builder.sh 55 51
builders/linux-amd/config 150 73
builders/linux-amd/flow_dissector.c 0 1832
builders/linux-amd/lnc.sh 2 6
builders/linux-amd/min-tool-version.sh 0 39
builders/linux-amd/patches.sh 0 21
builders/linux-amd/release.sh 2 2
builders/linux-amd/wrappers/crossgcc 6 0
builders/linux-amd/wrappers/hostgcc 15 0
builders/llvm-3b2e605e33bd9017ff2eff1493add07822f9d58b/builder.sh 0 0
builders/llvm-3b2e605e33bd9017ff2eff1493add07822f9d58b/llvm-config.keep 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/builder.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/amd.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/compiler.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/compiler_glsl.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/compiler_nir.sh 1 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/drm_helper.h.patch 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/egl.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/egl_dri2.c.patch 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/external_deps.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_auxiliary.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_drivers.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_frontends.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_state_trackers.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_targets.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_winsys.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gbm.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gcc_binutils.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/glx.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/loader.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/mapi.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/matypes.h.x86_64 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/mesa.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pipe_loader.c.patch 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/dri.pc.in 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/egl.pc.in 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/gbm.pc.in 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/gl.pc.in 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/si_pipe.c.patch 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/si_uvd.c 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/u_printf.c 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/util.sh 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vtn_opencl.c 0 0
builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/x86_64_linux_glibc_amdgpu.sh 0 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/builder.sh 0 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/generators.sh 0 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/u_printf.c 0 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vk_enum_to_str.c 0 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vk_enum_to_str.h 0 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vtn_opencl.c 0 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/x86_64_amdgpu_linux_gnu_vulkan_x11_drm_gcc.sh 6 0
builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/radeon_icd.x86_64.json 0 0
File builders/dav1d-87f9a81cd770e49394a45deca7a3df41243de00b/builder.sh copied from file builders/dav1d-28a9c46e1c36540d3276299f2e284ece1d2386be/builder.sh (similarity 93%) (mode: 100644) (index 67dfeee..44fe8eb)
1 1 git_commit=${pkg_name##*-} git_commit=${pkg_name##*-}
2 2 slot=$git_commit slot=$git_commit
3 3 major=6 major=6
4 minor=4
4 minor=6
5 5 patch=0 patch=0
6 6 git_version=$git_commit git_version=$git_commit
7 7 . $nyan_root/builders/dav1d/builder.sh . $nyan_root/builders/dav1d/builder.sh
File builders/dav1d-87f9a81cd770e49394a45deca7a3df41243de00b/contrib/x86_64_linux_glibc_gcc.sh copied from file builders/dav1d-3262e3d0c89c83389e5bec32d7d81564077e2687/contrib/x86_64_linux_glibc_gcc.sh (similarity 99%) (mode: 100755) (index 4adce5a..b3eaa30)
... ... fi
73 73 #=============================================================================== #===============================================================================
74 74 # should be in sync with the code # should be in sync with the code
75 75 version_major=6 version_major=6
76 version_minor=4
76 version_minor=6
77 77 version_patch=0 version_patch=0
78 78 cp -f $src_dir/include/dav1d/version.h.in $build_dir/version.h cp -f $src_dir/include/dav1d/version.h.in $build_dir/version.h
79 79 sed -e "s:@DAV1D_API_VERSION_MAJOR@:$version_major:;\ sed -e "s:@DAV1D_API_VERSION_MAJOR@:$version_major:;\
 
... ... libdav1d_16bitdepth_x86_nasm_files="\
213 213 src/x86/mc16_avx512.asm \ src/x86/mc16_avx512.asm \
214 214 src/x86/looprestoration16_avx512.asm \ src/x86/looprestoration16_avx512.asm \
215 215 src/x86/ipred16_avx512.asm \ src/x86/ipred16_avx512.asm \
216 src/x86/filmgrain16_avx512.asm \
216 217 \ \
217 218 src/x86/cdef16_avx2.asm \ src/x86/cdef16_avx2.asm \
218 219 src/x86/filmgrain16_avx2.asm \ src/x86/filmgrain16_avx2.asm \
File builders/elfutils-0.186/builder.sh added (mode: 100644) (index 0000000..e89e97e)
1 src_name=elfutils
2 version=${pkg_name##*-}
3 slot=$version
4 archive_name=$src_name-$version.tar.bz2
5 url0=
6
7 # XXX: we are interested only in libelf
8 # In elfutils there is serious trash/sewer/
9 # corpo(microsoft?apple?google?ibm?etc?) grade code (wtf is that??)
10
11 pkg_dir=$pkgs_dir_root/$src_name-$version
12 rm -Rf $pkg_dir
13 mkdir -p $pkgs_dir_root
14 cp -f $src_dir_root/$archive_name $pkgs_dir_root
15 cd $pkgs_dir_root
16 tar xf $archive_name
17
18 #-------------------------------------------------------------------------------
19
20 cd $pkg_dir
21
22 # copy the canonical lean build scripts
23 cp -r $nyan_root/builders/$pkg_name/contrib .
24
25 #-------------------------------------------------------------------------------
26
27 build_dir=$builds_dir_root/$src_name-$version
28 rm -Rf $build_dir
29 mkdir -p $build_dir
30 cd $build_dir
31
32 PATH_SAVED=$PATH
33 export PATH="\
34 /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin:\
35 $PATH\
36 "
37
38 target_gnu_triple=$(basename "$(ls -d /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin/*-gcc)")
39 target_gnu_triple=${target_gnu_triple%-gcc}
40
41 cat <<EOF >$build_dir/local_conf.sh
42 prefix=/nyan/$src_name/$slot
43 zlib_cppflags='-I/nyan/zlib/current/include'
44 slibcc='$target_gnu_triple-gcc \
45 -c \
46 -std=c99 -O2 -fPIC -pipe -static-libgcc -fvisibility=hidden \
47 -isystem /nyan/glibc/current/include \
48 -isystem /nyan/linux-headers/current/include'
49 ar='$target_gnu_triple-ar rcs'
50 EOF
51
52 #-------------------------------------------------------------------------------
53
54 $pkg_dir/contrib/libelf.sh
55 cp -r $build_dir/install_root/* /
56
57 #-------------------------------------------------------------------------------
58
59 export PATH=$PATH_SAVED
60 unset PATH_SAVED
61 unset target_gnu_triple
62 rm -f $pkgs_dir_root/$archive_name
63 rm -Rf $build_dir $pkg_dir
File builders/elfutils-0.186/contrib/libelf.sh added (mode: 100755) (index 0000000..be55523)
1 #!/bin/sh
2
3 # Look for "unset", you'll find the values you can override in $1 or
4 # $build_dir/local_conf.sh file, that in order to tune the script for your
5 # specific distro/needs.
6
7 # Usage, drop the script at the top of source tree, create somewhere else
8 # a build directory, cd into it, and call from there this script.
9 #===============================================================================
10 # build dir and src dir
11 build_dir=$(readlink -f .)
12 echo "build_dir=$build_dir"
13 # we are in contrib
14 src_dir=$(readlink -f $(dirname $0)/..)
15 echo "src_dir=$src_dir"
16 #===============================================================================
17 # the current configur-able variables may be individually overridden with the
18 # content of the file in $1 or $build_dir/local_conf.sh. Look for "unset"
19 # in those scripts to find what you can override to tune the build.
20 if test -f "$1"; then
21 . "$1"
22 else
23 if test -f $build_dir/local_conf.sh; then
24 . $build_dir/local_conf.sh
25 fi
26 fi
27 #===============================================================================
28 if test "${slibcc-unset}" = unset; then
29 slibcc='cc -c'
30 fi
31
32 if test "${ar-unset}" = unset; then
33 ar='ar rcs'
34 fi
35 #===============================================================================
36 if test "${prefix-unset}" = unset; then
37 prefix=/usr
38 fi
39 #===============================================================================
40 if test "${zlib_cppflags-unset}" = unset; then
41 zlib_cppflags='-I/usr/include'
42 fi
43 #===============================================================================
44 # config.h
45 printf '#include <eu-config.h>\n' >$build_dir/config.h
46 #===============================================================================
47 # libelf
48 libelf_src_files="\
49 elf_version.c \
50 elf_hash.c \
51 elf_error.c \
52 elf_fill.c \
53 elf_begin.c \
54 elf_next.c \
55 elf_rand.c \
56 elf_end.c \
57 elf_kind.c \
58 gelf_getclass.c \
59 elf_getbase.c \
60 elf_getident.c \
61 elf32_fsize.c \
62 elf64_fsize.c \
63 gelf_fsize.c \
64 elf32_xlatetof.c \
65 elf32_xlatetom.c \
66 elf64_xlatetof.c \
67 elf64_xlatetom.c \
68 gelf_xlate.c \
69 elf32_getehdr.c \
70 elf64_getehdr.c \
71 gelf_getehdr.c \
72 elf32_newehdr.c \
73 elf64_newehdr.c \
74 gelf_newehdr.c \
75 gelf_update_ehdr.c \
76 elf32_getphdr.c \
77 elf64_getphdr.c \
78 gelf_getphdr.c \
79 elf32_newphdr.c \
80 elf64_newphdr.c \
81 gelf_newphdr.c \
82 gelf_update_phdr.c \
83 elf_getarhdr.c \
84 elf_getarsym.c \
85 elf_rawfile.c \
86 elf_readall.c \
87 elf_cntl.c \
88 elf_getscn.c \
89 elf_nextscn.c \
90 elf_ndxscn.c \
91 elf_newscn.c \
92 elf32_getshdr.c \
93 elf64_getshdr.c \
94 gelf_getshdr.c \
95 gelf_update_shdr.c \
96 elf_strptr.c \
97 elf_rawdata.c \
98 elf_getdata.c \
99 elf_newdata.c \
100 elf_getdata_rawchunk.c \
101 elf_flagelf.c \
102 elf_flagehdr.c \
103 elf_flagphdr.c \
104 elf_flagscn.c \
105 elf_flagshdr.c \
106 elf_flagdata.c \
107 elf_memory.c \
108 elf_update.c \
109 elf32_updatenull.c \
110 elf64_updatenull.c \
111 elf32_updatefile.c \
112 elf64_updatefile.c \
113 gelf_getsym.c \
114 gelf_update_sym.c \
115 gelf_getversym.c \
116 gelf_getverneed.c \
117 gelf_getvernaux.c \
118 gelf_getverdef.c \
119 gelf_getverdaux.c \
120 gelf_getrel.c \
121 gelf_getrela.c \
122 gelf_update_rel.c \
123 gelf_update_rela.c \
124 gelf_getdyn.c \
125 gelf_update_dyn.c \
126 gelf_getmove.c \
127 gelf_update_move.c \
128 gelf_getsyminfo.c \
129 gelf_update_syminfo.c \
130 gelf_getauxv.c \
131 gelf_update_auxv.c \
132 gelf_getnote.c \
133 gelf_xlatetof.c \
134 gelf_xlatetom.c \
135 nlist.c \
136 gelf_getsymshndx.c \
137 gelf_update_symshndx.c \
138 gelf_update_versym.c \
139 gelf_update_verneed.c \
140 gelf_update_vernaux.c \
141 gelf_update_verdef.c \
142 gelf_update_verdaux.c \
143 elf_getphdrnum.c \
144 elf_getshdrnum.c \
145 elf_getshdrstrndx.c \
146 gelf_checksum.c \
147 elf32_checksum.c \
148 elf64_checksum.c \
149 libelf_crc32.c \
150 libelf_next_prime.c \
151 elf_clone.c \
152 gelf_getlib.c \
153 gelf_update_lib.c \
154 elf32_offscn.c \
155 elf64_offscn.c \
156 gelf_offscn.c \
157 elf_getaroff.c \
158 elf_gnu_hash.c \
159 elf_scnshndx.c \
160 elf32_getchdr.c \
161 elf64_getchdr.c \
162 gelf_getchdr.c \
163 elf_compress.c \
164 elf_compress_gnu.c
165 "
166 GLIBC_CPPFLAGS="\
167 -DHAVE_ERROR_H \
168 -DHAVE_DECL_POWEROF2 \
169 -DHAVE_DECL_MEMPCPY \
170 -DHAVE_DECL_REALLOCARRAY \
171 "
172 CPPFLAGS="\
173 -I$build_dir \
174 -I$src_dir/lib \
175 -I$src_dir/libelf \
176 \
177 $GLIBC_CPPFLAGS \
178 \
179 -DHAVE_VISIBILITY \
180 -DPIC \
181 -DSHARED \
182 -D_GNU_SOURCE \
183 -DHAVE_CONFIG_H \
184 \
185 $zlib_cppflags \
186 "
187 for f in $libelf_src_files
188 do
189 libelf_obj=$build_dir/$(basename $f .c).o
190 libelf_a="$libelf_a $libelf_obj"
191 printf "SLIBCC $f\n"
192 $slibcc $CPPFLAGS $src_dir/libelf/$f -o $libelf_obj &
193 done
194 #===============================================================================
195 mkdir -p $build_dir/install_root/$prefix/include/libelf
196 cp \
197 $src_dir/libelf/libelf.h \
198 $src_dir/libelf/gelf.h \
199 $src_dir/libelf/nlist.h \
200 $build_dir/install_root/$prefix/include/libelf
201 #===============================================================================
202 mkdir -p $build_dir/install_root/$prefix/lib
203 wait
204 printf 'LIBELF AR\n'
205 $ar $build_dir/install_root/$prefix/lib/libelf.a $libelf_a
File builders/ffmpeg-a24e6ca8bf3f9b6c8ecf17eacc0ead17d7b5795b/builder.sh copied from file builders/ffmpeg-06a54a4ec73ea6eb8cec41b7af75367bafb075e0/builder.sh (similarity 100%)
File builders/linux-amd/all.patch deleted (index 6b2df28..0000000)
1 diff --git a/Makefile b/Makefile
2 index de1acaefe87e..db73791628e8 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -938,7 +938,8 @@ KBUILD_CFLAGS += -fno-stack-check
6 KBUILD_CFLAGS += $(call cc-option,-fconserve-stack)
7
8 # Prohibit date/time macros, which would make the build non-deterministic
9 -KBUILD_CFLAGS += -Werror=date-time
10 +# this option breaks C GCC
11 +#KBUILD_CFLAGS += -Werror=date-time
12
13 # enforce correct pointer usage
14 KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
15 diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
16 index fe605205b4ce..5a8d552ffba4 100644
17 --- a/arch/x86/boot/Makefile
18 +++ b/arch/x86/boot/Makefile
19 @@ -159,3 +159,206 @@ bzlilo:
20 install:
21 sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
22 System.map "$(INSTALL_PATH)"
23 +
24 +#-------------------------------------------------------------------------------
25 +# workaround brain damaged toolchain for gcc 4.7.4 -- START
26 +cgcc_cmd_cc_s_c = $(filter-out -m16,$(cmd_cc_s_c))
27 +cgcc_cmd_cc_s_c += -m32
28 +
29 +cmd_cgcc_cpp_s_S = $(filter-out -m16 -march=i386,$(cmd_cpp_s_S))
30 +
31 +$(obj)/a20.part.s:$(src)/a20.c
32 + $(cgcc_cmd_cc_s_c)
33 +$(obj)/a20.s:$(obj)/a20.part.s
34 + printf '.code16gcc\n' >$@
35 + cat $< >>$@
36 +$(obj)/a20.o:$(obj)/a20.s
37 + $(NYAN_AS) --32 -o $@ $<
38 +
39 +$(obj)/bioscall.part.s: $(src)/bioscall.S
40 + $(cmd_cgcc_cpp_s_S)
41 +$(obj)/bioscall.s:$(obj)/bioscall.part.s
42 + printf '.code16gcc\n' >$@
43 + cat $< >>$@
44 +$(obj)/bioscall.o: $(obj)/bioscall.s
45 + $(NYAN_AS) --32 -o $@ $<
46 +
47 +$(obj)/cmdline.part.s:$(src)/cmdline.c
48 + $(cgcc_cmd_cc_s_c)
49 +$(obj)/cmdline.s:$(obj)/cmdline.part.s
50 + printf '.code16gcc\n' >$@
51 + cat $< >>$@
52 +$(obj)/cmdline.o:$(obj)/cmdline.s
53 + $(NYAN_AS) --32 -o $@ $<
54 +
55 +$(obj)/copy.part.s:$(src)/copy.S
56 + $(cmd_cgcc_cpp_s_S)
57 +$(obj)/copy.s: $(obj)/copy.part.s
58 + printf '.code16gcc\n' >$@
59 + cat $< >>$@
60 +$(obj)/copy.o: $(obj)/copy.s
61 + $(NYAN_AS) --32 -o $@ $<
62 +# we need to move cpustr.h prereq from the rule above on cpu.o to our
63 +# cpu.part.s
64 +$(obj)/cpu.part.s:$(src)/cpu.c $(obj)/cpustr.h
65 + $(cgcc_cmd_cc_s_c)
66 +$(obj)/cpu.s:$(obj)/cpu.part.s
67 + printf '.code16gcc\n' >$@
68 + cat $< >>$@
69 +$(obj)/cpu.o:$(obj)/cpu.s
70 + $(NYAN_AS) --32 -o $@ $<
71 +
72 +$(obj)/cpuflags.part.s:$(src)/cpuflags.c
73 + $(cgcc_cmd_cc_s_c)
74 +$(obj)/cpuflags.s:$(obj)/cpuflags.part.s
75 + printf '.code16gcc\n' >$@
76 + cat $< >>$@
77 +$(obj)/cpuflags.o:$(obj)/cpuflags.s
78 + $(NYAN_AS) --32 -o $@ $<
79 +
80 +$(obj)/cpucheck.part.s:$(src)/cpucheck.c
81 + $(cgcc_cmd_cc_s_c)
82 +$(obj)/cpucheck.s:$(obj)/cpucheck.part.s
83 + printf '.code16gcc\n' >$@
84 + cat $< >>$@
85 +$(obj)/cpucheck.o:$(obj)/cpucheck.s
86 + $(NYAN_AS) --32 -o $@ $<
87 +
88 +$(obj)/early_serial_console.part.s:$(src)/early_serial_console.c
89 + $(cgcc_cmd_cc_s_c)
90 +$(obj)/early_serial_console.s:$(obj)/early_serial_console.part.s
91 + printf '.code16gcc\n' >$@
92 + cat $< >>$@
93 +$(obj)/early_serial_console.o:$(obj)/early_serial_console.s
94 + $(NYAN_AS) --32 -o $@ $<
95 +
96 +$(obj)/edd.part.s:$(src)/edd.c
97 + $(cgcc_cmd_cc_s_c)
98 +$(obj)/edd.s:$(obj)/edd.part.s
99 + printf '.code16gcc\n' >$@
100 + cat $< >>$@
101 +$(obj)/edd.o:$(obj)/edd.s
102 + $(NYAN_AS) --32 -o $@ $<
103 +# we need to move zoffset.h prereq from the rule above on header.o to our
104 +# header.part.s
105 +$(obj)/header.part.s:$(src)/header.S $(obj)/zoffset.h
106 + $(cmd_cgcc_cpp_s_S)
107 +$(obj)/header.s:$(obj)/header.part.s
108 + printf '.code16gcc\n' >$@
109 + cat $< >>$@
110 +$(obj)/header.o: $(obj)/header.s
111 + $(NYAN_AS) --32 -o $@ $<
112 +
113 +$(obj)/main.part.s:$(src)/main.c
114 + $(cgcc_cmd_cc_s_c)
115 +$(obj)/main.s:$(obj)/main.part.s
116 + printf '.code16gcc\n' >$@
117 + cat $< >>$@
118 +$(obj)/main.o:$(obj)/main.s
119 + $(NYAN_AS) --32 -o $@ $<
120 +
121 +$(obj)/memory.part.s:$(src)/memory.c
122 + $(cgcc_cmd_cc_s_c)
123 +$(obj)/memory.s:$(obj)/memory.part.s
124 + printf '.code16gcc\n' >$@
125 + cat $< >>$@
126 +$(obj)/memory.o:$(obj)/memory.s
127 + $(NYAN_AS) --32 -o $@ $<
128 +
129 +$(obj)/pm.part.s:$(src)/pm.c
130 + $(cgcc_cmd_cc_s_c)
131 +$(obj)/pm.s:$(obj)/pm.part.s
132 + printf '.code16gcc\n' >$@
133 + cat $< >>$@
134 +$(obj)/pm.o:$(obj)/pm.s
135 + $(NYAN_AS) --32 -o $@ $<
136 +
137 +$(obj)/pmjump.part.s: $(src)/pmjump.S
138 + $(cmd_cgcc_cpp_s_S)
139 +$(obj)/pmjump.s:$(obj)/pmjump.part.s
140 + printf '.code16gcc\n' >$@
141 + cat $< >>$@
142 +$(obj)/pmjump.o: $(obj)/pmjump.s
143 + $(NYAN_AS) --32 -o $@ $<
144 +
145 +$(obj)/printf.part.s:$(src)/printf.c
146 + $(cgcc_cmd_cc_s_c)
147 +$(obj)/printf.s:$(obj)/printf.part.s
148 + printf '.code16gcc\n' >$@
149 + cat $< >>$@
150 +$(obj)/printf.o:$(obj)/printf.s
151 + $(NYAN_AS) --32 -o $@ $<
152 +
153 +$(obj)/regs.part.s:$(src)/regs.c
154 + $(cgcc_cmd_cc_s_c)
155 +$(obj)/regs.s:$(obj)/regs.part.s
156 + printf '.code16gcc\n' >$@
157 + cat $< >>$@
158 +$(obj)/regs.o:$(obj)/regs.s
159 + $(NYAN_AS) --32 -o $@ $<
160 +
161 +$(obj)/string.part.s:$(src)/string.c
162 + $(cgcc_cmd_cc_s_c)
163 +$(obj)/string.s:$(obj)/string.part.s
164 + printf '.code16gcc\n' >$@
165 + cat $< >>$@
166 +$(obj)/string.o:$(obj)/string.s
167 + $(NYAN_AS) --32 -o $@ $<
168 +
169 +$(obj)/tty.part.s:$(src)/tty.c
170 + $(cgcc_cmd_cc_s_c)
171 +$(obj)/tty.s:$(obj)/tty.part.s
172 + printf '.code16gcc\n' >$@
173 + cat $< >>$@
174 +$(obj)/tty.o:$(obj)/tty.s
175 + $(NYAN_AS) --32 -o $@ $<
176 +
177 +$(obj)/video.part.s:$(src)/video.c
178 + $(cgcc_cmd_cc_s_c)
179 +$(obj)/video.s:$(obj)/video.part.s
180 + printf '.code16gcc\n' >$@
181 + cat $< >>$@
182 +$(obj)/video.o:$(obj)/video.s
183 + $(NYAN_AS) --32 -o $@ $<
184 +
185 +$(obj)/video-mode.part.s:$(src)/video-mode.c
186 + $(cgcc_cmd_cc_s_c)
187 +$(obj)/video-mode.s:$(obj)/video-mode.part.s
188 + printf '.code16gcc\n' >$@
189 + cat $< >>$@
190 +$(obj)/video-mode.o:$(obj)/video-mode.s
191 + $(NYAN_AS) --32 -o $@ $<
192 +
193 +$(obj)/version.part.s:$(src)/version.c
194 + $(cgcc_cmd_cc_s_c)
195 +$(obj)/version.s:$(obj)/version.part.s
196 + printf '.code16gcc\n' >$@
197 + cat $< >>$@
198 +$(obj)/version.o:$(obj)/version.s
199 + $(NYAN_AS) --32 -o $@ $<
200 +
201 +$(obj)/video-vga.part.s:$(src)/video-vga.c
202 + $(cgcc_cmd_cc_s_c)
203 +$(obj)/video-vga.s:$(obj)/video-vga.part.s
204 + printf '.code16gcc\n' >$@
205 + cat $< >>$@
206 +$(obj)/video-vga.o:$(obj)/video-vga.s
207 + $(NYAN_AS) --32 -o $@ $<
208 +
209 +$(obj)/video-vesa.part.s:$(src)/video-vesa.c
210 + $(cgcc_cmd_cc_s_c)
211 +$(obj)/video-vesa.s:$(obj)/video-vesa.part.s
212 + printf '.code16gcc\n' >$@
213 + cat $< >>$@
214 +$(obj)/video-vesa.o:$(obj)/video-vesa.s
215 + $(NYAN_AS) --32 -o $@ $<
216 +
217 +$(obj)/video-bios.part.s:$(src)/video-bios.c
218 + $(cgcc_cmd_cc_s_c)
219 +$(obj)/video-bios.s:$(obj)/video-bios.part.s
220 + printf '.code16gcc\n' >$@
221 + cat $< >>$@
222 +$(obj)/video-bios.o:$(obj)/video-bios.s
223 + $(NYAN_AS) --32 -o $@ $<
224 +# workaround brain damaged toolchain for gcc 4.7.4 -- END
225 +#-------------------------------------------------------------------------------
226 diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile
227 index 83f1b6a56449..6604c8aba741 100644
228 --- a/arch/x86/realmode/rm/Makefile
229 +++ b/arch/x86/realmode/rm/Makefile
230 @@ -69,6 +69,42 @@ targets += realmode.relocs
231 $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
232 $(call if_changed,relocs)
233
234 +# --------------------------------------------------------------------------
235 +# workaround brain damaged toolchain for gcc 4.7.4 -- START
236 +cmd_cgcc_cpp_s_S = $(filter-out -m16 -march=i386,$(cmd_cpp_s_S))
237 +
238 +$(obj)/header.part.s: $(src)/header.S
239 + $(cmd_cgcc_cpp_s_S)
240 +$(obj)/header.s: $(obj)/header.part.s FORCE
241 + printf '.code16gcc\n' >$@
242 + cat $< >>$@
243 +$(obj)/header.o: $(obj)/header.s
244 + $(NYAN_AS) --32 -o $@ $<
245 +
246 +$(obj)/trampoline_64.part.s: $(src)/trampoline_64.S
247 + $(cmd_cgcc_cpp_s_S)
248 +$(obj)/trampoline_64.s: $(obj)/trampoline_64.part.s FORCE
249 + printf '.code16gcc\n' >$@
250 + cat $< >>$@
251 +$(obj)/trampoline_64.o: $(obj)/trampoline_64.s
252 + $(NYAN_AS) --32 -o $@ $<
253 +
254 +$(obj)/stack.part.s: $(src)/stack.S
255 + $(cmd_cgcc_cpp_s_S)
256 +$(obj)/stack.s: $(obj)/stack.part.s FORCE
257 + printf '.code16gcc\n' >$@
258 + cat $< >>$@
259 +$(obj)/stack.o: $(obj)/stack.s
260 + $(NYAN_AS) --32 -o $@ $<
261 +
262 +$(obj)/reboot.part.s: $(src)/reboot.S
263 + $(cmd_cgcc_cpp_s_S)
264 +$(obj)/reboot.s: $(obj)/reboot.part.s FORCE
265 + printf '.code16gcc\n' >$@
266 + cat $< >>$@
267 +$(obj)/reboot.o: $(obj)/reboot.s
268 + $(NYAN_AS) --32 -o $@ $<
269 +# workaround brain damaged toolchain for gcc 4.7.4 -- END
270 # ---------------------------------------------------------------------------
271
272 KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
273 diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
274 index 8a94388e38b3..5ceaf13d164a 100644
275 --- a/drivers/firmware/efi/libstub/Makefile
276 +++ b/drivers/firmware/efi/libstub/Makefile
277 @@ -33,6 +33,7 @@ KBUILD_CFLAGS := $(cflags-y) -Os -DDISABLE_BRANCH_PROFILING \
278 -D__NO_FORTIFY \
279 -ffreestanding \
280 -fno-stack-protector \
281 + -maccumulate-outgoing-args \
282 $(call cc-option,-fno-addrsig) \
283 -D__DISABLE_EXPORTS
284
285 diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
286 index 0d78408b4e26..3901c8ba3d1b 100644
287 --- a/drivers/net/ethernet/realtek/r8169_main.c
288 +++ b/drivers/net/ethernet/realtek/r8169_main.c
289 @@ -1502,7 +1502,8 @@ static void rtl8169_rx_vlan_tag(struct RxDesc *desc, struct sk_buff *skb)
290 u32 opts2 = le32_to_cpu(desc->opts2);
291
292 if (opts2 & RxVlanTag)
293 - __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), swab16(opts2 & 0xffff));
294 + __vlan_hwaccel_put_tag(skb, HTONS(ETH_P_8021Q),
295 + swab16(opts2 & 0xffff));
296 }
297
298 static void rtl8169_get_regs(struct net_device *dev, struct ethtool_regs *regs,
299 @@ -4053,10 +4054,10 @@ static bool rtl_skb_is_udp(struct sk_buff *skb)
300 struct iphdr *ih, _ih;
301
302 switch (vlan_get_protocol(skb)) {
303 - case htons(ETH_P_IP):
304 + case HTONS(ETH_P_IP):
305 ih = skb_header_pointer(skb, no, sizeof(_ih), &_ih);
306 return ih && ih->protocol == IPPROTO_UDP;
307 - case htons(ETH_P_IPV6):
308 + case HTONS(ETH_P_IPV6):
309 i6h = skb_header_pointer(skb, no, sizeof(_i6h), &_i6h);
310 return i6h && i6h->nexthdr == IPPROTO_UDP;
311 default:
312 @@ -4159,12 +4160,12 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
313 u8 ip_protocol;
314
315 switch (vlan_get_protocol(skb)) {
316 - case htons(ETH_P_IP):
317 + case HTONS(ETH_P_IP):
318 opts[1] |= TD1_IPv4_CS;
319 ip_protocol = ip_hdr(skb)->protocol;
320 break;
321
322 - case htons(ETH_P_IPV6):
323 + case HTONS(ETH_P_IPV6):
324 opts[1] |= TD1_IPv6_CS;
325 ip_protocol = ipv6_hdr(skb)->nexthdr;
326 break;
327 @@ -4329,7 +4330,7 @@ static netdev_features_t rtl8168evl_fix_tso(struct sk_buff *skb,
328 netdev_features_t features)
329 {
330 /* IPv4 header has options field */
331 - if (vlan_get_protocol(skb) == htons(ETH_P_IP) &&
332 + if (vlan_get_protocol(skb) == HTONS(ETH_P_IP) &&
333 ip_hdrlen(skb) > sizeof(struct iphdr))
334 features &= ~NETIF_F_ALL_TSO;
335
336 diff --git a/include/linux/bits.h b/include/linux/bits.h
337 index 7f475d59a097..34a66351a68a 100644
338 --- a/include/linux/bits.h
339 +++ b/include/linux/bits.h
340 @@ -17,8 +17,10 @@
341 * Create a contiguous bitmask starting at bit position @l and ending at
342 * position @h. For example
343 * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000.
344 + *
345 + * C GCC has a more constraint support for those builtins
346 */
347 -#if !defined(__ASSEMBLY__)
348 +#if !defined(__ASSEMBLY__) && !defined(GCC_C)
349 #include <linux/build_bug.h>
350 #define GENMASK_INPUT_CHECK(h, l) \
351 (BUILD_BUG_ON_ZERO(__builtin_choose_expr( \
352 diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
353 index 5d97ef738a57..946818c94c4e 100644
354 --- a/include/linux/compiler-gcc.h
355 +++ b/include/linux/compiler-gcc.h
356 @@ -10,6 +10,17 @@
357 + __GNUC_MINOR__ * 100 \
358 + __GNUC_PATCHLEVEL__)
359
360 +/* help prevent planned obsolescence due to the use of recent c11 _Generic */
361 +#if GCC_VERSION >= 40900
362 +#define __generic(expr, t, yes, no) \
363 + _Generic(expr, t: yes, default: no)
364 +#elif GCC_VERSION >= 30100
365 +#define __generic(expr, t, yes, no) \
366 + __builtin_choose_expr( \
367 + __builtin_types_compatible_p(__typeof(expr), t), yes, no)
368 +#else
369 +# error your gcc compiler cannot support the __generic macro
370 +#endif
371 /*
372 * This macro obfuscates arithmetic on a variable address so that gcc
373 * shouldn't recognize the original var, and make assumptions about it.
374 diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
375 index e5dd5a4ae946..c115ed89ab82 100644
376 --- a/include/linux/compiler_types.h
377 +++ b/include/linux/compiler_types.h
378 @@ -259,23 +259,19 @@ struct ftrace_likely_data {
379 * __unqual_scalar_typeof(x) - Declare an unqualified scalar type, leaving
380 * non-scalar types unchanged.
381 */
382 -/*
383 - * Prefer C11 _Generic for better compile-times and simpler code. Note: 'char'
384 - * is not type-compatible with 'signed char', and we define a separate case.
385 - */
386 -#define __scalar_type_to_expr_cases(type) \
387 - unsigned type: (unsigned type)0, \
388 - signed type: (signed type)0
389 -
390 #define __unqual_scalar_typeof(x) typeof( \
391 - _Generic((x), \
392 - char: (char)0, \
393 - __scalar_type_to_expr_cases(char), \
394 - __scalar_type_to_expr_cases(short), \
395 - __scalar_type_to_expr_cases(int), \
396 - __scalar_type_to_expr_cases(long), \
397 - __scalar_type_to_expr_cases(long long), \
398 - default: (x)))
399 + __generic((x), char, (char)0, \
400 + __generic((x), unsigned char, (unsigned char)0, \
401 + __generic((x), signed char, (unsigned char)0, \
402 + __generic((x), unsigned short, (unsigned short)0, \
403 + __generic((x), signed short, (signed short)0, \
404 + __generic((x), unsigned int, (unsigned int)0, \
405 + __generic((x), signed int, (signed int)0, \
406 + __generic((x), unsigned long, (unsigned long)0, \
407 + __generic((x), signed long, (signed long)0, \
408 + __generic((x), unsigned long long, (unsigned long long)0, \
409 + __generic((x), signed long long, (signed long long)0, \
410 + (x)))))))))))))
411
412 /* Is this type a native word size -- useful for atomic operations */
413 #define __native_word(t) \
414 diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
415 index 2e5debc0373c..59bee289ac09 100644
416 --- a/include/linux/etherdevice.h
417 +++ b/include/linux/etherdevice.h
418 @@ -77,7 +77,7 @@ static inline bool is_link_local_ether_addr(const u8 *addr)
419 {
420 __be16 *a = (__be16 *)addr;
421 static const __be16 *b = (const __be16 *)eth_reserved_addr_base;
422 - static const __be16 m = cpu_to_be16(0xfff0);
423 + static const __be16 m = CPU_TO_BE16(0xfff0);
424
425 #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
426 return (((*(const u32 *)addr) ^ (*(const u32 *)b)) |
427 @@ -210,7 +210,8 @@ static inline bool eth_proto_is_802_3(__be16 proto)
428 proto &= htons(0xFF00);
429 #endif
430 /* cast both to u16 and compare since LSB can be ignored */
431 - return (__force u16)proto >= (__force u16)htons(ETH_P_802_3_MIN);
432 + return (__force u16)proto
433 + >= (__force u16)HTONS(ETH_P_802_3_MIN);
434 }
435
436 /**
437 diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
438 index 41a518336673..0bb1320ca828 100644
439 --- a/include/linux/if_vlan.h
440 +++ b/include/linux/if_vlan.h
441 @@ -302,8 +302,8 @@ static inline bool vlan_uses_dev(const struct net_device *dev)
442 static inline bool eth_type_vlan(__be16 ethertype)
443 {
444 switch (ethertype) {
445 - case htons(ETH_P_8021Q):
446 - case htons(ETH_P_8021AD):
447 + case HTONS(ETH_P_8021Q):
448 + case HTONS(ETH_P_8021AD):
449 return true;
450 default:
451 return false;
452 @@ -313,9 +313,11 @@ static inline bool eth_type_vlan(__be16 ethertype)
453 static inline bool vlan_hw_offload_capable(netdev_features_t features,
454 __be16 proto)
455 {
456 - if (proto == htons(ETH_P_8021Q) && features & NETIF_F_HW_VLAN_CTAG_TX)
457 + if (proto == HTONS(ETH_P_8021Q)
458 + && features & NETIF_F_HW_VLAN_CTAG_TX)
459 return true;
460 - if (proto == htons(ETH_P_8021AD) && features & NETIF_F_HW_VLAN_STAG_TX)
461 + if (proto == HTONS(ETH_P_8021AD)
462 + && features & NETIF_F_HW_VLAN_STAG_TX)
463 return true;
464 return false;
465 }
466 @@ -666,12 +668,12 @@ static inline void vlan_set_encap_proto(struct sk_buff *skb,
467 * 802.2 SSAP/DSAP. This won't work for fault tolerant netware
468 * but does for the rest.
469 */
470 - skb->protocol = htons(ETH_P_802_3);
471 + skb->protocol = HTONS(ETH_P_802_3);
472 else
473 /*
474 * Real 802.2 LLC
475 */
476 - skb->protocol = htons(ETH_P_802_2);
477 + skb->protocol = HTONS(ETH_P_802_2);
478 }
479
480 /**
481 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
482 index 5ff27c12ce68..8f66b9b7ae65 100644
483 --- a/include/linux/netdevice.h
484 +++ b/include/linux/netdevice.h
485 @@ -4732,7 +4732,7 @@ __be16 skb_network_protocol(struct sk_buff *skb, int *depth);
486 static inline bool can_checksum_protocol(netdev_features_t features,
487 __be16 protocol)
488 {
489 - if (protocol == htons(ETH_P_FCOE))
490 + if (protocol == HTONS(ETH_P_FCOE))
491 return !!(features & NETIF_F_FCOE_CRC);
492
493 /* Assume this is an IP checksum (not SCTP CRC) */
494 @@ -4743,9 +4743,9 @@ static inline bool can_checksum_protocol(netdev_features_t features,
495 }
496
497 switch (protocol) {
498 - case htons(ETH_P_IP):
499 + case HTONS(ETH_P_IP):
500 return !!(features & NETIF_F_IP_CSUM);
501 - case htons(ETH_P_IPV6):
502 + case HTONS(ETH_P_IPV6):
503 return !!(features & NETIF_F_IPV6_CSUM);
504 default:
505 return false;
506 diff --git a/include/linux/sctp.h b/include/linux/sctp.h
507 index bb1926589693..a448cd89a503 100644
508 --- a/include/linux/sctp.h
509 +++ b/include/linux/sctp.h
510 @@ -159,43 +159,43 @@ struct sctp_paramhdr {
511 enum sctp_param {
512
513 /* RFC 2960 Section 3.3.5 */
514 - SCTP_PARAM_HEARTBEAT_INFO = cpu_to_be16(1),
515 + SCTP_PARAM_HEARTBEAT_INFO = CPU_TO_BE16(1),
516 /* RFC 2960 Section 3.3.2.1 */
517 - SCTP_PARAM_IPV4_ADDRESS = cpu_to_be16(5),
518 - SCTP_PARAM_IPV6_ADDRESS = cpu_to_be16(6),
519 - SCTP_PARAM_STATE_COOKIE = cpu_to_be16(7),
520 - SCTP_PARAM_UNRECOGNIZED_PARAMETERS = cpu_to_be16(8),
521 - SCTP_PARAM_COOKIE_PRESERVATIVE = cpu_to_be16(9),
522 - SCTP_PARAM_HOST_NAME_ADDRESS = cpu_to_be16(11),
523 - SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = cpu_to_be16(12),
524 - SCTP_PARAM_ECN_CAPABLE = cpu_to_be16(0x8000),
525 + SCTP_PARAM_IPV4_ADDRESS = CPU_TO_BE16(5),
526 + SCTP_PARAM_IPV6_ADDRESS = CPU_TO_BE16(6),
527 + SCTP_PARAM_STATE_COOKIE = CPU_TO_BE16(7),
528 + SCTP_PARAM_UNRECOGNIZED_PARAMETERS = CPU_TO_BE16(8),
529 + SCTP_PARAM_COOKIE_PRESERVATIVE = CPU_TO_BE16(9),
530 + SCTP_PARAM_HOST_NAME_ADDRESS = CPU_TO_BE16(11),
531 + SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = CPU_TO_BE16(12),
532 + SCTP_PARAM_ECN_CAPABLE = CPU_TO_BE16(0x8000),
533
534 /* AUTH Extension Section 3 */
535 - SCTP_PARAM_RANDOM = cpu_to_be16(0x8002),
536 - SCTP_PARAM_CHUNKS = cpu_to_be16(0x8003),
537 - SCTP_PARAM_HMAC_ALGO = cpu_to_be16(0x8004),
538 + SCTP_PARAM_RANDOM = CPU_TO_BE16(0x8002),
539 + SCTP_PARAM_CHUNKS = CPU_TO_BE16(0x8003),
540 + SCTP_PARAM_HMAC_ALGO = CPU_TO_BE16(0x8004),
541
542 /* Add-IP: Supported Extensions, Section 4.2 */
543 - SCTP_PARAM_SUPPORTED_EXT = cpu_to_be16(0x8008),
544 + SCTP_PARAM_SUPPORTED_EXT = CPU_TO_BE16(0x8008),
545
546 /* PR-SCTP Sec 3.1 */
547 - SCTP_PARAM_FWD_TSN_SUPPORT = cpu_to_be16(0xc000),
548 + SCTP_PARAM_FWD_TSN_SUPPORT = CPU_TO_BE16(0xc000),
549
550 /* Add-IP Extension. Section 3.2 */
551 - SCTP_PARAM_ADD_IP = cpu_to_be16(0xc001),
552 - SCTP_PARAM_DEL_IP = cpu_to_be16(0xc002),
553 - SCTP_PARAM_ERR_CAUSE = cpu_to_be16(0xc003),
554 - SCTP_PARAM_SET_PRIMARY = cpu_to_be16(0xc004),
555 - SCTP_PARAM_SUCCESS_REPORT = cpu_to_be16(0xc005),
556 - SCTP_PARAM_ADAPTATION_LAYER_IND = cpu_to_be16(0xc006),
557 + SCTP_PARAM_ADD_IP = CPU_TO_BE16(0xc001),
558 + SCTP_PARAM_DEL_IP = CPU_TO_BE16(0xc002),
559 + SCTP_PARAM_ERR_CAUSE = CPU_TO_BE16(0xc003),
560 + SCTP_PARAM_SET_PRIMARY = CPU_TO_BE16(0xc004),
561 + SCTP_PARAM_SUCCESS_REPORT = CPU_TO_BE16(0xc005),
562 + SCTP_PARAM_ADAPTATION_LAYER_IND = CPU_TO_BE16(0xc006),
563
564 /* RE-CONFIG. Section 4 */
565 - SCTP_PARAM_RESET_OUT_REQUEST = cpu_to_be16(0x000d),
566 - SCTP_PARAM_RESET_IN_REQUEST = cpu_to_be16(0x000e),
567 - SCTP_PARAM_RESET_TSN_REQUEST = cpu_to_be16(0x000f),
568 - SCTP_PARAM_RESET_RESPONSE = cpu_to_be16(0x0010),
569 - SCTP_PARAM_RESET_ADD_OUT_STREAMS = cpu_to_be16(0x0011),
570 - SCTP_PARAM_RESET_ADD_IN_STREAMS = cpu_to_be16(0x0012),
571 + SCTP_PARAM_RESET_OUT_REQUEST = CPU_TO_BE16(0x000d),
572 + SCTP_PARAM_RESET_IN_REQUEST = CPU_TO_BE16(0x000e),
573 + SCTP_PARAM_RESET_TSN_REQUEST = CPU_TO_BE16(0x000f),
574 + SCTP_PARAM_RESET_RESPONSE = CPU_TO_BE16(0x0010),
575 + SCTP_PARAM_RESET_ADD_OUT_STREAMS = CPU_TO_BE16(0x0011),
576 + SCTP_PARAM_RESET_ADD_IN_STREAMS = CPU_TO_BE16(0x0012),
577 }; /* enum */
578
579
580 @@ -206,13 +206,13 @@ enum sctp_param {
581 *
582 */
583 enum {
584 - SCTP_PARAM_ACTION_DISCARD = cpu_to_be16(0x0000),
585 - SCTP_PARAM_ACTION_DISCARD_ERR = cpu_to_be16(0x4000),
586 - SCTP_PARAM_ACTION_SKIP = cpu_to_be16(0x8000),
587 - SCTP_PARAM_ACTION_SKIP_ERR = cpu_to_be16(0xc000),
588 + SCTP_PARAM_ACTION_DISCARD = CPU_TO_BE16(0x0000),
589 + SCTP_PARAM_ACTION_DISCARD_ERR = CPU_TO_BE16(0x4000),
590 + SCTP_PARAM_ACTION_SKIP = CPU_TO_BE16(0x8000),
591 + SCTP_PARAM_ACTION_SKIP_ERR = CPU_TO_BE16(0xc000),
592 };
593
594 -enum { SCTP_PARAM_ACTION_MASK = cpu_to_be16(0xc000), };
595 +enum { SCTP_PARAM_ACTION_MASK = CPU_TO_BE16(0xc000), };
596
597 /* RFC 2960 Section 3.3.1 Payload Data (DATA) (0) */
598
599 @@ -465,17 +465,17 @@ struct sctp_operr_chunk {
600 */
601 enum sctp_error {
602
603 - SCTP_ERROR_NO_ERROR = cpu_to_be16(0x00),
604 - SCTP_ERROR_INV_STRM = cpu_to_be16(0x01),
605 - SCTP_ERROR_MISS_PARAM = cpu_to_be16(0x02),
606 - SCTP_ERROR_STALE_COOKIE = cpu_to_be16(0x03),
607 - SCTP_ERROR_NO_RESOURCE = cpu_to_be16(0x04),
608 - SCTP_ERROR_DNS_FAILED = cpu_to_be16(0x05),
609 - SCTP_ERROR_UNKNOWN_CHUNK = cpu_to_be16(0x06),
610 - SCTP_ERROR_INV_PARAM = cpu_to_be16(0x07),
611 - SCTP_ERROR_UNKNOWN_PARAM = cpu_to_be16(0x08),
612 - SCTP_ERROR_NO_DATA = cpu_to_be16(0x09),
613 - SCTP_ERROR_COOKIE_IN_SHUTDOWN = cpu_to_be16(0x0a),
614 + SCTP_ERROR_NO_ERROR = CPU_TO_BE16(0x00),
615 + SCTP_ERROR_INV_STRM = CPU_TO_BE16(0x01),
616 + SCTP_ERROR_MISS_PARAM = CPU_TO_BE16(0x02),
617 + SCTP_ERROR_STALE_COOKIE = CPU_TO_BE16(0x03),
618 + SCTP_ERROR_NO_RESOURCE = CPU_TO_BE16(0x04),
619 + SCTP_ERROR_DNS_FAILED = CPU_TO_BE16(0x05),
620 + SCTP_ERROR_UNKNOWN_CHUNK = CPU_TO_BE16(0x06),
621 + SCTP_ERROR_INV_PARAM = CPU_TO_BE16(0x07),
622 + SCTP_ERROR_UNKNOWN_PARAM = CPU_TO_BE16(0x08),
623 + SCTP_ERROR_NO_DATA = CPU_TO_BE16(0x09),
624 + SCTP_ERROR_COOKIE_IN_SHUTDOWN = CPU_TO_BE16(0x0a),
625
626
627 /* SCTP Implementation Guide:
628 @@ -485,10 +485,10 @@ enum sctp_error {
629 * 14 Restart of an Association with New Encapsulation Port
630 */
631
632 - SCTP_ERROR_RESTART = cpu_to_be16(0x0b),
633 - SCTP_ERROR_USER_ABORT = cpu_to_be16(0x0c),
634 - SCTP_ERROR_PROTO_VIOLATION = cpu_to_be16(0x0d),
635 - SCTP_ERROR_NEW_ENCAP_PORT = cpu_to_be16(0x0e),
636 + SCTP_ERROR_RESTART = CPU_TO_BE16(0x0b),
637 + SCTP_ERROR_USER_ABORT = CPU_TO_BE16(0x0c),
638 + SCTP_ERROR_PROTO_VIOLATION = CPU_TO_BE16(0x0d),
639 + SCTP_ERROR_NEW_ENCAP_PORT = CPU_TO_BE16(0x0e),
640
641 /* ADDIP Section 3.3 New Error Causes
642 *
643 @@ -503,11 +503,11 @@ enum sctp_error {
644 * 0x00A3 Association Aborted due to illegal ASCONF-ACK
645 * 0x00A4 Request refused - no authorization.
646 */
647 - SCTP_ERROR_DEL_LAST_IP = cpu_to_be16(0x00A0),
648 - SCTP_ERROR_RSRC_LOW = cpu_to_be16(0x00A1),
649 - SCTP_ERROR_DEL_SRC_IP = cpu_to_be16(0x00A2),
650 - SCTP_ERROR_ASCONF_ACK = cpu_to_be16(0x00A3),
651 - SCTP_ERROR_REQ_REFUSED = cpu_to_be16(0x00A4),
652 + SCTP_ERROR_DEL_LAST_IP = CPU_TO_BE16(0x00A0),
653 + SCTP_ERROR_RSRC_LOW = CPU_TO_BE16(0x00A1),
654 + SCTP_ERROR_DEL_SRC_IP = CPU_TO_BE16(0x00A2),
655 + SCTP_ERROR_ASCONF_ACK = CPU_TO_BE16(0x00A3),
656 + SCTP_ERROR_REQ_REFUSED = CPU_TO_BE16(0x00A4),
657
658 /* AUTH Section 4. New Error Cause
659 *
660 @@ -519,7 +519,7 @@ enum sctp_error {
661 * --------------------------------------------------------------
662 * 0x0105 Unsupported HMAC Identifier
663 */
664 - SCTP_ERROR_UNSUP_HMAC = cpu_to_be16(0x0105)
665 + SCTP_ERROR_UNSUP_HMAC = CPU_TO_BE16(0x0105)
666 };
667
668
669 diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
670 index 2f7bb92b4c9e..74925c6a88f0 100644
671 --- a/include/linux/seqlock.h
672 +++ b/include/linux/seqlock.h
673 @@ -296,16 +296,19 @@ SEQCOUNT_LOCKNAME(ww_mutex, struct ww_mutex, true, &s->lock->base, ww_mu
674 #define SEQCNT_MUTEX_ZERO(name, lock) SEQCOUNT_LOCKNAME_ZERO(name, lock)
675 #define SEQCNT_WW_MUTEX_ZERO(name, lock) SEQCOUNT_LOCKNAME_ZERO(name, lock)
676
677 -#define __seqprop_case(s, lockname, prop) \
678 - seqcount_##lockname##_t: __seqprop_##lockname##_##prop((void *)(s))
679 -
680 -#define __seqprop(s, prop) _Generic(*(s), \
681 - seqcount_t: __seqprop_##prop((void *)(s)), \
682 - __seqprop_case((s), raw_spinlock, prop), \
683 - __seqprop_case((s), spinlock, prop), \
684 - __seqprop_case((s), rwlock, prop), \
685 - __seqprop_case((s), mutex, prop), \
686 - __seqprop_case((s), ww_mutex, prop))
687 +#define __seqprop(s, prop) \
688 + __generic(*(s), seqcount_t, __seqprop_##prop((void *)(s)), \
689 + __generic(*(s), seqcount_raw_spinlock_t, \
690 + __seqprop_raw_spinlock_##prop((void *)(s)), \
691 + __generic(*(s), seqcount_spinlock_t, \
692 + __seqprop_spinlock_##prop((void *)(s)), \
693 + __generic(*(s), seqcount_rwlock_t, \
694 + __seqprop_rwlock_##prop((void *)(s)), \
695 + __generic(*(s), seqcount_mutex_t, \
696 + __seqprop_mutex_##prop((void *)(s)), \
697 + __generic(*(s), seqcount_ww_mutex_t, \
698 + __seqprop_ww_mutex_##prop((void *)(s)), \
699 + panic("seqlock:__seqprop:unsupported type")))))))
700
701 #define seqprop_ptr(s) __seqprop(s, ptr)
702 #define seqprop_sequence(s) __seqprop(s, sequence)
703 diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h
704 index ba77f47ef61e..01b3cba4152d 100644
705 --- a/include/net/inet_ecn.h
706 +++ b/include/net/inet_ecn.h
707 @@ -172,13 +172,13 @@ static inline void ipv6_copy_dscp(unsigned int dscp, struct ipv6hdr *inner)
708 static inline int INET_ECN_set_ce(struct sk_buff *skb)
709 {
710 switch (skb_protocol(skb, true)) {
711 - case cpu_to_be16(ETH_P_IP):
712 + case CPU_TO_BE16(ETH_P_IP):
713 if (skb_network_header(skb) + sizeof(struct iphdr) <=
714 skb_tail_pointer(skb))
715 return IP_ECN_set_ce(ip_hdr(skb));
716 break;
717
718 - case cpu_to_be16(ETH_P_IPV6):
719 + case CPU_TO_BE16(ETH_P_IPV6):
720 if (skb_network_header(skb) + sizeof(struct ipv6hdr) <=
721 skb_tail_pointer(skb))
722 return IP6_ECN_set_ce(skb, ipv6_hdr(skb));
723 @@ -191,13 +191,13 @@ static inline int INET_ECN_set_ce(struct sk_buff *skb)
724 static inline int INET_ECN_set_ect1(struct sk_buff *skb)
725 {
726 switch (skb_protocol(skb, true)) {
727 - case cpu_to_be16(ETH_P_IP):
728 + case CPU_TO_BE16(ETH_P_IP):
729 if (skb_network_header(skb) + sizeof(struct iphdr) <=
730 skb_tail_pointer(skb))
731 return IP_ECN_set_ect1(ip_hdr(skb));
732 break;
733
734 - case cpu_to_be16(ETH_P_IPV6):
735 + case CPU_TO_BE16(ETH_P_IPV6):
736 if (skb_network_header(skb) + sizeof(struct ipv6hdr) <=
737 skb_tail_pointer(skb))
738 return IP6_ECN_set_ect1(skb, ipv6_hdr(skb));
739 @@ -272,10 +272,10 @@ static inline int IP_ECN_decapsulate(const struct iphdr *oiph,
740 __u8 inner;
741
742 switch (skb_protocol(skb, true)) {
743 - case htons(ETH_P_IP):
744 + case HTONS(ETH_P_IP):
745 inner = ip_hdr(skb)->tos;
746 break;
747 - case htons(ETH_P_IPV6):
748 + case HTONS(ETH_P_IPV6):
749 inner = ipv6_get_dsfield(ipv6_hdr(skb));
750 break;
751 default:
752 @@ -291,10 +291,10 @@ static inline int IP6_ECN_decapsulate(const struct ipv6hdr *oipv6h,
753 __u8 inner;
754
755 switch (skb_protocol(skb, true)) {
756 - case htons(ETH_P_IP):
757 + case HTONS(ETH_P_IP):
758 inner = ip_hdr(skb)->tos;
759 break;
760 - case htons(ETH_P_IPV6):
761 + case HTONS(ETH_P_IPV6):
762 inner = ipv6_get_dsfield(ipv6_hdr(skb));
763 break;
764 default:
765 diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
766 index 548b65bd3973..6744709d8a81 100644
767 --- a/include/net/ip_tunnels.h
768 +++ b/include/net/ip_tunnels.h
769 @@ -317,11 +317,11 @@ static inline bool pskb_inet_may_pull(struct sk_buff *skb)
770
771 switch (skb->protocol) {
772 #if IS_ENABLED(CONFIG_IPV6)
773 - case htons(ETH_P_IPV6):
774 + case HTONS(ETH_P_IPV6):
775 nhlen = sizeof(struct ipv6hdr);
776 break;
777 #endif
778 - case htons(ETH_P_IP):
779 + case HTONS(ETH_P_IP):
780 nhlen = sizeof(struct iphdr);
781 break;
782 default:
783 diff --git a/include/net/vxlan.h b/include/net/vxlan.h
784 index 08537aa14f7c..4d3a279508b1 100644
785 --- a/include/net/vxlan.h
786 +++ b/include/net/vxlan.h
787 @@ -26,11 +26,11 @@ struct vxlanhdr {
788 };
789
790 /* VXLAN header flags. */
791 -#define VXLAN_HF_VNI cpu_to_be32(BIT(27))
792 +#define VXLAN_HF_VNI __constant_cpu_to_be32(BIT(27))
793
794 #define VXLAN_N_VID (1u << 24)
795 #define VXLAN_VID_MASK (VXLAN_N_VID - 1)
796 -#define VXLAN_VNI_MASK cpu_to_be32(VXLAN_VID_MASK << 8)
797 +#define VXLAN_VNI_MASK __constant_cpu_to_be32(VXLAN_VID_MASK << 8)
798 #define VXLAN_HLEN (sizeof(struct udphdr) + sizeof(struct vxlanhdr))
799
800 #define VNI_HASH_BITS 10
801 @@ -57,11 +57,11 @@ struct vxlanhdr {
802 */
803
804 /* VXLAN-RCO header flags. */
805 -#define VXLAN_HF_RCO cpu_to_be32(BIT(21))
806 +#define VXLAN_HF_RCO __constant_cpu_to_be32(BIT(21))
807
808 /* Remote checksum offload header option */
809 -#define VXLAN_RCO_MASK cpu_to_be32(0x7f) /* Last byte of vni field */
810 -#define VXLAN_RCO_UDP cpu_to_be32(0x80) /* Indicate UDP RCO (TCP when not set *) */
811 +#define VXLAN_RCO_MASK __constant_cpu_to_be32(0x7f) /* Last byte of vni field */
812 +#define VXLAN_RCO_UDP __constant_cpu_to_be32(0x80) /* Indicate UDP RCO (TCP when not set *) */
813 #define VXLAN_RCO_SHIFT 1 /* Left shift of start */
814 #define VXLAN_RCO_SHIFT_MASK ((1 << VXLAN_RCO_SHIFT) - 1)
815 #define VXLAN_MAX_REMCSUM_START (0x7f << VXLAN_RCO_SHIFT)
816 @@ -107,9 +107,9 @@ struct vxlanhdr_gbp {
817 };
818
819 /* VXLAN-GBP header flags. */
820 -#define VXLAN_HF_GBP cpu_to_be32(BIT(31))
821 +#define VXLAN_HF_GBP __constant_cpu_to_be32(BIT(31))
822
823 -#define VXLAN_GBP_USED_BITS (VXLAN_HF_GBP | cpu_to_be32(0xFFFFFF))
824 +#define VXLAN_GBP_USED_BITS (VXLAN_HF_GBP | __constant_cpu_to_be32(0xFFFFFF))
825
826 /* skb->mark mapping
827 *
828 @@ -169,12 +169,12 @@ struct vxlanhdr_gpe {
829 };
830
831 /* VXLAN-GPE header flags. */
832 -#define VXLAN_HF_VER cpu_to_be32(BIT(29) | BIT(28))
833 -#define VXLAN_HF_NP cpu_to_be32(BIT(26))
834 -#define VXLAN_HF_OAM cpu_to_be32(BIT(24))
835 +#define VXLAN_HF_VER __constant_cpu_to_be32(BIT(29) | BIT(28))
836 +#define VXLAN_HF_NP __constant_cpu_to_be32(BIT(26))
837 +#define VXLAN_HF_OAM __constant_cpu_to_be32(BIT(24))
838
839 #define VXLAN_GPE_USED_BITS (VXLAN_HF_VER | VXLAN_HF_NP | VXLAN_HF_OAM | \
840 - cpu_to_be32(0xff))
841 + __constant_cpu_to_be32(0xff))
842
843 struct vxlan_metadata {
844 u32 gbp;
845 @@ -305,10 +305,10 @@ static inline netdev_features_t vxlan_features_check(struct sk_buff *skb,
846 return features;
847
848 switch (vlan_get_protocol(skb)) {
849 - case htons(ETH_P_IP):
850 + case HTONS(ETH_P_IP):
851 l4_hdr = ip_hdr(skb)->protocol;
852 break;
853 - case htons(ETH_P_IPV6):
854 + case HTONS(ETH_P_IPV6):
855 l4_hdr = ipv6_hdr(skb)->nexthdr;
856 break;
857 default:
858 diff --git a/net/core/dev.c b/net/core/dev.c
859 index 449b45b843d4..b0547f740e73 100644
860 --- a/net/core/dev.c
861 +++ b/net/core/dev.c
862 @@ -5078,11 +5078,11 @@ EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
863 static bool skb_pfmemalloc_protocol(struct sk_buff *skb)
864 {
865 switch (skb->protocol) {
866 - case htons(ETH_P_ARP):
867 - case htons(ETH_P_IP):
868 - case htons(ETH_P_IPV6):
869 - case htons(ETH_P_8021Q):
870 - case htons(ETH_P_8021AD):
871 + case HTONS(ETH_P_ARP):
872 + case HTONS(ETH_P_IP):
873 + case HTONS(ETH_P_IPV6):
874 + case HTONS(ETH_P_8021Q):
875 + case HTONS(ETH_P_8021AD):
876 return true;
877 default:
878 return false;
879 diff --git a/net/core/filter.c b/net/core/filter.c
880 index 255aeee72402..a2a1685b34bb 100644
881 --- a/net/core/filter.c
882 +++ b/net/core/filter.c
883 @@ -3396,9 +3396,9 @@ static const struct bpf_func_proto bpf_skb_change_type_proto = {
884 static u32 bpf_skb_net_base_len(const struct sk_buff *skb)
885 {
886 switch (skb->protocol) {
887 - case htons(ETH_P_IP):
888 + case HTONS(ETH_P_IP):
889 return sizeof(struct iphdr);
890 - case htons(ETH_P_IPV6):
891 + case HTONS(ETH_P_IPV6):
892 return sizeof(struct ipv6hdr);
893 default:
894 return ~0U;
895 @@ -6404,10 +6404,10 @@ BPF_CALL_1(bpf_skb_ecn_set_ce, struct sk_buff *, skb)
896 unsigned int iphdr_len;
897
898 switch (skb_protocol(skb, true)) {
899 - case cpu_to_be16(ETH_P_IP):
900 + case CPU_TO_BE16(ETH_P_IP):
901 iphdr_len = sizeof(struct iphdr);
902 break;
903 - case cpu_to_be16(ETH_P_IPV6):
904 + case CPU_TO_BE16(ETH_P_IPV6):
905 iphdr_len = sizeof(struct ipv6hdr);
906 break;
907 default:
908 diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c
909 index 6f1adba6695f..0c7e38931594 100644
910 --- a/net/core/flow_dissector.c
911 +++ b/net/core/flow_dissector.c
912 @@ -1025,7 +1025,7 @@ bool __skb_flow_dissect(const struct net *net,
913 fdret = FLOW_DISSECT_RET_CONTINUE;
914
915 switch (proto) {
916 - case htons(ETH_P_IP): {
917 + case HTONS(ETH_P_IP): {
918 const struct iphdr *iph;
919 struct iphdr _iph;
920
921 @@ -1071,7 +1071,7 @@ bool __skb_flow_dissect(const struct net *net,
922
923 break;
924 }
925 - case htons(ETH_P_IPV6): {
926 + case HTONS(ETH_P_IPV6): {
927 const struct ipv6hdr *iph;
928 struct ipv6hdr _iph;
929
930 @@ -1119,8 +1119,8 @@ bool __skb_flow_dissect(const struct net *net,
931
932 break;
933 }
934 - case htons(ETH_P_8021AD):
935 - case htons(ETH_P_8021Q): {
936 + case HTONS(ETH_P_8021AD):
937 + case HTONS(ETH_P_8021Q): {
938 const struct vlan_hdr *vlan = NULL;
939 struct vlan_hdr _vlan;
940 __be16 saved_vlan_tpid = proto;
941 @@ -1170,7 +1170,7 @@ bool __skb_flow_dissect(const struct net *net,
942 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
943 break;
944 }
945 - case htons(ETH_P_PPP_SES): {
946 + case HTONS(ETH_P_PPP_SES): {
947 struct {
948 struct pppoe_hdr hdr;
949 __be16 proto;
950 @@ -1184,11 +1184,11 @@ bool __skb_flow_dissect(const struct net *net,
951 proto = hdr->proto;
952 nhoff += PPPOE_SES_HLEN;
953 switch (proto) {
954 - case htons(PPP_IP):
955 + case HTONS(PPP_IP):
956 proto = htons(ETH_P_IP);
957 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
958 break;
959 - case htons(PPP_IPV6):
960 + case HTONS(PPP_IPV6):
961 proto = htons(ETH_P_IPV6);
962 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
963 break;
964 @@ -1198,7 +1198,7 @@ bool __skb_flow_dissect(const struct net *net,
965 }
966 break;
967 }
968 - case htons(ETH_P_TIPC): {
969 + case HTONS(ETH_P_TIPC): {
970 struct tipc_basic_hdr *hdr, _hdr;
971
972 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr),
973 @@ -1220,8 +1220,8 @@ bool __skb_flow_dissect(const struct net *net,
974 break;
975 }
976
977 - case htons(ETH_P_MPLS_UC):
978 - case htons(ETH_P_MPLS_MC):
979 + case HTONS(ETH_P_MPLS_UC):
980 + case HTONS(ETH_P_MPLS_MC):
981 fdret = __skb_flow_dissect_mpls(skb, flow_dissector,
982 target_container, data,
983 nhoff, hlen, mpls_lse,
984 @@ -1229,7 +1229,7 @@ bool __skb_flow_dissect(const struct net *net,
985 nhoff += sizeof(struct mpls_label);
986 mpls_lse++;
987 break;
988 - case htons(ETH_P_FCOE):
989 + case HTONS(ETH_P_FCOE):
990 if ((hlen - nhoff) < FCOE_HEADER_LEN) {
991 fdret = FLOW_DISSECT_RET_OUT_BAD;
992 break;
993 @@ -1239,14 +1239,14 @@ bool __skb_flow_dissect(const struct net *net,
994 fdret = FLOW_DISSECT_RET_OUT_GOOD;
995 break;
996
997 - case htons(ETH_P_ARP):
998 - case htons(ETH_P_RARP):
999 + case HTONS(ETH_P_ARP):
1000 + case HTONS(ETH_P_RARP):
1001 fdret = __skb_flow_dissect_arp(skb, flow_dissector,
1002 target_container, data,
1003 nhoff, hlen);
1004 break;
1005
1006 - case htons(ETH_P_BATMAN):
1007 + case HTONS(ETH_P_BATMAN):
1008 fdret = __skb_flow_dissect_batadv(skb, key_control, data,
1009 &proto, &nhoff, hlen, flags);
1010 break;
1011 diff --git a/net/core/skbuff.c b/net/core/skbuff.c
1012 index 785daff48030..5f402b5e9f6c 100644
1013 --- a/net/core/skbuff.c
1014 +++ b/net/core/skbuff.c
1015 @@ -5050,11 +5050,11 @@ int skb_checksum_setup(struct sk_buff *skb, bool recalculate)
1016 int err;
1017
1018 switch (skb->protocol) {
1019 - case htons(ETH_P_IP):
1020 + case HTONS(ETH_P_IP):
1021 err = skb_checksum_setup_ipv4(skb, recalculate);
1022 break;
1023
1024 - case htons(ETH_P_IPV6):
1025 + case HTONS(ETH_P_IPV6):
1026 err = skb_checksum_setup_ipv6(skb, recalculate);
1027 break;
1028
1029 diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c
1030 index 4106373180c6..ff03f3e0243a 100644
1031 --- a/net/ethernet/eth.c
1032 +++ b/net/ethernet/eth.c
1033 @@ -482,7 +482,7 @@ int eth_gro_complete(struct sk_buff *skb, int nhoff)
1034 EXPORT_SYMBOL(eth_gro_complete);
1035
1036 static struct packet_offload eth_packet_offload __read_mostly = {
1037 - .type = cpu_to_be16(ETH_P_TEB),
1038 + .type = CPU_TO_BE16(ETH_P_TEB),
1039 .priority = 10,
1040 .callbacks = {
1041 .gro_receive = eth_gro_receive,
1042 diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
1043 index b94fa8eb831b..f1f86db1829e 100644
1044 --- a/net/ipv4/af_inet.c
1045 +++ b/net/ipv4/af_inet.c
1046 @@ -1890,7 +1890,7 @@ static int ipv4_proc_init(void);
1047 */
1048
1049 static struct packet_offload ip_packet_offload __read_mostly = {
1050 - .type = cpu_to_be16(ETH_P_IP),
1051 + .type = CPU_TO_BE16(ETH_P_IP),
1052 .callbacks = {
1053 .gso_segment = inet_gso_segment,
1054 .gro_receive = inet_gro_receive,
1055 @@ -1930,7 +1930,7 @@ static int __init ipv4_offload_init(void)
1056 fs_initcall(ipv4_offload_init);
1057
1058 static struct packet_type ip_packet_type __read_mostly = {
1059 - .type = cpu_to_be16(ETH_P_IP),
1060 + .type = CPU_TO_BE16(ETH_P_IP),
1061 .func = ip_rcv,
1062 .list_func = ip_list_rcv,
1063 };
1064 diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
1065 index 922dd73e5740..d8ef2692d8d5 100644
1066 --- a/net/ipv4/arp.c
1067 +++ b/net/ipv4/arp.c
1068 @@ -152,7 +152,7 @@ static const struct neigh_ops arp_direct_ops = {
1069 struct neigh_table arp_tbl = {
1070 .family = AF_INET,
1071 .key_len = 4,
1072 - .protocol = cpu_to_be16(ETH_P_IP),
1073 + .protocol = CPU_TO_BE16(ETH_P_IP),
1074 .hash = arp_hash,
1075 .key_eq = arp_key_eq,
1076 .constructor = arp_constructor,
1077 @@ -1286,7 +1286,7 @@ void arp_ifdown(struct net_device *dev)
1078 */
1079
1080 static struct packet_type arp_packet_type __read_mostly = {
1081 - .type = cpu_to_be16(ETH_P_ARP),
1082 + .type = CPU_TO_BE16(ETH_P_ARP),
1083 .func = arp_rcv,
1084 };
1085
1086 diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
1087 index 8e9c3e9ea36e..9c8d277f85df 100644
1088 --- a/net/ipv6/af_inet6.c
1089 +++ b/net/ipv6/af_inet6.c
1090 @@ -861,7 +861,7 @@ bool ipv6_opt_accepted(const struct sock *sk, const struct sk_buff *skb,
1091 EXPORT_SYMBOL_GPL(ipv6_opt_accepted);
1092
1093 static struct packet_type ipv6_packet_type __read_mostly = {
1094 - .type = cpu_to_be16(ETH_P_IPV6),
1095 + .type = CPU_TO_BE16(ETH_P_IPV6),
1096 .func = ipv6_rcv,
1097 .list_func = ipv6_list_rcv,
1098 };
1099 diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c
1100 index a80f90bf3ae7..df5df372da61 100644
1101 --- a/net/ipv6/ip6_offload.c
1102 +++ b/net/ipv6/ip6_offload.c
1103 @@ -141,7 +141,7 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb,
1104 fptr = (struct frag_hdr *)((u8 *)ipv6h + err);
1105 fptr->frag_off = htons(offset);
1106 if (skb->next)
1107 - fptr->frag_off |= htons(IP6_MF);
1108 + fptr->frag_off |= HTONS(IP6_MF);
1109 offset += (ntohs(ipv6h->payload_len) -
1110 sizeof(struct frag_hdr));
1111 }
1112 @@ -324,7 +324,7 @@ INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff)
1113 int err = -ENOSYS;
1114
1115 if (skb->encapsulation) {
1116 - skb_set_inner_protocol(skb, cpu_to_be16(ETH_P_IPV6));
1117 + skb_set_inner_protocol(skb, CPU_TO_BE16(ETH_P_IPV6));
1118 skb_set_inner_network_header(skb, nhoff);
1119 }
1120
1121 @@ -367,7 +367,7 @@ static int ip4ip6_gro_complete(struct sk_buff *skb, int nhoff)
1122 }
1123
1124 static struct packet_offload ipv6_packet_offload __read_mostly = {
1125 - .type = cpu_to_be16(ETH_P_IPV6),
1126 + .type = CPU_TO_BE16(ETH_P_IPV6),
1127 .callbacks = {
1128 .gso_segment = ipv6_gso_segment,
1129 .gro_receive = ipv6_gro_receive,
1130 diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
1131 index 76717478f173..fc5e724abbc5 100644
1132 --- a/net/ipv6/ndisc.c
1133 +++ b/net/ipv6/ndisc.c
1134 @@ -109,7 +109,7 @@ static const struct neigh_ops ndisc_direct_ops = {
1135 struct neigh_table nd_tbl = {
1136 .family = AF_INET6,
1137 .key_len = sizeof(struct in6_addr),
1138 - .protocol = cpu_to_be16(ETH_P_IPV6),
1139 + .protocol = CPU_TO_BE16(ETH_P_IPV6),
1140 .hash = ndisc_hash,
1141 .key_eq = ndisc_key_eq,
1142 .constructor = ndisc_constructor,
1143 diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c
1144 index 2b88710994d7..641dcd863eb2 100644
1145 --- a/net/sched/sch_dsmark.c
1146 +++ b/net/sched/sch_dsmark.c
1147 @@ -211,7 +211,7 @@ static int dsmark_enqueue(struct sk_buff *skb, struct Qdisc *sch,
1148 int wlen = skb_network_offset(skb);
1149
1150 switch (skb_protocol(skb, true)) {
1151 - case htons(ETH_P_IP):
1152 + case HTONS(ETH_P_IP):
1153 wlen += sizeof(struct iphdr);
1154 if (!pskb_may_pull(skb, wlen) ||
1155 skb_try_make_writable(skb, wlen))
1156 @@ -221,7 +221,7 @@ static int dsmark_enqueue(struct sk_buff *skb, struct Qdisc *sch,
1157 & ~INET_ECN_MASK;
1158 break;
1159
1160 - case htons(ETH_P_IPV6):
1161 + case HTONS(ETH_P_IPV6):
1162 wlen += sizeof(struct ipv6hdr);
1163 if (!pskb_may_pull(skb, wlen) ||
1164 skb_try_make_writable(skb, wlen))
1165 @@ -304,11 +304,11 @@ static struct sk_buff *dsmark_dequeue(struct Qdisc *sch)
1166 pr_debug("index %d->%d\n", skb->tc_index, index);
1167
1168 switch (skb_protocol(skb, true)) {
1169 - case htons(ETH_P_IP):
1170 + case HTONS(ETH_P_IP):
1171 ipv4_change_dsfield(ip_hdr(skb), p->mv[index].mask,
1172 p->mv[index].value);
1173 break;
1174 - case htons(ETH_P_IPV6):
1175 + case HTONS(ETH_P_IPV6):
1176 ipv6_change_dsfield(ipv6_hdr(skb), p->mv[index].mask,
1177 p->mv[index].value);
1178 break;
1179 diff --git a/scripts/min-tool-version.sh b/scripts/min-tool-version.sh
1180 index d22cf91212b0..d679e1e252b9 100755
1181 --- a/scripts/min-tool-version.sh
1182 +++ b/scripts/min-tool-version.sh
1183 @@ -22,7 +22,7 @@ gcc)
1184 if [ "$SRCARCH" = arm64 ]; then
1185 echo 5.1.0
1186 else
1187 - echo 4.9.0
1188 + echo 4.7.4
1189 fi
1190 ;;
1191 icc)
1192 diff --git a/include/uapi/linux/byteorder/little_endian.h b/include/uapi/linux/byteorder/little_endian.h
1193 index 601c904fd5cd..226d82794e8e 100644
1194 --- a/include/uapi/linux/byteorder/little_endian.h
1195 +++ b/include/uapi/linux/byteorder/little_endian.h
1196 @@ -15,6 +15,7 @@
1197 #define __constant_htonl(x) ((__force __be32)___constant_swab32((x)))
1198 #define __constant_ntohl(x) ___constant_swab32((__force __be32)(x))
1199 #define __constant_htons(x) ((__force __be16)___constant_swab16((x)))
1200 +#define HTONS(x) __constant_htons(x)
1201 #define __constant_ntohs(x) ___constant_swab16((__force __be16)(x))
1202 #define __constant_cpu_to_le64(x) ((__force __le64)(__u64)(x))
1203 #define __constant_le64_to_cpu(x) ((__force __u64)(__le64)(x))
1204 @@ -27,7 +28,9 @@
1205 #define __constant_cpu_to_be32(x) ((__force __be32)___constant_swab32((x)))
1206 #define __constant_be32_to_cpu(x) ___constant_swab32((__force __u32)(__be32)(x))
1207 #define __constant_cpu_to_be16(x) ((__force __be16)___constant_swab16((x)))
1208 +#define CPU_TO_BE16(x) __constant_cpu_to_be16(x)
1209 #define __constant_be16_to_cpu(x) ___constant_swab16((__force __u16)(__be16)(x))
1210 +#define BE16_TO_CPU(x) __constant_be16_to_cpu(x)
1211 #define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
1212 #define __le64_to_cpu(x) ((__force __u64)(__le64)(x))
1213 #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
File builders/linux-amd/amd_ramfs.in changed (mode: 100644) (index 0568995..a6254e6)
6 6 dir /kernel 0755 0 0 dir /kernel 0755 0 0
7 7 dir /kernel/x86 0755 0 0 dir /kernel/x86 0755 0 0
8 8 dir /kernel/x86/microcode 0755 0 0 dir /kernel/x86/microcode 0755 0 0
9 file /kernel/x86/microcode/AuthenticAMD.bin PKG_DIR/AuthenticAMD.bin 0644 0 0
9 file /kernel/x86/microcode/AuthenticAMD.bin AMD_MICROCODE_DIR/AuthenticAMD.bin 0644 0 0
10 10 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
11 11 #modules #modules
12 12 dir /lib 0755 0 0 dir /lib 0755 0 0
 
... ... dir /lib/modules/LINUX_RELEASE/kernel 0755 0 0
16 16 dir /lib/modules/LINUX_RELEASE/kernel/arch 0755 0 0 dir /lib/modules/LINUX_RELEASE/kernel/arch 0755 0 0
17 17 dir /lib/modules/LINUX_RELEASE/kernel/arch/x86 0755 0 0 dir /lib/modules/LINUX_RELEASE/kernel/arch/x86 0755 0 0
18 18 dir /lib/modules/LINUX_RELEASE/kernel/arch/x86/crypto 0755 0 0 dir /lib/modules/LINUX_RELEASE/kernel/arch/x86/crypto 0755 0 0
19 dir /lib/modules/LINUX_RELEASE/kernel/block 0755 0 0
19 20 dir /lib/modules/LINUX_RELEASE/kernel/crypto 0755 0 0 dir /lib/modules/LINUX_RELEASE/kernel/crypto 0755 0 0
20 21 dir /lib/modules/LINUX_RELEASE/kernel/drivers 0755 0 0 dir /lib/modules/LINUX_RELEASE/kernel/drivers 0755 0 0
21 22 dir /lib/modules/LINUX_RELEASE/kernel/drivers/ata 0755 0 0 dir /lib/modules/LINUX_RELEASE/kernel/drivers/ata 0755 0 0
 
... ... file /lib/modules/LINUX_RELEASE/kernel/drivers/ata/libahci.ko /lib/modules/LINUX
38 39 file /lib/modules/LINUX_RELEASE/kernel/drivers/ata/libata.ko /lib/modules/LINUX_RELEASE/kernel/drivers/ata/libata.ko 0644 0 0 file /lib/modules/LINUX_RELEASE/kernel/drivers/ata/libata.ko /lib/modules/LINUX_RELEASE/kernel/drivers/ata/libata.ko 0644 0 0
39 40 #file /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme-core.ko /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme-core.ko 0644 0 0 #file /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme-core.ko /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme-core.ko 0644 0 0
40 41 #file /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme.ko /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme.ko 0644 0 0 #file /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme.ko /lib/modules/LINUX_RELEASE/kernel/drivers/nvme/host/nvme.ko 0644 0 0
42 file /lib/modules/LINUX_RELEASE/kernel/block/bsg.ko /lib/modules/LINUX_RELEASE/kernel/block/bsg.ko 0644 0 0
43 file /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/scsi_common.ko /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/scsi_common.ko 0644 0 0
41 44 file /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/scsi_mod.ko /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/scsi_mod.ko 0644 0 0 file /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/scsi_mod.ko /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/scsi_mod.ko 0644 0 0
42 45 file /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/sd_mod.ko /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/sd_mod.ko 0644 0 0 file /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/sd_mod.ko /lib/modules/LINUX_RELEASE/kernel/drivers/scsi/sd_mod.ko 0644 0 0
43 46 #file /lib/modules/LINUX_RELEASE/kernel/drivers/usb/common/usb-common.ko /lib/modules/LINUX_RELEASE/kernel/drivers/usb/common/usb-common.ko 0644 0 0 #file /lib/modules/LINUX_RELEASE/kernel/drivers/usb/common/usb-common.ko /lib/modules/LINUX_RELEASE/kernel/drivers/usb/common/usb-common.ko 0644 0 0
 
... ... slink /bin/kill busybox 777 0 0
87 90 slink /bin/umount busybox 777 0 0 slink /bin/umount busybox 777 0 0
88 91 slink /bin/switch_root busybox 777 0 0 slink /bin/switch_root busybox 777 0 0
89 92
90 file /init PKGS_DIR_ROOT/init 0755 0 0
93 file /init INIT_DIR/init 0755 0 0
91 94 file /uevt.sh BUILDER_DIR/uevt.sh 0755 0 0 file /uevt.sh BUILDER_DIR/uevt.sh 0755 0 0
File builders/linux-amd/builder.sh changed (mode: 100644) (index 6e8d8cc..27fa14a)
1 1 . $nyan_root/utils.sh . $nyan_root/utils.sh
2 cleanup()
3 {
4 if test -e $pkg_dir/NYAN/depmod_installed; then
5 rm -f '/sbin/depmod'
6 rmdir /sbin
7 fi
8 if test -e /bin/bash.HIDDEN; then
9 mv /bin/bash.HIDDEN /bin/bash
10 fi
11 }
12 ################################################################################
13
14 # sadly, the toxic mob from gcc/clang managed to commit too much brain damaged
15 # (gcc/clang/iso) code into linux, fixing their toxic stuff requires something
16 # different
2 17
3 18 pkg_dir=$pkgs_dir_root/$pkg_name pkg_dir=$pkgs_dir_root/$pkg_name
4 19 rm -Rf $pkg_dir rm -Rf $pkg_dir
 
... ... printf 'copying linux source tree in ram...\n'
7 22 cp -r $src_dir_root/linux-amd $pkg_dir cp -r $src_dir_root/linux-amd $pkg_dir
8 23 printf 'done\n' printf 'done\n'
9 24 cd $pkg_dir cd $pkg_dir
25 # create a directory for our stuff
26 mkdir -p NYAN
10 27 ################################################################################ ################################################################################
11 28 PATH_SAVED=$PATH PATH_SAVED=$PATH
12 29 # must have sh in PATH for some makefile scripts # must have sh in PATH for some makefile scripts
13 30 export PATH="\ export PATH="\
14 31 /bin:\ /bin:\
15 /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin:\
32 /nyan/toolchains/current/bin:\
16 33 /nyan/git/current/bin:\ /nyan/git/current/bin:\
17 34 /nyan/make/current/bin:\ /nyan/make/current/bin:\
18 35 /nyan/flex/current/bin:\ /nyan/flex/current/bin:\
19 36 /nyan/bison/current/bin:\ /nyan/bison/current/bin:\
20 $PATH\
21 "
22 target_gnu_triple=$(basename "$(ls -d /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin/*-gcc)")
37 $PATH"
38 target_gnu_triple=$(basename "$(ls -d /nyan/toolchains/current/bin/*-gcc)")
23 39 target_gnu_triple=${target_gnu_triple%-gcc} target_gnu_triple=${target_gnu_triple%-gcc}
24 40 if test -e /bin/bash;then if test -e /bin/bash;then
25 41 mv /bin/bash /bin/bash.HIDDEN mv /bin/bash /bin/bash.HIDDEN
26 42 fi fi
27 43 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
44 # there, the build system is expecting way more than minimal host and target
45 # compilers, then we need wrappers
46 mkdir -p $pkg_dir/NYAN/wrappers
47 export PATH="\
48 $pkg_dir/NYAN/wrappers:\
49 $PATH"
50 sed -r -e "s:HOSTGCC_ABSOLUTE_PATH:/nyan/toolchains/current/bin/$target_gnu_triple-gcc:" \
51 $nyan_root/builders/$pkg_name/wrappers/hostgcc \
52 >$pkg_dir/NYAN/wrappers/hostgcc
53 sed -r -e "s:TARGETGCC_ABSOLUTE_PATH:/nyan/toolchains/current/bin/$target_gnu_triple-gcc:" \
54 $nyan_root/builders/$pkg_name/wrappers/crossgcc \
55 >$pkg_dir/NYAN/wrappers/$target_gnu_triple-gcc
56 chmod +x $pkg_dir/NYAN/wrappers/hostgcc $pkg_dir/NYAN/wrappers/$target_gnu_triple-gcc
57 #-------------------------------------------------------------------------------
28 58 # the config in the linux directory # the config in the linux directory
29 cp -f $nyan_root/builders/$pkg_name/config $pkg_dir/amd_config
59 cp -f $nyan_root/builders/$pkg_name/config $pkg_dir/NYAN/amd_config
30 60 sed -r -e "/^CONFIG_INITRAMFS_SOURCE/ c\\ sed -r -e "/^CONFIG_INITRAMFS_SOURCE/ c\\
31 CONFIG_INITRAMFS_SOURCE=\"$pkg_dir/amd_ramfs.cpio\"" -i $pkg_dir/amd_config
61 CONFIG_INITRAMFS_SOURCE=\"$pkg_dir/NYAN/amd_ramfs.cpio\"" -i $pkg_dir/NYAN/amd_config
32 62 # we don't have modules yet, give an empty one to kbuild for now # we don't have modules yet, give an empty one to kbuild for now
33 touch $pkg_dir/amd_ramfs.cpio
63 touch $pkg_dir/NYAN/amd_ramfs.cpio
34 64 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
35 printf 'patching linux...\n'
36 $nyan_root/builders/$pkg_name/patches.sh $pkg_dir
37 # hit a busybox diff/patch bug
38 cp -f $nyan_root/builders/$pkg_name/flow_dissector.c $pkg_dir/net/core/flow_dissector.c
39 printf 'patching done\n'
40 #-------------------------------------------------------------------------------
41 release=$($nyan_root/builders/$pkg_name/release.sh "$nyan_root" "$pkg_dir/amd_config" "$pkg_dir")
65 release=$($nyan_root/builders/$pkg_name/release.sh "$nyan_root" "$pkg_dir/NYAN/amd_config" "$pkg_dir")
42 66 printf "linux release is \"$release\"\n" printf "linux release is \"$release\"\n"
43 67 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
44 export KCONFIG_CONFIG=$pkg_dir/amd_config
45 export "HOSTCC=$target_gnu_triple-gcc"
46 export "HOSTCFLAGS=-isystem /nyan/glibc/current/include -isystem /nyan/linux-headers/current/include -O2 -pipe -fPIC -static-libgcc"
47 export "HOSTLDFLAGS=-B/nyan/glibc/current/lib -L/nyan/glibc/current/lib -static-libgcc"
68 export KCONFIG_CONFIG=$pkg_dir/NYAN/amd_config
69 export HOSTCC=hostgcc
48 70 export ARCH=x86_64 export ARCH=x86_64
49 71 export CROSS_COMPILE=$target_gnu_triple- export CROSS_COMPILE=$target_gnu_triple-
50 export NYAN_AS=$target_gnu_triple-as
51 72 # linux sdk wants depmod in /sbin # linux sdk wants depmod in /sbin
52 73 if test ! -x /sbin/depmod; then if test ! -x /sbin/depmod; then
53 printf 'you are missing the depmod utiliy in /sbin, using the one in PATH\n'
74 printf 'you are missing the depmod utility in /sbin, using the one in PATH\n'
54 75 find_in_path depmod find_in_path depmod
55 76 if test ! $r; then if test ! $r; then
56 77 printf 'no depmod utility found in PATH, linux modules SDK will fail, exiting\n' printf 'no depmod utility found in PATH, linux modules SDK will fail, exiting\n'
57 if test -e /bin/bash.HIDDEN; then
58 mv /bin/bash.HIDDEN /bin/bash
59 fi
78 cleanup
60 79 exit 1 exit 1
61 80 fi fi
62 81 mkdir -p /sbin mkdir -p /sbin
63 82 printf 'linking %s to /sbin/depmod, will be removed on exiting\n' $r printf 'linking %s to /sbin/depmod, will be removed on exiting\n' $r
64 83 ln -sf $r /sbin/depmod ln -sf $r /sbin/depmod
65 touch /run/depmod_installed
84 touch $pkg_dir/NYAN/depmod_installed
66 85 fi fi
67 86 (cd /lib/modules;rm -Rf "$release") (cd /lib/modules;rm -Rf "$release")
68 87 # HOSTCC environment variable seems ignored, overridding makefile variable # HOSTCC environment variable seems ignored, overridding makefile variable
 
... ... printf 'concatening AMD cpu firmware -- START\n'
76 95 firmware_dir=/lib/firmware/amd-ucode firmware_dir=/lib/firmware/amd-ucode
77 96 if test ! -d $firmware_dir; then if test ! -d $firmware_dir; then
78 97 printf "ERROR:missing linux-firmware \"$firmware_dir\"\n" printf "ERROR:missing linux-firmware \"$firmware_dir\"\n"
79 if test -e /run/depmod_installed; then
80 rm -f '/sbin/depmod'
81 rmdir /sbin
82 fi
83 if test -e /bin/bash.HIDDEN; then
84 mv /bin/bash.HIDDEN /bin/bash
85 fi
98 cleanup
86 99 exit 1 exit 1
87 100 fi fi
88 cat $(find $firmware_dir -name '*.bin' | sort) >$pkg_dir/AuthenticAMD.bin
101 cat $(find $firmware_dir -name '*.bin' | sort) >$pkg_dir/NYAN/AuthenticAMD.bin
89 102 printf 'concatening AMD cpu firmware -- END\n' printf 'concatening AMD cpu firmware -- END\n'
90 103 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
91 104 # cpio list generation # cpio list generation
92 105 printf 'cpio list generation for ramfs -- START\n' printf 'cpio list generation for ramfs -- START\n'
93 cp -f $pkg_dir/usr/default_cpio_list $pkg_dir/amd_ramfs
94 sed -r -e "s:PKG_DIR:$pkg_dir:g" \
95 -e "s:PKGS_DIR_ROOT:$pkgs_dir_root:g" \
106 cp -f $pkg_dir/usr/default_cpio_list $pkg_dir/NYAN/amd_ramfs
107 sed -r -e "s:AMD_MICROCODE_DIR:$pkg_dir/NYAN:g" \
108 -e "s:INIT_DIR:$pkg_dir/NYAN:g" \
96 109 -e "s:LINUX_RELEASE:$release:g" \ -e "s:LINUX_RELEASE:$release:g" \
97 110 -e "s:BUILDER_DIR:$nyan_root/builders/$pkg_name:g" \ -e "s:BUILDER_DIR:$nyan_root/builders/$pkg_name:g" \
98 111 <$nyan_root/builders/$pkg_name/amd_ramfs.in \ <$nyan_root/builders/$pkg_name/amd_ramfs.in \
99 >>$pkg_dir/amd_ramfs
112 >>$pkg_dir/NYAN/amd_ramfs
100 113 printf 'cpio list generation for ramfs -- END\n' printf 'cpio list generation for ramfs -- END\n'
101 114 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
102 115 # init generation, basically craming the root uuid # init generation, basically craming the root uuid
 
... ... printf "root_uuid=$root_uuid\n"
109 122 sed -r -e "/^initramfs_root_uuid/ c\\ sed -r -e "/^initramfs_root_uuid/ c\\
110 123 initramfs_root_uuid=$root_uuid" \ initramfs_root_uuid=$root_uuid" \
111 124 <$nyan_root/builders/$pkg_name/init.in \ <$nyan_root/builders/$pkg_name/init.in \
112 >$pkgs_dir_root/init
125 >$pkg_dir/NYAN/init
113 126 printf 'init generation for ramfs -- END\n' printf 'init generation for ramfs -- END\n'
114 127 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
115 128 # switch from the cpio archive to cpio list # switch from the cpio archive to cpio list
116 rm $pkg_dir/amd_ramfs.cpio
129 # this is done removing the .cpio file extension, this is how linux kbuild makes
130 # the difference
131 rm $pkg_dir/NYAN/amd_ramfs.cpio
117 132 sed -r -e "/^CONFIG_INITRAMFS_SOURCE/ c\\ sed -r -e "/^CONFIG_INITRAMFS_SOURCE/ c\\
118 CONFIG_INITRAMFS_SOURCE=\"$pkg_dir/amd_ramfs\"" -i $pkg_dir/amd_config
133 CONFIG_INITRAMFS_SOURCE=\"$pkg_dir/NYAN/amd_ramfs\"" -i $pkg_dir/NYAN/amd_config
119 134 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
120 135 # HOSTCC environment variable seems ignored, overridding makefile variable # HOSTCC environment variable seems ignored, overridding makefile variable
121 136 make -j $threads_n bzImage "HOSTCC=$HOSTCC" make -j $threads_n bzImage "HOSTCC=$HOSTCC"
122 137 unset KCONFIG_CONFIG unset KCONFIG_CONFIG
123 138 unset HOSTCC unset HOSTCC
124 unset HOSTCFLAGS
125 unset HOSTLDFLAGS
126 139 unset ARCH unset ARCH
127 140 unset CROSS_COMPILE unset CROSS_COMPILE
128 unset NYAN_AS
129 141 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
130 142 # install the kernel with the baked initramfs # install the kernel with the baked initramfs
131 143 mkdir -p /mnt/efi mkdir -p /mnt/efi
 
... ... cp -f $pkg_dir/arch/x86/boot/bzImage "/mnt/efi/amd-$release.efi"
133 145 printf "linux kernel installed:/mnt/efi/amd-$release.efi\n" printf "linux kernel installed:/mnt/efi/amd-$release.efi\n"
134 146 #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
135 147 export PATH=$PATH_SAVED export PATH=$PATH_SAVED
136 rm -f $pkgs_dir_root/init
137 if test -e /run/depmod_installed; then
138 rm -f '/sbin/depmod'
139 rmdir /sbin
140 rm -f /run/depmod_installed
141 fi
142 if test -e /bin/bash.HIDDEN; then
143 mv /bin/bash.HIDDEN /bin/bash
144 fi
148 cleanup
145 149 ################################################################################ ################################################################################
146 150 rm -Rf $pkg_dir rm -Rf $pkg_dir
File builders/linux-amd/config changed (mode: 100644) (index 7ebccca..9432b3b)
1 1 # #
2 2 # Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
3 # Linux/x86_64 5.13.0 Kernel Configuration
3 # Linux/x86_64 5.16.0 Kernel Configuration
4 4 # #
5 CONFIG_CC_VERSION_TEXT="x86_64-nyan2-linux-gnu-gcc (GCC) 4.7.4"
5 CONFIG_CC_VERSION_TEXT="x86_64-nyan-linux-gnu-gcc (GCC) 7.3.0"
6 6 CONFIG_CC_IS_GCC=y CONFIG_CC_IS_GCC=y
7 CONFIG_GCC_VERSION=40704
7 CONFIG_GCC_VERSION=70300
8 8 CONFIG_CLANG_VERSION=0 CONFIG_CLANG_VERSION=0
9 9 CONFIG_AS_IS_GNU=y CONFIG_AS_IS_GNU=y
10 CONFIG_AS_VERSION=23601
10 CONFIG_AS_VERSION=23000
11 11 CONFIG_LD_IS_BFD=y CONFIG_LD_IS_BFD=y
12 CONFIG_LD_VERSION=23601
12 CONFIG_LD_VERSION=23000
13 13 CONFIG_LLD_VERSION=0 CONFIG_LLD_VERSION=0
14 14 CONFIG_CC_HAS_ASM_GOTO=y CONFIG_CC_HAS_ASM_GOTO=y
15 CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
15 16 CONFIG_IRQ_WORK=y CONFIG_IRQ_WORK=y
16 17 CONFIG_BUILDTIME_TABLE_SORT=y CONFIG_BUILDTIME_TABLE_SORT=y
17 18 CONFIG_THREAD_INFO_IN_TASK=y CONFIG_THREAD_INFO_IN_TASK=y
 
... ... CONFIG_THREAD_INFO_IN_TASK=y
21 22 # #
22 23 CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_INIT_ENV_ARG_LIMIT=32
23 24 # CONFIG_COMPILE_TEST is not set # CONFIG_COMPILE_TEST is not set
25 # CONFIG_WERROR is not set
24 26 CONFIG_LOCALVERSION="-0" CONFIG_LOCALVERSION="-0"
25 27 # CONFIG_LOCALVERSION_AUTO is not set # CONFIG_LOCALVERSION_AUTO is not set
26 28 CONFIG_BUILD_SALT="" CONFIG_BUILD_SALT=""
 
... ... CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y
103 105 # CONFIG_BPF_JIT is not set # CONFIG_BPF_JIT is not set
104 106 # end of BPF subsystem # end of BPF subsystem
105 107
108 CONFIG_PREEMPT_BUILD=y
106 109 # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_NONE is not set
107 110 # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT_VOLUNTARY is not set
108 111 CONFIG_PREEMPT=y CONFIG_PREEMPT=y
109 112 CONFIG_PREEMPT_COUNT=y CONFIG_PREEMPT_COUNT=y
110 113 CONFIG_PREEMPTION=y CONFIG_PREEMPTION=y
111 CONFIG_PREEMPT_DYNAMIC=y
114 # CONFIG_PREEMPT_DYNAMIC is not set
115 # CONFIG_SCHED_CORE is not set
112 116
113 117 # #
114 118 # CPU/Task time and stats accounting # CPU/Task time and stats accounting
 
... ... CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
152 156 CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
153 157 CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
154 158 CONFIG_CC_HAS_INT128=y CONFIG_CC_HAS_INT128=y
159 CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
155 160 CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_ARCH_SUPPORTS_INT128=y
156 161 # CONFIG_NUMA_BALANCING is not set # CONFIG_NUMA_BALANCING is not set
157 162 # CONFIG_CGROUPS is not set # CONFIG_CGROUPS is not set
 
... ... CONFIG_MULTIUSER=y
189 194 CONFIG_FHANDLE=y CONFIG_FHANDLE=y
190 195 CONFIG_POSIX_TIMERS=y CONFIG_POSIX_TIMERS=y
191 196 CONFIG_PRINTK=y CONFIG_PRINTK=y
192 CONFIG_PRINTK_NMI=y
193 197 CONFIG_BUG=y CONFIG_BUG=y
194 198 CONFIG_ELF_CORE=y CONFIG_ELF_CORE=y
195 199 # CONFIG_PCSPKR_PLATFORM is not set # CONFIG_PCSPKR_PLATFORM is not set
 
... ... CONFIG_HAVE_SETUP_PER_CPU_AREA=y
257 261 CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
258 262 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
259 263 CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y
264 CONFIG_ARCH_NR_GPIO=1024
260 265 CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
261 266 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
262 CONFIG_ZONE_DMA32=y
263 267 CONFIG_AUDIT_ARCH=y CONFIG_AUDIT_ARCH=y
264 268 CONFIG_X86_64_SMP=y CONFIG_X86_64_SMP=y
265 269 CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_ARCH_SUPPORTS_UPROBES=y
 
... ... CONFIG_CC_HAS_SANE_STACKPROTECTOR=y
270 274 # #
271 275 # Processor type and features # Processor type and features
272 276 # #
273 # CONFIG_ZONE_DMA is not set
274 277 CONFIG_SMP=y CONFIG_SMP=y
275 278 CONFIG_X86_FEATURE_NAMES=y CONFIG_X86_FEATURE_NAMES=y
276 279 CONFIG_X86_X2APIC=y CONFIG_X86_X2APIC=y
 
... ... CONFIG_NR_CPUS_RANGE_BEGIN=2
312 315 CONFIG_NR_CPUS_RANGE_END=512 CONFIG_NR_CPUS_RANGE_END=512
313 316 CONFIG_NR_CPUS_DEFAULT=64 CONFIG_NR_CPUS_DEFAULT=64
314 317 CONFIG_NR_CPUS=64 CONFIG_NR_CPUS=64
318 CONFIG_SCHED_CLUSTER=y
315 319 CONFIG_SCHED_SMT=y CONFIG_SCHED_SMT=y
316 320 CONFIG_SCHED_MC=y CONFIG_SCHED_MC=y
317 321 CONFIG_X86_LOCAL_APIC=y CONFIG_X86_LOCAL_APIC=y
 
... ... CONFIG_X86_MCE_THRESHOLD=y
328 332 # #
329 333 # CONFIG_PERF_EVENTS_INTEL_RAPL is not set # CONFIG_PERF_EVENTS_INTEL_RAPL is not set
330 334 # CONFIG_PERF_EVENTS_AMD_POWER is not set # CONFIG_PERF_EVENTS_AMD_POWER is not set
335 # CONFIG_PERF_EVENTS_AMD_UNCORE is not set
331 336 # end of Performance monitoring # end of Performance monitoring
332 337
333 338 # CONFIG_X86_VSYSCALL_EMULATION is not set # CONFIG_X86_VSYSCALL_EMULATION is not set
 
... ... CONFIG_ARCH_SPARSEMEM_DEFAULT=y
352 357 CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y
353 358 CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
354 359 # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
355 CONFIG_X86_RESERVE_LOW=64
356 360 CONFIG_MTRR=y CONFIG_MTRR=y
357 361 CONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER=y
358 362 CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
 
... ... CONFIG_LEGACY_VSYSCALL_XONLY=y
387 391 # CONFIG_LEGACY_VSYSCALL_NONE is not set # CONFIG_LEGACY_VSYSCALL_NONE is not set
388 392 # CONFIG_CMDLINE_BOOL is not set # CONFIG_CMDLINE_BOOL is not set
389 393 # CONFIG_MODIFY_LDT_SYSCALL is not set # CONFIG_MODIFY_LDT_SYSCALL is not set
394 # CONFIG_STRICT_SIGALTSTACK_SIZE is not set
390 395 CONFIG_HAVE_LIVEPATCH=y CONFIG_HAVE_LIVEPATCH=y
391 396 # end of Processor type and features # end of Processor type and features
392 397
 
... ... CONFIG_HAVE_ACPI_APEI_NMI=y
445 450 # CONFIG_ACPI_CONFIGFS is not set # CONFIG_ACPI_CONFIGFS is not set
446 451 # CONFIG_PMIC_OPREGION is not set # CONFIG_PMIC_OPREGION is not set
447 452 CONFIG_X86_PM_TIMER=y CONFIG_X86_PM_TIMER=y
453 # CONFIG_ACPI_PRMT is not set
448 454
449 455 # #
450 456 # CPU Frequency scaling # CPU Frequency scaling
 
... ... CONFIG_CPU_FREQ_GOV_ONDEMAND=m
471 477 # #
472 478 # CONFIG_X86_INTEL_PSTATE is not set # CONFIG_X86_INTEL_PSTATE is not set
473 479 # CONFIG_X86_PCC_CPUFREQ is not set # CONFIG_X86_PCC_CPUFREQ is not set
474 # CONFIG_X86_AMD_PSTATE is not set
475 480 CONFIG_X86_ACPI_CPUFREQ=m CONFIG_X86_ACPI_CPUFREQ=m
476 481 # CONFIG_X86_ACPI_CPUFREQ_CPB is not set # CONFIG_X86_ACPI_CPUFREQ_CPB is not set
477 482 # CONFIG_X86_POWERNOW_K8 is not set # CONFIG_X86_POWERNOW_K8 is not set
 
... ... CONFIG_PCI_DIRECT=y
503 508 # CONFIG_ISA_BUS is not set # CONFIG_ISA_BUS is not set
504 509 # CONFIG_ISA_DMA_API is not set # CONFIG_ISA_DMA_API is not set
505 510 CONFIG_AMD_NB=y CONFIG_AMD_NB=y
506 CONFIG_X86_SYSFB=y
507 511 # end of Bus options (PCI etc.) # end of Bus options (PCI etc.)
508 512
509 513 # #
 
... ... CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
517 521 CONFIG_SYSVIPC_COMPAT=y CONFIG_SYSVIPC_COMPAT=y
518 522 # end of Binary Emulations # end of Binary Emulations
519 523
520 #
521 # Firmware Drivers
522 #
523 # CONFIG_EDD is not set
524 # CONFIG_FIRMWARE_MEMMAP is not set
525 # CONFIG_DMIID is not set
526 # CONFIG_DMI_SYSFS is not set
527 CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
528 # CONFIG_FW_CFG_SYSFS is not set
529 # CONFIG_GOOGLE_FIRMWARE is not set
530
531 #
532 # EFI (Extensible Firmware Interface) Support
533 #
534 # CONFIG_EFI_VARS is not set
535 CONFIG_EFI_ESRT=y
536 # CONFIG_EFI_FAKE_MEMMAP is not set
537 CONFIG_EFI_RUNTIME_WRAPPERS=y
538 CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y
539 # CONFIG_EFI_BOOTLOADER_CONTROL is not set
540 # CONFIG_EFI_CAPSULE_LOADER is not set
541 # CONFIG_EFI_TEST is not set
542 # CONFIG_APPLE_PROPERTIES is not set
543 # CONFIG_RESET_ATTACK_MITIGATION is not set
544 # CONFIG_EFI_RCI2_TABLE is not set
545 # CONFIG_EFI_DISABLE_PCI_DMA is not set
546 # end of EFI (Extensible Firmware Interface) Support
547
548 # CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set
549
550 #
551 # Tegra firmware driver
552 #
553 # end of Tegra firmware driver
554 # end of Firmware Drivers
555
556 524 CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM=y
557 525 # CONFIG_VIRTUALIZATION is not set # CONFIG_VIRTUALIZATION is not set
558 526 CONFIG_AS_AVX512=y CONFIG_AS_AVX512=y
559 527 CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA1_NI=y
560 528 CONFIG_AS_SHA256_NI=y CONFIG_AS_SHA256_NI=y
561 CONFIG_AS_TPAUSE=y
562 529
563 530 # #
564 531 # General architecture-dependent options # General architecture-dependent options
 
... ... CONFIG_HAVE_KPROBES=y
575 542 CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_KRETPROBES=y
576 543 CONFIG_HAVE_OPTPROBES=y CONFIG_HAVE_OPTPROBES=y
577 544 CONFIG_HAVE_KPROBES_ON_FTRACE=y CONFIG_HAVE_KPROBES_ON_FTRACE=y
545 CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
578 546 CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
579 547 CONFIG_HAVE_NMI=y CONFIG_HAVE_NMI=y
548 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
580 549 CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_ARCH_TRACEHOOK=y
581 550 CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_HAVE_DMA_CONTIGUOUS=y
582 551 CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_GENERIC_SMP_IDLE_THREAD=y
 
... ... CONFIG_ARCH_HAS_SET_MEMORY=y
585 554 CONFIG_ARCH_HAS_SET_DIRECT_MAP=y CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
586 555 CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
587 556 CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
557 CONFIG_ARCH_WANTS_NO_INSTR=y
588 558 CONFIG_HAVE_ASM_MODVERSIONS=y CONFIG_HAVE_ASM_MODVERSIONS=y
589 559 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
590 560 CONFIG_HAVE_RSEQ=y CONFIG_HAVE_RSEQ=y
 
... ... CONFIG_ARCH_MMAP_RND_BITS=28
636 606 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
637 607 CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
638 608 CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y
609 CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
639 610 CONFIG_HAVE_STACK_VALIDATION=y CONFIG_HAVE_STACK_VALIDATION=y
640 611 CONFIG_OLD_SIGSUSPEND3=y CONFIG_OLD_SIGSUSPEND3=y
641 612 CONFIG_COMPAT_OLD_SIGACTION=y CONFIG_COMPAT_OLD_SIGACTION=y
 
... ... CONFIG_STRICT_KERNEL_RWX=y
649 620 CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
650 621 CONFIG_STRICT_MODULE_RWX=y CONFIG_STRICT_MODULE_RWX=y
651 622 CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
623 CONFIG_ARCH_USE_MEMREMAP_PROT=y
652 624 CONFIG_ARCH_HAS_MEM_ENCRYPT=y CONFIG_ARCH_HAS_MEM_ENCRYPT=y
653 625 CONFIG_HAVE_STATIC_CALL=y CONFIG_HAVE_STATIC_CALL=y
654 626 CONFIG_HAVE_STATIC_CALL_INLINE=y CONFIG_HAVE_STATIC_CALL_INLINE=y
 
... ... CONFIG_HAVE_PREEMPT_DYNAMIC=y
656 628 CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
657 629 CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
658 630 CONFIG_ARCH_HAS_ELFCORE_COMPAT=y CONFIG_ARCH_HAS_ELFCORE_COMPAT=y
631 CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y
632 CONFIG_DYNAMIC_SIGFRAME=y
659 633
660 634 # #
661 635 # GCOV-based kernel profiling # GCOV-based kernel profiling
 
... ... CONFIG_MODPROBE_PATH="/sbin/modprobe"
684 658 # CONFIG_TRIM_UNUSED_KSYMS is not set # CONFIG_TRIM_UNUSED_KSYMS is not set
685 659 CONFIG_MODULES_TREE_LOOKUP=y CONFIG_MODULES_TREE_LOOKUP=y
686 660 CONFIG_BLOCK=y CONFIG_BLOCK=y
687 CONFIG_BLK_SCSI_REQUEST=y
688 CONFIG_BLK_DEV_BSG=y
661 CONFIG_BLK_DEV_BSG_COMMON=m
689 662 # CONFIG_BLK_DEV_BSGLIB is not set # CONFIG_BLK_DEV_BSGLIB is not set
690 663 # CONFIG_BLK_DEV_INTEGRITY is not set # CONFIG_BLK_DEV_INTEGRITY is not set
691 664 # CONFIG_BLK_DEV_ZONED is not set # CONFIG_BLK_DEV_ZONED is not set
692 # CONFIG_BLK_CMDLINE_PARSER is not set
693 665 # CONFIG_BLK_WBT is not set # CONFIG_BLK_WBT is not set
694 666 # CONFIG_BLK_SED_OPAL is not set # CONFIG_BLK_SED_OPAL is not set
695 667 # CONFIG_BLK_INLINE_ENCRYPTION is not set # CONFIG_BLK_INLINE_ENCRYPTION is not set
 
... ... CONFIG_COREDUMP=y
761 733 CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
762 734 CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM_MANUAL=y
763 735 CONFIG_SPARSEMEM=y CONFIG_SPARSEMEM=y
764 CONFIG_NEED_MULTIPLE_NODES=y
765 736 CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_EXTREME=y
766 737 CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
767 738 CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_SPARSEMEM_VMEMMAP=y
768 739 CONFIG_HAVE_FAST_GUP=y CONFIG_HAVE_FAST_GUP=y
740 CONFIG_EXCLUSIVE_SYSTEM_RAM=y
769 741 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
770 742 # CONFIG_MEMORY_HOTPLUG is not set # CONFIG_MEMORY_HOTPLUG is not set
771 743 CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_SPLIT_PTLOCK_CPUS=4
 
... ... CONFIG_THP_SWAP=y
790 762 # CONFIG_FRONTSWAP is not set # CONFIG_FRONTSWAP is not set
791 763 # CONFIG_CMA is not set # CONFIG_CMA is not set
792 764 # CONFIG_ZPOOL is not set # CONFIG_ZPOOL is not set
793 # CONFIG_ZBUD is not set
794 765 # CONFIG_ZSMALLOC is not set # CONFIG_ZSMALLOC is not set
795 766 CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_GENERIC_EARLY_IOREMAP=y
796 767 # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
797 768 # CONFIG_IDLE_PAGE_TRACKING is not set # CONFIG_IDLE_PAGE_TRACKING is not set
798 769 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
799 770 CONFIG_ARCH_HAS_PTE_DEVMAP=y CONFIG_ARCH_HAS_PTE_DEVMAP=y
771 CONFIG_ARCH_HAS_ZONE_DMA_SET=y
772 # CONFIG_ZONE_DMA is not set
773 CONFIG_ZONE_DMA32=y
800 774 CONFIG_HMM_MIRROR=y CONFIG_HMM_MIRROR=y
801 775 # CONFIG_PERCPU_STATS is not set # CONFIG_PERCPU_STATS is not set
802 776
 
... ... CONFIG_HMM_MIRROR=y
805 779 # #
806 780 # CONFIG_READ_ONLY_THP_FOR_FS is not set # CONFIG_READ_ONLY_THP_FOR_FS is not set
807 781 CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_ARCH_HAS_PTE_SPECIAL=y
782
783 #
784 # Data Access Monitoring
785 #
786 # CONFIG_DAMON is not set
787 # end of Data Access Monitoring
808 788 # end of Memory Management options # end of Memory Management options
809 789
810 790 CONFIG_NET=y CONFIG_NET=y
 
... ... CONFIG_PACKET=m
816 796 # CONFIG_PACKET_DIAG is not set # CONFIG_PACKET_DIAG is not set
817 797 CONFIG_UNIX=m CONFIG_UNIX=m
818 798 CONFIG_UNIX_SCM=y CONFIG_UNIX_SCM=y
799 CONFIG_AF_UNIX_OOB=y
819 800 # CONFIG_UNIX_DIAG is not set # CONFIG_UNIX_DIAG is not set
820 801 # CONFIG_TLS is not set # CONFIG_TLS is not set
821 802 # CONFIG_XFRM_USER is not set # CONFIG_XFRM_USER is not set
 
... ... CONFIG_IPV6=m
852 833 # CONFIG_IPV6_SEG6_LWTUNNEL is not set # CONFIG_IPV6_SEG6_LWTUNNEL is not set
853 834 # CONFIG_IPV6_SEG6_HMAC is not set # CONFIG_IPV6_SEG6_HMAC is not set
854 835 # CONFIG_IPV6_RPL_LWTUNNEL is not set # CONFIG_IPV6_RPL_LWTUNNEL is not set
836 # CONFIG_IPV6_IOAM6_LWTUNNEL is not set
855 837 # CONFIG_MPTCP is not set # CONFIG_MPTCP is not set
856 838 # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETWORK_SECMARK is not set
857 839 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 
... ... CONFIG_NET_FLOW_LIMIT=y
960 942 # CONFIG_BT is not set # CONFIG_BT is not set
961 943 # CONFIG_AF_RXRPC is not set # CONFIG_AF_RXRPC is not set
962 944 # CONFIG_AF_KCM is not set # CONFIG_AF_KCM is not set
945 # CONFIG_MCTP is not set
963 946 # CONFIG_WIRELESS is not set # CONFIG_WIRELESS is not set
964 947 # CONFIG_RFKILL is not set # CONFIG_RFKILL is not set
965 948 # CONFIG_NET_9P is not set # CONFIG_NET_9P is not set
 
... ... CONFIG_DMA_SHARED_BUFFER=y
1083 1066 # end of Bus devices # end of Bus devices
1084 1067
1085 1068 # CONFIG_CONNECTOR is not set # CONFIG_CONNECTOR is not set
1069
1070 #
1071 # Firmware Drivers
1072 #
1073
1074 #
1075 # ARM System Control and Management Interface Protocol
1076 #
1077 # end of ARM System Control and Management Interface Protocol
1078
1079 # CONFIG_EDD is not set
1080 # CONFIG_FIRMWARE_MEMMAP is not set
1081 # CONFIG_DMIID is not set
1082 # CONFIG_DMI_SYSFS is not set
1083 CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
1084 # CONFIG_FW_CFG_SYSFS is not set
1085 CONFIG_SYSFB=y
1086 CONFIG_SYSFB_SIMPLEFB=y
1087 # CONFIG_GOOGLE_FIRMWARE is not set
1088
1089 #
1090 # EFI (Extensible Firmware Interface) Support
1091 #
1092 # CONFIG_EFI_VARS is not set
1093 CONFIG_EFI_ESRT=y
1094 # CONFIG_EFI_FAKE_MEMMAP is not set
1095 CONFIG_EFI_RUNTIME_WRAPPERS=y
1096 CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y
1097 # CONFIG_EFI_BOOTLOADER_CONTROL is not set
1098 # CONFIG_EFI_CAPSULE_LOADER is not set
1099 # CONFIG_EFI_TEST is not set
1100 # CONFIG_APPLE_PROPERTIES is not set
1101 # CONFIG_RESET_ATTACK_MITIGATION is not set
1102 # CONFIG_EFI_RCI2_TABLE is not set
1103 # CONFIG_EFI_DISABLE_PCI_DMA is not set
1104 # end of EFI (Extensible Firmware Interface) Support
1105
1106 # CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set
1107
1108 #
1109 # Tegra firmware driver
1110 #
1111 # end of Tegra firmware driver
1112 # end of Firmware Drivers
1113
1086 1114 # CONFIG_GNSS is not set # CONFIG_GNSS is not set
1087 1115 # CONFIG_MTD is not set # CONFIG_MTD is not set
1088 1116 # CONFIG_OF is not set # CONFIG_OF is not set
 
... ... CONFIG_PNPACPI=y
1169 1197 # CONFIG_PVPANIC is not set # CONFIG_PVPANIC is not set
1170 1198 # end of Misc devices # end of Misc devices
1171 1199
1172 CONFIG_HAVE_IDE=y
1173 # CONFIG_IDE is not set
1174
1175 1200 # #
1176 1201 # SCSI device support # SCSI device support
1177 1202 # #
1178 1203 CONFIG_SCSI_MOD=m CONFIG_SCSI_MOD=m
1179 1204 # CONFIG_RAID_ATTRS is not set # CONFIG_RAID_ATTRS is not set
1205 CONFIG_SCSI_COMMON=m
1180 1206 CONFIG_SCSI=m CONFIG_SCSI=m
1181 1207 CONFIG_SCSI_DMA=y CONFIG_SCSI_DMA=y
1182 1208 # CONFIG_SCSI_PROC_FS is not set # CONFIG_SCSI_PROC_FS is not set
 
... ... CONFIG_SCSI_DMA=y
1187 1213 CONFIG_BLK_DEV_SD=m CONFIG_BLK_DEV_SD=m
1188 1214 # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_ST is not set
1189 1215 # CONFIG_CHR_DEV_SG is not set # CONFIG_CHR_DEV_SG is not set
1216 CONFIG_BLK_DEV_BSG=y
1190 1217 # CONFIG_CHR_DEV_SCH is not set # CONFIG_CHR_DEV_SCH is not set
1191 1218 # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_CONSTANTS is not set
1192 1219 # CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_LOGGING is not set
 
... ... CONFIG_ETHERNET=y
1250 1277 # CONFIG_NET_VENDOR_AMD is not set # CONFIG_NET_VENDOR_AMD is not set
1251 1278 # CONFIG_NET_VENDOR_AQUANTIA is not set # CONFIG_NET_VENDOR_AQUANTIA is not set
1252 1279 # CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
1280 # CONFIG_NET_VENDOR_ASIX is not set
1253 1281 # CONFIG_NET_VENDOR_ATHEROS is not set # CONFIG_NET_VENDOR_ATHEROS is not set
1254 1282 # CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_BROADCOM is not set
1255 1283 # CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_BROCADE is not set
 
... ... CONFIG_ETHERNET=y
1269 1297 # CONFIG_NET_VENDOR_INTEL is not set # CONFIG_NET_VENDOR_INTEL is not set
1270 1298 # CONFIG_NET_VENDOR_MICROSOFT is not set # CONFIG_NET_VENDOR_MICROSOFT is not set
1271 1299 # CONFIG_JME is not set # CONFIG_JME is not set
1300 # CONFIG_NET_VENDOR_LITEX is not set
1272 1301 # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MARVELL is not set
1273 1302 # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MELLANOX is not set
1274 1303 # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICREL is not set
 
... ... CONFIG_R8169=m
1313 1342 # CONFIG_HIPPI is not set # CONFIG_HIPPI is not set
1314 1343 # CONFIG_NET_SB1000 is not set # CONFIG_NET_SB1000 is not set
1315 1344 CONFIG_PHYLIB=m CONFIG_PHYLIB=m
1345 CONFIG_SWPHY=y
1316 1346 # CONFIG_LED_TRIGGER_PHY is not set # CONFIG_LED_TRIGGER_PHY is not set
1317 # CONFIG_FIXED_PHY is not set
1347 CONFIG_FIXED_PHY=m
1318 1348
1319 1349 # #
1320 1350 # MII PHY device drivers # MII PHY device drivers
 
... ... CONFIG_PHYLIB=m
1338 1368 # CONFIG_MARVELL_PHY is not set # CONFIG_MARVELL_PHY is not set
1339 1369 # CONFIG_MARVELL_10G_PHY is not set # CONFIG_MARVELL_10G_PHY is not set
1340 1370 # CONFIG_MARVELL_88X2222_PHY is not set # CONFIG_MARVELL_88X2222_PHY is not set
1371 # CONFIG_MAXLINEAR_GPHY is not set
1372 # CONFIG_MEDIATEK_GE_PHY is not set
1341 1373 # CONFIG_MICREL_PHY is not set # CONFIG_MICREL_PHY is not set
1342 1374 # CONFIG_MICROCHIP_PHY is not set # CONFIG_MICROCHIP_PHY is not set
1343 1375 # CONFIG_MICROCHIP_T1_PHY is not set # CONFIG_MICROCHIP_T1_PHY is not set
1344 1376 # CONFIG_MICROSEMI_PHY is not set # CONFIG_MICROSEMI_PHY is not set
1377 # CONFIG_MOTORCOMM_PHY is not set
1345 1378 # CONFIG_NATIONAL_PHY is not set # CONFIG_NATIONAL_PHY is not set
1346 1379 # CONFIG_NXP_C45_TJA11XX_PHY is not set # CONFIG_NXP_C45_TJA11XX_PHY is not set
1347 1380 # CONFIG_NXP_TJA11XX_PHY is not set # CONFIG_NXP_TJA11XX_PHY is not set
 
... ... CONFIG_REALTEK_PHY=m
1361 1394 # CONFIG_XILINX_GMII2RGMII is not set # CONFIG_XILINX_GMII2RGMII is not set
1362 1395 CONFIG_MDIO_DEVICE=m CONFIG_MDIO_DEVICE=m
1363 1396 CONFIG_MDIO_BUS=m CONFIG_MDIO_BUS=m
1397 CONFIG_FWNODE_MDIO=m
1398 CONFIG_ACPI_MDIO=m
1364 1399 CONFIG_MDIO_DEVRES=m CONFIG_MDIO_DEVRES=m
1365 1400 # CONFIG_MDIO_BITBANG is not set # CONFIG_MDIO_BITBANG is not set
1366 1401 # CONFIG_MDIO_BCM_UNIMAC is not set # CONFIG_MDIO_BCM_UNIMAC is not set
 
... ... CONFIG_MDIO_DEVRES=m
1387 1422 # CONFIG_USB_NET_DRIVERS is not set # CONFIG_USB_NET_DRIVERS is not set
1388 1423 # CONFIG_WLAN is not set # CONFIG_WLAN is not set
1389 1424 # CONFIG_WAN is not set # CONFIG_WAN is not set
1425
1426 #
1427 # Wireless WAN
1428 #
1390 1429 # CONFIG_WWAN is not set # CONFIG_WWAN is not set
1430 # end of Wireless WAN
1431
1391 1432 # CONFIG_VMXNET3 is not set # CONFIG_VMXNET3 is not set
1392 1433 # CONFIG_FUJITSU_ES is not set # CONFIG_FUJITSU_ES is not set
1393 1434 # CONFIG_NET_FAILOVER is not set # CONFIG_NET_FAILOVER is not set
1394 1435 # CONFIG_ISDN is not set # CONFIG_ISDN is not set
1395 # CONFIG_NVM is not set
1396 1436
1397 1437 # #
1398 1438 # Input device support # Input device support
 
... ... CONFIG_JOYSTICK_XPAD=m
1442 1482 # CONFIG_JOYSTICK_XPAD_FF is not set # CONFIG_JOYSTICK_XPAD_FF is not set
1443 1483 # CONFIG_JOYSTICK_XPAD_LEDS is not set # CONFIG_JOYSTICK_XPAD_LEDS is not set
1444 1484 # CONFIG_JOYSTICK_PXRC is not set # CONFIG_JOYSTICK_PXRC is not set
1485 # CONFIG_JOYSTICK_QWIIC is not set
1445 1486 # CONFIG_JOYSTICK_FSIA6B is not set # CONFIG_JOYSTICK_FSIA6B is not set
1446 1487 # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TABLET is not set
1447 1488 # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_TOUCHSCREEN is not set
 
... ... CONFIG_UNIX98_PTYS=y
1528 1569 # CONFIG_MWAVE is not set # CONFIG_MWAVE is not set
1529 1570 # CONFIG_DEVMEM is not set # CONFIG_DEVMEM is not set
1530 1571 # CONFIG_NVRAM is not set # CONFIG_NVRAM is not set
1531 # CONFIG_RAW_DRIVER is not set
1532 1572 # CONFIG_DEVPORT is not set # CONFIG_DEVPORT is not set
1533 1573 # CONFIG_HPET is not set # CONFIG_HPET is not set
1534 1574 # CONFIG_HANGCHECK_TIMER is not set # CONFIG_HANGCHECK_TIMER is not set
1535 1575 # CONFIG_TCG_TPM is not set # CONFIG_TCG_TPM is not set
1536 1576 # CONFIG_TELCLOCK is not set # CONFIG_TELCLOCK is not set
1537 1577 # CONFIG_XILLYBUS is not set # CONFIG_XILLYBUS is not set
1538 # end of Character devices
1539
1578 # CONFIG_XILLYUSB is not set
1540 1579 # CONFIG_RANDOM_TRUST_BOOTLOADER is not set # CONFIG_RANDOM_TRUST_BOOTLOADER is not set
1580 # end of Character devices
1541 1581
1542 1582 # #
1543 1583 # I2C support # I2C support
 
... ... CONFIG_I2C_ALGOBIT=m
1604 1644 # Other I2C/SMBus bus drivers # Other I2C/SMBus bus drivers
1605 1645 # #
1606 1646 # CONFIG_I2C_MLXCPLD is not set # CONFIG_I2C_MLXCPLD is not set
1647 # CONFIG_I2C_VIRTIO is not set
1607 1648 # end of I2C Hardware Bus support # end of I2C Hardware Bus support
1608 1649
1609 1650 # CONFIG_I2C_STUB is not set # CONFIG_I2C_STUB is not set
 
... ... CONFIG_I2C_ALGOBIT=m
1623 1664 # PTP clock support # PTP clock support
1624 1665 # #
1625 1666 # CONFIG_PTP_1588_CLOCK is not set # CONFIG_PTP_1588_CLOCK is not set
1667 CONFIG_PTP_1588_CLOCK_OPTIONAL=y
1626 1668
1627 1669 # #
1628 1670 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 
... ... CONFIG_PINCTRL=y
1633 1675 # CONFIG_DEBUG_PINCTRL is not set # CONFIG_DEBUG_PINCTRL is not set
1634 1676 # CONFIG_PINCTRL_AMD is not set # CONFIG_PINCTRL_AMD is not set
1635 1677 # CONFIG_PINCTRL_MCP23S08 is not set # CONFIG_PINCTRL_MCP23S08 is not set
1678
1679 #
1680 # Intel pinctrl drivers
1681 #
1636 1682 # CONFIG_PINCTRL_BAYTRAIL is not set # CONFIG_PINCTRL_BAYTRAIL is not set
1637 1683 # CONFIG_PINCTRL_CHERRYVIEW is not set # CONFIG_PINCTRL_CHERRYVIEW is not set
1638 1684 # CONFIG_PINCTRL_LYNXPOINT is not set # CONFIG_PINCTRL_LYNXPOINT is not set
 
... ... CONFIG_PINCTRL=y
1650 1696 # CONFIG_PINCTRL_LEWISBURG is not set # CONFIG_PINCTRL_LEWISBURG is not set
1651 1697 # CONFIG_PINCTRL_SUNRISEPOINT is not set # CONFIG_PINCTRL_SUNRISEPOINT is not set
1652 1698 # CONFIG_PINCTRL_TIGERLAKE is not set # CONFIG_PINCTRL_TIGERLAKE is not set
1699 # end of Intel pinctrl drivers
1653 1700
1654 1701 # #
1655 1702 # Renesas pinctrl drivers # Renesas pinctrl drivers
 
... ... CONFIG_POWER_SUPPLY=y
1677 1724 # CONFIG_CHARGER_LP8727 is not set # CONFIG_CHARGER_LP8727 is not set
1678 1725 # CONFIG_CHARGER_LTC4162L is not set # CONFIG_CHARGER_LTC4162L is not set
1679 1726 # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ2415X is not set
1680 # CONFIG_CHARGER_SMB347 is not set
1681 1727 # CONFIG_BATTERY_GAUGE_LTC2941 is not set # CONFIG_BATTERY_GAUGE_LTC2941 is not set
1682 1728 # CONFIG_BATTERY_GOLDFISH is not set # CONFIG_BATTERY_GOLDFISH is not set
1729 # CONFIG_BATTERY_RT5033 is not set
1683 1730 # CONFIG_CHARGER_BD99954 is not set # CONFIG_CHARGER_BD99954 is not set
1684 1731 CONFIG_HWMON=m CONFIG_HWMON=m
1685 1732 # CONFIG_HWMON_DEBUG_CHIP is not set # CONFIG_HWMON_DEBUG_CHIP is not set
 
... ... CONFIG_HWMON=m
1704 1751 # CONFIG_SENSORS_ADT7470 is not set # CONFIG_SENSORS_ADT7470 is not set
1705 1752 # CONFIG_SENSORS_ADT7475 is not set # CONFIG_SENSORS_ADT7475 is not set
1706 1753 # CONFIG_SENSORS_AHT10 is not set # CONFIG_SENSORS_AHT10 is not set
1754 # CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set
1707 1755 # CONFIG_SENSORS_AS370 is not set # CONFIG_SENSORS_AS370 is not set
1708 1756 # CONFIG_SENSORS_ASC7621 is not set # CONFIG_SENSORS_ASC7621 is not set
1709 1757 # CONFIG_SENSORS_AXI_FAN_CONTROL is not set # CONFIG_SENSORS_AXI_FAN_CONTROL is not set
 
... ... CONFIG_HWMON=m
1751 1799 # CONFIG_SENSORS_MAX1668 is not set # CONFIG_SENSORS_MAX1668 is not set
1752 1800 # CONFIG_SENSORS_MAX197 is not set # CONFIG_SENSORS_MAX197 is not set
1753 1801 # CONFIG_SENSORS_MAX31730 is not set # CONFIG_SENSORS_MAX31730 is not set
1802 # CONFIG_SENSORS_MAX6620 is not set
1754 1803 # CONFIG_SENSORS_MAX6621 is not set # CONFIG_SENSORS_MAX6621 is not set
1755 1804 # CONFIG_SENSORS_MAX6639 is not set # CONFIG_SENSORS_MAX6639 is not set
1756 1805 # CONFIG_SENSORS_MAX6642 is not set # CONFIG_SENSORS_MAX6642 is not set
 
... ... CONFIG_HWMON=m
1787 1836 # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_PCF8591 is not set
1788 1837 # CONFIG_PMBUS is not set # CONFIG_PMBUS is not set
1789 1838 # CONFIG_SENSORS_SBTSI is not set # CONFIG_SENSORS_SBTSI is not set
1839 # CONFIG_SENSORS_SBRMI is not set
1790 1840 # CONFIG_SENSORS_SHT21 is not set # CONFIG_SENSORS_SHT21 is not set
1791 1841 # CONFIG_SENSORS_SHT3x is not set # CONFIG_SENSORS_SHT3x is not set
1842 # CONFIG_SENSORS_SHT4x is not set
1792 1843 # CONFIG_SENSORS_SHTC1 is not set # CONFIG_SENSORS_SHTC1 is not set
1793 1844 # CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SIS5595 is not set
1794 1845 # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_DME1737 is not set
 
... ... CONFIG_THERMAL_GOV_STEP_WISE=y
1861 1912
1862 1913 # CONFIG_INTEL_PCH_THERMAL is not set # CONFIG_INTEL_PCH_THERMAL is not set
1863 1914 # CONFIG_INTEL_TCC_COOLING is not set # CONFIG_INTEL_TCC_COOLING is not set
1915 # CONFIG_INTEL_MENLOW is not set
1864 1916 # end of Intel thermal drivers # end of Intel thermal drivers
1865 1917
1866 1918 # CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
 
... ... CONFIG_BCMA_POSSIBLE=y
1904 1956 # CONFIG_MFD_RETU is not set # CONFIG_MFD_RETU is not set
1905 1957 # CONFIG_MFD_PCF50633 is not set # CONFIG_MFD_PCF50633 is not set
1906 1958 # CONFIG_MFD_RDC321X is not set # CONFIG_MFD_RDC321X is not set
1959 # CONFIG_MFD_RT4831 is not set
1907 1960 # CONFIG_MFD_RT5033 is not set # CONFIG_MFD_RT5033 is not set
1908 1961 # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SI476X_CORE is not set
1909 1962 # CONFIG_MFD_SM501 is not set # CONFIG_MFD_SM501 is not set
 
... ... CONFIG_BCMA_POSSIBLE=y
1928 1981
1929 1982 # CONFIG_REGULATOR is not set # CONFIG_REGULATOR is not set
1930 1983 # CONFIG_RC_CORE is not set # CONFIG_RC_CORE is not set
1984
1985 #
1986 # CEC support
1987 #
1931 1988 # CONFIG_MEDIA_CEC_SUPPORT is not set # CONFIG_MEDIA_CEC_SUPPORT is not set
1989 # end of CEC support
1990
1932 1991 CONFIG_MEDIA_SUPPORT=m CONFIG_MEDIA_SUPPORT=m
1933 1992 # CONFIG_MEDIA_SUPPORT_FILTER is not set # CONFIG_MEDIA_SUPPORT_FILTER is not set
1934 1993 # CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set # CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
 
... ... CONFIG_MEDIA_ATTACH=y
2145 2204 # Camera sensor devices # Camera sensor devices
2146 2205 # #
2147 2206 # CONFIG_VIDEO_HI556 is not set # CONFIG_VIDEO_HI556 is not set
2207 # CONFIG_VIDEO_HI846 is not set
2148 2208 # CONFIG_VIDEO_IMX219 is not set # CONFIG_VIDEO_IMX219 is not set
2149 2209 # CONFIG_VIDEO_IMX258 is not set # CONFIG_VIDEO_IMX258 is not set
2150 2210 # CONFIG_VIDEO_IMX274 is not set # CONFIG_VIDEO_IMX274 is not set
 
... ... CONFIG_MEDIA_ATTACH=y
2171 2231 # CONFIG_VIDEO_OV9650 is not set # CONFIG_VIDEO_OV9650 is not set
2172 2232 # CONFIG_VIDEO_OV9734 is not set # CONFIG_VIDEO_OV9734 is not set
2173 2233 # CONFIG_VIDEO_OV13858 is not set # CONFIG_VIDEO_OV13858 is not set
2234 # CONFIG_VIDEO_OV13B10 is not set
2174 2235 # CONFIG_VIDEO_VS6624 is not set # CONFIG_VIDEO_VS6624 is not set
2175 2236 # CONFIG_VIDEO_MT9M001 is not set # CONFIG_VIDEO_MT9M001 is not set
2176 2237 # CONFIG_VIDEO_MT9M032 is not set # CONFIG_VIDEO_MT9M032 is not set
 
... ... CONFIG_MEDIA_TUNER=m
2318 2379 # #
2319 2380 # DVB-T (terrestrial) frontends # DVB-T (terrestrial) frontends
2320 2381 # #
2321 # CONFIG_DVB_SP8870 is not set
2322 2382 # CONFIG_DVB_SP887X is not set # CONFIG_DVB_SP887X is not set
2323 2383 # CONFIG_DVB_CX22700 is not set # CONFIG_DVB_CX22700 is not set
2324 2384 # CONFIG_DVB_CX22702 is not set # CONFIG_DVB_CX22702 is not set
 
... ... CONFIG_DRM=m
2432 2492 # CONFIG_DRM_DEBUG_SELFTEST is not set # CONFIG_DRM_DEBUG_SELFTEST is not set
2433 2493 CONFIG_DRM_KMS_HELPER=m CONFIG_DRM_KMS_HELPER=m
2434 2494 # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set
2495 # CONFIG_DRM_DEBUG_MODESET_LOCK is not set
2435 2496 # CONFIG_DRM_FBDEV_EMULATION is not set # CONFIG_DRM_FBDEV_EMULATION is not set
2436 2497 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
2437 2498 # CONFIG_DRM_DP_CEC is not set # CONFIG_DRM_DP_CEC is not set
 
... ... CONFIG_DRM_AMD_DC_DCN=y
2484 2545 # CONFIG_DRM_AST is not set # CONFIG_DRM_AST is not set
2485 2546 # CONFIG_DRM_MGAG200 is not set # CONFIG_DRM_MGAG200 is not set
2486 2547 # CONFIG_DRM_QXL is not set # CONFIG_DRM_QXL is not set
2487 # CONFIG_DRM_BOCHS is not set
2488 2548 CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL=y
2489 2549
2490 2550 # #
 
... ... CONFIG_DRM_PANEL_BRIDGE=y
2502 2562 # end of Display Interface Bridges # end of Display Interface Bridges
2503 2563
2504 2564 # CONFIG_DRM_ETNAVIV is not set # CONFIG_DRM_ETNAVIV is not set
2565 # CONFIG_DRM_BOCHS is not set
2505 2566 # CONFIG_DRM_CIRRUS_QEMU is not set # CONFIG_DRM_CIRRUS_QEMU is not set
2506 2567 # CONFIG_DRM_GM12U320 is not set # CONFIG_DRM_GM12U320 is not set
2507 2568 # CONFIG_DRM_SIMPLEDRM is not set # CONFIG_DRM_SIMPLEDRM is not set
 
... ... CONFIG_DRM_PANEL_BRIDGE=y
2509 2570 # CONFIG_DRM_GUD is not set # CONFIG_DRM_GUD is not set
2510 2571 # CONFIG_DRM_LEGACY is not set # CONFIG_DRM_LEGACY is not set
2511 2572 CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m
2573 CONFIG_DRM_NOMODESET=y
2512 2574
2513 2575 # #
2514 2576 # Frame buffer Devices # Frame buffer Devices
 
... ... CONFIG_SND_HDA_CODEC_REALTEK=m
2698 2760 # CONFIG_SND_HDA_CODEC_VIA is not set # CONFIG_SND_HDA_CODEC_VIA is not set
2699 2761 CONFIG_SND_HDA_CODEC_HDMI=m CONFIG_SND_HDA_CODEC_HDMI=m
2700 2762 # CONFIG_SND_HDA_CODEC_CIRRUS is not set # CONFIG_SND_HDA_CODEC_CIRRUS is not set
2763 # CONFIG_SND_HDA_CODEC_CS8409 is not set
2701 2764 # CONFIG_SND_HDA_CODEC_CONEXANT is not set # CONFIG_SND_HDA_CODEC_CONEXANT is not set
2702 2765 # CONFIG_SND_HDA_CODEC_CA0110 is not set # CONFIG_SND_HDA_CODEC_CA0110 is not set
2703 2766 # CONFIG_SND_HDA_CODEC_CA0132 is not set # CONFIG_SND_HDA_CODEC_CA0132 is not set
 
... ... CONFIG_HID_GENERIC=m
2778 2841 # CONFIG_HID_UCLOGIC is not set # CONFIG_HID_UCLOGIC is not set
2779 2842 # CONFIG_HID_WALTOP is not set # CONFIG_HID_WALTOP is not set
2780 2843 # CONFIG_HID_VIEWSONIC is not set # CONFIG_HID_VIEWSONIC is not set
2844 # CONFIG_HID_XIAOMI is not set
2781 2845 # CONFIG_HID_GYRATION is not set # CONFIG_HID_GYRATION is not set
2782 2846 # CONFIG_HID_ICADE is not set # CONFIG_HID_ICADE is not set
2783 2847 # CONFIG_HID_ITE is not set # CONFIG_HID_ITE is not set
 
... ... CONFIG_HID_GENERIC=m
2795 2859 # CONFIG_HID_MICROSOFT is not set # CONFIG_HID_MICROSOFT is not set
2796 2860 # CONFIG_HID_MONTEREY is not set # CONFIG_HID_MONTEREY is not set
2797 2861 # CONFIG_HID_MULTITOUCH is not set # CONFIG_HID_MULTITOUCH is not set
2862 # CONFIG_HID_NINTENDO is not set
2798 2863 # CONFIG_HID_NTI is not set # CONFIG_HID_NTI is not set
2799 2864 # CONFIG_HID_NTRIG is not set # CONFIG_HID_NTRIG is not set
2800 2865 # CONFIG_HID_ORTEK is not set # CONFIG_HID_ORTEK is not set
 
... ... CONFIG_HID_GENERIC=m
2803 2868 # CONFIG_HID_PETALYNX is not set # CONFIG_HID_PETALYNX is not set
2804 2869 # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PICOLCD is not set
2805 2870 # CONFIG_HID_PLANTRONICS is not set # CONFIG_HID_PLANTRONICS is not set
2806 # CONFIG_HID_PLAYSTATION is not set
2807 2871 # CONFIG_HID_PRIMAX is not set # CONFIG_HID_PRIMAX is not set
2808 2872 # CONFIG_HID_RETRODE is not set # CONFIG_HID_RETRODE is not set
2809 2873 # CONFIG_HID_ROCCAT is not set # CONFIG_HID_ROCCAT is not set
 
... ... CONFIG_UDMABUF=y
3170 3234 # CONFIG_DMABUF_DEBUG is not set # CONFIG_DMABUF_DEBUG is not set
3171 3235 # CONFIG_DMABUF_SELFTESTS is not set # CONFIG_DMABUF_SELFTESTS is not set
3172 3236 CONFIG_DMABUF_HEAPS=y CONFIG_DMABUF_HEAPS=y
3237 # CONFIG_DMABUF_SYSFS_STATS is not set
3173 3238 CONFIG_DMABUF_HEAPS_SYSTEM=y CONFIG_DMABUF_HEAPS_SYSTEM=y
3174 3239 # end of DMABUF options # end of DMABUF options
3175 3240
 
... ... CONFIG_PMC_ATOM=y
3195 3260 # CONFIG_MELLANOX_PLATFORM is not set # CONFIG_MELLANOX_PLATFORM is not set
3196 3261 # CONFIG_SURFACE_PLATFORMS is not set # CONFIG_SURFACE_PLATFORMS is not set
3197 3262 CONFIG_HAVE_CLK=y CONFIG_HAVE_CLK=y
3198 CONFIG_CLKDEV_LOOKUP=y
3199 3263 CONFIG_HAVE_CLK_PREPARE=y CONFIG_HAVE_CLK_PREPARE=y
3200 3264 CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK=y
3201 3265 # CONFIG_COMMON_CLK_MAX9485 is not set # CONFIG_COMMON_CLK_MAX9485 is not set
 
... ... CONFIG_IOMMU_SUPPORT=y
3225 3289 CONFIG_IOMMU_IO_PGTABLE=y CONFIG_IOMMU_IO_PGTABLE=y
3226 3290 # end of Generic IOMMU Pagetable Support # end of Generic IOMMU Pagetable Support
3227 3291
3292 # CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
3293 CONFIG_IOMMU_DEFAULT_DMA_LAZY=y
3228 3294 # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
3229 3295 CONFIG_IOMMU_DMA=y CONFIG_IOMMU_DMA=y
3230 3296 CONFIG_AMD_IOMMU=y CONFIG_AMD_IOMMU=y
 
... ... CONFIG_IRQ_REMAP=y
3310 3376 # #
3311 3377 # CONFIG_GENERIC_PHY is not set # CONFIG_GENERIC_PHY is not set
3312 3378 # CONFIG_USB_LGM_PHY is not set # CONFIG_USB_LGM_PHY is not set
3379 # CONFIG_PHY_CAN_TRANSCEIVER is not set
3380
3381 #
3382 # PHY drivers for Broadcom platforms
3383 #
3313 3384 # CONFIG_BCM_KONA_USB2_PHY is not set # CONFIG_BCM_KONA_USB2_PHY is not set
3385 # end of PHY drivers for Broadcom platforms
3386
3314 3387 # CONFIG_PHY_PXA_28NM_HSIC is not set # CONFIG_PHY_PXA_28NM_HSIC is not set
3315 3388 # CONFIG_PHY_PXA_28NM_USB2 is not set # CONFIG_PHY_PXA_28NM_USB2 is not set
3316 3389 # CONFIG_PHY_INTEL_LGM_EMMC is not set # CONFIG_PHY_INTEL_LGM_EMMC is not set
 
... ... CONFIG_FS_MBCACHE=m
3381 3454 CONFIG_EXPORTFS=y CONFIG_EXPORTFS=y
3382 3455 # CONFIG_EXPORTFS_BLOCK_OPS is not set # CONFIG_EXPORTFS_BLOCK_OPS is not set
3383 3456 CONFIG_FILE_LOCKING=y CONFIG_FILE_LOCKING=y
3384 # CONFIG_MANDATORY_FILE_LOCKING is not set
3385 3457 # CONFIG_FS_ENCRYPTION is not set # CONFIG_FS_ENCRYPTION is not set
3386 3458 # CONFIG_FS_VERITY is not set # CONFIG_FS_VERITY is not set
3387 3459 CONFIG_FSNOTIFY=y CONFIG_FSNOTIFY=y
 
... ... CONFIG_FAT_DEFAULT_UTF8=y
3419 3491 CONFIG_EXFAT_FS=m CONFIG_EXFAT_FS=m
3420 3492 CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
3421 3493 # CONFIG_NTFS_FS is not set # CONFIG_NTFS_FS is not set
3494 # CONFIG_NTFS3_FS is not set
3422 3495 # end of DOS/FAT/EXFAT/NT Filesystems # end of DOS/FAT/EXFAT/NT Filesystems
3423 3496
3424 3497 # #
 
... ... CONFIG_CRYPTO_CRC32C_INTEL=m
3654 3727 # CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set # CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
3655 3728 # CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set # CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
3656 3729 # CONFIG_CRYPTO_SM4 is not set # CONFIG_CRYPTO_SM4 is not set
3730 # CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64 is not set
3731 # CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set
3657 3732 # CONFIG_CRYPTO_TWOFISH is not set # CONFIG_CRYPTO_TWOFISH is not set
3658 3733 # CONFIG_CRYPTO_TWOFISH_X86_64 is not set # CONFIG_CRYPTO_TWOFISH_X86_64 is not set
3659 3734 # CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set # CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
 
... ... CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y
3764 3839 CONFIG_ARCH_HAS_COPY_MC=y CONFIG_ARCH_HAS_COPY_MC=y
3765 3840 CONFIG_ARCH_STACKWALK=y CONFIG_ARCH_STACKWALK=y
3766 3841 CONFIG_SBITMAP=y CONFIG_SBITMAP=y
3767 # CONFIG_STRING_SELFTEST is not set
3768 3842 # end of Library routines # end of Library routines
3769 3843
3770 3844 # #
 
... ... CONFIG_SBITMAP=y
3776 3850 # #
3777 3851 CONFIG_PRINTK_TIME=y CONFIG_PRINTK_TIME=y
3778 3852 # CONFIG_PRINTK_CALLER is not set # CONFIG_PRINTK_CALLER is not set
3853 # CONFIG_STACKTRACE_BUILD_ID is not set
3779 3854 CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
3780 3855 CONFIG_CONSOLE_LOGLEVEL_QUIET=4 CONFIG_CONSOLE_LOGLEVEL_QUIET=4
3781 3856 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 
... ... CONFIG_FRAME_WARN=2048
3796 3871 # CONFIG_HEADERS_INSTALL is not set # CONFIG_HEADERS_INSTALL is not set
3797 3872 # CONFIG_DEBUG_SECTION_MISMATCH is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set
3798 3873 # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
3799 # CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set
3874 # CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set
3800 3875 CONFIG_STACK_VALIDATION=y CONFIG_STACK_VALIDATION=y
3801 3876 # CONFIG_VMLINUX_MAP is not set # CONFIG_VMLINUX_MAP is not set
3802 3877 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 
... ... CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y
3845 3920 # CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set # CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set
3846 3921 CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN=y
3847 3922 CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
3923 CONFIG_CC_HAS_KASAN_GENERIC=y
3848 3924 CONFIG_HAVE_ARCH_KFENCE=y CONFIG_HAVE_ARCH_KFENCE=y
3849 3925 # CONFIG_KFENCE is not set # CONFIG_KFENCE is not set
3850 3926 # end of Memory Debugging # end of Memory Debugging
 
... ... CONFIG_RCU_CPU_STALL_TIMEOUT=21
3924 4000 # end of RCU Debugging # end of RCU Debugging
3925 4001
3926 4002 # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
3927 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
3928 4003 # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
3929 4004 # CONFIG_LATENCYTOP is not set # CONFIG_LATENCYTOP is not set
3930 4005 CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_USER_STACKTRACE_SUPPORT=y
3931 4006 CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y
3932 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
3933 4007 CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_DYNAMIC_FTRACE=y
3934 4008 CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
3935 4009 CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
 
... ... CONFIG_TRACING_SUPPORT=y
3943 4017 # CONFIG_FTRACE is not set # CONFIG_FTRACE is not set
3944 4018 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
3945 4019 # CONFIG_SAMPLES is not set # CONFIG_SAMPLES is not set
4020 CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
4021 CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y
3946 4022 CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
3947 4023
3948 4024 # #
3949 4025 # x86 Debugging # x86 Debugging
3950 4026 # #
3951 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
3952 4027 CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
3953 4028 # CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_X86_VERBOSE_BOOTUP is not set
3954 4029 # CONFIG_EARLY_PRINTK is not set # CONFIG_EARLY_PRINTK is not set
 
... ... CONFIG_UNWINDER_GUESS=y
3977 4052 # CONFIG_NOTIFIER_ERROR_INJECTION is not set # CONFIG_NOTIFIER_ERROR_INJECTION is not set
3978 4053 # CONFIG_FAULT_INJECTION is not set # CONFIG_FAULT_INJECTION is not set
3979 4054 CONFIG_ARCH_HAS_KCOV=y CONFIG_ARCH_HAS_KCOV=y
4055 CONFIG_CC_HAS_SANCOV_TRACE_PC=y
4056 # CONFIG_KCOV is not set
3980 4057 # CONFIG_RUNTIME_TESTING_MENU is not set # CONFIG_RUNTIME_TESTING_MENU is not set
3981 4058 CONFIG_ARCH_USE_MEMTEST=y CONFIG_ARCH_USE_MEMTEST=y
3982 4059 # CONFIG_MEMTEST is not set # CONFIG_MEMTEST is not set
File builders/linux-amd/flow_dissector.c deleted (index 888d423..0000000)
1 // SPDX-License-Identifier: GPL-2.0-only
2 #include <linux/kernel.h>
3 #include <linux/skbuff.h>
4 #include <linux/export.h>
5 #include <linux/ip.h>
6 #include <linux/ipv6.h>
7 #include <linux/if_vlan.h>
8 #include <net/dsa.h>
9 #include <net/dst_metadata.h>
10 #include <net/ip.h>
11 #include <net/ipv6.h>
12 #include <net/gre.h>
13 #include <net/pptp.h>
14 #include <net/tipc.h>
15 #include <linux/igmp.h>
16 #include <linux/icmp.h>
17 #include <linux/sctp.h>
18 #include <linux/dccp.h>
19 #include <linux/if_tunnel.h>
20 #include <linux/if_pppox.h>
21 #include <linux/ppp_defs.h>
22 #include <linux/stddef.h>
23 #include <linux/if_ether.h>
24 #include <linux/mpls.h>
25 #include <linux/tcp.h>
26 #include <linux/ptp_classify.h>
27 #include <net/flow_dissector.h>
28 #include <scsi/fc/fc_fcoe.h>
29 #include <uapi/linux/batadv_packet.h>
30 #include <linux/bpf.h>
31 #if IS_ENABLED(CONFIG_NF_CONNTRACK)
32 #include <net/netfilter/nf_conntrack_core.h>
33 #include <net/netfilter/nf_conntrack_labels.h>
34 #endif
35 #include <linux/bpf-netns.h>
36
37 static void dissector_set_key(struct flow_dissector *flow_dissector,
38 enum flow_dissector_key_id key_id)
39 {
40 flow_dissector->used_keys |= (1 << key_id);
41 }
42
43 void skb_flow_dissector_init(struct flow_dissector *flow_dissector,
44 const struct flow_dissector_key *key,
45 unsigned int key_count)
46 {
47 unsigned int i;
48
49 memset(flow_dissector, 0, sizeof(*flow_dissector));
50
51 for (i = 0; i < key_count; i++, key++) {
52 /* User should make sure that every key target offset is within
53 * boundaries of unsigned short.
54 */
55 BUG_ON(key->offset > USHRT_MAX);
56 BUG_ON(dissector_uses_key(flow_dissector,
57 key->key_id));
58
59 dissector_set_key(flow_dissector, key->key_id);
60 flow_dissector->offset[key->key_id] = key->offset;
61 }
62
63 /* Ensure that the dissector always includes control and basic key.
64 * That way we are able to avoid handling lack of these in fast path.
65 */
66 BUG_ON(!dissector_uses_key(flow_dissector,
67 FLOW_DISSECTOR_KEY_CONTROL));
68 BUG_ON(!dissector_uses_key(flow_dissector,
69 FLOW_DISSECTOR_KEY_BASIC));
70 }
71 EXPORT_SYMBOL(skb_flow_dissector_init);
72
73 #ifdef CONFIG_BPF_SYSCALL
74 int flow_dissector_bpf_prog_attach_check(struct net *net,
75 struct bpf_prog *prog)
76 {
77 enum netns_bpf_attach_type type = NETNS_BPF_FLOW_DISSECTOR;
78
79 if (net == &init_net) {
80 /* BPF flow dissector in the root namespace overrides
81 * any per-net-namespace one. When attaching to root,
82 * make sure we don't have any BPF program attached
83 * to the non-root namespaces.
84 */
85 struct net *ns;
86
87 for_each_net(ns) {
88 if (ns == &init_net)
89 continue;
90 if (rcu_access_pointer(ns->bpf.run_array[type]))
91 return -EEXIST;
92 }
93 } else {
94 /* Make sure root flow dissector is not attached
95 * when attaching to the non-root namespace.
96 */
97 if (rcu_access_pointer(init_net.bpf.run_array[type]))
98 return -EEXIST;
99 }
100
101 return 0;
102 }
103 #endif /* CONFIG_BPF_SYSCALL */
104
105 /**
106 * __skb_flow_get_ports - extract the upper layer ports and return them
107 * @skb: sk_buff to extract the ports from
108 * @thoff: transport header offset
109 * @ip_proto: protocol for which to get port offset
110 * @data: raw buffer pointer to the packet, if NULL use skb->data
111 * @hlen: packet header length, if @data is NULL use skb_headlen(skb)
112 *
113 * The function will try to retrieve the ports at offset thoff + poff where poff
114 * is the protocol port offset returned from proto_ports_offset
115 */
116 __be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto,
117 const void *data, int hlen)
118 {
119 int poff = proto_ports_offset(ip_proto);
120
121 if (!data) {
122 data = skb->data;
123 hlen = skb_headlen(skb);
124 }
125
126 if (poff >= 0) {
127 __be32 *ports, _ports;
128
129 ports = __skb_header_pointer(skb, thoff + poff,
130 sizeof(_ports), data, hlen, &_ports);
131 if (ports)
132 return *ports;
133 }
134
135 return 0;
136 }
137 EXPORT_SYMBOL(__skb_flow_get_ports);
138
139 static bool icmp_has_id(u8 type)
140 {
141 switch (type) {
142 case ICMP_ECHO:
143 case ICMP_ECHOREPLY:
144 case ICMP_TIMESTAMP:
145 case ICMP_TIMESTAMPREPLY:
146 case ICMPV6_ECHO_REQUEST:
147 case ICMPV6_ECHO_REPLY:
148 return true;
149 }
150
151 return false;
152 }
153
154 /**
155 * skb_flow_get_icmp_tci - extract ICMP(6) Type, Code and Identifier fields
156 * @skb: sk_buff to extract from
157 * @key_icmp: struct flow_dissector_key_icmp to fill
158 * @data: raw buffer pointer to the packet
159 * @thoff: offset to extract at
160 * @hlen: packet header length
161 */
162 void skb_flow_get_icmp_tci(const struct sk_buff *skb,
163 struct flow_dissector_key_icmp *key_icmp,
164 const void *data, int thoff, int hlen)
165 {
166 struct icmphdr *ih, _ih;
167
168 ih = __skb_header_pointer(skb, thoff, sizeof(_ih), data, hlen, &_ih);
169 if (!ih)
170 return;
171
172 key_icmp->type = ih->type;
173 key_icmp->code = ih->code;
174
175 /* As we use 0 to signal that the Id field is not present,
176 * avoid confusion with packets without such field
177 */
178 if (icmp_has_id(ih->type))
179 key_icmp->id = ih->un.echo.id ? ntohs(ih->un.echo.id) : 1;
180 else
181 key_icmp->id = 0;
182 }
183 EXPORT_SYMBOL(skb_flow_get_icmp_tci);
184
185 /* If FLOW_DISSECTOR_KEY_ICMP is set, dissect an ICMP packet
186 * using skb_flow_get_icmp_tci().
187 */
188 static void __skb_flow_dissect_icmp(const struct sk_buff *skb,
189 struct flow_dissector *flow_dissector,
190 void *target_container, const void *data,
191 int thoff, int hlen)
192 {
193 struct flow_dissector_key_icmp *key_icmp;
194
195 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_ICMP))
196 return;
197
198 key_icmp = skb_flow_dissector_target(flow_dissector,
199 FLOW_DISSECTOR_KEY_ICMP,
200 target_container);
201
202 skb_flow_get_icmp_tci(skb, key_icmp, data, thoff, hlen);
203 }
204
205 void skb_flow_dissect_meta(const struct sk_buff *skb,
206 struct flow_dissector *flow_dissector,
207 void *target_container)
208 {
209 struct flow_dissector_key_meta *meta;
210
211 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_META))
212 return;
213
214 meta = skb_flow_dissector_target(flow_dissector,
215 FLOW_DISSECTOR_KEY_META,
216 target_container);
217 meta->ingress_ifindex = skb->skb_iif;
218 }
219 EXPORT_SYMBOL(skb_flow_dissect_meta);
220
221 static void
222 skb_flow_dissect_set_enc_addr_type(enum flow_dissector_key_id type,
223 struct flow_dissector *flow_dissector,
224 void *target_container)
225 {
226 struct flow_dissector_key_control *ctrl;
227
228 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_ENC_CONTROL))
229 return;
230
231 ctrl = skb_flow_dissector_target(flow_dissector,
232 FLOW_DISSECTOR_KEY_ENC_CONTROL,
233 target_container);
234 ctrl->addr_type = type;
235 }
236
237 void
238 skb_flow_dissect_ct(const struct sk_buff *skb,
239 struct flow_dissector *flow_dissector,
240 void *target_container, u16 *ctinfo_map,
241 size_t mapsize, bool post_ct)
242 {
243 #if IS_ENABLED(CONFIG_NF_CONNTRACK)
244 struct flow_dissector_key_ct *key;
245 enum ip_conntrack_info ctinfo;
246 struct nf_conn_labels *cl;
247 struct nf_conn *ct;
248
249 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_CT))
250 return;
251
252 ct = nf_ct_get(skb, &ctinfo);
253 if (!ct && !post_ct)
254 return;
255
256 key = skb_flow_dissector_target(flow_dissector,
257 FLOW_DISSECTOR_KEY_CT,
258 target_container);
259
260 if (!ct) {
261 key->ct_state = TCA_FLOWER_KEY_CT_FLAGS_TRACKED |
262 TCA_FLOWER_KEY_CT_FLAGS_INVALID;
263 return;
264 }
265
266 if (ctinfo < mapsize)
267 key->ct_state = ctinfo_map[ctinfo];
268 #if IS_ENABLED(CONFIG_NF_CONNTRACK_ZONES)
269 key->ct_zone = ct->zone.id;
270 #endif
271 #if IS_ENABLED(CONFIG_NF_CONNTRACK_MARK)
272 key->ct_mark = ct->mark;
273 #endif
274
275 cl = nf_ct_labels_find(ct);
276 if (cl)
277 memcpy(key->ct_labels, cl->bits, sizeof(key->ct_labels));
278 #endif /* CONFIG_NF_CONNTRACK */
279 }
280 EXPORT_SYMBOL(skb_flow_dissect_ct);
281
282 void
283 skb_flow_dissect_tunnel_info(const struct sk_buff *skb,
284 struct flow_dissector *flow_dissector,
285 void *target_container)
286 {
287 struct ip_tunnel_info *info;
288 struct ip_tunnel_key *key;
289
290 /* A quick check to see if there might be something to do. */
291 if (!dissector_uses_key(flow_dissector,
292 FLOW_DISSECTOR_KEY_ENC_KEYID) &&
293 !dissector_uses_key(flow_dissector,
294 FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS) &&
295 !dissector_uses_key(flow_dissector,
296 FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS) &&
297 !dissector_uses_key(flow_dissector,
298 FLOW_DISSECTOR_KEY_ENC_CONTROL) &&
299 !dissector_uses_key(flow_dissector,
300 FLOW_DISSECTOR_KEY_ENC_PORTS) &&
301 !dissector_uses_key(flow_dissector,
302 FLOW_DISSECTOR_KEY_ENC_IP) &&
303 !dissector_uses_key(flow_dissector,
304 FLOW_DISSECTOR_KEY_ENC_OPTS))
305 return;
306
307 info = skb_tunnel_info(skb);
308 if (!info)
309 return;
310
311 key = &info->key;
312
313 switch (ip_tunnel_info_af(info)) {
314 case AF_INET:
315 skb_flow_dissect_set_enc_addr_type(FLOW_DISSECTOR_KEY_IPV4_ADDRS,
316 flow_dissector,
317 target_container);
318 if (dissector_uses_key(flow_dissector,
319 FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS)) {
320 struct flow_dissector_key_ipv4_addrs *ipv4;
321
322 ipv4 = skb_flow_dissector_target(flow_dissector,
323 FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS,
324 target_container);
325 ipv4->src = key->u.ipv4.src;
326 ipv4->dst = key->u.ipv4.dst;
327 }
328 break;
329 case AF_INET6:
330 skb_flow_dissect_set_enc_addr_type(FLOW_DISSECTOR_KEY_IPV6_ADDRS,
331 flow_dissector,
332 target_container);
333 if (dissector_uses_key(flow_dissector,
334 FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS)) {
335 struct flow_dissector_key_ipv6_addrs *ipv6;
336
337 ipv6 = skb_flow_dissector_target(flow_dissector,
338 FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS,
339 target_container);
340 ipv6->src = key->u.ipv6.src;
341 ipv6->dst = key->u.ipv6.dst;
342 }
343 break;
344 }
345
346 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
347 struct flow_dissector_key_keyid *keyid;
348
349 keyid = skb_flow_dissector_target(flow_dissector,
350 FLOW_DISSECTOR_KEY_ENC_KEYID,
351 target_container);
352 keyid->keyid = tunnel_id_to_key32(key->tun_id);
353 }
354
355 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_ENC_PORTS)) {
356 struct flow_dissector_key_ports *tp;
357
358 tp = skb_flow_dissector_target(flow_dissector,
359 FLOW_DISSECTOR_KEY_ENC_PORTS,
360 target_container);
361 tp->src = key->tp_src;
362 tp->dst = key->tp_dst;
363 }
364
365 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_ENC_IP)) {
366 struct flow_dissector_key_ip *ip;
367
368 ip = skb_flow_dissector_target(flow_dissector,
369 FLOW_DISSECTOR_KEY_ENC_IP,
370 target_container);
371 ip->tos = key->tos;
372 ip->ttl = key->ttl;
373 }
374
375 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_ENC_OPTS)) {
376 struct flow_dissector_key_enc_opts *enc_opt;
377
378 enc_opt = skb_flow_dissector_target(flow_dissector,
379 FLOW_DISSECTOR_KEY_ENC_OPTS,
380 target_container);
381
382 if (info->options_len) {
383 enc_opt->len = info->options_len;
384 ip_tunnel_info_opts_get(enc_opt->data, info);
385 enc_opt->dst_opt_type = info->key.tun_flags &
386 TUNNEL_OPTIONS_PRESENT;
387 }
388 }
389 }
390 EXPORT_SYMBOL(skb_flow_dissect_tunnel_info);
391
392 void skb_flow_dissect_hash(const struct sk_buff *skb,
393 struct flow_dissector *flow_dissector,
394 void *target_container)
395 {
396 struct flow_dissector_key_hash *key;
397
398 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_HASH))
399 return;
400
401 key = skb_flow_dissector_target(flow_dissector,
402 FLOW_DISSECTOR_KEY_HASH,
403 target_container);
404
405 key->hash = skb_get_hash_raw(skb);
406 }
407 EXPORT_SYMBOL(skb_flow_dissect_hash);
408
409 static enum flow_dissect_ret
410 __skb_flow_dissect_mpls(const struct sk_buff *skb,
411 struct flow_dissector *flow_dissector,
412 void *target_container, const void *data, int nhoff,
413 int hlen, int lse_index, bool *entropy_label)
414 {
415 struct mpls_label *hdr, _hdr;
416 u32 entry, label, bos;
417
418 if (!dissector_uses_key(flow_dissector,
419 FLOW_DISSECTOR_KEY_MPLS_ENTROPY) &&
420 !dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_MPLS))
421 return FLOW_DISSECT_RET_OUT_GOOD;
422
423 if (lse_index >= FLOW_DIS_MPLS_MAX)
424 return FLOW_DISSECT_RET_OUT_GOOD;
425
426 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data,
427 hlen, &_hdr);
428 if (!hdr)
429 return FLOW_DISSECT_RET_OUT_BAD;
430
431 entry = ntohl(hdr->entry);
432 label = (entry & MPLS_LS_LABEL_MASK) >> MPLS_LS_LABEL_SHIFT;
433 bos = (entry & MPLS_LS_S_MASK) >> MPLS_LS_S_SHIFT;
434
435 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_MPLS)) {
436 struct flow_dissector_key_mpls *key_mpls;
437 struct flow_dissector_mpls_lse *lse;
438
439 key_mpls = skb_flow_dissector_target(flow_dissector,
440 FLOW_DISSECTOR_KEY_MPLS,
441 target_container);
442 lse = &key_mpls->ls[lse_index];
443
444 lse->mpls_ttl = (entry & MPLS_LS_TTL_MASK) >> MPLS_LS_TTL_SHIFT;
445 lse->mpls_bos = bos;
446 lse->mpls_tc = (entry & MPLS_LS_TC_MASK) >> MPLS_LS_TC_SHIFT;
447 lse->mpls_label = label;
448 dissector_set_mpls_lse(key_mpls, lse_index);
449 }
450
451 if (*entropy_label &&
452 dissector_uses_key(flow_dissector,
453 FLOW_DISSECTOR_KEY_MPLS_ENTROPY)) {
454 struct flow_dissector_key_keyid *key_keyid;
455
456 key_keyid = skb_flow_dissector_target(flow_dissector,
457 FLOW_DISSECTOR_KEY_MPLS_ENTROPY,
458 target_container);
459 key_keyid->keyid = cpu_to_be32(label);
460 }
461
462 *entropy_label = label == MPLS_LABEL_ENTROPY;
463
464 return bos ? FLOW_DISSECT_RET_OUT_GOOD : FLOW_DISSECT_RET_PROTO_AGAIN;
465 }
466
467 static enum flow_dissect_ret
468 __skb_flow_dissect_arp(const struct sk_buff *skb,
469 struct flow_dissector *flow_dissector,
470 void *target_container, const void *data,
471 int nhoff, int hlen)
472 {
473 struct flow_dissector_key_arp *key_arp;
474 struct {
475 unsigned char ar_sha[ETH_ALEN];
476 unsigned char ar_sip[4];
477 unsigned char ar_tha[ETH_ALEN];
478 unsigned char ar_tip[4];
479 } *arp_eth, _arp_eth;
480 const struct arphdr *arp;
481 struct arphdr _arp;
482
483 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_ARP))
484 return FLOW_DISSECT_RET_OUT_GOOD;
485
486 arp = __skb_header_pointer(skb, nhoff, sizeof(_arp), data,
487 hlen, &_arp);
488 if (!arp)
489 return FLOW_DISSECT_RET_OUT_BAD;
490
491 if (arp->ar_hrd != HTONS(ARPHRD_ETHER) ||
492 arp->ar_pro != HTONS(ETH_P_IP) ||
493 arp->ar_hln != ETH_ALEN ||
494 arp->ar_pln != 4 ||
495 (arp->ar_op != HTONS(ARPOP_REPLY) &&
496 arp->ar_op != HTONS(ARPOP_REQUEST)))
497 return FLOW_DISSECT_RET_OUT_BAD;
498
499 arp_eth = __skb_header_pointer(skb, nhoff + sizeof(_arp),
500 sizeof(_arp_eth), data,
501 hlen, &_arp_eth);
502 if (!arp_eth)
503 return FLOW_DISSECT_RET_OUT_BAD;
504
505 key_arp = skb_flow_dissector_target(flow_dissector,
506 FLOW_DISSECTOR_KEY_ARP,
507 target_container);
508
509 memcpy(&key_arp->sip, arp_eth->ar_sip, sizeof(key_arp->sip));
510 memcpy(&key_arp->tip, arp_eth->ar_tip, sizeof(key_arp->tip));
511
512 /* Only store the lower byte of the opcode;
513 * this covers ARPOP_REPLY and ARPOP_REQUEST.
514 */
515 key_arp->op = ntohs(arp->ar_op) & 0xff;
516
517 ether_addr_copy(key_arp->sha, arp_eth->ar_sha);
518 ether_addr_copy(key_arp->tha, arp_eth->ar_tha);
519
520 return FLOW_DISSECT_RET_OUT_GOOD;
521 }
522
523 static enum flow_dissect_ret
524 __skb_flow_dissect_gre(const struct sk_buff *skb,
525 struct flow_dissector_key_control *key_control,
526 struct flow_dissector *flow_dissector,
527 void *target_container, const void *data,
528 __be16 *p_proto, int *p_nhoff, int *p_hlen,
529 unsigned int flags)
530 {
531 struct flow_dissector_key_keyid *key_keyid;
532 struct gre_base_hdr *hdr, _hdr;
533 int offset = 0;
534 u16 gre_ver;
535
536 hdr = __skb_header_pointer(skb, *p_nhoff, sizeof(_hdr),
537 data, *p_hlen, &_hdr);
538 if (!hdr)
539 return FLOW_DISSECT_RET_OUT_BAD;
540
541 /* Only look inside GRE without routing */
542 if (hdr->flags & GRE_ROUTING)
543 return FLOW_DISSECT_RET_OUT_GOOD;
544
545 /* Only look inside GRE for version 0 and 1 */
546 gre_ver = ntohs(hdr->flags & GRE_VERSION);
547 if (gre_ver > 1)
548 return FLOW_DISSECT_RET_OUT_GOOD;
549
550 *p_proto = hdr->protocol;
551 if (gre_ver) {
552 /* Version1 must be PPTP, and check the flags */
553 if (!(*p_proto == GRE_PROTO_PPP && (hdr->flags & GRE_KEY)))
554 return FLOW_DISSECT_RET_OUT_GOOD;
555 }
556
557 offset += sizeof(struct gre_base_hdr);
558
559 if (hdr->flags & GRE_CSUM)
560 offset += sizeof_field(struct gre_full_hdr, csum) +
561 sizeof_field(struct gre_full_hdr, reserved1);
562
563 if (hdr->flags & GRE_KEY) {
564 const __be32 *keyid;
565 __be32 _keyid;
566
567 keyid = __skb_header_pointer(skb, *p_nhoff + offset,
568 sizeof(_keyid),
569 data, *p_hlen, &_keyid);
570 if (!keyid)
571 return FLOW_DISSECT_RET_OUT_BAD;
572
573 if (dissector_uses_key(flow_dissector,
574 FLOW_DISSECTOR_KEY_GRE_KEYID)) {
575 key_keyid = skb_flow_dissector_target(flow_dissector,
576 FLOW_DISSECTOR_KEY_GRE_KEYID,
577 target_container);
578 if (gre_ver == 0)
579 key_keyid->keyid = *keyid;
580 else
581 key_keyid->keyid = *keyid & GRE_PPTP_KEY_MASK;
582 }
583 offset += sizeof_field(struct gre_full_hdr, key);
584 }
585
586 if (hdr->flags & GRE_SEQ)
587 offset += sizeof_field(struct pptp_gre_header, seq);
588
589 if (gre_ver == 0) {
590 if (*p_proto == HTONS(ETH_P_TEB)) {
591 const struct ethhdr *eth;
592 struct ethhdr _eth;
593
594 eth = __skb_header_pointer(skb, *p_nhoff + offset,
595 sizeof(_eth),
596 data, *p_hlen, &_eth);
597 if (!eth)
598 return FLOW_DISSECT_RET_OUT_BAD;
599 *p_proto = eth->h_proto;
600 offset += sizeof(*eth);
601
602 /* Cap headers that we access via pointers at the
603 * end of the Ethernet header as our maximum alignment
604 * at that point is only 2 bytes.
605 */
606 if (NET_IP_ALIGN)
607 *p_hlen = *p_nhoff + offset;
608 }
609 } else { /* version 1, must be PPTP */
610 u8 _ppp_hdr[PPP_HDRLEN];
611 u8 *ppp_hdr;
612
613 if (hdr->flags & GRE_ACK)
614 offset += sizeof_field(struct pptp_gre_header, ack);
615
616 ppp_hdr = __skb_header_pointer(skb, *p_nhoff + offset,
617 sizeof(_ppp_hdr),
618 data, *p_hlen, _ppp_hdr);
619 if (!ppp_hdr)
620 return FLOW_DISSECT_RET_OUT_BAD;
621
622 switch (PPP_PROTOCOL(ppp_hdr)) {
623 case PPP_IP:
624 *p_proto = HTONS(ETH_P_IP);
625 break;
626 case PPP_IPV6:
627 *p_proto = HTONS(ETH_P_IPV6);
628 break;
629 default:
630 /* Could probably catch some more like MPLS */
631 break;
632 }
633
634 offset += PPP_HDRLEN;
635 }
636
637 *p_nhoff += offset;
638 key_control->flags |= FLOW_DIS_ENCAPSULATION;
639 if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP)
640 return FLOW_DISSECT_RET_OUT_GOOD;
641
642 return FLOW_DISSECT_RET_PROTO_AGAIN;
643 }
644
645 /**
646 * __skb_flow_dissect_batadv() - dissect batman-adv header
647 * @skb: sk_buff to with the batman-adv header
648 * @key_control: flow dissectors control key
649 * @data: raw buffer pointer to the packet, if NULL use skb->data
650 * @p_proto: pointer used to update the protocol to process next
651 * @p_nhoff: pointer used to update inner network header offset
652 * @hlen: packet header length
653 * @flags: any combination of FLOW_DISSECTOR_F_*
654 *
655 * ETH_P_BATMAN packets are tried to be dissected. Only
656 * &struct batadv_unicast packets are actually processed because they contain an
657 * inner ethernet header and are usually followed by actual network header. This
658 * allows the flow dissector to continue processing the packet.
659 *
660 * Return: FLOW_DISSECT_RET_PROTO_AGAIN when &struct batadv_unicast was found,
661 * FLOW_DISSECT_RET_OUT_GOOD when dissector should stop after encapsulation,
662 * otherwise FLOW_DISSECT_RET_OUT_BAD
663 */
664 static enum flow_dissect_ret
665 __skb_flow_dissect_batadv(const struct sk_buff *skb,
666 struct flow_dissector_key_control *key_control,
667 const void *data, __be16 *p_proto, int *p_nhoff,
668 int hlen, unsigned int flags)
669 {
670 struct {
671 struct batadv_unicast_packet batadv_unicast;
672 struct ethhdr eth;
673 } *hdr, _hdr;
674
675 hdr = __skb_header_pointer(skb, *p_nhoff, sizeof(_hdr), data, hlen,
676 &_hdr);
677 if (!hdr)
678 return FLOW_DISSECT_RET_OUT_BAD;
679
680 if (hdr->batadv_unicast.version != BATADV_COMPAT_VERSION)
681 return FLOW_DISSECT_RET_OUT_BAD;
682
683 if (hdr->batadv_unicast.packet_type != BATADV_UNICAST)
684 return FLOW_DISSECT_RET_OUT_BAD;
685
686 *p_proto = hdr->eth.h_proto;
687 *p_nhoff += sizeof(*hdr);
688
689 key_control->flags |= FLOW_DIS_ENCAPSULATION;
690 if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP)
691 return FLOW_DISSECT_RET_OUT_GOOD;
692
693 return FLOW_DISSECT_RET_PROTO_AGAIN;
694 }
695
696 static void
697 __skb_flow_dissect_tcp(const struct sk_buff *skb,
698 struct flow_dissector *flow_dissector,
699 void *target_container, const void *data,
700 int thoff, int hlen)
701 {
702 struct flow_dissector_key_tcp *key_tcp;
703 struct tcphdr *th, _th;
704
705 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_TCP))
706 return;
707
708 th = __skb_header_pointer(skb, thoff, sizeof(_th), data, hlen, &_th);
709 if (!th)
710 return;
711
712 if (unlikely(__tcp_hdrlen(th) < sizeof(_th)))
713 return;
714
715 key_tcp = skb_flow_dissector_target(flow_dissector,
716 FLOW_DISSECTOR_KEY_TCP,
717 target_container);
718 key_tcp->flags = (*(__be16 *) &tcp_flag_word(th) & HTONS(0x0FFF));
719 }
720
721 static void
722 __skb_flow_dissect_ports(const struct sk_buff *skb,
723 struct flow_dissector *flow_dissector,
724 void *target_container, const void *data,
725 int nhoff, u8 ip_proto, int hlen)
726 {
727 enum flow_dissector_key_id dissector_ports = FLOW_DISSECTOR_KEY_MAX;
728 struct flow_dissector_key_ports *key_ports;
729
730 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_PORTS))
731 dissector_ports = FLOW_DISSECTOR_KEY_PORTS;
732 else if (dissector_uses_key(flow_dissector,
733 FLOW_DISSECTOR_KEY_PORTS_RANGE))
734 dissector_ports = FLOW_DISSECTOR_KEY_PORTS_RANGE;
735
736 if (dissector_ports == FLOW_DISSECTOR_KEY_MAX)
737 return;
738
739 key_ports = skb_flow_dissector_target(flow_dissector,
740 dissector_ports,
741 target_container);
742 key_ports->ports = __skb_flow_get_ports(skb, nhoff, ip_proto,
743 data, hlen);
744 }
745
746 static void
747 __skb_flow_dissect_ipv4(const struct sk_buff *skb,
748 struct flow_dissector *flow_dissector,
749 void *target_container, const void *data,
750 const struct iphdr *iph)
751 {
752 struct flow_dissector_key_ip *key_ip;
753
754 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_IP))
755 return;
756
757 key_ip = skb_flow_dissector_target(flow_dissector,
758 FLOW_DISSECTOR_KEY_IP,
759 target_container);
760 key_ip->tos = iph->tos;
761 key_ip->ttl = iph->ttl;
762 }
763
764 static void
765 __skb_flow_dissect_ipv6(const struct sk_buff *skb,
766 struct flow_dissector *flow_dissector,
767 void *target_container, const void *data,
768 const struct ipv6hdr *iph)
769 {
770 struct flow_dissector_key_ip *key_ip;
771
772 if (!dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_IP))
773 return;
774
775 key_ip = skb_flow_dissector_target(flow_dissector,
776 FLOW_DISSECTOR_KEY_IP,
777 target_container);
778 key_ip->tos = ipv6_get_dsfield(iph);
779 key_ip->ttl = iph->hop_limit;
780 }
781
782 /* Maximum number of protocol headers that can be parsed in
783 * __skb_flow_dissect
784 */
785 #define MAX_FLOW_DISSECT_HDRS 15
786
787 static bool skb_flow_dissect_allowed(int *num_hdrs)
788 {
789 ++*num_hdrs;
790
791 return (*num_hdrs <= MAX_FLOW_DISSECT_HDRS);
792 }
793
794 static void __skb_flow_bpf_to_target(const struct bpf_flow_keys *flow_keys,
795 struct flow_dissector *flow_dissector,
796 void *target_container)
797 {
798 struct flow_dissector_key_ports *key_ports = NULL;
799 struct flow_dissector_key_control *key_control;
800 struct flow_dissector_key_basic *key_basic;
801 struct flow_dissector_key_addrs *key_addrs;
802 struct flow_dissector_key_tags *key_tags;
803
804 key_control = skb_flow_dissector_target(flow_dissector,
805 FLOW_DISSECTOR_KEY_CONTROL,
806 target_container);
807 key_control->thoff = flow_keys->thoff;
808 if (flow_keys->is_frag)
809 key_control->flags |= FLOW_DIS_IS_FRAGMENT;
810 if (flow_keys->is_first_frag)
811 key_control->flags |= FLOW_DIS_FIRST_FRAG;
812 if (flow_keys->is_encap)
813 key_control->flags |= FLOW_DIS_ENCAPSULATION;
814
815 key_basic = skb_flow_dissector_target(flow_dissector,
816 FLOW_DISSECTOR_KEY_BASIC,
817 target_container);
818 key_basic->n_proto = flow_keys->n_proto;
819 key_basic->ip_proto = flow_keys->ip_proto;
820
821 if (flow_keys->addr_proto == ETH_P_IP &&
822 dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
823 key_addrs = skb_flow_dissector_target(flow_dissector,
824 FLOW_DISSECTOR_KEY_IPV4_ADDRS,
825 target_container);
826 key_addrs->v4addrs.src = flow_keys->ipv4_src;
827 key_addrs->v4addrs.dst = flow_keys->ipv4_dst;
828 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
829 } else if (flow_keys->addr_proto == ETH_P_IPV6 &&
830 dissector_uses_key(flow_dissector,
831 FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
832 key_addrs = skb_flow_dissector_target(flow_dissector,
833 FLOW_DISSECTOR_KEY_IPV6_ADDRS,
834 target_container);
835 memcpy(&key_addrs->v6addrs.src, &flow_keys->ipv6_src,
836 sizeof(key_addrs->v6addrs.src));
837 memcpy(&key_addrs->v6addrs.dst, &flow_keys->ipv6_dst,
838 sizeof(key_addrs->v6addrs.dst));
839 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
840 }
841
842 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_PORTS))
843 key_ports = skb_flow_dissector_target(flow_dissector,
844 FLOW_DISSECTOR_KEY_PORTS,
845 target_container);
846 else if (dissector_uses_key(flow_dissector,
847 FLOW_DISSECTOR_KEY_PORTS_RANGE))
848 key_ports = skb_flow_dissector_target(flow_dissector,
849 FLOW_DISSECTOR_KEY_PORTS_RANGE,
850 target_container);
851
852 if (key_ports) {
853 key_ports->src = flow_keys->sport;
854 key_ports->dst = flow_keys->dport;
855 }
856
857 if (dissector_uses_key(flow_dissector,
858 FLOW_DISSECTOR_KEY_FLOW_LABEL)) {
859 key_tags = skb_flow_dissector_target(flow_dissector,
860 FLOW_DISSECTOR_KEY_FLOW_LABEL,
861 target_container);
862 key_tags->flow_label = ntohl(flow_keys->flow_label);
863 }
864 }
865
866 bool bpf_flow_dissect(struct bpf_prog *prog, struct bpf_flow_dissector *ctx,
867 __be16 proto, int nhoff, int hlen, unsigned int flags)
868 {
869 struct bpf_flow_keys *flow_keys = ctx->flow_keys;
870 u32 result;
871
872 /* Pass parameters to the BPF program */
873 memset(flow_keys, 0, sizeof(*flow_keys));
874 flow_keys->n_proto = proto;
875 flow_keys->nhoff = nhoff;
876 flow_keys->thoff = flow_keys->nhoff;
877
878 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG !=
879 (int)FLOW_DISSECTOR_F_PARSE_1ST_FRAG);
880 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL !=
881 (int)FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL);
882 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP !=
883 (int)FLOW_DISSECTOR_F_STOP_AT_ENCAP);
884 flow_keys->flags = flags;
885
886 result = bpf_prog_run_pin_on_cpu(prog, ctx);
887
888 flow_keys->nhoff = clamp_t(u16, flow_keys->nhoff, nhoff, hlen);
889 flow_keys->thoff = clamp_t(u16, flow_keys->thoff,
890 flow_keys->nhoff, hlen);
891
892 return result == BPF_OK;
893 }
894
895 /**
896 * __skb_flow_dissect - extract the flow_keys struct and return it
897 * @net: associated network namespace, derived from @skb if NULL
898 * @skb: sk_buff to extract the flow from, can be NULL if the rest are specified
899 * @flow_dissector: list of keys to dissect
900 * @target_container: target structure to put dissected values into
901 * @data: raw buffer pointer to the packet, if NULL use skb->data
902 * @proto: protocol for which to get the flow, if @data is NULL use skb->protocol
903 * @nhoff: network header offset, if @data is NULL use skb_network_offset(skb)
904 * @hlen: packet header length, if @data is NULL use skb_headlen(skb)
905 * @flags: flags that control the dissection process, e.g.
906 * FLOW_DISSECTOR_F_STOP_AT_ENCAP.
907 *
908 * The function will try to retrieve individual keys into target specified
909 * by flow_dissector from either the skbuff or a raw buffer specified by the
910 * rest parameters.
911 *
912 * Caller must take care of zeroing target container memory.
913 */
914 bool __skb_flow_dissect(const struct net *net,
915 const struct sk_buff *skb,
916 struct flow_dissector *flow_dissector,
917 void *target_container, const void *data,
918 __be16 proto, int nhoff, int hlen, unsigned int flags)
919 {
920 struct flow_dissector_key_control *key_control;
921 struct flow_dissector_key_basic *key_basic;
922 struct flow_dissector_key_addrs *key_addrs;
923 struct flow_dissector_key_tags *key_tags;
924 struct flow_dissector_key_vlan *key_vlan;
925 enum flow_dissect_ret fdret;
926 enum flow_dissector_key_id dissector_vlan = FLOW_DISSECTOR_KEY_MAX;
927 bool mpls_el = false;
928 int mpls_lse = 0;
929 int num_hdrs = 0;
930 u8 ip_proto = 0;
931 bool ret;
932
933 if (!data) {
934 data = skb->data;
935 proto = skb_vlan_tag_present(skb) ?
936 skb->vlan_proto : skb->protocol;
937 nhoff = skb_network_offset(skb);
938 hlen = skb_headlen(skb);
939 #if IS_ENABLED(CONFIG_NET_DSA)
940 if (unlikely(skb->dev && netdev_uses_dsa(skb->dev) &&
941 proto == HTONS(ETH_P_XDSA))) {
942 const struct dsa_device_ops *ops;
943 int offset = 0;
944
945 ops = skb->dev->dsa_ptr->tag_ops;
946 /* Tail taggers don't break flow dissection */
947 if (!ops->tail_tag) {
948 if (ops->flow_dissect)
949 ops->flow_dissect(skb, &proto, &offset);
950 else
951 dsa_tag_generic_flow_dissect(skb,
952 &proto,
953 &offset);
954 hlen -= offset;
955 nhoff += offset;
956 }
957 }
958 #endif
959 }
960
961 /* It is ensured by skb_flow_dissector_init() that control key will
962 * be always present.
963 */
964 key_control = skb_flow_dissector_target(flow_dissector,
965 FLOW_DISSECTOR_KEY_CONTROL,
966 target_container);
967
968 /* It is ensured by skb_flow_dissector_init() that basic key will
969 * be always present.
970 */
971 key_basic = skb_flow_dissector_target(flow_dissector,
972 FLOW_DISSECTOR_KEY_BASIC,
973 target_container);
974
975 if (skb) {
976 if (!net) {
977 if (skb->dev)
978 net = dev_net(skb->dev);
979 else if (skb->sk)
980 net = sock_net(skb->sk);
981 }
982 }
983
984 WARN_ON_ONCE(!net);
985 if (net) {
986 enum netns_bpf_attach_type type = NETNS_BPF_FLOW_DISSECTOR;
987 struct bpf_prog_array *run_array;
988
989 rcu_read_lock();
990 run_array = rcu_dereference(init_net.bpf.run_array[type]);
991 if (!run_array)
992 run_array = rcu_dereference(net->bpf.run_array[type]);
993
994 if (run_array) {
995 struct bpf_flow_keys flow_keys;
996 struct bpf_flow_dissector ctx = {
997 .flow_keys = &flow_keys,
998 .data = data,
999 .data_end = data + hlen,
1000 };
1001 __be16 n_proto = proto;
1002 struct bpf_prog *prog;
1003
1004 if (skb) {
1005 ctx.skb = skb;
1006 /* we can't use 'proto' in the skb case
1007 * because it might be set to skb->vlan_proto
1008 * which has been pulled from the data
1009 */
1010 n_proto = skb->protocol;
1011 }
1012
1013 prog = READ_ONCE(run_array->items[0].prog);
1014 ret = bpf_flow_dissect(prog, &ctx, n_proto, nhoff,
1015 hlen, flags);
1016 __skb_flow_bpf_to_target(&flow_keys, flow_dissector,
1017 target_container);
1018 rcu_read_unlock();
1019 return ret;
1020 }
1021 rcu_read_unlock();
1022 }
1023
1024 if (dissector_uses_key(flow_dissector,
1025 FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
1026 struct ethhdr *eth = eth_hdr(skb);
1027 struct flow_dissector_key_eth_addrs *key_eth_addrs;
1028
1029 key_eth_addrs = skb_flow_dissector_target(flow_dissector,
1030 FLOW_DISSECTOR_KEY_ETH_ADDRS,
1031 target_container);
1032 memcpy(key_eth_addrs, &eth->h_dest, sizeof(*key_eth_addrs));
1033 }
1034
1035 proto_again:
1036 fdret = FLOW_DISSECT_RET_CONTINUE;
1037
1038 switch (proto) {
1039 case HTONS(ETH_P_IP): {
1040 const struct iphdr *iph;
1041 struct iphdr _iph;
1042
1043 iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph);
1044 if (!iph || iph->ihl < 5) {
1045 fdret = FLOW_DISSECT_RET_OUT_BAD;
1046 break;
1047 }
1048
1049 nhoff += iph->ihl * 4;
1050
1051 ip_proto = iph->protocol;
1052
1053 if (dissector_uses_key(flow_dissector,
1054 FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
1055 key_addrs = skb_flow_dissector_target(flow_dissector,
1056 FLOW_DISSECTOR_KEY_IPV4_ADDRS,
1057 target_container);
1058
1059 memcpy(&key_addrs->v4addrs, &iph->saddr,
1060 sizeof(key_addrs->v4addrs));
1061 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
1062 }
1063
1064 __skb_flow_dissect_ipv4(skb, flow_dissector,
1065 target_container, data, iph);
1066
1067 if (ip_is_fragment(iph)) {
1068 key_control->flags |= FLOW_DIS_IS_FRAGMENT;
1069
1070 if (iph->frag_off & HTONS(IP_OFFSET)) {
1071 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1072 break;
1073 } else {
1074 key_control->flags |= FLOW_DIS_FIRST_FRAG;
1075 if (!(flags &
1076 FLOW_DISSECTOR_F_PARSE_1ST_FRAG)) {
1077 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1078 break;
1079 }
1080 }
1081 }
1082
1083 break;
1084 }
1085 case HTONS(ETH_P_IPV6): {
1086 const struct ipv6hdr *iph;
1087 struct ipv6hdr _iph;
1088
1089 iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph);
1090 if (!iph) {
1091 fdret = FLOW_DISSECT_RET_OUT_BAD;
1092 break;
1093 }
1094
1095 ip_proto = iph->nexthdr;
1096 nhoff += sizeof(struct ipv6hdr);
1097
1098 if (dissector_uses_key(flow_dissector,
1099 FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
1100 key_addrs = skb_flow_dissector_target(flow_dissector,
1101 FLOW_DISSECTOR_KEY_IPV6_ADDRS,
1102 target_container);
1103
1104 memcpy(&key_addrs->v6addrs, &iph->saddr,
1105 sizeof(key_addrs->v6addrs));
1106 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
1107 }
1108
1109 if ((dissector_uses_key(flow_dissector,
1110 FLOW_DISSECTOR_KEY_FLOW_LABEL) ||
1111 (flags & FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL)) &&
1112 ip6_flowlabel(iph)) {
1113 __be32 flow_label = ip6_flowlabel(iph);
1114
1115 if (dissector_uses_key(flow_dissector,
1116 FLOW_DISSECTOR_KEY_FLOW_LABEL)) {
1117 key_tags = skb_flow_dissector_target(flow_dissector,
1118 FLOW_DISSECTOR_KEY_FLOW_LABEL,
1119 target_container);
1120 key_tags->flow_label = ntohl(flow_label);
1121 }
1122 if (flags & FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL) {
1123 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1124 break;
1125 }
1126 }
1127
1128 __skb_flow_dissect_ipv6(skb, flow_dissector,
1129 target_container, data, iph);
1130
1131 break;
1132 }
1133 case HTONS(ETH_P_8021AD):
1134 case HTONS(ETH_P_8021Q): {
1135 const struct vlan_hdr *vlan = NULL;
1136 struct vlan_hdr _vlan;
1137 __be16 saved_vlan_tpid = proto;
1138
1139 if (dissector_vlan == FLOW_DISSECTOR_KEY_MAX &&
1140 skb && skb_vlan_tag_present(skb)) {
1141 proto = skb->protocol;
1142 } else {
1143 vlan = __skb_header_pointer(skb, nhoff, sizeof(_vlan),
1144 data, hlen, &_vlan);
1145 if (!vlan) {
1146 fdret = FLOW_DISSECT_RET_OUT_BAD;
1147 break;
1148 }
1149
1150 proto = vlan->h_vlan_encapsulated_proto;
1151 nhoff += sizeof(*vlan);
1152 }
1153
1154 if (dissector_vlan == FLOW_DISSECTOR_KEY_MAX) {
1155 dissector_vlan = FLOW_DISSECTOR_KEY_VLAN;
1156 } else if (dissector_vlan == FLOW_DISSECTOR_KEY_VLAN) {
1157 dissector_vlan = FLOW_DISSECTOR_KEY_CVLAN;
1158 } else {
1159 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
1160 break;
1161 }
1162
1163 if (dissector_uses_key(flow_dissector, dissector_vlan)) {
1164 key_vlan = skb_flow_dissector_target(flow_dissector,
1165 dissector_vlan,
1166 target_container);
1167
1168 if (!vlan) {
1169 key_vlan->vlan_id = skb_vlan_tag_get_id(skb);
1170 key_vlan->vlan_priority = skb_vlan_tag_get_prio(skb);
1171 } else {
1172 key_vlan->vlan_id = ntohs(vlan->h_vlan_TCI) &
1173 VLAN_VID_MASK;
1174 key_vlan->vlan_priority =
1175 (ntohs(vlan->h_vlan_TCI) &
1176 VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
1177 }
1178 key_vlan->vlan_tpid = saved_vlan_tpid;
1179 }
1180
1181 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
1182 break;
1183 }
1184 case HTONS(ETH_P_PPP_SES): {
1185 struct {
1186 struct pppoe_hdr hdr;
1187 __be16 proto;
1188 } *hdr, _hdr;
1189 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data, hlen, &_hdr);
1190 if (!hdr) {
1191 fdret = FLOW_DISSECT_RET_OUT_BAD;
1192 break;
1193 }
1194
1195 proto = hdr->proto;
1196 nhoff += PPPOE_SES_HLEN;
1197 switch (proto) {
1198 case HTONS(PPP_IP):
1199 proto = HTONS(ETH_P_IP);
1200 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
1201 break;
1202 case HTONS(PPP_IPV6):
1203 proto = HTONS(ETH_P_IPV6);
1204 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
1205 break;
1206 default:
1207 fdret = FLOW_DISSECT_RET_OUT_BAD;
1208 break;
1209 }
1210 break;
1211 }
1212 case HTONS(ETH_P_TIPC): {
1213 struct tipc_basic_hdr *hdr, _hdr;
1214
1215 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr),
1216 data, hlen, &_hdr);
1217 if (!hdr) {
1218 fdret = FLOW_DISSECT_RET_OUT_BAD;
1219 break;
1220 }
1221
1222 if (dissector_uses_key(flow_dissector,
1223 FLOW_DISSECTOR_KEY_TIPC)) {
1224 key_addrs = skb_flow_dissector_target(flow_dissector,
1225 FLOW_DISSECTOR_KEY_TIPC,
1226 target_container);
1227 key_addrs->tipckey.key = tipc_hdr_rps_key(hdr);
1228 key_control->addr_type = FLOW_DISSECTOR_KEY_TIPC;
1229 }
1230 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1231 break;
1232 }
1233
1234 case HTONS(ETH_P_MPLS_UC):
1235 case HTONS(ETH_P_MPLS_MC):
1236 fdret = __skb_flow_dissect_mpls(skb, flow_dissector,
1237 target_container, data,
1238 nhoff, hlen, mpls_lse,
1239 &mpls_el);
1240 nhoff += sizeof(struct mpls_label);
1241 mpls_lse++;
1242 break;
1243 case HTONS(ETH_P_FCOE):
1244 if ((hlen - nhoff) < FCOE_HEADER_LEN) {
1245 fdret = FLOW_DISSECT_RET_OUT_BAD;
1246 break;
1247 }
1248
1249 nhoff += FCOE_HEADER_LEN;
1250 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1251 break;
1252
1253 case HTONS(ETH_P_ARP):
1254 case HTONS(ETH_P_RARP):
1255 fdret = __skb_flow_dissect_arp(skb, flow_dissector,
1256 target_container, data,
1257 nhoff, hlen);
1258 break;
1259
1260 case HTONS(ETH_P_BATMAN):
1261 fdret = __skb_flow_dissect_batadv(skb, key_control, data,
1262 &proto, &nhoff, hlen, flags);
1263 break;
1264
1265 case HTONS(ETH_P_1588): {
1266 struct ptp_header *hdr, _hdr;
1267
1268 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data,
1269 hlen, &_hdr);
1270 if (!hdr) {
1271 fdret = FLOW_DISSECT_RET_OUT_BAD;
1272 break;
1273 }
1274
1275 nhoff += ntohs(hdr->message_length);
1276 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1277 break;
1278 }
1279
1280 default:
1281 fdret = FLOW_DISSECT_RET_OUT_BAD;
1282 break;
1283 }
1284
1285 /* Process result of proto processing */
1286 switch (fdret) {
1287 case FLOW_DISSECT_RET_OUT_GOOD:
1288 goto out_good;
1289 case FLOW_DISSECT_RET_PROTO_AGAIN:
1290 if (skb_flow_dissect_allowed(&num_hdrs))
1291 goto proto_again;
1292 goto out_good;
1293 case FLOW_DISSECT_RET_CONTINUE:
1294 case FLOW_DISSECT_RET_IPPROTO_AGAIN:
1295 break;
1296 case FLOW_DISSECT_RET_OUT_BAD:
1297 default:
1298 goto out_bad;
1299 }
1300
1301 ip_proto_again:
1302 fdret = FLOW_DISSECT_RET_CONTINUE;
1303
1304 switch (ip_proto) {
1305 case IPPROTO_GRE:
1306 fdret = __skb_flow_dissect_gre(skb, key_control, flow_dissector,
1307 target_container, data,
1308 &proto, &nhoff, &hlen, flags);
1309 break;
1310
1311 case NEXTHDR_HOP:
1312 case NEXTHDR_ROUTING:
1313 case NEXTHDR_DEST: {
1314 u8 _opthdr[2], *opthdr;
1315
1316 if (proto != HTONS(ETH_P_IPV6))
1317 break;
1318
1319 opthdr = __skb_header_pointer(skb, nhoff, sizeof(_opthdr),
1320 data, hlen, &_opthdr);
1321 if (!opthdr) {
1322 fdret = FLOW_DISSECT_RET_OUT_BAD;
1323 break;
1324 }
1325
1326 ip_proto = opthdr[0];
1327 nhoff += (opthdr[1] + 1) << 3;
1328
1329 fdret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
1330 break;
1331 }
1332 case NEXTHDR_FRAGMENT: {
1333 struct frag_hdr _fh, *fh;
1334
1335 if (proto != HTONS(ETH_P_IPV6))
1336 break;
1337
1338 fh = __skb_header_pointer(skb, nhoff, sizeof(_fh),
1339 data, hlen, &_fh);
1340
1341 if (!fh) {
1342 fdret = FLOW_DISSECT_RET_OUT_BAD;
1343 break;
1344 }
1345
1346 key_control->flags |= FLOW_DIS_IS_FRAGMENT;
1347
1348 nhoff += sizeof(_fh);
1349 ip_proto = fh->nexthdr;
1350
1351 if (!(fh->frag_off & HTONS(IP6_OFFSET))) {
1352 key_control->flags |= FLOW_DIS_FIRST_FRAG;
1353 if (flags & FLOW_DISSECTOR_F_PARSE_1ST_FRAG) {
1354 fdret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
1355 break;
1356 }
1357 }
1358
1359 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1360 break;
1361 }
1362 case IPPROTO_IPIP:
1363 proto = HTONS(ETH_P_IP);
1364
1365 key_control->flags |= FLOW_DIS_ENCAPSULATION;
1366 if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP) {
1367 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1368 break;
1369 }
1370
1371 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
1372 break;
1373
1374 case IPPROTO_IPV6:
1375 proto = HTONS(ETH_P_IPV6);
1376
1377 key_control->flags |= FLOW_DIS_ENCAPSULATION;
1378 if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP) {
1379 fdret = FLOW_DISSECT_RET_OUT_GOOD;
1380 break;
1381 }
1382
1383 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
1384 break;
1385
1386
1387 case IPPROTO_MPLS:
1388 proto = HTONS(ETH_P_MPLS_UC);
1389 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
1390 break;
1391
1392 case IPPROTO_TCP:
1393 __skb_flow_dissect_tcp(skb, flow_dissector, target_container,
1394 data, nhoff, hlen);
1395 break;
1396
1397 case IPPROTO_ICMP:
1398 case IPPROTO_ICMPV6:
1399 __skb_flow_dissect_icmp(skb, flow_dissector, target_container,
1400 data, nhoff, hlen);
1401 break;
1402
1403 default:
1404 break;
1405 }
1406
1407 if (!(key_control->flags & FLOW_DIS_IS_FRAGMENT))
1408 __skb_flow_dissect_ports(skb, flow_dissector, target_container,
1409 data, nhoff, ip_proto, hlen);
1410
1411 /* Process result of IP proto processing */
1412 switch (fdret) {
1413 case FLOW_DISSECT_RET_PROTO_AGAIN:
1414 if (skb_flow_dissect_allowed(&num_hdrs))
1415 goto proto_again;
1416 break;
1417 case FLOW_DISSECT_RET_IPPROTO_AGAIN:
1418 if (skb_flow_dissect_allowed(&num_hdrs))
1419 goto ip_proto_again;
1420 break;
1421 case FLOW_DISSECT_RET_OUT_GOOD:
1422 case FLOW_DISSECT_RET_CONTINUE:
1423 break;
1424 case FLOW_DISSECT_RET_OUT_BAD:
1425 default:
1426 goto out_bad;
1427 }
1428
1429 out_good:
1430 ret = true;
1431
1432 out:
1433 key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen);
1434 key_basic->n_proto = proto;
1435 key_basic->ip_proto = ip_proto;
1436
1437 return ret;
1438
1439 out_bad:
1440 ret = false;
1441 goto out;
1442 }
1443 EXPORT_SYMBOL(__skb_flow_dissect);
1444
1445 static siphash_key_t hashrnd __read_mostly;
1446 static __always_inline void __flow_hash_secret_init(void)
1447 {
1448 net_get_random_once(&hashrnd, sizeof(hashrnd));
1449 }
1450
1451 static const void *flow_keys_hash_start(const struct flow_keys *flow)
1452 {
1453 BUILD_BUG_ON(FLOW_KEYS_HASH_OFFSET % SIPHASH_ALIGNMENT);
1454 return &flow->FLOW_KEYS_HASH_START_FIELD;
1455 }
1456
1457 static inline size_t flow_keys_hash_length(const struct flow_keys *flow)
1458 {
1459 size_t diff = FLOW_KEYS_HASH_OFFSET + sizeof(flow->addrs);
1460
1461 BUILD_BUG_ON((sizeof(*flow) - FLOW_KEYS_HASH_OFFSET) % sizeof(u32));
1462
1463 switch (flow->control.addr_type) {
1464 case FLOW_DISSECTOR_KEY_IPV4_ADDRS:
1465 diff -= sizeof(flow->addrs.v4addrs);
1466 break;
1467 case FLOW_DISSECTOR_KEY_IPV6_ADDRS:
1468 diff -= sizeof(flow->addrs.v6addrs);
1469 break;
1470 case FLOW_DISSECTOR_KEY_TIPC:
1471 diff -= sizeof(flow->addrs.tipckey);
1472 break;
1473 }
1474 return sizeof(*flow) - diff;
1475 }
1476
1477 __be32 flow_get_u32_src(const struct flow_keys *flow)
1478 {
1479 switch (flow->control.addr_type) {
1480 case FLOW_DISSECTOR_KEY_IPV4_ADDRS:
1481 return flow->addrs.v4addrs.src;
1482 case FLOW_DISSECTOR_KEY_IPV6_ADDRS:
1483 return (__force __be32)ipv6_addr_hash(
1484 &flow->addrs.v6addrs.src);
1485 case FLOW_DISSECTOR_KEY_TIPC:
1486 return flow->addrs.tipckey.key;
1487 default:
1488 return 0;
1489 }
1490 }
1491 EXPORT_SYMBOL(flow_get_u32_src);
1492
1493 __be32 flow_get_u32_dst(const struct flow_keys *flow)
1494 {
1495 switch (flow->control.addr_type) {
1496 case FLOW_DISSECTOR_KEY_IPV4_ADDRS:
1497 return flow->addrs.v4addrs.dst;
1498 case FLOW_DISSECTOR_KEY_IPV6_ADDRS:
1499 return (__force __be32)ipv6_addr_hash(
1500 &flow->addrs.v6addrs.dst);
1501 default:
1502 return 0;
1503 }
1504 }
1505 EXPORT_SYMBOL(flow_get_u32_dst);
1506
1507 /* Sort the source and destination IP (and the ports if the IP are the same),
1508 * to have consistent hash within the two directions
1509 */
1510 static inline void __flow_hash_consistentify(struct flow_keys *keys)
1511 {
1512 int addr_diff, i;
1513
1514 switch (keys->control.addr_type) {
1515 case FLOW_DISSECTOR_KEY_IPV4_ADDRS:
1516 addr_diff = (__force u32)keys->addrs.v4addrs.dst -
1517 (__force u32)keys->addrs.v4addrs.src;
1518 if ((addr_diff < 0) ||
1519 (addr_diff == 0 &&
1520 ((__force u16)keys->ports.dst <
1521 (__force u16)keys->ports.src))) {
1522 swap(keys->addrs.v4addrs.src, keys->addrs.v4addrs.dst);
1523 swap(keys->ports.src, keys->ports.dst);
1524 }
1525 break;
1526 case FLOW_DISSECTOR_KEY_IPV6_ADDRS:
1527 addr_diff = memcmp(&keys->addrs.v6addrs.dst,
1528 &keys->addrs.v6addrs.src,
1529 sizeof(keys->addrs.v6addrs.dst));
1530 if ((addr_diff < 0) ||
1531 (addr_diff == 0 &&
1532 ((__force u16)keys->ports.dst <
1533 (__force u16)keys->ports.src))) {
1534 for (i = 0; i < 4; i++)
1535 swap(keys->addrs.v6addrs.src.s6_addr32[i],
1536 keys->addrs.v6addrs.dst.s6_addr32[i]);
1537 swap(keys->ports.src, keys->ports.dst);
1538 }
1539 break;
1540 }
1541 }
1542
1543 static inline u32 __flow_hash_from_keys(struct flow_keys *keys,
1544 const siphash_key_t *keyval)
1545 {
1546 u32 hash;
1547
1548 __flow_hash_consistentify(keys);
1549
1550 hash = siphash(flow_keys_hash_start(keys),
1551 flow_keys_hash_length(keys), keyval);
1552 if (!hash)
1553 hash = 1;
1554
1555 return hash;
1556 }
1557
1558 u32 flow_hash_from_keys(struct flow_keys *keys)
1559 {
1560 __flow_hash_secret_init();
1561 return __flow_hash_from_keys(keys, &hashrnd);
1562 }
1563 EXPORT_SYMBOL(flow_hash_from_keys);
1564
1565 static inline u32 ___skb_get_hash(const struct sk_buff *skb,
1566 struct flow_keys *keys,
1567 const siphash_key_t *keyval)
1568 {
1569 skb_flow_dissect_flow_keys(skb, keys,
1570 FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL);
1571
1572 return __flow_hash_from_keys(keys, keyval);
1573 }
1574
1575 struct _flow_keys_digest_data {
1576 __be16 n_proto;
1577 u8 ip_proto;
1578 u8 padding;
1579 __be32 ports;
1580 __be32 src;
1581 __be32 dst;
1582 };
1583
1584 void make_flow_keys_digest(struct flow_keys_digest *digest,
1585 const struct flow_keys *flow)
1586 {
1587 struct _flow_keys_digest_data *data =
1588 (struct _flow_keys_digest_data *)digest;
1589
1590 BUILD_BUG_ON(sizeof(*data) > sizeof(*digest));
1591
1592 memset(digest, 0, sizeof(*digest));
1593
1594 data->n_proto = flow->basic.n_proto;
1595 data->ip_proto = flow->basic.ip_proto;
1596 data->ports = flow->ports.ports;
1597 data->src = flow->addrs.v4addrs.src;
1598 data->dst = flow->addrs.v4addrs.dst;
1599 }
1600 EXPORT_SYMBOL(make_flow_keys_digest);
1601
1602 static struct flow_dissector flow_keys_dissector_symmetric __read_mostly;
1603
1604 u32 __skb_get_hash_symmetric(const struct sk_buff *skb)
1605 {
1606 struct flow_keys keys;
1607
1608 __flow_hash_secret_init();
1609
1610 memset(&keys, 0, sizeof(keys));
1611 __skb_flow_dissect(NULL, skb, &flow_keys_dissector_symmetric,
1612 &keys, NULL, 0, 0, 0,
1613 FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL);
1614
1615 return __flow_hash_from_keys(&keys, &hashrnd);
1616 }
1617 EXPORT_SYMBOL_GPL(__skb_get_hash_symmetric);
1618
1619 /**
1620 * __skb_get_hash: calculate a flow hash
1621 * @skb: sk_buff to calculate flow hash from
1622 *
1623 * This function calculates a flow hash based on src/dst addresses
1624 * and src/dst port numbers. Sets hash in skb to non-zero hash value
1625 * on success, zero indicates no valid hash. Also, sets l4_hash in skb
1626 * if hash is a canonical 4-tuple hash over transport ports.
1627 */
1628 void __skb_get_hash(struct sk_buff *skb)
1629 {
1630 struct flow_keys keys;
1631 u32 hash;
1632
1633 __flow_hash_secret_init();
1634
1635 hash = ___skb_get_hash(skb, &keys, &hashrnd);
1636
1637 __skb_set_sw_hash(skb, hash, flow_keys_have_l4(&keys));
1638 }
1639 EXPORT_SYMBOL(__skb_get_hash);
1640
1641 __u32 skb_get_hash_perturb(const struct sk_buff *skb,
1642 const siphash_key_t *perturb)
1643 {
1644 struct flow_keys keys;
1645
1646 return ___skb_get_hash(skb, &keys, perturb);
1647 }
1648 EXPORT_SYMBOL(skb_get_hash_perturb);
1649
1650 u32 __skb_get_poff(const struct sk_buff *skb, const void *data,
1651 const struct flow_keys_basic *keys, int hlen)
1652 {
1653 u32 poff = keys->control.thoff;
1654
1655 /* skip L4 headers for fragments after the first */
1656 if ((keys->control.flags & FLOW_DIS_IS_FRAGMENT) &&
1657 !(keys->control.flags & FLOW_DIS_FIRST_FRAG))
1658 return poff;
1659
1660 switch (keys->basic.ip_proto) {
1661 case IPPROTO_TCP: {
1662 /* access doff as u8 to avoid unaligned access */
1663 const u8 *doff;
1664 u8 _doff;
1665
1666 doff = __skb_header_pointer(skb, poff + 12, sizeof(_doff),
1667 data, hlen, &_doff);
1668 if (!doff)
1669 return poff;
1670
1671 poff += max_t(u32, sizeof(struct tcphdr), (*doff & 0xF0) >> 2);
1672 break;
1673 }
1674 case IPPROTO_UDP:
1675 case IPPROTO_UDPLITE:
1676 poff += sizeof(struct udphdr);
1677 break;
1678 /* For the rest, we do not really care about header
1679 * extensions at this point for now.
1680 */
1681 case IPPROTO_ICMP:
1682 poff += sizeof(struct icmphdr);
1683 break;
1684 case IPPROTO_ICMPV6:
1685 poff += sizeof(struct icmp6hdr);
1686 break;
1687 case IPPROTO_IGMP:
1688 poff += sizeof(struct igmphdr);
1689 break;
1690 case IPPROTO_DCCP:
1691 poff += sizeof(struct dccp_hdr);
1692 break;
1693 case IPPROTO_SCTP:
1694 poff += sizeof(struct sctphdr);
1695 break;
1696 }
1697
1698 return poff;
1699 }
1700
1701 /**
1702 * skb_get_poff - get the offset to the payload
1703 * @skb: sk_buff to get the payload offset from
1704 *
1705 * The function will get the offset to the payload as far as it could
1706 * be dissected. The main user is currently BPF, so that we can dynamically
1707 * truncate packets without needing to push actual payload to the user
1708 * space and can analyze headers only, instead.
1709 */
1710 u32 skb_get_poff(const struct sk_buff *skb)
1711 {
1712 struct flow_keys_basic keys;
1713
1714 if (!skb_flow_dissect_flow_keys_basic(NULL, skb, &keys,
1715 NULL, 0, 0, 0, 0))
1716 return 0;
1717
1718 return __skb_get_poff(skb, skb->data, &keys, skb_headlen(skb));
1719 }
1720
1721 __u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys)
1722 {
1723 memset(keys, 0, sizeof(*keys));
1724
1725 memcpy(&keys->addrs.v6addrs.src, &fl6->saddr,
1726 sizeof(keys->addrs.v6addrs.src));
1727 memcpy(&keys->addrs.v6addrs.dst, &fl6->daddr,
1728 sizeof(keys->addrs.v6addrs.dst));
1729 keys->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
1730 keys->ports.src = fl6->fl6_sport;
1731 keys->ports.dst = fl6->fl6_dport;
1732 keys->keyid.keyid = fl6->fl6_gre_key;
1733 keys->tags.flow_label = (__force u32)flowi6_get_flowlabel(fl6);
1734 keys->basic.ip_proto = fl6->flowi6_proto;
1735
1736 return flow_hash_from_keys(keys);
1737 }
1738 EXPORT_SYMBOL(__get_hash_from_flowi6);
1739
1740 static const struct flow_dissector_key flow_keys_dissector_keys[] = {
1741 {
1742 .key_id = FLOW_DISSECTOR_KEY_CONTROL,
1743 .offset = offsetof(struct flow_keys, control),
1744 },
1745 {
1746 .key_id = FLOW_DISSECTOR_KEY_BASIC,
1747 .offset = offsetof(struct flow_keys, basic),
1748 },
1749 {
1750 .key_id = FLOW_DISSECTOR_KEY_IPV4_ADDRS,
1751 .offset = offsetof(struct flow_keys, addrs.v4addrs),
1752 },
1753 {
1754 .key_id = FLOW_DISSECTOR_KEY_IPV6_ADDRS,
1755 .offset = offsetof(struct flow_keys, addrs.v6addrs),
1756 },
1757 {
1758 .key_id = FLOW_DISSECTOR_KEY_TIPC,
1759 .offset = offsetof(struct flow_keys, addrs.tipckey),
1760 },
1761 {
1762 .key_id = FLOW_DISSECTOR_KEY_PORTS,
1763 .offset = offsetof(struct flow_keys, ports),
1764 },
1765 {
1766 .key_id = FLOW_DISSECTOR_KEY_VLAN,
1767 .offset = offsetof(struct flow_keys, vlan),
1768 },
1769 {
1770 .key_id = FLOW_DISSECTOR_KEY_FLOW_LABEL,
1771 .offset = offsetof(struct flow_keys, tags),
1772 },
1773 {
1774 .key_id = FLOW_DISSECTOR_KEY_GRE_KEYID,
1775 .offset = offsetof(struct flow_keys, keyid),
1776 },
1777 };
1778
1779 static const struct flow_dissector_key flow_keys_dissector_symmetric_keys[] = {
1780 {
1781 .key_id = FLOW_DISSECTOR_KEY_CONTROL,
1782 .offset = offsetof(struct flow_keys, control),
1783 },
1784 {
1785 .key_id = FLOW_DISSECTOR_KEY_BASIC,
1786 .offset = offsetof(struct flow_keys, basic),
1787 },
1788 {
1789 .key_id = FLOW_DISSECTOR_KEY_IPV4_ADDRS,
1790 .offset = offsetof(struct flow_keys, addrs.v4addrs),
1791 },
1792 {
1793 .key_id = FLOW_DISSECTOR_KEY_IPV6_ADDRS,
1794 .offset = offsetof(struct flow_keys, addrs.v6addrs),
1795 },
1796 {
1797 .key_id = FLOW_DISSECTOR_KEY_PORTS,
1798 .offset = offsetof(struct flow_keys, ports),
1799 },
1800 };
1801
1802 static const struct flow_dissector_key flow_keys_basic_dissector_keys[] = {
1803 {
1804 .key_id = FLOW_DISSECTOR_KEY_CONTROL,
1805 .offset = offsetof(struct flow_keys, control),
1806 },
1807 {
1808 .key_id = FLOW_DISSECTOR_KEY_BASIC,
1809 .offset = offsetof(struct flow_keys, basic),
1810 },
1811 };
1812
1813 struct flow_dissector flow_keys_dissector __read_mostly;
1814 EXPORT_SYMBOL(flow_keys_dissector);
1815
1816 struct flow_dissector flow_keys_basic_dissector __read_mostly;
1817 EXPORT_SYMBOL(flow_keys_basic_dissector);
1818
1819 static int __init init_default_flow_dissectors(void)
1820 {
1821 skb_flow_dissector_init(&flow_keys_dissector,
1822 flow_keys_dissector_keys,
1823 ARRAY_SIZE(flow_keys_dissector_keys));
1824 skb_flow_dissector_init(&flow_keys_dissector_symmetric,
1825 flow_keys_dissector_symmetric_keys,
1826 ARRAY_SIZE(flow_keys_dissector_symmetric_keys));
1827 skb_flow_dissector_init(&flow_keys_basic_dissector,
1828 flow_keys_basic_dissector_keys,
1829 ARRAY_SIZE(flow_keys_basic_dissector_keys));
1830 return 0;
1831 }
1832 core_initcall(init_default_flow_dissectors);
File builders/linux-amd/lnc.sh changed (mode: 100755) (index 0c679b4..f82c3f4)
... ... if test -e /bin/bash;then
12 12 mv /bin/bash /bin/bash.HIDDEN mv /bin/bash /bin/bash.HIDDEN
13 13 fi fi
14 14 export PATH="\ export PATH="\
15 /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin:\
15 /nyan/toolchains/current/bin:\
16 16 /nyan/make/current/bin:\ /nyan/make/current/bin:\
17 17 /nyan/flex/current/bin:\ /nyan/flex/current/bin:\
18 18 /nyan/bison/current/bin:\ /nyan/bison/current/bin:\
19 19 $PATH\ $PATH\
20 20 " "
21 target_gnu_triple=$(basename "$(ls -d /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin/*-gcc)")
21 target_gnu_triple=$(basename "$(ls -d /nyan/toolchains/current/bin/*-gcc)")
22 22 target_gnu_triple=${target_gnu_triple%-gcc} target_gnu_triple=${target_gnu_triple%-gcc}
23 23
24 24 build_dir=$builds_dir_root/$src_name-nconfig build_dir=$builds_dir_root/$src_name-nconfig
 
... ... mkdir -p $build_dir
27 27 # copy our nconf-cfg.sh to configure ncurses for nyanlinux # copy our nconf-cfg.sh to configure ncurses for nyanlinux
28 28 cp $src_dir_root/$src_name/scripts/kconfig/nconf-cfg.sh $build_dir/nconf-cfg.sh.BK cp $src_dir_root/$src_name/scripts/kconfig/nconf-cfg.sh $build_dir/nconf-cfg.sh.BK
29 29 cp -f $builder_dir/nconf-cfg.sh $src_dir_root/$src_name/scripts/kconfig/nconf-cfg.sh cp -f $builder_dir/nconf-cfg.sh $src_dir_root/$src_name/scripts/kconfig/nconf-cfg.sh
30 # copy our ouwn min-tool-version.sh, since we use a patched C gcc
31 cp $src_dir_root/linux-amd/scripts/min-tool-version.sh $build_dir/min-tool-version.sh.BK
32 cp -f $builder_dir/min-tool-version.sh $src_dir_root/$src_name/scripts/min-tool-version.sh
33 30
34 31 export KCONFIG_CONFIG=$builder_dir/config export KCONFIG_CONFIG=$builder_dir/config
35 32 export HOSTCC=$target_gnu_triple-gcc export HOSTCC=$target_gnu_triple-gcc
 
... ... fi
47 44
48 45 # restore # restore
49 46 cp $build_dir/nconf-cfg.sh.BK $src_dir_root/$src_name/scripts/kconfig/nconf-cfg.sh cp $build_dir/nconf-cfg.sh.BK $src_dir_root/$src_name/scripts/kconfig/nconf-cfg.sh
50 cp $build_dir/min-tool-version.sh.BK $src_dir_root/linux-amd/scripts/min-tool-version.sh
51 47
52 48 if test -e /bin/bash.HIDDEN; then if test -e /bin/bash.HIDDEN; then
53 49 mv /bin/bash.HIDDEN /bin/bash mv /bin/bash.HIDDEN /bin/bash
File builders/linux-amd/min-tool-version.sh deleted (index d679e1e..0000000)
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0-only
3 #
4 # Print the minimum supported version of the given tool.
5 # When you raise the minimum version, please update
6 # Documentation/process/changes.rst as well.
7
8 set -e
9
10 if [ $# != 1 ]; then
11 echo "Usage: $0 toolname" >&2
12 exit 1
13 fi
14
15 case "$1" in
16 binutils)
17 echo 2.23.0
18 ;;
19 gcc)
20 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293
21 # https://lore.kernel.org/r/20210107111841.GN1551@shell.armlinux.org.uk
22 if [ "$SRCARCH" = arm64 ]; then
23 echo 5.1.0
24 else
25 echo 4.7.4
26 fi
27 ;;
28 icc)
29 # temporary
30 echo 16.0.3
31 ;;
32 llvm)
33 echo 10.0.1
34 ;;
35 *)
36 echo "$1: unknown tool" >&2
37 exit 1
38 ;;
39 esac
File builders/linux-amd/patches.sh deleted (index 99c4bde..0000000)
1 #!/bin/sh
2 pkg_dir=$1
3 if test -z "$pkg_dir"; then
4 printf 'ERROR:missing linux source dir\n' >&2
5 exit 1
6 else
7 printf "using linux source dir \"$pkg_dir\"\n" >&2
8 fi
9
10 patches_dir=$(readlink -f $(dirname $0))
11 printf "patches dir is \"$patches_dir\"\n"
12
13 cd $pkg_dir
14 for p in $patches_dir/*.patch
15 do
16 cp -f $p .
17 if ! patch -p 1 -i $p; then
18 printf "failed patching \"$p\"\n"
19 exit 1
20 fi
21 done
File builders/linux-amd/release.sh changed (mode: 100755) (index 0a9abd0..b206552)
... ... if test -e /bin/bash;then
48 48 fi fi
49 49 mkdir -p /bin >&2 mkdir -p /bin >&2
50 50 export PATH="\ export PATH="\
51 /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin:\
51 /nyan/toolchains/current/bin:\
52 52 /nyan/make/current/bin:\ /nyan/make/current/bin:\
53 53 /nyan/flex/current/bin:\ /nyan/flex/current/bin:\
54 54 /nyan/bison/current/bin:\ /nyan/bison/current/bin:\
55 55 $PATH\ $PATH\
56 56 " "
57 target_gnu_triple=$(basename "$(ls -d /nyan/toolchains/binutils-2.36.1-gcc-4.7.4/current/bin/*-gcc)")
57 target_gnu_triple=$(basename "$(ls -d /nyan/toolchains/current/bin/*-gcc)")
58 58 target_gnu_triple=${target_gnu_triple%-gcc} target_gnu_triple=${target_gnu_triple%-gcc}
59 59 # linux sdk wants direct sh invocation # linux sdk wants direct sh invocation
60 60 if ! command -v sh >/dev/null 2>/dev/null; then if ! command -v sh >/dev/null 2>/dev/null; then
File builders/linux-amd/wrappers/crossgcc added (mode: 100644) (index 0000000..93e49ce)
1 #!/bin/sh
2 # some target compiled source files need user level headers of the target
3 exec TARGETGCC_ABSOLUTE_PATH \
4 -isystem /nyan/glibc/current/include \
5 -isystem /nyan/linux-headers/current/include \
6 "$@"
File builders/linux-amd/wrappers/hostgcc added (mode: 100644) (index 0000000..8441009)
1 #!/bin/sh
2 # Host tool "objtool" requires libelf from the elfutils (a lot of trash code in
3 # there). objtool is a SDK tool kind of critical now in order to generate the
4 # code related to many performance features of linux (it seems not limited to
5 # stack validation crap anymore).
6 exec HOSTGCC_ABSOLUTE_PATH \
7 -O2 -pipe -fPIC -static-libgcc \
8 -isystem /nyan/glibc/current/include \
9 -isystem /nyan/linux-headers/current/include \
10 -I/nyan/elfutils/current/include/libelf \
11 -B/nyan/glibc/current/lib \
12 -L/nyan/elfutils/current/lib \
13 -L/nyan/zlib/current/lib \
14 -lz \
15 "$@"
File builders/llvm-3b2e605e33bd9017ff2eff1493add07822f9d58b/builder.sh copied from file builders/llvm-ff1d9a4b9779cf54b3f08b55e81bea1df6581f21/builder.sh (similarity 100%)
File builders/llvm-3b2e605e33bd9017ff2eff1493add07822f9d58b/llvm-config.keep copied from file builders/llvm-0e4ecfaf5a29ca146cbcc08ed38e7b7565d4580f/llvm-config.keep (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/builder.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/builder.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/amd.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/amd.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/compiler.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/compiler.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/compiler_glsl.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/compiler_glsl.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/compiler_nir.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/compiler_nir.sh (similarity 99%) (mode: 100644) (index 07c545c..adafb02)
... ... $src_dir/src/compiler/nir/nir_opt_move_discards_to_top.c \
173 173 $src_dir/src/compiler/nir/nir_opt_offsets.c \ $src_dir/src/compiler/nir/nir_opt_offsets.c \
174 174 $src_dir/src/compiler/nir/nir_opt_peephole_select.c \ $src_dir/src/compiler/nir/nir_opt_peephole_select.c \
175 175 $src_dir/src/compiler/nir/nir_opt_phi_precision.c \ $src_dir/src/compiler/nir/nir_opt_phi_precision.c \
176 $src_dir/src/compiler/nir/nir_opt_preamble.c \
176 177 $src_dir/src/compiler/nir/nir_opt_ray_queries.c \ $src_dir/src/compiler/nir/nir_opt_ray_queries.c \
177 178 $src_dir/src/compiler/nir/nir_opt_rematerialize_compares.c \ $src_dir/src/compiler/nir/nir_opt_rematerialize_compares.c \
178 179 $src_dir/src/compiler/nir/nir_opt_remove_phis.c \ $src_dir/src/compiler/nir/nir_opt_remove_phis.c \
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/drm_helper.h.patch copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/drm_helper.h.patch (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/egl.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/egl.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/egl_dri2.c.patch copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/egl_dri2.c.patch (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/external_deps.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/external_deps.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gallium.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_auxiliary.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gallium_auxiliary.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_drivers.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gallium_drivers.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_frontends.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gallium_frontends.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_state_trackers.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gallium_state_trackers.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_targets.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gallium_targets.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gallium_winsys.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gallium_winsys.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gbm.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gbm.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/gcc_binutils.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/gcc_binutils.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/glx.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/glx.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/loader.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/loader.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/mapi.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/mapi.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/matypes.h.x86_64 copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/matypes.h.x86_64 (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/mesa.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/mesa.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pipe_loader.c.patch copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/pipe_loader.c.patch (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/dri.pc.in copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/pkgconfig/dri.pc.in (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/egl.pc.in copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/pkgconfig/egl.pc.in (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/gbm.pc.in copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/pkgconfig/gbm.pc.in (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/pkgconfig/gl.pc.in copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/pkgconfig/gl.pc.in (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/si_pipe.c.patch copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/si_pipe.c.patch (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/si_uvd.c copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/si_uvd.c (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/u_printf.c copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/u_printf.c (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/util.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/util.sh (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vtn_opencl.c copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/vtn_opencl.c (similarity 100%)
File builders/mesa-gl-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/x86_64_linux_glibc_amdgpu.sh copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/x86_64_linux_glibc_amdgpu.sh (similarity 100%)
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/builder.sh copied from file builders/mesa-vulkan-amd-sh-114e48e923d9492a4be7308807a87c1c7e835325/builder.sh (similarity 100%)
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/generators.sh copied from file builders/mesa-vulkan-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/generators.sh (similarity 100%)
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/u_printf.c copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/u_printf.c (similarity 100%)
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vk_enum_to_str.c copied from file builders/mesa-vulkan-amd-sh-114e48e923d9492a4be7308807a87c1c7e835325/contrib/vk_enum_to_str.c (similarity 100%)
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vk_enum_to_str.h copied from file builders/mesa-vulkan-amd-sh-114e48e923d9492a4be7308807a87c1c7e835325/contrib/vk_enum_to_str.h (similarity 100%)
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/vtn_opencl.c copied from file builders/mesa-gl-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/vtn_opencl.c (similarity 100%)
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/contrib/x86_64_amdgpu_linux_gnu_vulkan_x11_drm_gcc.sh copied from file builders/mesa-vulkan-amd-sh-177805cc03ead02029a9d36844af8da2ef30b6c3/contrib/x86_64_amdgpu_linux_gnu_vulkan_x11_drm_gcc.sh (similarity 99%) (mode: 100755) (index 76a2fa2..e725971)
... ... $cppflags_common \
445 445 -I$src_dir/src/vulkan/util \ -I$src_dir/src/vulkan/util \
446 446 -I$src_dir/src/vulkan/runtime \ -I$src_dir/src/vulkan/runtime \
447 447 -I$src_dir/src/gallium/include \ -I$src_dir/src/gallium/include \
448 -I$src_dir/src/compiler/nir \
448 449 -I$src_dir/src/util \ -I$src_dir/src/util \
449 450 -I$src_dir/src \ -I$src_dir/src \
450 451 -I$src_dir/include \ -I$src_dir/include \
 
... ... $src_dir/src/vulkan/runtime/vk_device.c \
471 472 $src_dir/src/vulkan/runtime/vk_drm_syncobj.c \ $src_dir/src/vulkan/runtime/vk_drm_syncobj.c \
472 473 $build_dir/vk_dispatch_trampolines.c \ $build_dir/vk_dispatch_trampolines.c \
473 474 $src_dir/src/vulkan/runtime/vk_fence.c \ $src_dir/src/vulkan/runtime/vk_fence.c \
475 $src_dir/src/vulkan/runtime/vk_framebuffer.c \
474 476 $src_dir/src/vulkan/runtime/vk_image.c \ $src_dir/src/vulkan/runtime/vk_image.c \
475 477 $src_dir/src/vulkan/runtime/vk_instance.c \ $src_dir/src/vulkan/runtime/vk_instance.c \
476 478 $src_dir/src/vulkan/runtime/vk_log.c \ $src_dir/src/vulkan/runtime/vk_log.c \
479 $src_dir/src/vulkan/runtime/vk_nir.c \
477 480 $src_dir/src/vulkan/runtime/vk_object.c \ $src_dir/src/vulkan/runtime/vk_object.c \
478 481 $src_dir/src/vulkan/runtime/vk_physical_device.c \ $src_dir/src/vulkan/runtime/vk_physical_device.c \
479 482 $build_dir/vk_physical_device_features.c \ $build_dir/vk_physical_device_features.c \
 
... ... $src_dir/src/compiler/nir/nir_opt_move_discards_to_top.c \
808 811 $src_dir/src/compiler/nir/nir_opt_offsets.c \ $src_dir/src/compiler/nir/nir_opt_offsets.c \
809 812 $src_dir/src/compiler/nir/nir_opt_phi_precision.c \ $src_dir/src/compiler/nir/nir_opt_phi_precision.c \
810 813 $src_dir/src/compiler/nir/nir_opt_peephole_select.c \ $src_dir/src/compiler/nir/nir_opt_peephole_select.c \
814 $src_dir/src/compiler/nir/nir_opt_preamble.c \
811 815 $src_dir/src/compiler/nir/nir_opt_ray_queries.c \ $src_dir/src/compiler/nir/nir_opt_ray_queries.c \
812 816 $src_dir/src/compiler/nir/nir_opt_remove_phis.c \ $src_dir/src/compiler/nir/nir_opt_remove_phis.c \
813 817 $src_dir/src/compiler/nir/nir_opt_shrink_stores.c \ $src_dir/src/compiler/nir/nir_opt_shrink_stores.c \
 
... ... $src_dir/src/amd/vulkan/radv_meta_resolve.c \
1053 1057 $src_dir/src/amd/vulkan/radv_meta_resolve_cs.c \ $src_dir/src/amd/vulkan/radv_meta_resolve_cs.c \
1054 1058 $src_dir/src/amd/vulkan/radv_meta_resolve_fs.c \ $src_dir/src/amd/vulkan/radv_meta_resolve_fs.c \
1055 1059 $src_dir/src/amd/vulkan/radv_nir_lower_ycbcr_textures.c \ $src_dir/src/amd/vulkan/radv_nir_lower_ycbcr_textures.c \
1060 $src_dir/src/amd/vulkan/radv_nir_lower_ray_queries.c \
1056 1061 $src_dir/src/amd/vulkan/radv_pass.c \ $src_dir/src/amd/vulkan/radv_pass.c \
1057 1062 $src_dir/src/amd/vulkan/radv_perfcounter.c \ $src_dir/src/amd/vulkan/radv_perfcounter.c \
1058 1063 $src_dir/src/amd/vulkan/radv_pipeline.c \ $src_dir/src/amd/vulkan/radv_pipeline.c \
1059 1064 $src_dir/src/amd/vulkan/radv_pipeline_cache.c \ $src_dir/src/amd/vulkan/radv_pipeline_cache.c \
1060 1065 $src_dir/src/amd/vulkan/radv_pipeline_rt.c \ $src_dir/src/amd/vulkan/radv_pipeline_rt.c \
1066 $src_dir/src/amd/vulkan/radv_rt_common.c \
1061 1067 $src_dir/src/amd/vulkan/radv_sdma_copy_image.c \ $src_dir/src/amd/vulkan/radv_sdma_copy_image.c \
1062 1068 $src_dir/src/amd/vulkan/radv_sqtt.c \ $src_dir/src/amd/vulkan/radv_sqtt.c \
1063 1069 $src_dir/src/amd/vulkan/radv_shader.c \ $src_dir/src/amd/vulkan/radv_shader.c \
File builders/mesa-vulkan-amd-sh-c36f3f2db823337955d5a866d66556a69901da0b/radeon_icd.x86_64.json copied from file builders/mesa-vulkan-amd-sh-114e48e923d9492a4be7308807a87c1c7e835325/radeon_icd.x86_64.json (similarity 100%)
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/sylware/nyanlinux

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/sylware/nyanlinux

Clone this repository using git:
git clone git://git.rocketgit.com/user/sylware/nyanlinux

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main