kernel-6.4.11-200
* Wed Aug 16 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.4.11-0] - Add more bugfixes for 6.4.11 (Justin M. Forbes) - Turn off DMABUF_SYSFS_STATS (Justin M. Forbes) - Revert "KVM: SEV: remove ghcb variable declarations" (Justin M. Forbes) - Add bug fixed for 6.4.11 (Justin M. Forbes) - redhat: Add arm64-16k kernel flavor scaffold for 16K page-size'd AArch64 (Neal Gompa) - Linux v6.4.11 Resolves: Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
parent
26f631aafd
commit
e78f94bb63
|
@ -1,3 +1,6 @@
|
||||||
|
"https://gitlab.com/cki-project/kernel-ark/-/commit"/1004737240e720078d4c57351d055e516b648305
|
||||||
|
1004737240e720078d4c57351d055e516b648305 Revert "KVM: SEV: remove ghcb variable declarations"
|
||||||
|
|
||||||
"https://gitlab.com/cki-project/kernel-ark/-/commit"/f0ba6e68da37465b394524e19c278ba7f1eb5b63
|
"https://gitlab.com/cki-project/kernel-ark/-/commit"/f0ba6e68da37465b394524e19c278ba7f1eb5b63
|
||||||
f0ba6e68da37465b394524e19c278ba7f1eb5b63 KVM: SEV: remove ghcb variable declarations
|
f0ba6e68da37465b394524e19c278ba7f1eb5b63 KVM: SEV: remove ghcb variable declarations
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1743,7 +1743,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_DMADEVICES_DEBUG=y
|
CONFIG_DMADEVICES_DEBUG=y
|
||||||
CONFIG_DMADEVICES_VDEBUG=y
|
CONFIG_DMADEVICES_VDEBUG=y
|
||||||
|
|
|
@ -1735,7 +1735,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
# CONFIG_DMADEVICES_DEBUG is not set
|
# CONFIG_DMADEVICES_DEBUG is not set
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
|
|
|
@ -1700,7 +1700,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_DMADEVICES_DEBUG=y
|
CONFIG_DMADEVICES_DEBUG=y
|
||||||
CONFIG_DMADEVICES_VDEBUG=y
|
CONFIG_DMADEVICES_VDEBUG=y
|
||||||
|
|
|
@ -1692,7 +1692,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
# CONFIG_DMADEVICES_DEBUG is not set
|
# CONFIG_DMADEVICES_DEBUG is not set
|
||||||
# CONFIG_DMADEVICES_VDEBUG is not set
|
# CONFIG_DMADEVICES_VDEBUG is not set
|
||||||
|
|
|
@ -1669,7 +1669,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_DMADEVICES_DEBUG=y
|
CONFIG_DMADEVICES_DEBUG=y
|
||||||
CONFIG_DMADEVICES_VDEBUG=y
|
CONFIG_DMADEVICES_VDEBUG=y
|
||||||
|
|
|
@ -1661,7 +1661,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
# CONFIG_DMADEVICES_DEBUG is not set
|
# CONFIG_DMADEVICES_DEBUG is not set
|
||||||
# CONFIG_DMADEVICES_VDEBUG is not set
|
# CONFIG_DMADEVICES_VDEBUG is not set
|
||||||
|
|
|
@ -1318,7 +1318,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
# CONFIG_DMA_CMA is not set
|
# CONFIG_DMA_CMA is not set
|
||||||
CONFIG_DMADEVICES_DEBUG=y
|
CONFIG_DMADEVICES_DEBUG=y
|
||||||
CONFIG_DMADEVICES_VDEBUG=y
|
CONFIG_DMADEVICES_VDEBUG=y
|
||||||
|
|
|
@ -1308,7 +1308,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
# CONFIG_DMA_CMA is not set
|
# CONFIG_DMA_CMA is not set
|
||||||
# CONFIG_DMADEVICES_DEBUG is not set
|
# CONFIG_DMADEVICES_DEBUG is not set
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
|
|
|
@ -1324,7 +1324,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
# CONFIG_DMA_CMA is not set
|
# CONFIG_DMA_CMA is not set
|
||||||
CONFIG_DMADEVICES_DEBUG=y
|
CONFIG_DMADEVICES_DEBUG=y
|
||||||
CONFIG_DMADEVICES_VDEBUG=y
|
CONFIG_DMADEVICES_VDEBUG=y
|
||||||
|
|
|
@ -1314,7 +1314,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
# CONFIG_DMA_CMA is not set
|
# CONFIG_DMA_CMA is not set
|
||||||
# CONFIG_DMADEVICES_DEBUG is not set
|
# CONFIG_DMADEVICES_DEBUG is not set
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
|
|
|
@ -1444,7 +1444,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_DMADEVICES_DEBUG=y
|
CONFIG_DMADEVICES_DEBUG=y
|
||||||
CONFIG_DMADEVICES_VDEBUG=y
|
CONFIG_DMADEVICES_VDEBUG=y
|
||||||
|
|
|
@ -1434,7 +1434,7 @@ CONFIG_DMABUF_HEAPS_SYSTEM=y
|
||||||
CONFIG_DMABUF_HEAPS=y
|
CONFIG_DMABUF_HEAPS=y
|
||||||
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
# CONFIG_DMABUF_MOVE_NOTIFY is not set
|
||||||
# CONFIG_DMABUF_SELFTESTS is not set
|
# CONFIG_DMABUF_SELFTESTS is not set
|
||||||
CONFIG_DMABUF_SYSFS_STATS=y
|
# CONFIG_DMABUF_SYSFS_STATS is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
# CONFIG_DMADEVICES_DEBUG is not set
|
# CONFIG_DMADEVICES_DEBUG is not set
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
|
|
95
kernel.spec
95
kernel.spec
|
@ -171,18 +171,18 @@ Summary: The Linux kernel
|
||||||
# the --with-release option overrides this setting.)
|
# the --with-release option overrides this setting.)
|
||||||
%define debugbuildsenabled 1
|
%define debugbuildsenabled 1
|
||||||
# define buildid .local
|
# define buildid .local
|
||||||
%define specrpmversion 6.4.10
|
%define specrpmversion 6.4.11
|
||||||
%define specversion 6.4.10
|
%define specversion 6.4.11
|
||||||
%define patchversion 6.4
|
%define patchversion 6.4
|
||||||
%define pkgrelease 200
|
%define pkgrelease 200
|
||||||
%define kversion 6
|
%define kversion 6
|
||||||
%define tarfile_release 6.4.10
|
%define tarfile_release 6.4.11
|
||||||
# This is needed to do merge window version magic
|
# This is needed to do merge window version magic
|
||||||
%define patchlevel 4
|
%define patchlevel 4
|
||||||
# This allows pkg_release to have configurable %%{?dist} tag
|
# This allows pkg_release to have configurable %%{?dist} tag
|
||||||
%define specrelease 200%{?buildid}%{?dist}
|
%define specrelease 200%{?buildid}%{?dist}
|
||||||
# This defines the kabi tarball version
|
# This defines the kabi tarball version
|
||||||
%define kabiversion 6.4.10
|
%define kabiversion 6.4.11
|
||||||
|
|
||||||
# If this variable is set to 1, a bpf selftests build failure will cause a
|
# If this variable is set to 1, a bpf selftests build failure will cause a
|
||||||
# fatal kernel package build error
|
# fatal kernel package build error
|
||||||
|
@ -210,6 +210,8 @@ Summary: The Linux kernel
|
||||||
%define with_debug %{?_without_debug: 0} %{?!_without_debug: 1}
|
%define with_debug %{?_without_debug: 0} %{?!_without_debug: 1}
|
||||||
# kernel-zfcpdump (s390 specific kernel for zfcpdump)
|
# kernel-zfcpdump (s390 specific kernel for zfcpdump)
|
||||||
%define with_zfcpdump %{?_without_zfcpdump: 0} %{?!_without_zfcpdump: 1}
|
%define with_zfcpdump %{?_without_zfcpdump: 0} %{?!_without_zfcpdump: 1}
|
||||||
|
# kernel-16k (aarch64 kernel with 16K page_size)
|
||||||
|
%define with_arm64_16k %{?_without_arm64_16k: 0} %{?!_without_arm64_16k: 1}
|
||||||
# kernel-64k (aarch64 kernel with 64K page_size)
|
# kernel-64k (aarch64 kernel with 64K page_size)
|
||||||
%define with_arm64_64k %{?_without_arm64_64k: 0} %{?!_without_arm64_64k: 1}
|
%define with_arm64_64k %{?_without_arm64_64k: 0} %{?!_without_arm64_64k: 1}
|
||||||
# kernel-rt (x86_64 and aarch64 only PREEMPT_RT enabled kernel)
|
# kernel-rt (x86_64 and aarch64 only PREEMPT_RT enabled kernel)
|
||||||
|
@ -220,6 +222,7 @@ Summary: The Linux kernel
|
||||||
# up X X X
|
# up X X X
|
||||||
# pae X X
|
# pae X X
|
||||||
# zfcpdump X X
|
# zfcpdump X X
|
||||||
|
# arm64_16k X X X
|
||||||
# arm64_64k X X X
|
# arm64_64k X X X
|
||||||
# realtime X X X
|
# realtime X X X
|
||||||
|
|
||||||
|
@ -318,6 +321,9 @@ Summary: The Linux kernel
|
||||||
%define with_arm64_64k 0
|
%define with_arm64_64k 0
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# No arm64-16k flavor for now
|
||||||
|
%define with_arm64_16k 0
|
||||||
|
|
||||||
%if %{with_verbose}
|
%if %{with_verbose}
|
||||||
%define make_opts V=1
|
%define make_opts V=1
|
||||||
%else
|
%else
|
||||||
|
@ -452,6 +458,7 @@ Summary: The Linux kernel
|
||||||
%define with_headers 0
|
%define with_headers 0
|
||||||
%define with_efiuki 0
|
%define with_efiuki 0
|
||||||
%define with_zfcpdump 0
|
%define with_zfcpdump 0
|
||||||
|
%define with_arm64_16k 0
|
||||||
%define with_arm64_64k 0
|
%define with_arm64_64k 0
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
@ -518,8 +525,9 @@ Summary: The Linux kernel
|
||||||
%define with_zfcpdump 0
|
%define with_zfcpdump 0
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# 64k variant only for aarch64
|
# 16k and 64k variants only for aarch64
|
||||||
%ifnarch aarch64
|
%ifnarch aarch64
|
||||||
|
%define with_arm64_16k 0
|
||||||
%define with_arm64_64k 0
|
%define with_arm64_64k 0
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
@ -613,6 +621,7 @@ Summary: The Linux kernel
|
||||||
%define with_debug 0
|
%define with_debug 0
|
||||||
%define with_pae 0
|
%define with_pae 0
|
||||||
%define with_zfcpdump 0
|
%define with_zfcpdump 0
|
||||||
|
%define with_arm64_16k 0
|
||||||
%define with_arm64_64k 0
|
%define with_arm64_64k 0
|
||||||
%define with_realtime 0
|
%define with_realtime 0
|
||||||
|
|
||||||
|
@ -665,6 +674,11 @@ Summary: The Linux kernel
|
||||||
%else
|
%else
|
||||||
%define with_realtime_base 0
|
%define with_realtime_base 0
|
||||||
%endif
|
%endif
|
||||||
|
%if %{with_arm64_16k} && !%{with_dbgonly}
|
||||||
|
%define with_arm64_16k_base 1
|
||||||
|
%else
|
||||||
|
%define with_arm64_16k_base 0
|
||||||
|
%endif
|
||||||
%if %{with_arm64_64k} && !%{with_dbgonly}
|
%if %{with_arm64_64k} && !%{with_dbgonly}
|
||||||
%define with_arm64_64k_base 1
|
%define with_arm64_64k_base 1
|
||||||
%else
|
%else
|
||||||
|
@ -947,6 +961,8 @@ Source54: %{name}-armv7hl-fedora.config
|
||||||
Source55: %{name}-armv7hl-debug-fedora.config
|
Source55: %{name}-armv7hl-debug-fedora.config
|
||||||
Source56: %{name}-armv7hl-lpae-fedora.config
|
Source56: %{name}-armv7hl-lpae-fedora.config
|
||||||
Source57: %{name}-armv7hl-lpae-debug-fedora.config
|
Source57: %{name}-armv7hl-lpae-debug-fedora.config
|
||||||
|
Source58: %{name}-aarch64-16k-fedora.config
|
||||||
|
Source59: %{name}-aarch64-16k-debug-fedora.config
|
||||||
Source60: %{name}-ppc64le-fedora.config
|
Source60: %{name}-ppc64le-fedora.config
|
||||||
Source61: %{name}-ppc64le-debug-fedora.config
|
Source61: %{name}-ppc64le-debug-fedora.config
|
||||||
Source62: %{name}-s390x-fedora.config
|
Source62: %{name}-s390x-fedora.config
|
||||||
|
@ -1610,6 +1626,29 @@ zfcpdump infrastructure.
|
||||||
# with_zfcpdump
|
# with_zfcpdump
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_arm64_16k_base}
|
||||||
|
%define variant_summary The Linux kernel compiled for 16k pagesize usage
|
||||||
|
%kernel_variant_package 16k
|
||||||
|
%description 16k-core
|
||||||
|
The kernel package contains a variant of the ARM64 Linux kernel using
|
||||||
|
a 16K page size.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{with_arm64_16k} && %{with_debug}
|
||||||
|
%define variant_summary The Linux kernel compiled with extra debugging enabled
|
||||||
|
%if !%{debugbuildsenabled}
|
||||||
|
%kernel_variant_package -m 16k-debug
|
||||||
|
%else
|
||||||
|
%kernel_variant_package 16k-debug
|
||||||
|
%endif
|
||||||
|
%description 16k-debug-core
|
||||||
|
The debug kernel package contains a variant of the ARM64 Linux kernel using
|
||||||
|
a 16K page size.
|
||||||
|
This variant of the kernel has numerous debugging options enabled.
|
||||||
|
It should only be installed when trying to gather additional information
|
||||||
|
on kernel bugs, as some of these options impact performance noticably.
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{with_arm64_64k_base}
|
%if %{with_arm64_64k_base}
|
||||||
%define variant_summary The Linux kernel compiled for 64k pagesize usage
|
%define variant_summary The Linux kernel compiled for 64k pagesize usage
|
||||||
%kernel_variant_package 64k
|
%kernel_variant_package 64k
|
||||||
|
@ -2662,6 +2701,10 @@ echo "building rt-debug"
|
||||||
BuildKernel %make_target %kernel_image %{_use_vdso} rt-debug
|
BuildKernel %make_target %kernel_image %{_use_vdso} rt-debug
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_arm64_16k}
|
||||||
|
BuildKernel %make_target %kernel_image %{_use_vdso} 16k-debug
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{with_arm64_64k}
|
%if %{with_arm64_64k}
|
||||||
BuildKernel %make_target %kernel_image %{_use_vdso} 64k-debug
|
BuildKernel %make_target %kernel_image %{_use_vdso} 64k-debug
|
||||||
%endif
|
%endif
|
||||||
|
@ -2676,6 +2719,10 @@ BuildKernel %make_target %kernel_image %{_use_vdso} debug
|
||||||
BuildKernel %make_target %kernel_image %{_use_vdso} zfcpdump
|
BuildKernel %make_target %kernel_image %{_use_vdso} zfcpdump
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_arm64_16k_base}
|
||||||
|
BuildKernel %make_target %kernel_image %{_use_vdso} 16k
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{with_arm64_64k_base}
|
%if %{with_arm64_64k_base}
|
||||||
BuildKernel %make_target %kernel_image %{_use_vdso} 64k
|
BuildKernel %make_target %kernel_image %{_use_vdso} 64k
|
||||||
%endif
|
%endif
|
||||||
|
@ -2693,7 +2740,7 @@ BuildKernel %make_target %kernel_image %{_use_vdso}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifnarch noarch i686 %{nobuildarches}
|
%ifnarch noarch i686 %{nobuildarches}
|
||||||
%if !%{with_debug} && !%{with_zfcpdump} && !%{with_pae} && !%{with_up} && !%{with_arm64_64k} && !%{with_realtime}
|
%if !%{with_debug} && !%{with_zfcpdump} && !%{with_pae} && !%{with_up} && !%{with_arm64_16k} && !%{with_arm64_64k} && !%{with_realtime}
|
||||||
# If only building the user space tools, then initialize the build environment
|
# If only building the user space tools, then initialize the build environment
|
||||||
# and some variables so that the various userspace tools can be built.
|
# and some variables so that the various userspace tools can be built.
|
||||||
InitBuildVars
|
InitBuildVars
|
||||||
|
@ -2857,6 +2904,12 @@ find Documentation -type d | xargs chmod u+w
|
||||||
if [ "%{with_realtime}" -ne "0" ] && [ "%{with_debug}" -ne "0" ]; then \
|
if [ "%{with_realtime}" -ne "0" ] && [ "%{with_debug}" -ne "0" ]; then \
|
||||||
%{modsign_cmd} certs/signing_key.pem.sign+rt-debug certs/signing_key.x509.sign+rt-debug $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+rt-debug/ \
|
%{modsign_cmd} certs/signing_key.pem.sign+rt-debug certs/signing_key.x509.sign+rt-debug $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+rt-debug/ \
|
||||||
fi \
|
fi \
|
||||||
|
if [ "%{with_arm64_16k_base}" -ne "0" ]; then \
|
||||||
|
%{modsign_cmd} certs/signing_key.pem.sign+16k certs/signing_key.x509.sign+16k $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+16k/ \
|
||||||
|
fi \
|
||||||
|
if [ "%{with_arm64_16k}" -ne "0" ] && [ "%{with_debug}" -ne "0" ]; then \
|
||||||
|
%{modsign_cmd} certs/signing_key.pem.sign+16k-debug certs/signing_key.x509.sign+16k-debug $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+16k-debug/ \
|
||||||
|
fi \
|
||||||
if [ "%{with_arm64_64k_base}" -ne "0" ]; then \
|
if [ "%{with_arm64_64k_base}" -ne "0" ]; then \
|
||||||
%{modsign_cmd} certs/signing_key.pem.sign+64k certs/signing_key.x509.sign+64k $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+64k/ \
|
%{modsign_cmd} certs/signing_key.pem.sign+64k certs/signing_key.x509.sign+64k $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+64k/ \
|
||||||
fi \
|
fi \
|
||||||
|
@ -3396,6 +3449,16 @@ fi\
|
||||||
%kernel_variant_post -v debug
|
%kernel_variant_post -v debug
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_arm64_16k_base}
|
||||||
|
%kernel_variant_preun 16k
|
||||||
|
%kernel_variant_post -v 16k
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{with_debug} && %{with_arm64_16k}
|
||||||
|
%kernel_variant_preun 16k-debug
|
||||||
|
%kernel_variant_post -v 16k-debug
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{with_arm64_64k_base}
|
%if %{with_arm64_64k_base}
|
||||||
%kernel_variant_preun 64k
|
%kernel_variant_preun 64k
|
||||||
%kernel_variant_post -v 64k
|
%kernel_variant_post -v 64k
|
||||||
|
@ -3695,6 +3758,9 @@ fi\
|
||||||
%if %{with_up}
|
%if %{with_up}
|
||||||
%kernel_variant_files %{_use_vdso} %{with_debug} debug
|
%kernel_variant_files %{_use_vdso} %{with_debug} debug
|
||||||
%endif
|
%endif
|
||||||
|
%if %{with_arm64_16k}
|
||||||
|
%kernel_variant_files %{_use_vdso} %{with_debug} 16k-debug
|
||||||
|
%endif
|
||||||
%if %{with_arm64_64k}
|
%if %{with_arm64_64k}
|
||||||
%kernel_variant_files %{_use_vdso} %{with_debug} 64k-debug
|
%kernel_variant_files %{_use_vdso} %{with_debug} 64k-debug
|
||||||
%endif
|
%endif
|
||||||
|
@ -3710,6 +3776,14 @@ fi\
|
||||||
%files debug-modules
|
%files debug-modules
|
||||||
%files debug-modules-core
|
%files debug-modules-core
|
||||||
%files debug-modules-extra
|
%files debug-modules-extra
|
||||||
|
%if %{with_arm64_16k}
|
||||||
|
%files 16k-debug
|
||||||
|
%files 16k-debug-core
|
||||||
|
%files 16k-debug-devel
|
||||||
|
%files 16k-debug-devel-matched
|
||||||
|
%files 16k-debug-modules
|
||||||
|
%files 16k-debug-modules-extra
|
||||||
|
%endif
|
||||||
%if %{with_arm64_64k}
|
%if %{with_arm64_64k}
|
||||||
%files 64k-debug
|
%files 64k-debug
|
||||||
%files 64k-debug-core
|
%files 64k-debug-core
|
||||||
|
@ -3720,6 +3794,7 @@ fi\
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
%kernel_variant_files %{_use_vdso} %{with_zfcpdump} zfcpdump
|
%kernel_variant_files %{_use_vdso} %{with_zfcpdump} zfcpdump
|
||||||
|
%kernel_variant_files %{_use_vdso} %{with_arm64_16k_base} 16k
|
||||||
%kernel_variant_files %{_use_vdso} %{with_arm64_64k_base} 64k
|
%kernel_variant_files %{_use_vdso} %{with_arm64_64k_base} 64k
|
||||||
|
|
||||||
%define kernel_variant_ipaclones(k:) \
|
%define kernel_variant_ipaclones(k:) \
|
||||||
|
@ -3740,6 +3815,14 @@ fi\
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 16 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.4.11-0]
|
||||||
|
- Add more bugfixes for 6.4.11 (Justin M. Forbes)
|
||||||
|
- Turn off DMABUF_SYSFS_STATS (Justin M. Forbes)
|
||||||
|
- Revert "KVM: SEV: remove ghcb variable declarations" (Justin M. Forbes)
|
||||||
|
- Add bug fixed for 6.4.11 (Justin M. Forbes)
|
||||||
|
- redhat: Add arm64-16k kernel flavor scaffold for 16K page-size'd AArch64 (Neal Gompa)
|
||||||
|
- Linux v6.4.11
|
||||||
|
|
||||||
* Fri Aug 11 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.4.10-0]
|
* Fri Aug 11 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.4.10-0]
|
||||||
- More security bug fixes for 6.4.10 (Justin M. Forbes)
|
- More security bug fixes for 6.4.10 (Justin M. Forbes)
|
||||||
- KVM: SEV: remove ghcb variable declarations (Paolo Bonzini)
|
- KVM: SEV: remove ghcb variable declarations (Paolo Bonzini)
|
||||||
|
|
|
@ -5,11 +5,9 @@
|
||||||
arch/s390/kernel/ipl.c | 5 +
|
arch/s390/kernel/ipl.c | 5 +
|
||||||
arch/s390/kernel/setup.c | 4 +
|
arch/s390/kernel/setup.c | 4 +
|
||||||
arch/x86/kernel/setup.c | 22 ++--
|
arch/x86/kernel/setup.c | 22 ++--
|
||||||
arch/x86/kvm/svm/sev.c | 124 ++++++++++-----------
|
|
||||||
arch/x86/kvm/svm/svm.h | 26 +++++
|
|
||||||
drivers/acpi/apei/hest.c | 8 ++
|
drivers/acpi/apei/hest.c | 8 ++
|
||||||
drivers/acpi/irq.c | 17 ++-
|
drivers/acpi/irq.c | 17 ++-
|
||||||
drivers/acpi/resource.c | 60 ++++++++++
|
drivers/acpi/resource.c | 32 ++++--
|
||||||
drivers/acpi/scan.c | 9 ++
|
drivers/acpi/scan.c | 9 ++
|
||||||
drivers/ata/libahci.c | 18 +++
|
drivers/ata/libahci.c | 18 +++
|
||||||
drivers/char/ipmi/ipmi_dmi.c | 15 +++
|
drivers/char/ipmi/ipmi_dmi.c | 15 +++
|
||||||
|
@ -18,7 +16,6 @@
|
||||||
drivers/firmware/efi/efi.c | 124 +++++++++++++++------
|
drivers/firmware/efi/efi.c | 124 +++++++++++++++------
|
||||||
drivers/firmware/efi/secureboot.c | 38 +++++++
|
drivers/firmware/efi/secureboot.c | 38 +++++++
|
||||||
drivers/firmware/sysfb.c | 18 ++-
|
drivers/firmware/sysfb.c | 18 ++-
|
||||||
.../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
|
|
||||||
drivers/hid/hid-rmi.c | 66 -----------
|
drivers/hid/hid-rmi.c | 66 -----------
|
||||||
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 ++++
|
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 ++++
|
||||||
drivers/input/rmi4/rmi_driver.c | 124 ++++++++++++---------
|
drivers/input/rmi4/rmi_driver.c | 124 ++++++++++++---------
|
||||||
|
@ -40,10 +37,10 @@
|
||||||
security/lockdown/Kconfig | 13 +++
|
security/lockdown/Kconfig | 13 +++
|
||||||
security/lockdown/lockdown.c | 1 +
|
security/lockdown/lockdown.c | 1 +
|
||||||
security/security.c | 12 ++
|
security/security.c | 12 ++
|
||||||
42 files changed, 646 insertions(+), 243 deletions(-)
|
39 files changed, 518 insertions(+), 191 deletions(-)
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
diff --git a/Makefile b/Makefile
|
||||||
index bf463afef54b..7717cdde1d65 100644
|
index d0efd84bb7d0..77fb7e58f9eb 100644
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \
|
@@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \
|
||||||
|
@ -203,335 +200,6 @@ index 0cccfeb67c3a..a7dccf67c4a1 100644
|
||||||
|
|
||||||
reserve_initrd();
|
reserve_initrd();
|
||||||
|
|
||||||
diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
|
|
||||||
index 69ae5e1b3120..512dfe45d91e 100644
|
|
||||||
--- a/arch/x86/kvm/svm/sev.c
|
|
||||||
+++ b/arch/x86/kvm/svm/sev.c
|
|
||||||
@@ -2414,15 +2414,18 @@ static void sev_es_sync_from_ghcb(struct vcpu_svm *svm)
|
|
||||||
*/
|
|
||||||
memset(vcpu->arch.regs, 0, sizeof(vcpu->arch.regs));
|
|
||||||
|
|
||||||
- vcpu->arch.regs[VCPU_REGS_RAX] = ghcb_get_rax_if_valid(ghcb);
|
|
||||||
- vcpu->arch.regs[VCPU_REGS_RBX] = ghcb_get_rbx_if_valid(ghcb);
|
|
||||||
- vcpu->arch.regs[VCPU_REGS_RCX] = ghcb_get_rcx_if_valid(ghcb);
|
|
||||||
- vcpu->arch.regs[VCPU_REGS_RDX] = ghcb_get_rdx_if_valid(ghcb);
|
|
||||||
- vcpu->arch.regs[VCPU_REGS_RSI] = ghcb_get_rsi_if_valid(ghcb);
|
|
||||||
+ BUILD_BUG_ON(sizeof(svm->sev_es.valid_bitmap) != sizeof(ghcb->save.valid_bitmap));
|
|
||||||
+ memcpy(&svm->sev_es.valid_bitmap, &ghcb->save.valid_bitmap, sizeof(ghcb->save.valid_bitmap));
|
|
||||||
|
|
||||||
- svm->vmcb->save.cpl = ghcb_get_cpl_if_valid(ghcb);
|
|
||||||
+ vcpu->arch.regs[VCPU_REGS_RAX] = kvm_ghcb_get_rax_if_valid(svm, ghcb);
|
|
||||||
+ vcpu->arch.regs[VCPU_REGS_RBX] = kvm_ghcb_get_rbx_if_valid(svm, ghcb);
|
|
||||||
+ vcpu->arch.regs[VCPU_REGS_RCX] = kvm_ghcb_get_rcx_if_valid(svm, ghcb);
|
|
||||||
+ vcpu->arch.regs[VCPU_REGS_RDX] = kvm_ghcb_get_rdx_if_valid(svm, ghcb);
|
|
||||||
+ vcpu->arch.regs[VCPU_REGS_RSI] = kvm_ghcb_get_rsi_if_valid(svm, ghcb);
|
|
||||||
|
|
||||||
- if (ghcb_xcr0_is_valid(ghcb)) {
|
|
||||||
+ svm->vmcb->save.cpl = kvm_ghcb_get_cpl_if_valid(svm, ghcb);
|
|
||||||
+
|
|
||||||
+ if (kvm_ghcb_xcr0_is_valid(svm)) {
|
|
||||||
vcpu->arch.xcr0 = ghcb_get_xcr0(ghcb);
|
|
||||||
kvm_update_cpuid_runtime(vcpu);
|
|
||||||
}
|
|
||||||
@@ -2433,84 +2436,88 @@ static void sev_es_sync_from_ghcb(struct vcpu_svm *svm)
|
|
||||||
control->exit_code_hi = upper_32_bits(exit_code);
|
|
||||||
control->exit_info_1 = ghcb_get_sw_exit_info_1(ghcb);
|
|
||||||
control->exit_info_2 = ghcb_get_sw_exit_info_2(ghcb);
|
|
||||||
+ svm->sev_es.sw_scratch = kvm_ghcb_get_sw_scratch_if_valid(svm, ghcb);
|
|
||||||
|
|
||||||
/* Clear the valid entries fields */
|
|
||||||
memset(ghcb->save.valid_bitmap, 0, sizeof(ghcb->save.valid_bitmap));
|
|
||||||
}
|
|
||||||
|
|
||||||
+static u64 kvm_ghcb_get_sw_exit_code(struct vmcb_control_area *control)
|
|
||||||
+{
|
|
||||||
+ return (((u64)control->exit_code_hi) << 32) | control->exit_code;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int sev_es_validate_vmgexit(struct vcpu_svm *svm)
|
|
||||||
{
|
|
||||||
- struct kvm_vcpu *vcpu;
|
|
||||||
- struct ghcb *ghcb;
|
|
||||||
+ struct vmcb_control_area *control = &svm->vmcb->control;
|
|
||||||
+ struct kvm_vcpu *vcpu = &svm->vcpu;
|
|
||||||
u64 exit_code;
|
|
||||||
u64 reason;
|
|
||||||
|
|
||||||
- ghcb = svm->sev_es.ghcb;
|
|
||||||
-
|
|
||||||
/*
|
|
||||||
* Retrieve the exit code now even though it may not be marked valid
|
|
||||||
* as it could help with debugging.
|
|
||||||
*/
|
|
||||||
- exit_code = ghcb_get_sw_exit_code(ghcb);
|
|
||||||
+ exit_code = kvm_ghcb_get_sw_exit_code(control);
|
|
||||||
|
|
||||||
/* Only GHCB Usage code 0 is supported */
|
|
||||||
- if (ghcb->ghcb_usage) {
|
|
||||||
+ if (svm->sev_es.ghcb->ghcb_usage) {
|
|
||||||
reason = GHCB_ERR_INVALID_USAGE;
|
|
||||||
goto vmgexit_err;
|
|
||||||
}
|
|
||||||
|
|
||||||
reason = GHCB_ERR_MISSING_INPUT;
|
|
||||||
|
|
||||||
- if (!ghcb_sw_exit_code_is_valid(ghcb) ||
|
|
||||||
- !ghcb_sw_exit_info_1_is_valid(ghcb) ||
|
|
||||||
- !ghcb_sw_exit_info_2_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_sw_exit_code_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_sw_exit_info_1_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_sw_exit_info_2_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
|
|
||||||
- switch (ghcb_get_sw_exit_code(ghcb)) {
|
|
||||||
+ switch (exit_code) {
|
|
||||||
case SVM_EXIT_READ_DR7:
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_WRITE_DR7:
|
|
||||||
- if (!ghcb_rax_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_rax_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_RDTSC:
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_RDPMC:
|
|
||||||
- if (!ghcb_rcx_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_rcx_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_CPUID:
|
|
||||||
- if (!ghcb_rax_is_valid(ghcb) ||
|
|
||||||
- !ghcb_rcx_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_rax_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_rcx_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
- if (ghcb_get_rax(ghcb) == 0xd)
|
|
||||||
- if (!ghcb_xcr0_is_valid(ghcb))
|
|
||||||
+ if (vcpu->arch.regs[VCPU_REGS_RAX] == 0xd)
|
|
||||||
+ if (!kvm_ghcb_xcr0_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_INVD:
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_IOIO:
|
|
||||||
- if (ghcb_get_sw_exit_info_1(ghcb) & SVM_IOIO_STR_MASK) {
|
|
||||||
- if (!ghcb_sw_scratch_is_valid(ghcb))
|
|
||||||
+ if (control->exit_info_1 & SVM_IOIO_STR_MASK) {
|
|
||||||
+ if (!kvm_ghcb_sw_scratch_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
} else {
|
|
||||||
- if (!(ghcb_get_sw_exit_info_1(ghcb) & SVM_IOIO_TYPE_MASK))
|
|
||||||
- if (!ghcb_rax_is_valid(ghcb))
|
|
||||||
+ if (!(control->exit_info_1 & SVM_IOIO_TYPE_MASK))
|
|
||||||
+ if (!kvm_ghcb_rax_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_MSR:
|
|
||||||
- if (!ghcb_rcx_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_rcx_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
- if (ghcb_get_sw_exit_info_1(ghcb)) {
|
|
||||||
- if (!ghcb_rax_is_valid(ghcb) ||
|
|
||||||
- !ghcb_rdx_is_valid(ghcb))
|
|
||||||
+ if (control->exit_info_1) {
|
|
||||||
+ if (!kvm_ghcb_rax_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_rdx_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_VMMCALL:
|
|
||||||
- if (!ghcb_rax_is_valid(ghcb) ||
|
|
||||||
- !ghcb_cpl_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_rax_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_cpl_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_RDTSCP:
|
|
||||||
@@ -2518,19 +2525,19 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm)
|
|
||||||
case SVM_EXIT_WBINVD:
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_MONITOR:
|
|
||||||
- if (!ghcb_rax_is_valid(ghcb) ||
|
|
||||||
- !ghcb_rcx_is_valid(ghcb) ||
|
|
||||||
- !ghcb_rdx_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_rax_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_rcx_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_rdx_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
break;
|
|
||||||
case SVM_EXIT_MWAIT:
|
|
||||||
- if (!ghcb_rax_is_valid(ghcb) ||
|
|
||||||
- !ghcb_rcx_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_rax_is_valid(svm) ||
|
|
||||||
+ !kvm_ghcb_rcx_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
break;
|
|
||||||
case SVM_VMGEXIT_MMIO_READ:
|
|
||||||
case SVM_VMGEXIT_MMIO_WRITE:
|
|
||||||
- if (!ghcb_sw_scratch_is_valid(ghcb))
|
|
||||||
+ if (!kvm_ghcb_sw_scratch_is_valid(svm))
|
|
||||||
goto vmgexit_err;
|
|
||||||
break;
|
|
||||||
case SVM_VMGEXIT_NMI_COMPLETE:
|
|
||||||
@@ -2546,11 +2553,9 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
vmgexit_err:
|
|
||||||
- vcpu = &svm->vcpu;
|
|
||||||
-
|
|
||||||
if (reason == GHCB_ERR_INVALID_USAGE) {
|
|
||||||
vcpu_unimpl(vcpu, "vmgexit: ghcb usage %#x is not valid\n",
|
|
||||||
- ghcb->ghcb_usage);
|
|
||||||
+ svm->sev_es.ghcb->ghcb_usage);
|
|
||||||
} else if (reason == GHCB_ERR_INVALID_EVENT) {
|
|
||||||
vcpu_unimpl(vcpu, "vmgexit: exit code %#llx is not valid\n",
|
|
||||||
exit_code);
|
|
||||||
@@ -2560,11 +2565,8 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm)
|
|
||||||
dump_ghcb(svm);
|
|
||||||
}
|
|
||||||
|
|
||||||
- /* Clear the valid entries fields */
|
|
||||||
- memset(ghcb->save.valid_bitmap, 0, sizeof(ghcb->save.valid_bitmap));
|
|
||||||
-
|
|
||||||
- ghcb_set_sw_exit_info_1(ghcb, 2);
|
|
||||||
- ghcb_set_sw_exit_info_2(ghcb, reason);
|
|
||||||
+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 2);
|
|
||||||
+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, reason);
|
|
||||||
|
|
||||||
/* Resume the guest to "return" the error code. */
|
|
||||||
return 1;
|
|
||||||
@@ -2583,7 +2585,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm)
|
|
||||||
*/
|
|
||||||
if (svm->sev_es.ghcb_sa_sync) {
|
|
||||||
kvm_write_guest(svm->vcpu.kvm,
|
|
||||||
- ghcb_get_sw_scratch(svm->sev_es.ghcb),
|
|
||||||
+ svm->sev_es.sw_scratch,
|
|
||||||
svm->sev_es.ghcb_sa,
|
|
||||||
svm->sev_es.ghcb_sa_len);
|
|
||||||
svm->sev_es.ghcb_sa_sync = false;
|
|
||||||
@@ -2629,12 +2631,11 @@ void pre_sev_run(struct vcpu_svm *svm, int cpu)
|
|
||||||
static int setup_vmgexit_scratch(struct vcpu_svm *svm, bool sync, u64 len)
|
|
||||||
{
|
|
||||||
struct vmcb_control_area *control = &svm->vmcb->control;
|
|
||||||
- struct ghcb *ghcb = svm->sev_es.ghcb;
|
|
||||||
u64 ghcb_scratch_beg, ghcb_scratch_end;
|
|
||||||
u64 scratch_gpa_beg, scratch_gpa_end;
|
|
||||||
void *scratch_va;
|
|
||||||
|
|
||||||
- scratch_gpa_beg = ghcb_get_sw_scratch(ghcb);
|
|
||||||
+ scratch_gpa_beg = svm->sev_es.sw_scratch;
|
|
||||||
if (!scratch_gpa_beg) {
|
|
||||||
pr_err("vmgexit: scratch gpa not provided\n");
|
|
||||||
goto e_scratch;
|
|
||||||
@@ -2705,8 +2706,8 @@ static int setup_vmgexit_scratch(struct vcpu_svm *svm, bool sync, u64 len)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
e_scratch:
|
|
||||||
- ghcb_set_sw_exit_info_1(ghcb, 2);
|
|
||||||
- ghcb_set_sw_exit_info_2(ghcb, GHCB_ERR_INVALID_SCRATCH_AREA);
|
|
||||||
+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 2);
|
|
||||||
+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, GHCB_ERR_INVALID_SCRATCH_AREA);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@@ -2819,7 +2820,6 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)
|
|
||||||
struct vcpu_svm *svm = to_svm(vcpu);
|
|
||||||
struct vmcb_control_area *control = &svm->vmcb->control;
|
|
||||||
u64 ghcb_gpa, exit_code;
|
|
||||||
- struct ghcb *ghcb;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Validate the GHCB */
|
|
||||||
@@ -2844,20 +2844,18 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)
|
|
||||||
}
|
|
||||||
|
|
||||||
svm->sev_es.ghcb = svm->sev_es.ghcb_map.hva;
|
|
||||||
- ghcb = svm->sev_es.ghcb_map.hva;
|
|
||||||
|
|
||||||
- trace_kvm_vmgexit_enter(vcpu->vcpu_id, ghcb);
|
|
||||||
-
|
|
||||||
- exit_code = ghcb_get_sw_exit_code(ghcb);
|
|
||||||
+ trace_kvm_vmgexit_enter(vcpu->vcpu_id, svm->sev_es.ghcb);
|
|
||||||
|
|
||||||
+ sev_es_sync_from_ghcb(svm);
|
|
||||||
ret = sev_es_validate_vmgexit(svm);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
- sev_es_sync_from_ghcb(svm);
|
|
||||||
- ghcb_set_sw_exit_info_1(ghcb, 0);
|
|
||||||
- ghcb_set_sw_exit_info_2(ghcb, 0);
|
|
||||||
+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 0);
|
|
||||||
+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, 0);
|
|
||||||
|
|
||||||
+ exit_code = kvm_ghcb_get_sw_exit_code(control);
|
|
||||||
switch (exit_code) {
|
|
||||||
case SVM_VMGEXIT_MMIO_READ:
|
|
||||||
ret = setup_vmgexit_scratch(svm, true, control->exit_info_2);
|
|
||||||
@@ -2895,13 +2893,13 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
/* Get AP jump table address */
|
|
||||||
- ghcb_set_sw_exit_info_2(ghcb, sev->ap_jump_table);
|
|
||||||
+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, sev->ap_jump_table);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
pr_err("svm: vmgexit: unsupported AP jump table request - exit_info_1=%#llx\n",
|
|
||||||
control->exit_info_1);
|
|
||||||
- ghcb_set_sw_exit_info_1(ghcb, 2);
|
|
||||||
- ghcb_set_sw_exit_info_2(ghcb, GHCB_ERR_INVALID_INPUT);
|
|
||||||
+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 2);
|
|
||||||
+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, GHCB_ERR_INVALID_INPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 1;
|
|
||||||
diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h
|
|
||||||
index f44751dd8d5d..ece0d5959567 100644
|
|
||||||
--- a/arch/x86/kvm/svm/svm.h
|
|
||||||
+++ b/arch/x86/kvm/svm/svm.h
|
|
||||||
@@ -190,10 +190,12 @@ struct vcpu_sev_es_state {
|
|
||||||
/* SEV-ES support */
|
|
||||||
struct sev_es_save_area *vmsa;
|
|
||||||
struct ghcb *ghcb;
|
|
||||||
+ u8 valid_bitmap[16];
|
|
||||||
struct kvm_host_map ghcb_map;
|
|
||||||
bool received_first_sipi;
|
|
||||||
|
|
||||||
/* SEV-ES scratch area support */
|
|
||||||
+ u64 sw_scratch;
|
|
||||||
void *ghcb_sa;
|
|
||||||
u32 ghcb_sa_len;
|
|
||||||
bool ghcb_sa_sync;
|
|
||||||
@@ -745,4 +747,28 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm);
|
|
||||||
void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);
|
|
||||||
void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);
|
|
||||||
|
|
||||||
+#define DEFINE_KVM_GHCB_ACCESSORS(field) \
|
|
||||||
+ static __always_inline bool kvm_ghcb_##field##_is_valid(const struct vcpu_svm *svm) \
|
|
||||||
+ { \
|
|
||||||
+ return test_bit(GHCB_BITMAP_IDX(field), \
|
|
||||||
+ (unsigned long *)&svm->sev_es.valid_bitmap); \
|
|
||||||
+ } \
|
|
||||||
+ \
|
|
||||||
+ static __always_inline u64 kvm_ghcb_get_##field##_if_valid(struct vcpu_svm *svm, struct ghcb *ghcb) \
|
|
||||||
+ { \
|
|
||||||
+ return kvm_ghcb_##field##_is_valid(svm) ? ghcb->save.field : 0; \
|
|
||||||
+ } \
|
|
||||||
+
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(cpl)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(rax)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(rcx)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(rdx)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(rbx)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(rsi)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(sw_exit_code)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(sw_exit_info_1)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(sw_exit_info_2)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(sw_scratch)
|
|
||||||
+DEFINE_KVM_GHCB_ACCESSORS(xcr0)
|
|
||||||
+
|
|
||||||
#endif
|
|
||||||
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
|
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
|
||||||
index 6aef1ee5e1bd..8f146b1b4972 100644
|
index 6aef1ee5e1bd..8f146b1b4972 100644
|
||||||
--- a/drivers/acpi/apei/hest.c
|
--- a/drivers/acpi/apei/hest.c
|
||||||
|
@ -595,10 +263,10 @@ index c2c786eb95ab..4e3aa80cd5cf 100644
|
||||||
return ctx.rc;
|
return ctx.rc;
|
||||||
}
|
}
|
||||||
diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
|
diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
|
||||||
index 1dd8d5aebf67..0800a9d77558 100644
|
index a4d9f149b48d..5c48b981758c 100644
|
||||||
--- a/drivers/acpi/resource.c
|
--- a/drivers/acpi/resource.c
|
||||||
+++ b/drivers/acpi/resource.c
|
+++ b/drivers/acpi/resource.c
|
||||||
@@ -470,6 +470,52 @@ static const struct dmi_system_id asus_laptop[] = {
|
@@ -470,6 +470,24 @@ static const struct dmi_system_id asus_laptop[] = {
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -620,70 +288,42 @@ index 1dd8d5aebf67..0800a9d77558 100644
|
||||||
+ { }
|
+ { }
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+static const struct dmi_system_id tongfang_gm_rg[] = {
|
static const struct dmi_system_id tongfang_gm_rg[] = {
|
||||||
+ {
|
|
||||||
+ .ident = "TongFang GMxRGxx/XMG CORE 15 (M22)/TUXEDO Stellaris 15 Gen4 AMD",
|
|
||||||
+ .matches = {
|
|
||||||
+ DMI_MATCH(DMI_BOARD_NAME, "GMxRGxx"),
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ { }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static const struct dmi_system_id maingear_laptop[] = {
|
|
||||||
+ {
|
|
||||||
+ .ident = "MAINGEAR Vector Pro 2 15",
|
|
||||||
+ .matches = {
|
|
||||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Micro Electronics Inc"),
|
|
||||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "MG-VCP2-15A3070T"),
|
|
||||||
+ }
|
|
||||||
+ },
|
|
||||||
+ {
|
|
||||||
+ .ident = "MAINGEAR Vector Pro 2 17",
|
|
||||||
+ .matches = {
|
|
||||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Micro Electronics Inc"),
|
|
||||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "MG-VCP2-17A3070T"),
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ { }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static const struct dmi_system_id lg_laptop[] = {
|
|
||||||
{
|
{
|
||||||
.ident = "LG Electronics 17U70P",
|
.ident = "TongFang GMxRGxx/XMG CORE 15 (M22)/TUXEDO Stellaris 15 Gen4 AMD",
|
||||||
@@ -493,6 +539,10 @@ struct irq_override_cmp {
|
@@ -532,6 +550,8 @@ struct irq_override_cmp {
|
||||||
static const struct irq_override_cmp override_table[] = {
|
static const struct irq_override_cmp override_table[] = {
|
||||||
{ medion_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
|
{ medion_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
|
||||||
{ asus_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
|
{ asus_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
|
||||||
+ { lenovo_laptop, 6, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, true },
|
+ { lenovo_laptop, 6, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, true },
|
||||||
+ { lenovo_laptop, 10, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, true },
|
+ { lenovo_laptop, 10, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, true },
|
||||||
+ { tongfang_gm_rg, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true },
|
{ tongfang_gm_rg, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true },
|
||||||
+ { maingear_laptop, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true },
|
{ maingear_laptop, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true },
|
||||||
{ lg_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
|
{ pcspecialist_laptop, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true },
|
||||||
};
|
@@ -555,18 +575,6 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,
|
||||||
|
|
||||||
@@ -512,6 +562,16 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,
|
|
||||||
return entry->override;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+#ifdef CONFIG_X86
|
#ifdef CONFIG_X86
|
||||||
+ /*
|
- /*
|
||||||
+ * IRQ override isn't needed on modern AMD Zen systems and
|
- * Always use the MADT override info, except for the i8042 PS/2 ctrl
|
||||||
+ * this override breaks active low IRQs on AMD Ryzen 6000 and
|
- * IRQs (1 and 12). For these the DSDT IRQ settings should sometimes
|
||||||
+ * newer systems. Skip it.
|
- * be used otherwise PS/2 keyboards / mice will not work.
|
||||||
+ */
|
- */
|
||||||
+ if (boot_cpu_has(X86_FEATURE_ZEN))
|
- if (gsi != 1 && gsi != 12)
|
||||||
+ return false;
|
- return true;
|
||||||
+#endif
|
-
|
||||||
+
|
- /* If the override comes from an INT_SRC_OVR MADT entry, honor it. */
|
||||||
return true;
|
- if (acpi_int_src_ovr[gsi])
|
||||||
}
|
- return true;
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* IRQ override isn't needed on modern AMD Zen systems and
|
||||||
|
* this override breaks active low IRQs on AMD Ryzen 6000 and
|
||||||
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
|
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
|
||||||
index 0c6f06abe3f4..f66b85b2c108 100644
|
index c28c8d5ca0c8..618ebf3f9436 100644
|
||||||
--- a/drivers/acpi/scan.c
|
--- a/drivers/acpi/scan.c
|
||||||
+++ b/drivers/acpi/scan.c
|
+++ b/drivers/acpi/scan.c
|
||||||
@@ -1746,6 +1746,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
|
@@ -1747,6 +1747,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
|
||||||
if (!acpi_match_device_ids(device, ignore_serial_bus_ids))
|
if (!acpi_match_device_ids(device, ignore_serial_bus_ids))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -1026,19 +666,6 @@ index 3c197db42c9d..16e4a2e90fae 100644
|
||||||
pd = sysfb_create_simplefb(si, &mode);
|
pd = sysfb_create_simplefb(si, &mode);
|
||||||
if (!IS_ERR(pd))
|
if (!IS_ERR(pd))
|
||||||
goto unlock_mutex;
|
goto unlock_mutex;
|
||||||
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
|
|
||||||
index 9bc86deac9e8..b885c39bd16b 100644
|
|
||||||
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
|
|
||||||
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
|
|
||||||
@@ -1320,7 +1320,7 @@ int compute_mst_dsc_configs_for_state(struct drm_atomic_state *state,
|
|
||||||
if (computed_streams[i])
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- if (!res_pool->funcs->remove_stream_from_ctx ||
|
|
||||||
+ if (res_pool->funcs->remove_stream_from_ctx &&
|
|
||||||
res_pool->funcs->remove_stream_from_ctx(stream->ctx->dc, dc_state, stream) != DC_OK)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
|
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
|
||||||
index 84e7ba5314d3..efc96776f761 100644
|
index 84e7ba5314d3..efc96776f761 100644
|
||||||
--- a/drivers/hid/hid-rmi.c
|
--- a/drivers/hid/hid-rmi.c
|
||||||
|
|
6
sources
6
sources
|
@ -1,3 +1,3 @@
|
||||||
SHA512 (linux-6.4.10.tar.xz) = e490f525f1d9feb1af2d8f46a6f1dd322e2ce3748856fad47b6a1df3a603f036365656e6413cc52b45edfa0d2c89ed2e7b008ab1d164c07a10dddc8b3e18ea79
|
SHA512 (linux-6.4.11.tar.xz) = ca3456dd1339849ab12381dc0bd3b5f3a7c88824f38837b064602487e1b0880d8a55c665b254426fc2bfc1a5a513f7a4d767eec333d9c1c214d92bb6f7701813
|
||||||
SHA512 (kernel-abi-stablelists-6.4.10.tar.bz2) = 127f7ec5fead55c9775ff5a7626f7e8b10b86d4a6bdf11a4fe89b03d6e728c6a9ca5e2446a2ecbb28004a060580c4881df6a5637c44df3671f8d3c526f7ac1f4
|
SHA512 (kernel-abi-stablelists-6.4.11.tar.bz2) = 60b1ba8a5aba1d774302da430f5c9569cf0b45018baf29ecc40286ce743ab32cb4e4c6810beb9cba765fae5be0f2bbf2f4e9615bb0ecf8990f05bc1baf6db150
|
||||||
SHA512 (kernel-kabi-dw-6.4.10.tar.bz2) = bc232d963c21d74f5f77b5985d84ae10c4842c912f3b4285e51a863b5a8988c15b10b94809c73b9fa25ce050202c4971af134bddfcee509ad041abbbbb59ab87
|
SHA512 (kernel-kabi-dw-6.4.11.tar.bz2) = a711780dcd1677736e03358ef2efd160fe11e9280851d221e75ae62d09cae4dad68f4b590437be95a51e0d65e75c50f331a72cd4edaafda8d596cb90277b5f9c
|
||||||
|
|
Loading…
Reference in New Issue