Compare commits

..

90 Commits

Author SHA1 Message Date
Fabian Grünbichler 78a1b94540 WIP: bump version
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2023-04-05 10:17:06 +02:00
Fabian Grünbichler 14107dc511 build: add pve-kernel-X.Y-pve-signed-template
the signed template together with the binary package(s) containing the unsigned
files form the input to our secure boot signing service.

the signed template consists of
- files.json (specifying which files are signed how and by which key)
- packaging template used to build the signed package(s)

the signing service
- extracts and checks the signed-template binary package
- extracts the unsigned package(s)
- signs the needed files
- packs up the signatures + the template contained in the signed-template
  package into the signed source package

the signed source package can then be built in the regular fashion (in case of
the kernel packages, it will copy the kernel image, modules and some helper
files from the unsigned package, attach the signature created by the signing
service, and re-pack the result as signed-kernel package).

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2023-04-05 10:16:11 +02:00
Fabian Grünbichler e7d49e787a add Proxmox UEFI certificates
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2023-04-05 10:15:43 +02:00
Fabian Grünbichler 360ed44476 build: sign modules and set trust anchor/lockdown
this is required for secure boot support.

at build time, an ephemeral key pair will be generated and all built modules
will be signed with it. the private key is discarded, and the public key
embedded in the kernel image for signature validation at module load time.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2023-03-17 12:00:11 +01:00
Thomas Lamprecht e1ca9ca51d update ABI file for 6.2.6-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-15 09:55:06 +01:00
Thomas Lamprecht 82426c7c10 update fwlist for 6.2.6
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-15 09:23:37 +01:00
Thomas Lamprecht 8a82ea07f9 bump version to 6.2.2-2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-15 09:23:37 +01:00
Thomas Lamprecht af0b394907 update to Ubuntu-6.2.0-17.17
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-14 18:07:40 +01:00
Thomas Lamprecht 3509d749af update ABI file for 6.2.2-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-13 18:18:39 +01:00
Thomas Lamprecht e1c527fbd0 bump version to 6.2.2-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-13 17:57:09 +01:00
Thomas Lamprecht 97d08b747c update to Ubuntu-6.2.0-16.16
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-13 17:56:47 +01:00
Thomas Lamprecht b032345298 update fwlist for 6.2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-09 08:52:16 +01:00
Thomas Lamprecht 24d804a086 update and drop applied patches for 6.2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-08 12:29:55 +01:00
Thomas Lamprecht fd2107cc91 prepare for 6.2 release
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-08 12:07:25 +01:00
Thomas Lamprecht 43ea729172 buildsys: avoid that to new usr header get uploaded for bullseye
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-08 12:07:25 +01:00
Thomas Lamprecht 8977e76d1e update ABI file for 6.1.15-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-08 12:05:18 +01:00
Thomas Lamprecht 2367ef4bab bump version to 6.1.15-2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-08 10:34:04 +01:00
Thomas Lamprecht cfb3869212 update submodule and patches to 6.1.15
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-08 09:50:30 +01:00
Fiona Ebner 3d016e115f add patch to fix issue with large IO requests
Several people reported IO-related issues since kernel 6.1.6 [0].
Things got better with 6.1.10, but apparently the issues are not fully
resolved (e.g. [1]).

I ran into an issue with PBS backup of a VM with passed-through disks
(error with 6.1.6, hang with 6.1.10+) and found that the issue did not
occur anymore with v6.3-rc1. Bisecting what fixed the issue led to the
commit in this patch. The hope is that it fixes some other issues too.

The commit has a CC-stable tag for 5.15+, but telling from the absence
of user reports, it was much less likely to trigger before 6.1.x (it's
not clear what x is, because of the other issue in 6.1.6). The commit
says it depends on 613b14884b85 ("block: handle bio_split_to_limits()
NULL return") which is already present as a3f1c82e0413 ("block:
handle bio_split_to_limits() NULL return") in the Ubuntu tree.

[0]: https://forum.proxmox.com/threads/119483/post-530365
[1]: https://forum.proxmox.com/threads/119483/post-537991

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-03-07 19:38:11 +01:00
Thomas Lamprecht 8b2b9abefa update ABI file for 6.1.14-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-01 08:43:05 +01:00
Thomas Lamprecht 4048746049 bump version to 6.1.14-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-27 18:09:53 +01:00
Thomas Lamprecht fc2b61b134 update submodule and patches to 6.1.14
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-27 18:09:00 +01:00
Thomas Lamprecht 3a6fd39fe7 d/rules: fix misspelled changelog date variable
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-10 16:40:14 +01:00
Thomas Lamprecht 9fde3ef1c6 wireless: Add Debian wireless-regdb certificates
so that plain Debian crda + wireless-regdb can work, alternatively we
could disable CRDA and bake in the regdb directly in the kernel,
using the CFG80211_INTERNAL_REGDB KConfig.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-10 12:48:20 +01:00
Thomas Lamprecht 0ce1c2c075 update previous fwlist
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-07 14:46:16 +01:00
Thomas Lamprecht 9810669ddf bump version to 6.1.10-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-07 14:10:16 +01:00
Thomas Lamprecht 7c0483e8cd update to Proxmox-6.1.10-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-07 14:09:31 +01:00
Fabian Grünbichler 826eb0ff89 build: re-enable BTF
but allow discarding BTF information when loading modules, so that upgrades
which are otherwise ABI compatible still work. this allows using BTF
information when matching and available, while degrading gracefully if the
currently running kernel is not identical to the one that module was built for.

in case of a mismatch, the kernel will log a warning when loading the module,
for example:

Jan 30 13:57:58 test kernel: BPF:          type_id=184 bits_offset=4096
Jan 30 13:57:58 test kernel: BPF:
Jan 30 13:57:58 test kernel: BPF: Invalid name
Jan 30 13:57:58 test kernel: BPF:
Jan 30 13:57:58 test kernel: failed to validate module [bonding] BTF: -22

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2023-01-31 17:44:18 +01:00
Thomas Lamprecht 2162f4c4e7 backport fix for CPU stalls with hugepage in use
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-31 10:21:37 +01:00
Wolfgang Bumiller 3ffc526456 d/control: add linux-initramfs-tool as alternative
This is provdied by both initramfs-tools and dracut.
Required to be able to use dracut in place of
initramfs-tools.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-01-30 09:41:52 +01:00
Thomas Lamprecht 4b70e25984 update ABI file for 6.1.6-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-28 15:28:10 +01:00
Thomas Lamprecht 6305b31642 bump version to 6.1.6-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-28 15:06:33 +01:00
Thomas Lamprecht 8da6dd78ce update ZFS to 2.1.9
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-28 15:06:24 +01:00
Thomas Lamprecht 5ddf42542e rebase patches on top of Ubuntu-6.1.0-14.14
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-28 15:01:34 +01:00
Thomas Lamprecht b7cd468287 update sources to Ubuntu-6.1.0-14.14
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-28 15:01:34 +01:00
Thomas Lamprecht 28761ee886 change submodule url to ubuntu-kernel
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-25 16:37:05 +01:00
Thomas Lamprecht 8e0208d23b update ZFS to 2.1.8
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-25 09:10:46 +01:00
Thomas Lamprecht 3203bc7c65 update ABI file for 6.1.2-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-10 09:49:13 +01:00
Thomas Lamprecht 7d2d23be68 bump version to 6.1.2-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-10 08:53:57 +01:00
Thomas Lamprecht 3ba39b6c0a rever fortify patch that breaks our gcc 10.2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-10 08:53:57 +01:00
Thomas Lamprecht 4d1db3083c backport some fixes-fixes from v6.1.4
found with

 git log --decorate v5.16^..v6.1.4 -- Makefile kernel/ secuirty drivers/ fs \
   block mm net virt/ ipc init arch/x86/ | ~/gitdm/stablefixes \
   --fixed-after v6.1.2 --regressed-before v6.1.2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-07 14:52:24 +01:00
Thomas Lamprecht a0a93ff7fe revert two stable patches that have reports about regressions
we never released them yet (only introduced after 6.1.0), but there
are upstream reports about regressions for them at:
https://lore.kernel.org/netdev/CAK8fFZ5pzMaw3U1KXgC_OK4shKGsN=HDcR62cfPOuL0umXE1Ww@mail.gmail.com/
https://lore.kernel.org/netdev/CAK8fFZ6A_Gphw_3-QMGKEFQk=sfCw1Qmq0TVZK3rtAi7vb621A@mail.gmail.com/

So do a preventive revert.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-07 13:52:36 +01:00
Thomas Lamprecht 898be11352 rebase patches on top of Ubuntu-6.1.0-12.12
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-07 13:45:05 +01:00
Thomas Lamprecht 5e31f96e2c update sources to Ubuntu-6.1.0-12.12
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-07 13:42:55 +01:00
Thomas Lamprecht add5e35014 update ZFS submodule with open TMPFILE fixes for Linux 6.1 compat
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-07 13:27:32 +01:00
Thomas Lamprecht 23214d3d31 d/rules: enable budiling the userspace block driver as module
Requested-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-19 16:33:51 +01:00
Thomas Lamprecht d53796d63c readme: update for current source state
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 18:07:40 +01:00
Thomas Lamprecht 71031b0bc3 d/rules: use UTC ISO format for build timestamp
same info but shorter, avoiding cut-off on `uname -a` output due to
the relatively newly changed and reported "SMP PREEMPT_DYNAMIC" mode.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 17:58:52 +01:00
Thomas Lamprecht e911b5aabc update ABI file for 6.1.0-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 15:50:53 +01:00
Thomas Lamprecht 704a0976ef update fwlist-previous
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 15:10:10 +01:00
Thomas Lamprecht 67ec0da236 bump version to 6.1.0-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 15:09:59 +01:00
Thomas Lamprecht 4ce29271b8 d/rules: always enable ZSTD compression built-in
as it was before

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 15:09:44 +01:00
Thomas Lamprecht 880dc1073f buildsys: use annotations script to generate the base kernel build config
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 15:08:27 +01:00
Thomas Lamprecht 12247ad0df update to Ubuntu-6.1.0-1.1
from upcoming 23.04 lunar repo

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 14:57:09 +01:00
Thomas Lamprecht 00d66e9633 submodules: rename ubuntu kernel directory to release agnostic
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 08:32:18 +01:00
Thomas Lamprecht d12013ce56 submodules: switch to combined repo via relative path
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-13 08:30:26 +01:00
Thomas Lamprecht 2a624c23cd update ZFS to 2.1.7
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-12-06 16:41:57 +01:00
Thomas Lamprecht 32bc81fb69 update ABI file for 5.19.17-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-11-14 21:00:34 +01:00
Thomas Lamprecht 5214c210a2 update fwlist-previous
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-11-14 20:59:31 +01:00
Thomas Lamprecht e450e254a2 bump version to 5.19.17-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-11-14 20:25:18 +01:00
Thomas Lamprecht a61c6773b5 rebase patches on top of Ubuntu-5.19.0-24.25
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-11-14 20:24:23 +01:00
Thomas Lamprecht 044258547b update sources to Ubuntu-5.19.0-24.25
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-11-14 20:24:23 +01:00
Thomas Lamprecht ddff189f90 Revert "backport patch to fix TSC scaling for SVM"
this was actually intended for the stable 5.15 branch, already
included in 5.19.

This reverts commit 198fde3a16.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-10-24 09:28:01 +02:00
Fiona Ebner 198fde3a16 backport patch to fix TSC scaling for SVM
The following issue reported on the community forum [0] is likely
fixed by this.

In my case, loading a VM snapshot that originally was taken on an
Intel CPU on my AMD-based host often caused problems in other VMs. In
particular, it often led to CPU stalls, and sometimes clock jumps far
into the future. With this backport applied, everything seems to run
smoothly even after loading the "bad" snapshot 10 times.

The backport from upstream commit 11d39e8cc43e ("KVM: SVM: fix tsc
scaling cache logic consisted of dropping the parts for nested TSC
scaling, which is not yet present in our kernel, renaming the constant
for the default ratio, and some context changes.

[0] https://forum.proxmox.com/threads/112756/

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2022-10-21 17:24:25 +02:00
Thomas Lamprecht 401e4a8b30 update ABI file for 5.19.7-2-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-10-04 17:39:30 +02:00
Thomas Lamprecht e020b057d4 bump version to 5.19.7-2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-10-04 17:19:31 +02:00
Thomas Lamprecht f6d0c333b9 update sources to Ubuntu-5.19.0-19.19
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-10-04 16:32:12 +02:00
Thomas Lamprecht dab9b0c8a9 update ZFS to 2.1.6
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-10-04 16:29:37 +02:00
Thomas Lamprecht 8ce40beedd update ABI file for 5.19.7-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:25:04 +02:00
Thomas Lamprecht b6a4a13b2e bump version to 5.19.0-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:11:02 +02:00
Thomas Lamprecht ed7d3489df rebase patches on top of Ubuntu-5.19.0-16.16
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht f04548e789 update sources to Ubuntu-5.19.0-16.16
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 9bc835d4c3 update ABI file for 5.19.0-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 03b3d0d7b7 bump version to 5.19.0-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 4fc427d906 rebase patches on top of Ubuntu-5.19.0-14.14
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 43b801ba8b update sources to Ubuntu-5.19.0-14.14
(generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 2f1b0dd29f update ABI file for 5.19.0-2-pve-smm-fix
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 998c6ae1d6 bump version to 5.19.0-1~rc8+2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 54ebe3cb9b apply "SMM emulation and interrupt shadow fixes"
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht e134df3bfb update ABI file for 5.19.0-1-pve
(partially generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht c05b69d890 update fw-list for 5.19.0
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 13d55d8e4e bump version to 5.19.0-1~rc8+1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 4f993f3c8d drop hio from ubuntu makefile again
hio driver got removed by ubuntu already in jammy, but then they
forgot to remove this instance too, failing the clean build target,
my patch got accepted but was forgotten when doing the same in
kinetic, so here we go again

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 03f275ed36 rebase patches on top of Ubuntu-5.19.0-11.11
(partially generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 0e82bcd140 update sources to Ubuntu-5.19.0-11.11
(partially generated with debian/scripts/import-upstream-tag)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 2bebed5935 update ABI file for 5.18.0-1-pve
(generated with debian/scripts/abi-generate)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-07 15:10:23 +02:00
Thomas Lamprecht 4fa95e6fc2 bump version to 5.18.0-1~WIP1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-06 10:51:03 +02:00
Thomas Lamprecht 997b257f9f update fwlist
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-06 10:50:23 +02:00
Thomas Lamprecht 3ae8384f6f update patches and buildsys for kinetic kernel Ubuntu-5.18.0-6.6
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-06 10:50:21 +02:00
Thomas Lamprecht c94439e479 add kinetic 22.10 sub module
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-09-06 09:45:42 +02:00
42 changed files with 28516 additions and 29051 deletions
+70 -87
View File
@@ -1,127 +1,110 @@
include /usr/share/dpkg/pkg-info.mk
# also bump pve-kernel-meta if either of MAJ.MIN, PATCHLEVEL or KREL change
KERNEL_MAJ=5
KERNEL_MIN=15
KERNEL_PATCHLEVEL=158
KERNEL_MAJ=6
KERNEL_MIN=2
KERNEL_PATCHLEVEL=6
# increment KREL if the ABI changes (abicheck target in debian/rules)
# rebuild packages with new KREL and run 'make abiupdate'
KREL=1
KREL=2
PKGREL=1
PKGREL=2~secureboot1
KERNEL_MAJMIN=$(KERNEL_MAJ).$(KERNEL_MIN)
KERNEL_VER=$(KERNEL_MAJMIN).$(KERNEL_PATCHLEVEL)
EXTRAVERSION=-$(KREL)-pve
KVNAME=$(KERNEL_VER)$(EXTRAVERSION)
PACKAGE=pve-kernel-$(KVNAME)
HDRPACKAGE=pve-headers-$(KVNAME)
EXTRAVERSION=-${KREL}-pve
KVNAME=${KERNEL_VER}${EXTRAVERSION}
PACKAGE=pve-kernel-${KVNAME}
HDRPACKAGE=pve-headers-${KVNAME}
ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
# amd64/x86_64/x86 share the arch subdirectory in the kernel, 'x86' so we need
# a mapping
KERNEL_ARCH=x86
ifneq ($(ARCH), amd64)
KERNEL_ARCH=$(ARCH)
ifneq (${ARCH}, amd64)
KERNEL_ARCH=${ARCH}
endif
GITVERSION:=$(shell git rev-parse HEAD)
SKIPABI=0
BUILD_DIR=pve-kernel-$(KERNEL_VER)
BUILD_DIR=build
KERNEL_SRC=ubuntu-kernel
KERNEL_SRC_SUBMODULE=submodules/$(KERNEL_SRC)
KERNEL_CFG_ORG=config-$(KERNEL_VER).org
KERNEL_CFG_ORG=config-${KERNEL_VER}.org
ZFSONLINUX_SUBMODULE=submodules/zfsonlinux
ZFSDIR=pkg-zfs
MODULES=modules
MODULE_DIRS=$(ZFSDIR)
MODULE_DIRS=${ZFSDIR}
# exported to debian/rules via debian/rules.d/dirs.mk
DIRS=KERNEL_SRC ZFSDIR MODULES
DSC=pve-kernel_$(KERNEL_VER)-$(PKGREL).dsc
DST_DEB=$(PACKAGE)_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
HDR_DEB=$(HDRPACKAGE)_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
USR_HDR_DEB=pve-kernel-libc-dev_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
LINUX_TOOLS_DEB=linux-tools-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
LINUX_TOOLS_DBG_DEB=linux-tools-$(KERNEL_MAJMIN)-dbgsym_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
DST_DEB=${PACKAGE}_${KERNEL_VER}-${PKGREL}_${ARCH}.deb
HDR_DEB=${HDRPACKAGE}_${KERNEL_VER}-${PKGREL}_${ARCH}.deb
USR_HDR_DEB=pve-kernel-libc-dev_${KERNEL_VER}-${PKGREL}_${ARCH}.deb
LINUX_TOOLS_DEB=linux-tools-$(KERNEL_MAJMIN)_${KERNEL_VER}-${PKGREL}_${ARCH}.deb
LINUX_TOOLS_DBG_DEB=linux-tools-$(KERNEL_MAJMIN)-dbgsym_${KERNEL_VER}-${PKGREL}_${ARCH}.deb
DEBS=$(DST_DEB) $(HDR_DEB) $(USR_HDR_DEB) $(LINUX_TOOLS_DEB) $(LINUX_TOOLS_DBG_DEB)
UPLOAD_DEBS=$(DST_DEB) $(HDR_DEB) $(LINUX_TOOLS_DEB) $(LINUX_TOOLS_DBG_DEB)
DEBS=${DST_DEB} ${HDR_DEB} ${LINUX_TOOLS_DEB} ${LINUX_TOOLS_DBG_DEB} # ${USR_HDR_DEB}
all: deb
deb: $(DEBS)
deb: ${DEBS}
$(LINUX_TOOLS_DEB) $(HDR_DEB) $(USR_HDR_DEB) $(LINUX_TOOLS_DBG_DEB): $(DST_DEB)
$(DST_DEB): $(BUILD_DIR).prepared
cd $(BUILD_DIR); dpkg-buildpackage --jobs=auto -b -uc -us
lintian $(DST_DEB)
#lintian $(HDR_DEB)
lintian $(LINUX_TOOLS_DEB)
${LINUX_TOOLS_DEB} ${HDR_DEB}: ${DST_DEB}
${DST_DEB}: ${BUILD_DIR}.prepared
cd ${BUILD_DIR}; dpkg-buildpackage --jobs=auto -b -uc -us
lintian ${DST_DEB}
#lintian ${HDR_DEB}
lintian ${LINUX_TOOLS_DEB}
dsc: $(DSC)
$(DSC): $(BUILD_DIR).prepared
cd $(BUILD_DIR); dpkg-buildpackage -S -uc -us -d
lintian $(DSC)
sbuild: $(DSC)
sbuild $(DSC)
$(BUILD_DIR).prepared: $(addsuffix .prepared,$(KERNEL_SRC) $(MODULES) debian)
cp -a fwlist-previous $(BUILD_DIR)/
cp -a abi-prev-* $(BUILD_DIR)/
cp -a abi-blacklist $(BUILD_DIR)/
${BUILD_DIR}.prepared: $(addsuffix .prepared,${KERNEL_SRC} ${MODULES} debian)
cp -a fwlist-previous ${BUILD_DIR}/
cp -a abi-prev-* ${BUILD_DIR}/
cp -a abi-blacklist ${BUILD_DIR}/
touch $@
debian.prepared: debian
rm -rf $(BUILD_DIR)/debian
mkdir -p $(BUILD_DIR)
cp -a debian $(BUILD_DIR)/debian
echo "git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout $(GITVERSION)" > $(BUILD_DIR)/debian/SOURCE
@$(foreach dir, $(DIRS),echo "$(dir)=$($(dir))" >> $(BUILD_DIR)/debian/rules.d/env.mk;)
echo "KVNAME=$(KVNAME)" >> $(BUILD_DIR)/debian/rules.d/env.mk
echo "KERNEL_MAJMIN=$(KERNEL_MAJMIN)" >> $(BUILD_DIR)/debian/rules.d/env.mk
cd $(BUILD_DIR); debian/rules debian/control
rm -rf ${BUILD_DIR}/debian
mkdir -p ${BUILD_DIR}
cp -a debian ${BUILD_DIR}/debian
echo "git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout ${GITVERSION}" > ${BUILD_DIR}/debian/SOURCE
@$(foreach dir, ${DIRS},echo "${dir}=${${dir}}" >> ${BUILD_DIR}/debian/rules.d/env.mk;)
echo "KVNAME=${KVNAME}" >> ${BUILD_DIR}/debian/rules.d/env.mk
echo "KERNEL_MAJMIN=${KERNEL_MAJMIN}" >> ${BUILD_DIR}/debian/rules.d/env.mk
cd ${BUILD_DIR}; debian/rules debian/control
touch $@
$(KERNEL_SRC).prepared: $(KERNEL_SRC_SUBMODULE) | submodule
rm -rf $(BUILD_DIR)/$(KERNEL_SRC) $@
mkdir -p $(BUILD_DIR)
cp -a $(KERNEL_SRC_SUBMODULE) $(BUILD_DIR)/$(KERNEL_SRC)
${KERNEL_SRC}.prepared: ${KERNEL_SRC_SUBMODULE} | submodule
rm -rf ${BUILD_DIR}/${KERNEL_SRC} $@
mkdir -p ${BUILD_DIR}
cp -a ${KERNEL_SRC_SUBMODULE} ${BUILD_DIR}/${KERNEL_SRC}
# TODO: split for archs, track and diff in our repository?
cd $(BUILD_DIR)/$(KERNEL_SRC); python3 debian/scripts/misc/annotations --arch amd64 --export >../../$(KERNEL_CFG_ORG)
cp $(KERNEL_CFG_ORG) $(BUILD_DIR)/$(KERNEL_SRC)/.config
sed -i $(BUILD_DIR)/$(KERNEL_SRC)/Makefile -e 's/^EXTRAVERSION.*$$/EXTRAVERSION=$(EXTRAVERSION)/'
rm -rf $(BUILD_DIR)/$(KERNEL_SRC)/debian $(BUILD_DIR)/$(KERNEL_SRC)/debian.master
set -e; cd $(BUILD_DIR)/$(KERNEL_SRC); \
for patch in ../../patches/kernel/*.patch; do \
echo "applying patch '$$patch'"; \
patch --batch -p1 < "$${patch}"; \
done
cd ${BUILD_DIR}/${KERNEL_SRC}; python3 debian/scripts/misc/annotations --arch amd64 --export >../../${KERNEL_CFG_ORG}
cp ${KERNEL_CFG_ORG} ${BUILD_DIR}/${KERNEL_SRC}/.config
sed -i ${BUILD_DIR}/${KERNEL_SRC}/Makefile -e 's/^EXTRAVERSION.*$$/EXTRAVERSION=${EXTRAVERSION}/'
rm -rf ${BUILD_DIR}/${KERNEL_SRC}/debian ${BUILD_DIR}/${KERNEL_SRC}/debian.master
set -e; cd ${BUILD_DIR}/${KERNEL_SRC}; for patch in ../../patches/kernel/*.patch; do echo "applying patch '$$patch'" && patch -p1 < $${patch}; done
touch $@
$(MODULES).prepared: $(addsuffix .prepared,$(MODULE_DIRS))
${MODULES}.prepared: $(addsuffix .prepared,${MODULE_DIRS})
touch $@
$(ZFSDIR).prepared: $(ZFSONLINUX_SUBMODULE)
rm -rf $(BUILD_DIR)/$(MODULES)/$(ZFSDIR) $(BUILD_DIR)/$(MODULES)/tmp $@
mkdir -p $(BUILD_DIR)/$(MODULES)/tmp
cp -a $(ZFSONLINUX_SUBMODULE)/* $(BUILD_DIR)/$(MODULES)/tmp
cd $(BUILD_DIR)/$(MODULES)/tmp; make kernel
rm -rf $(BUILD_DIR)/$(MODULES)/tmp
touch $(ZFSDIR).prepared
${ZFSDIR}.prepared: ${ZFSONLINUX_SUBMODULE}
rm -rf ${BUILD_DIR}/${MODULES}/${ZFSDIR} ${BUILD_DIR}/${MODULES}/tmp $@
mkdir -p ${BUILD_DIR}/${MODULES}/tmp
cp -a ${ZFSONLINUX_SUBMODULE}/* ${BUILD_DIR}/${MODULES}/tmp
cd ${BUILD_DIR}/${MODULES}/tmp; make kernel
rm -rf ${BUILD_DIR}/${MODULES}/tmp
touch ${ZFSDIR}.prepared
.PHONY: upload
upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
upload: $(UPLOAD_DEBS)
tar cf - $(UPLOAD_DEBS)|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) --arch $(ARCH)
upload: ${DEBS}
tar cf - ${DEBS}|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist bullseye --arch ${ARCH}
.PHONY: distclean
distclean: clean
@@ -131,18 +114,18 @@ distclean: clean
.PHONY: update_modules
update_modules: submodule
git submodule foreach 'git pull --ff-only origin master'
cd $(ZFSONLINUX_SUBMODULE); git pull --ff-only origin master
cd ${ZFSONLINUX_SUBMODULE}; git pull --ff-only origin master
# make sure submodules were initialized
.PHONY: submodule
submodule:
test -f "$(KERNEL_SRC_SUBMODULE)/README" || git submodule update --init $(KERNEL_SRC_SUBMODULE)
test -f "$(ZFSONLINUX_SUBMODULE)/Makefile" || git submodule update --init --recursive $(ZFSONLINUX_SUBMODULE)
test -f "${KERNEL_SRC_SUBMODULE}/README" || git submodule update --init ${KERNEL_SRC_SUBMODULE}
test -f "${ZFSONLINUX_SUBMODULE}/Makefile" || git submodule update --init --recursive ${ZFSONLINUX_SUBMODULE}
# call after ABI bump with header deb in working directory
.PHONY: abiupdate
abiupdate: abi-prev-$(KVNAME)
abi-prev-$(KVNAME): abi-tmp-$(KVNAME)
abiupdate: abi-prev-${KVNAME}
abi-prev-${KVNAME}: abi-tmp-${KVNAME}
ifneq ($(strip $(shell git status --untracked-files=no --porcelain -z)),)
@echo "working directory unclean, aborting!"
@false
@@ -150,15 +133,15 @@ else
git rm "abi-prev-*"
mv $< $@
git add $@
git commit -s -m "update ABI file for $(KVNAME)" -m "(generated with debian/scripts/abi-generate)"
@echo "update abi-prev-$(KVNAME) committed!"
git commit -s -m "update ABI file for ${KVNAME}" -m "(generated with debian/scripts/abi-generate)"
@echo "update abi-prev-${KVNAME} committed!"
endif
abi-tmp-$(KVNAME):
@ test -e $(HDR_DEB) || (echo "need $(HDR_DEB) to extract ABI data!" && false)
debian/scripts/abi-generate $(HDR_DEB) $@ $(KVNAME) 1
abi-tmp-${KVNAME}:
@ test -e ${HDR_DEB} || (echo "need ${HDR_DEB} to extract ABI data!" && false)
debian/scripts/abi-generate ${HDR_DEB} $@ ${KVNAME} 1
.PHONY: clean
clean:
rm -rf *~ pve-kernel-[0-9]*/ *.prepared $(KERNEL_CFG_ORG)
rm -f *.deb *.dsc *.changes *.buildinfo *.build pve-kernel*.tar.*
rm -rf *~ build *.prepared ${KERNEL_CFG_ORG}
rm -f *.deb *.changes *.buildinfo
+5 -5
View File
@@ -1,9 +1,9 @@
KERNEL SOURCE:
==============
We currently use the Ubuntu kernel sources, available from:
We currently use the Ubuntu kernel sources, available from our mirror:
http://kernel.ubuntu.com/git/ubuntu/ubuntu-jammy.git/
https://git.proxmox.com/?p=mirror_ubuntu-kernels.git;a=summary
Ubuntu will maintain those kernels till:
@@ -35,7 +35,7 @@ get applied with the `patch` tool. From a git point-of-view, the copied
directory remains clean even with extra patches applied since it does not
contain a .git directory, but a reference to the (still pristine) submodule:
$ cat build/ubuntu-jammy/.git
$ cat build/ubuntu-kernel/.git
If you mistakenly cloned the upstream repo as "normal" clone (not via the
submodule mechanics) this means that you have a real .git directory with its
@@ -63,7 +63,7 @@ git clone git://git.proxmox.com/git/proxmox-ve.git
pve-kernel-meta
---------------
depends on latest kernel and header package within a certain kernel series,
Depends on latest kernel and header package within a certain kernel series,
e.g., pve-kernel-5.15 / pve-headers-5.15
git clone git://git.proxmox.com/git/pve-kernel-meta.git
@@ -71,7 +71,7 @@ git clone git://git.proxmox.com/git/pve-kernel-meta.git
pve-firmware
------------
contains the firmware for all released PVE kernels.
Contains the firmware for all released PVE kernels.
git clone git://git.proxmox.com/git/pve-firmware.git
File diff suppressed because it is too large Load Diff
+27597
View File
File diff suppressed because it is too large Load Diff
+37
View File
@@ -0,0 +1,37 @@
-----BEGIN CERTIFICATE-----
MIIGbjCCBFagAwIBAgIUTVo8veNlt0qzt14J+H2mhEB2SNUwDQYJKoZIhvcNAQEL
BQAwgZMxCzAJBgNVBAYTAkFUMQ8wDQYDVQQIDAZWaWVubmExDzANBgNVBAcMBlZp
ZW5uYTEmMCQGA1UECgwdUHJveG1veCBTZXJ2ZXIgU29sdXRpb25zIEdtYkgxFzAV
BgNVBAMMDlNlY3VyZSBCb290IENBMSEwHwYJKoZIhvcNAQkBFhJvZmZpY2VAcHJv
eG1veC5jb20wHhcNMjMwMzA2MTM1MTM0WhcNMzMwMzAzMTM1MTM0WjCBkzELMAkG
A1UEBhMCQVQxDzANBgNVBAgMBlZpZW5uYTEPMA0GA1UEBwwGVmllbm5hMSYwJAYD
VQQKDB1Qcm94bW94IFNlcnZlciBTb2x1dGlvbnMgR21iSDEXMBUGA1UEAwwOU2Vj
dXJlIEJvb3QgQ0ExITAfBgkqhkiG9w0BCQEWEm9mZmljZUBwcm94bW94LmNvbTCC
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ59mP8gRLqsA6P53ejy0wMk
0qLlICtDkPXsJoi4QRHjlPErxXv5zsZ4WqSG2bQ8EW95FAf8EOF6ge+G17neYt1w
DmlvHzLBfqTJj5EBRgVjdWOjX3AkS/elOyzHdq4rKOteUSpQlMP4ub2cAUdy/8rp
ouTbduttNv8mymAO89/kbXCEmKFiRS+av+hykFFyXH/KTRa2QnvLVadMEkmtA+vm
+yQhYWCTD8hdisa1o3dKM0Z2l8LyzfIOsVXcwHHB7AhtR4tbLR9Tz2p/m9Gz//vj
82dBaChh6kxIMZ8kACP28dA561R2P6ZcjzLSJ0Tq5e4tiW9SNEzuTYKTRvFeQoQh
4usDdSF3ifXDuimShpv8Yaf4fntyIaUfnm6H5tvNr9b9Rw6ZL200LV5VugQ1EpfE
F0+c3LQfurwT7svISgXSY62Fe/TiHFANOVXM5j3/Dr2ktKyce7BUGN4ewpWPvP99
io+rdd4bTReuDh8j0nhsSdYKfvuOmvQpgL8Smzno54/hdpuO6cv+slCr1ApDexl8
gAPPwCZRsH7aPc92g+YPzDm3k77RqkCXPA19KKQLYKvL7a+H3rnqgO81CdGFPHOz
I5UruKLLeDGAWR0bo0JqDMEL8/oPh9IvGo8lFcTros0NEof6A7p8SGmxM2NodTo9
spDVs84xDPlp4yX4u8A9AgMBAAGjgbcwgbQwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHQYDVR0OBBYEFLXxsR5I
LbWGkynLl1qjUgX4cs16MB8GA1UdIwQYMBaAFLXxsR5ILbWGkynLl1qjUgX4cs16
MB0GA1UdEQQWMBSBEm9mZmljZUBwcm94bW94LmNvbTAdBgNVHRIEFjAUgRJvZmZp
Y2VAcHJveG1veC5jb20wDQYJKoZIhvcNAQELBQADggIBAAUGWTt792ibVtE9yKgq
9YtmybKGWjDHdMKl5AcnxLD60z7cEgcUBpEXaUbTzic5rz7fYhUM29LZkF8NIA2a
rzrF0w+J1zZZKG2VvTWmdgynNNKQ/iTRbhgSZ94hEWOwumlEW4O6HwUN+VYFx8wf
jvyWc1K6cdCc70IeC5POjYTlXKPoDq8ysPMLhxm7dsk7DDWcR0siMbYqGLLK5cJB
lZE+9Q3Nj/q4m3odjK1ILrDGKqWWJgxopE21e903Ej+TNw+TduXygHqwVloEXUi4
clmMMwCfhEBI9Vuy0+QSLxvrHKbwYpWd59RBQEsUubi8sT8Oh7njgmEd/Pf9uD7U
1Rd9I+1MkNOZXyoyvaJQl9NZ9RpyG+ZbeQoFcL2CeCy0jJQQSilI5k4RtiDrGn6R
GxlRL/FTvGWBkQGNwvoeFwD6i7zYainf1Z7f1Dh83MxKarxpAwX61K+rHpvAvjN/
Hd4dslj5C+p188FnGaqiFlFAgVcF//F+yZFGYu1sTIQJ5f0C3LiFLeQYi3SPTf0L
wk78eHgo6x1cIOM3/Ct4mflHBxnrfOJ9YdEAn2MklpDT5dif+9+zpN1myCQn4HoW
OgoWIacSuvuFczHTQf2IX4ZEEE5SZwE31f7E0cqjgXmwbz1a81UMZHzvr71rDeWi
oRgE3Pe1htzpOmw5Ygvjtn8k
-----END CERTIFICATE-----
+37
View File
@@ -0,0 +1,37 @@
-----BEGIN CERTIFICATE-----
MIIGbzCCBFegAwIBAgIUakjebPHbd0vTEj9dEa3OF+gioGMwDQYJKoZIhvcNAQEL
BQAwgZMxCzAJBgNVBAYTAkFUMQ8wDQYDVQQIDAZWaWVubmExDzANBgNVBAcMBlZp
ZW5uYTEmMCQGA1UECgwdUHJveG1veCBTZXJ2ZXIgU29sdXRpb25zIEdtYkgxFzAV
BgNVBAMMDlNlY3VyZSBCb290IENBMSEwHwYJKoZIhvcNAQkBFhJvZmZpY2VAcHJv
eG1veC5jb20wHhcNMjMwMzA2MTQwNTI1WhcNMjcwNDE0MTQwNTI1WjCBmjELMAkG
A1UEBhMCQVQxDzANBgNVBAgMBlZpZW5uYTEPMA0GA1UEBwwGVmllbm5hMSYwJAYD
VQQKDB1Qcm94bW94IFNlcnZlciBTb2x1dGlvbnMgR21iSDEeMBwGA1UEAwwVU2Vj
dXJlIEJvb3QgU2lnbiAyMDIzMSEwHwYJKoZIhvcNAQkBFhJvZmZpY2VAcHJveG1v
eC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJGReH5i3aihb/
frdbzzNueHBt7DC9W2/GXYf0wfl8izCXz2SYM/UIZavbpzF2uhgxli3Dj4M0FyR2
oTKRseWyy+YMiwuhQcqCw0KRS6uOUiGjOtPHsEqDFO6DP8d1gNjYkF0jzY/CNf0N
5Sc+w8jknQJgZ9G1RGcC2ihZATx2pgG9nYA30Op8qHyhcF2KrUmh8wpXky21u0Ja
0/whsNFNSfQrvosgUroxLd2TvBdcBJu3SXt0B15jfY4Qssjmwgfs/oU8YGaAYnIp
PLJRqzho/kpDA3PH2lsgxv5BJHQgDuODLj3Q3dx09C71Qdb3FlQ6z9hIdFUoPrvC
kUpZ5lEwGUyvFZtJJQvGm/1BpDj1G7P8lqODyfkJ4c77XoH7M9z945HmxrfAyjP7
9Jk8NXA9bSy+ygPHPHlTLEc10HKvk/SRg/sGGUveTr9C6rObfP8EmvXogpS46xSn
W9s2vFSVFyOBvLpdIhU91McBFinvQaqY0r2XTNrsU3Zp5YG3z6hh6BOLCpD/pixc
BQyfT8wGeI59dobVSSrWqt+1vNxO02I5t7Mlam687Ix1e3C/nk7+i44WMcmB8n+x
Dq/v/L+UJlQ75u2dsaAiYUrGcsHQWAZ34oIAfec9qCgG+OLTwobwXXiOlaWiO51n
0xCQ4ePK+vZuDxRHaXL7hOxFCe3iKwIDAQABo4GxMIGuMB0GA1UdDgQWBBRr/2t+
Hu0KTVTbNhd31p7aJH15IjAfBgNVHSMEGDAWgBS18bEeSC21hpMpy5dao1IF+HLN
ejAdBgNVHREEFjAUgRJvZmZpY2VAcHJveG1veC5jb20wHQYDVR0SBBYwFIESb2Zm
aWNlQHByb3htb3guY29tMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUH
AwMwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBCwUAA4ICAQBYmLgWPJSK/pP/CkZE
iYttW1Vd0Wm4DeZVSyUh2c9AI+A+IT5otEXjCflU8sYU4vm0eEtNwhmGdVf8oZe4
tS/2eFawDAqEQ8xMsinbMJoqvcYx9uEZPiOOo3GS2YjfUy03Q3BAOV3rMFOjP4y+
dfYF3IWnKQxvUV0wapRyDbT62plKt4UCtBagUPcm838YRD6ax+4yK/5sojMQM1IW
2yGgEz8jeCyPI19Ots2RBZTJU2BZ1QqRPLybvLfsENtKgKqOE14BEp6WqtYBaj89
QZD4tbP9Mqcmnj8AfG89pb1Fj6tq0MLZsboF6i0J7uuQ6CKkb5ksQhLODLMwAZi1
1EAgWk5btwj6ZvoOHFOjAXGJ13tmUeYt/Zipyy/ie+5LSEdFevQ+zmZzsglfX3QK
6skoBpHs3kLcuPsoe8uhCvn/b22lHkFdYYkIwIUQFPJgdvBzD8LYHnD8P60UdsQO
vSSt9qzsq04DCEjwhmNJUeddL9ESGNL8vgpB9GvNjFEq6QMncELkdXDoAeqGFolE
/dj+8sVq+34plRsvD1GDDx70UWk0ZtQlvhqDJ0kxeT+yYASrwLoujK44SLq8cMJr
JYxDoxFOy5MSw+EzEXTP9LLkYNdPv/nzPbEz3lEctczyOgBWr22272Kdv3QCHBdP
v4+vFbHnrXmu8cC9T45r2aX3rQ==
-----END CERTIFICATE-----
+68 -128
View File
@@ -1,170 +1,110 @@
pve-kernel (5.15.158-1) bullseye; urgency=medium
pve-kernel (6.2.6-2~secureboot1) bullseye; urgency=medium
* update sources to Ubuntu-5.15.0-115.125, based on 5.15.158
* test build with lockdown, trusted key and module signing
-- Proxmox Support Team <support@proxmox.com> Mon, 10 Jun 2024 16:56:16 +0200
-- Proxmox Support Team <support@proxmox.com> Thu, 16 Mar 2023 14:56:01 +0100
pve-kernel (5.15.152-1) bullseye; urgency=medium
pve-kernel (6.2.6-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-111.121, based on 5.15.152
* update to Ubuntu-6.2.0-17.17 based on 6.2.6
-- Proxmox Support Team <support@proxmox.com> Mon, 29 Apr 2024 09:31:55 +0200
-- Proxmox Support Team <support@proxmox.com> Tue, 14 Mar 2023 18:08:23 +0100
pve-kernel (5.15.149-1) bullseye; urgency=medium
pve-kernel (6.2.2-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-104.114 basing of 5.15.149
* update to Ubuntu-6.2.0-1.1
* update ZFS to 2.1.15
-- Proxmox Support Team <support@proxmox.com> Mon, 13 Mar 2023 17:57:00 +0100
-- Proxmox Support Team <support@proxmox.com> Fri, 29 Mar 2024 15:24:01 +0100
pve-kernel (6.1.15-1) bullseye; urgency=medium
pve-kernel (5.15.143-1) bullseye; urgency=medium
* update to Proxmox-6.1.15-1
* update to Ubuntu-5.15.0-100.110 basing of 5.15.143
* backport patch to fix issue with large IO requests
-- Proxmox Support Team <support@proxmox.com> Thu, 08 Feb 2024 19:12:26 +0100
-- Proxmox Support Team <support@proxmox.com> Wed, 08 Mar 2023 09:53:18 +0100
pve-kernel (5.15.136-1) bullseye; urgency=medium
pve-kernel (6.1.14-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-94.104 basing of 5.15.136
* update to Proxmox-6.1.14-1
-- Proxmox Support Team <support@proxmox.com> Tue, 23 Jan 2024 12:10:07 +0100
-- Proxmox Support Team <support@proxmox.com> Mon, 27 Feb 2023 18:09:47 +0100
pve-kernel (5.15.131-3) bullseye; urgency=medium
pve-kernel (6.1.10-1) bullseye; urgency=medium
* updates ZFS to 2.1.14
* update to Proxmox-6.1.10-1
* bump ABI to 5.15.131-2
-- Proxmox Support Team <support@proxmox.com> Tue, 07 Feb 2023 14:10:10 +0100
-- Proxmox Support Team <support@proxmox.com> Fri, 01 Dec 2023 14:42:42 +0100
pve-kernel (5.15.131-2) bullseye; urgency=medium
* update to Ubuntu-5.15.0-91.101 fixing an issue with enumerating USB
devices
-- Proxmox Support Team <support@proxmox.com> Tue, 14 Nov 2023 12:32:55 +0100
pve-kernel (5.15.131-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-90.100 basing of the 5.15.131 stable release
-- Proxmox Support Team <support@proxmox.com> Thu, 09 Nov 2023 10:29:57 +0100
pve-kernel (5.15.126-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-88.98 basing of 5.15.126
-- Proxmox Support Team <support@proxmox.com> Tue, 03 Oct 2023 19:24:13 +0200
pve-kernel (5.15.116-1) bullseye; urgency=medium
* disable CONFIG_GDS_FORCE_MITIGATION again to avoid software breakage with
older intel-microcode versions
-- Proxmox Support Team <support@proxmox.com> Tue, 29 Aug 2023 15:46:21 +0200
pve-kernel (5.15.111-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-82.91
-- Proxmox Support Team <support@proxmox.com> Fri, 18 Aug 2023 10:57:15 +0200
pve-kernel (5.15.108-2) bullseye; urgency=medium
* backport Zenbleed stop-gap workaround for CVE-2023-20593, the actual fix
is the amd64-microcode update.
-- Proxmox Support Team <support@proxmox.com> Thu, 20 Jul 2023 12:06:18 +0200
pve-kernel (5.15.108-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-77.84, based on 5.15.108
* bump ABI to 5.15.108-1
-- Proxmox Support Team <support@proxmox.com> Sat, 17 Jun 2023 11:41:53 +0200
pve-kernel (5.15.107-2) bullseye; urgency=medium
* backport "netfilter: nf_tables: deactivate anonymous set from preparation
phase"
-- Proxmox Support Team <support@proxmox.com> Wed, 10 May 2023 11:10:23 +0200
pve-kernel (5.15.107-1) bullseye; urgency=medium
* update to Proxmox-5.15.107-1
* update ZFS to 2.1.11
-- Proxmox Support Team <support@proxmox.com> Thu, 20 Apr 2023 12:05:46 +0200
pve-kernel (5.15.104-2) bullseye; urgency=medium
* backport "igb: revert rtnl_lock() that causes deadlock"
-- Proxmox Support Team <support@proxmox.com> Wed, 12 Apr 2023 13:23:09 +0200
pve-kernel (5.15.104-1) bullseye; urgency=medium
* update to upstream ubuntu and stable tree's v5.15.104
-- Proxmox Support Team <support@proxmox.com> Wed, 29 Mar 2023 17:51:33 +0200
pve-kernel (5.15.102-1) bullseye; urgency=medium
* update to upstream ubuntu and stable tree's v5.15.102
-- Proxmox Support Team <support@proxmox.com> Tue, 14 Mar 2023 14:48:39 +0100
pve-kernel (5.15.85-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-65.72 based on v5.15.85
pve-kernel (6.1.6-1) bullseye; urgency=medium
* update ZFS to 2.1.9
-- Proxmox Support Team <support@proxmox.com> Wed, 01 Feb 2023 16:07:18 +0100
* update to Ubuntu-6.1.0-14.14 based on upstream 6.1.6
pve-kernel (5.15.83-1) bullseye; urgency=medium
-- Proxmox Support Team <support@proxmox.com> Sat, 28 Jan 2023 15:05:09 +0100
pve-kernel (6.1.2-1) bullseye; urgency=medium
* backport ZFS compat fixes for Linux 6.1 w.r.t. a OTMPFILE open syscall
* update to Ubuntu-6.1.0-12.12
* backport a few newer fixes-of-fixes from 6.1.4
* bump ABI to 6.1.2-1
-- Proxmox Support Team <support@proxmox.com> Sat, 07 Jan 2023 14:56:01 +0100
pve-kernel (6.1.0-1) bullseye; urgency=medium
* update to Ubuntu-6.1.0-1.1 based on upstram v6.1
* update ZFS to 2.1.7
* update to upstream stable v5.15.83
-- Proxmox Support Team <support@proxmox.com> Tue, 13 Dec 2022 15:08:53 +0100
-- Proxmox Support Team <support@proxmox.com> Wed, 14 Dec 2022 14:09:09 +0100
pve-kernel (5.19.17-1) bullseye; urgency=medium
pve-kernel (5.15.74-1) bullseye; urgency=medium
* update to Ubuntu-5.19.0-24.25
* update to Ubuntu-5.15.0-54.60
* bump ABI to 5.19.17-1
* bump ABI to 5.15.74-1
-- Proxmox Support Team <support@proxmox.com> Mon, 14 Nov 2022 20:25:12 +0100
-- Proxmox Support Team <support@proxmox.com> Mon, 14 Nov 2022 20:17:15 +0100
pve-kernel (5.15.64-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-51.57
* bump ABI to 5.15.64-1
-- Proxmox Support Team <support@proxmox.com> Thu, 13 Oct 2022 10:30:34 +0200
pve-kernel (5.15.60-2) bullseye; urgency=medium
pve-kernel (5.19.7-2) bullseye; urgency=medium
* update ZFS to 2.1.6
* update to Ubuntu-5.15.0-50.56
* update to Ubuntu-5.19.0-19.19
* bump ABI to 5.15.60-2
* bump ABI to 5.19.7-2
-- Proxmox Support Team <support@proxmox.com> Tue, 04 Oct 2022 16:52:28 +0200
-- Proxmox Support Team <support@proxmox.com> Tue, 04 Oct 2022 17:18:40 +0200
pve-kernel (5.15.60-1) bullseye; urgency=medium
pve-kernel (5.19.7-1) bullseye; urgency=medium
* update to Ubuntu-5.15.0-49.55
* update to 5.19.7 based on Ubuntu-5.19.0-16.16
-- Proxmox Support Team <support@proxmox.com> Mon, 19 Sep 2022 17:53:17 +0200
-- Proxmox Support Team <support@proxmox.com> Tue, 06 Sep 2022 07:54:58 +0200
pve-kernel (5.19.0-1) bullseye; urgency=medium
* update to 5.19.0 based from Ubuntu-5.19.0-14.14
-- Proxmox Support Team <support@proxmox.com> Tue, 02 Aug 2022 09:18:39 +0200
pve-kernel (5.19.0-1~rc8+2) bullseye; urgency=medium
* backport smm fixes
-- Proxmox Support Team <support@proxmox.com> Wed, 27 Jul 2022 11:27:10 +0200
pve-kernel (5.19.0-1~rc8+1) bullseye; urgency=medium
* update to 5.19.0-rc8 based from Ubuntu-5.19.0-11.11
-- Proxmox Support Team <support@proxmox.com> Tue, 26 Jul 2022 11:47:30 +0200
pve-kernel (5.15.53-1) bullseye; urgency=medium
+23 -16
View File
@@ -25,15 +25,16 @@ Build-Depends: asciidoc-base,
libtool,
lintian,
lz4,
python3-dev,
perl-modules,
python3-minimal,
rsync,
sed,
sphinx-common,
tar,
xmlto,
zlib1g-dev,
zstd,
Build-Conflicts: pve-headers-@KVNAME@,
Standards-Version: 4.6.2
Build-Conflicts: pve-headers-@KVNAME@
Vcs-Git: git://git.proxmox.com/git/pve-kernel
Vcs-Browser: https://git.proxmox.com/?p=pve-kernel.git
@@ -41,7 +42,7 @@ Package: linux-tools-@KVMAJMIN@
Architecture: any
Section: devel
Priority: optional
Depends: linux-base, ${misc:Depends}, ${shlibs:Depends},
Depends: linux-base, ${misc:Depends}, ${shlibs:Depends}
Description: Linux kernel version specific tools for version @KVMAJMIN@
This package provides the architecture dependent parts for kernel
version locked tools (such as perf and x86_energy_perf_policy)
@@ -50,8 +51,8 @@ Package: pve-headers-@KVNAME@
Section: devel
Priority: optional
Architecture: any
Provides: linux-headers-@KVNAME@-amd64,
Depends: ${misc:Depends},
Provides: linux-headers-@KVNAME@-amd64
Depends: coreutils | fileutils (>= 4.0)
Description: Proxmox Kernel Headers
This package contains the linux kernel headers
@@ -59,20 +60,19 @@ Package: pve-kernel-@KVNAME@
Section: admin
Priority: optional
Architecture: any
Provides: linux-image-@KVNAME@-amd64,
Suggests: pve-firmware,
Depends: busybox, initramfs-tools | linux-initramfs-tool, ${misc:Depends},
Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64,
Provides: linux-image-@KVNAME@-amd64
Suggests: pve-firmware
Depends: busybox, initramfs-tools | linux-initramfs-tool
Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64
Description: Proxmox Kernel Image
This package contains the linux kernel and initial ramdisk used for booting
Package: pve-kernel-@KVNAME@-dbgsym
Architecture: any
Provides: linux-debug,
Provides: linux-debug
Section: devel
Priority: optional
Build-Profiles: <pkg.pve-kernel.debug>
Depends: ${misc:Depends},
Description: Proxmox Kernel debug image
This package provides the kernel debug image for version @KVNAME@. The debug
kernel image contained in this package is NOT meant to boot from - it is
@@ -80,14 +80,21 @@ Description: Proxmox Kernel debug image
to analyze kernel crashes. This package also contains the pve-kernel modules
in their unstripped version.
Package: pve-kernel-@KVNAME@-signed-template
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, make | build-essential | dpkg-dev
Description: Template for signed kernel package
This package is used to control code signing by the Proxmox signing
service.
Package: pve-kernel-libc-dev
Section: devel
Priority: optional
Architecture: any
Provides: linux-libc-dev (=${binary:Version}),
Conflicts: linux-libc-dev,
Replaces: linux-libc-dev,
Depends: ${misc:Depends},
Provides: linux-libc-dev (=${binary:Version})
Conflicts: linux-libc-dev
Replaces: linux-libc-dev
Depends: ${misc:Depends}
Description: Linux support headers for userspace development
This package provides userspaces headers from the Linux kernel. These headers
are used by the installed headers for GNU libc and other system libraries.
+160 -115
View File
@@ -9,23 +9,22 @@ BUILD_DIR=$(shell pwd)
include /usr/share/dpkg/default.mk
include debian/rules.d/env.mk
include debian/rules.d/$(DEB_BUILD_ARCH).mk
MAKEFLAGS += $(subst parallel=,-j,$(filter parallel=%,${DEB_BUILD_OPTIONS}))
include debian/rules.d/${DEB_BUILD_ARCH}.mk
CHANGELOG_DATE:=$(shell dpkg-parsechangelog -SDate)
CHANGELOG_DATE_UTC_ISO := $(shell date -u -d '$(CHANGELOG_DATE)' +%Y-%m-%dT%H:%MZ)
PVE_KERNEL_PKG=pve-kernel-$(KVNAME)
PVE_DEBUG_KERNEL_PKG=pve-kernel-$(KVNAME)-dbgsym
PVE_HEADER_PKG=pve-headers-$(KVNAME)
PVE_KERNEL_PKG=pve-kernel-${KVNAME}
PVE_DEBUG_KERNEL_PKG=pve-kernel-${KVNAME}-dbgsym
PVE_HEADER_PKG=pve-headers-${KVNAME}
PVE_USR_HEADER_PKG=pve-kernel-libc-dev
LINUX_TOOLS_PKG=linux-tools-$(KERNEL_MAJMIN)
KERNEL_SRC_COPY=$(KERNEL_SRC)_tmp
PVE_KERNEL_SIGNING_TEMPLATE_PKG=pve-kernel-${KVNAME}-signed-template
PVE_KERNEL_SIGNED_VERSION := $(shell echo ${DEB_VERSION} | sed -e 's/-/+/')
LINUX_TOOLS_PKG=linux-tools-${KERNEL_MAJMIN}
KERNEL_SRC_COPY=${KERNEL_SRC}_tmp
# TODO: split for archs, move to files?
PVE_CONFIG_OPTS= \
--set-val INET_TABLE_PERTURB_ORDER 16 \
-m INTEL_MEI_WDT \
-d CONFIG_SND_PCM_OSS \
-e CONFIG_TRANSPARENT_HUGEPAGE_MADVISE \
@@ -33,6 +32,7 @@ PVE_CONFIG_OPTS= \
-m CONFIG_CEPH_FS \
-m CONFIG_BLK_DEV_NBD \
-m CONFIG_BLK_DEV_RBD \
-m CONFIG_BLK_DEV_UBLK \
-d CONFIG_SND_PCSP \
-m CONFIG_BCACHE \
-m CONFIG_JFS_FS \
@@ -53,7 +53,13 @@ PVE_CONFIG_OPTS= \
-e CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE \
-e CONFIG_SYSFB_SIMPLEFB \
-e CONFIG_DRM_SIMPLEDRM \
-d CONFIG_MODULE_SIG \
-e CONFIG_MODULE_SIG \
-e CONFIG_MODULE_SIG_ALL \
-e CONFIG_MODULE_SIG_FORMAT \
--set-str CONFIG_MODULE_SIG_HASH sha512 \
--set-str CONFIG_MODULE_SIG_KEY certs/signing_key.pem \
-e CONFIG_MODULE_SIG_KEY_TYPE_RSA \
-e CONFIG_MODULE_SIG_SHA512 \
-d CONFIG_MEMCG_DISABLED \
-e CONFIG_MEMCG_SWAP_ENABLED \
-e CONFIG_HYPERV \
@@ -76,30 +82,45 @@ PVE_CONFIG_OPTS= \
-d CONFIG_DEFAULT_CFQ \
-e CONFIG_DEFAULT_DEADLINE \
-e CONFIG_MODVERSIONS \
-e CONFIG_ZSTD_COMPRESS \
-d CONFIG_DEFAULT_SECURITY_DAC \
-e CONFIG_DEFAULT_SECURITY_APPARMOR \
--set-str CONFIG_DEFAULT_SECURITY apparmor \
-e CONFIG_MODULE_ALLOW_BTF_MISMATCH \
-d CONFIG_UNWINDER_ORC \
-d CONFIG_UNWINDER_GUESS \
-e CONFIG_UNWINDER_FRAME_POINTER \
--set-str CONFIG_SYSTEM_TRUSTED_KEYS ""\
--set-str CONFIG_SYSTEM_TRUSTED_KEYS "../debian/certs/combined.pem"\
--set-str CONFIG_SYSTEM_REVOCATION_KEYS ""\
-d CONFIG_SECURITY_LOCKDOWN_LSM \
-d CONFIG_SECURITY_LOCKDOWN_LSM_EARLY \
--set-str CONFIG_LSM yama,integrity,apparmor \
-d MICROCODE_LATE_LOADING \
-e CONFIG_SECURITY_LOCKDOWN_LSM \
-e CONFIG_SECURITY_LOCKDOWN_LSM_EARLY \
--set-str CONFIG_LSM lockdown,yama,integrity,apparmor \
-e CONFIG_PAGE_TABLE_ISOLATION
debian/control: $(wildcard debian/*.in)
sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-kernel.prerm.in > debian/$(PVE_KERNEL_PKG).prerm
sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-kernel.postrm.in > debian/$(PVE_KERNEL_PKG).postrm
sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-kernel.postinst.in > debian/$(PVE_KERNEL_PKG).postinst
sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-headers.postinst.in > debian/$(PVE_HEADER_PKG).postinst
chmod +x debian/$(PVE_KERNEL_PKG).prerm
chmod +x debian/$(PVE_KERNEL_PKG).postrm
chmod +x debian/$(PVE_KERNEL_PKG).postinst
chmod +x debian/$(PVE_HEADER_PKG).postinst
sed -e 's/@KVNAME@/$(KVNAME)/g' -e 's/@KVMAJMIN@/$(KERNEL_MAJMIN)/g' < debian/control.in > debian/control
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.prerm.in > debian/${PVE_KERNEL_PKG}.prerm
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postrm.in > debian/${PVE_KERNEL_PKG}.postrm
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postinst.in > debian/${PVE_KERNEL_PKG}.postinst
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-headers.postinst.in > debian/${PVE_HEADER_PKG}.postinst
chmod +x debian/${PVE_KERNEL_PKG}.prerm
chmod +x debian/${PVE_KERNEL_PKG}.postrm
chmod +x debian/${PVE_KERNEL_PKG}.postinst
chmod +x debian/${PVE_HEADER_PKG}.postinst
sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@KVMAJMIN@/${KERNEL_MAJMIN}/g' < debian/control.in > debian/control
# combine trusted certificates
cat debian/certs/*.pem > debian/certs/combined.pem
# signing-template
sed -e '1 s/pve-kernel/pve-kernel-signed/' -e '1 s/${DEB_VERSION}/${PVE_KERNEL_SIGNED_VERSION}/' < debian/changelog > debian/signing-template/changelog
sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@UNSIGNED_VERSION@/${DEB_VERSION}/g' < debian/signing-template/control.in > debian/signing-template/control
sed -e 's/@KVNAME@/${KVNAME}/g' < debian/signing-template/files.json.in > debian/signing-template/files.json
sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@PKG_VERSION@/${DEB_VERSION}/' < debian/signing-template/rules.in > debian/signing-template/rules
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.prerm.in > debian/signing-template/prerm
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postrm.in > debian/signing-template/postrm
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postinst.in > debian/signing-template/postinst
rm debian/signing-template/*.in
cp debian/SOURCE debian/signing-template/
build: .compile_mark .tools_compile_mark .modules_compile_mark
@@ -113,7 +134,7 @@ install: .install_mark .tools_install_mark .headers_install_mark .usr_headers_in
binary: install
debian/rules fwcheck abicheck
dh_strip -N$(PVE_HEADER_PKG) -N$(PVE_USR_HEADER_PKG)
dh_strip -N${PVE_HEADER_PKG} -N${PVE_USR_HEADER_PKG}
dh_makeshlibs
dh_shlibdeps
dh_installdeb
@@ -122,82 +143,106 @@ binary: install
dh_builddeb
.config_mark:
cd $(KERNEL_SRC); scripts/config $(PVE_CONFIG_OPTS)
$(MAKE) -C $(KERNEL_SRC) oldconfig
cd ${KERNEL_SRC}; scripts/config ${PVE_CONFIG_OPTS}
${MAKE} -C ${KERNEL_SRC} oldconfig
# copy to allow building in parallel to kernel/module compilation without interference
rm -rf $(KERNEL_SRC_COPY)
cp -ar $(KERNEL_SRC) $(KERNEL_SRC_COPY)
rm -rf ${KERNEL_SRC_COPY}
cp -ar ${KERNEL_SRC} ${KERNEL_SRC_COPY}
touch $@
.compile_mark: .config_mark
$(MAKE) -C $(KERNEL_SRC) KBUILD_BUILD_VERSION_TIMESTAMP="PVE $(DEB_VERSION) ($(CHANGELOG_DATE_UTC_ISO))"
${MAKE} -C ${KERNEL_SRC} KBUILD_BUILD_VERSION_TIMESTAMP="PVE ${DEB_VERSION} (${CHANGELOG_DATE_UTC_ISO})"
touch $@
.install_mark: .compile_mark .modules_compile_mark
rm -rf debian/$(PVE_KERNEL_PKG)
mkdir -p debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME)
mkdir debian/$(PVE_KERNEL_PKG)/boot
install -m 644 $(KERNEL_SRC)/.config debian/$(PVE_KERNEL_PKG)/boot/config-$(KVNAME)
install -m 644 $(KERNEL_SRC)/System.map debian/$(PVE_KERNEL_PKG)/boot/System.map-$(KVNAME)
install -m 644 $(KERNEL_SRC)/$(KERNEL_IMAGE_PATH) debian/$(PVE_KERNEL_PKG)/boot/$(KERNEL_INSTALL_FILE)-$(KVNAME)
$(MAKE) -C $(KERNEL_SRC) INSTALL_MOD_PATH=$(BUILD_DIR)/debian/$(PVE_KERNEL_PKG)/ modules_install
rm -rf debian/${PVE_KERNEL_PKG}
mkdir -p debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}
mkdir debian/${PVE_KERNEL_PKG}/boot
install -m 644 ${KERNEL_SRC}/.config debian/${PVE_KERNEL_PKG}/boot/config-${KVNAME}
install -m 644 ${KERNEL_SRC}/System.map debian/${PVE_KERNEL_PKG}/boot/System.map-${KVNAME}
install -m 644 ${KERNEL_SRC}/${KERNEL_IMAGE_PATH} debian/${PVE_KERNEL_PKG}/boot/${KERNEL_INSTALL_FILE}-${KVNAME}
${MAKE} -C ${KERNEL_SRC} INSTALL_MOD_PATH=${BUILD_DIR}/debian/${PVE_KERNEL_PKG}/ modules_install
# install zfs drivers
install -d -m 0755 debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME)/zfs
install -m 644 $(addprefix $(MODULES)/,zfs.ko zavl.ko znvpair.ko zunicode.ko zcommon.ko icp.ko zlua.ko spl.ko zzstd.ko) debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME)/zfs
install -d -m 0755 debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
install -m 644 $(addprefix ${MODULES}/,zfs.ko zavl.ko znvpair.ko zunicode.ko zcommon.ko icp.ko zlua.ko spl.ko zzstd.ko) debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
# remove firmware
rm -rf debian/$(PVE_KERNEL_PKG)/lib/firmware
rm -rf debian/${PVE_KERNEL_PKG}/lib/firmware
ifeq ($(filter pkg.pve-kernel.debug,$(DEB_BUILD_PROFILES)),)
echo "'pkg.pve-kernel.debug' build profile disabled, skipping -dbgsym creation"
else
echo "'pkg.pve-kernel.debug' build profile enabled, creating -dbgsym contents"
mkdir -p debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)
mkdir debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/boot
install -m 644 $(KERNEL_SRC)/vmlinux debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/boot/vmlinux-$(KVNAME)
cp -r debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME) debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/
rm -f debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/source
rm -f debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/build
rm -f debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/modules.*
mkdir -p debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME}
mkdir debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/boot
install -m 644 ${KERNEL_SRC}/vmlinux debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/boot/vmlinux-${KVNAME}
cp -r debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME} debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/
rm -f debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME}/source
rm -f debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME}/build
rm -f debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME}/modules.*
endif
# strip debug info
find debian/$(PVE_KERNEL_PKG)/lib/modules -name \*.ko -print | while read f ; do strip --strip-debug "$$f"; done
find debian/${PVE_KERNEL_PKG}/lib/modules -name \*.ko -print | while read f ; do strip --strip-debug "$$f"; done
# sign modules using ephemeral, embedded key
if grep -q CONFIG_MODULE_SIG=y ubuntu-kernel/.config ; then \
find debian/${PVE_KERNEL_PKG}/lib/modules -name \*.ko -print | while read f ; do \
./ubuntu-kernel/scripts/sign-file sha512 ./ubuntu-kernel/certs/signing_key.pem ubuntu-kernel/certs/signing_key.x509 "$$f" ; \
done; \
rm ./ubuntu-kernel/certs/signing_key.pem ; \
fi
# finalize
/sbin/depmod -b debian/$(PVE_KERNEL_PKG)/ $(KVNAME)
/sbin/depmod -b debian/${PVE_KERNEL_PKG}/ ${KVNAME}
# Autogenerate blacklist for watchdog devices (see README)
install -m 0755 -d debian/$(PVE_KERNEL_PKG)/lib/modprobe.d
ls debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME)/kernel/drivers/watchdog/ > watchdog-blacklist.tmp
install -m 0755 -d debian/${PVE_KERNEL_PKG}/lib/modprobe.d
ls debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/kernel/drivers/watchdog/ > watchdog-blacklist.tmp
echo ipmi_watchdog.ko >> watchdog-blacklist.tmp
cat watchdog-blacklist.tmp|sed -e 's/^/blacklist /' -e 's/.ko$$//'|sort -u > debian/$(PVE_KERNEL_PKG)/lib/modprobe.d/blacklist_$(PVE_KERNEL_PKG).conf
rm -f debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME)/source
rm -f debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME)/build
cat watchdog-blacklist.tmp|sed -e 's/^/blacklist /' -e 's/.ko$$//'|sort -u > debian/${PVE_KERNEL_PKG}/lib/modprobe.d/blacklist_${PVE_KERNEL_PKG}.conf
rm -f debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/source
rm -f debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/build
# copy signing template contents
rm -rf debian/${PVE_KERNEL_SIGNING_TEMPLATE_PKG}
mkdir -p debian/${PVE_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PVE_KERNEL_SIGNING_TEMPLATE_PKG}/source-template/debian
cp -R debian/copyright \
debian/signing-template/rules \
debian/signing-template/control \
debian/signing-template/source \
debian/signing-template/changelog \
debian/signing-template/prerm \
debian/signing-template/postrm \
debian/signing-template/postinst \
debian/signing-template/SOURCE \
debian/${PVE_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PVE_KERNEL_SIGNING_TEMPLATE_PKG}/source-template/debian
cp debian/signing-template/files.json debian/${PVE_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PVE_KERNEL_SIGNING_TEMPLATE_PKG}/
touch $@
.tools_compile_mark: .compile_mark
$(MAKE) -C $(KERNEL_SRC)/tools/perf prefix=/usr HAVE_NO_LIBBFD=1 HAVE_CPLUS_DEMANGLE_SUPPORT=1 NO_LIBPYTHON=1 NO_LIBPERL=1 NO_LIBCRYPTO=1 PYTHON=python3
${MAKE} -C ${KERNEL_SRC}/tools/perf prefix=/usr HAVE_NO_LIBBFD=1 HAVE_CPLUS_DEMANGLE_SUPPORT=1 NO_LIBPYTHON=1 NO_LIBPERL=1 NO_LIBCRYPTO=1 PYTHON=python3
echo "checking GPL-2 only perf binary for library linkage with incompatible licenses.."
! ldd $(KERNEL_SRC)/tools/perf/perf | grep -q -E '\blibbfd'
! ldd $(KERNEL_SRC)/tools/perf/perf | grep -q -E '\blibcrypto'
$(MAKE) -C $(KERNEL_SRC)/tools/perf man
! ldd ${KERNEL_SRC}/tools/perf/perf | grep -q -E '\blibbfd'
! ldd ${KERNEL_SRC}/tools/perf/perf | grep -q -E '\blibcrypto'
${MAKE} -C ${KERNEL_SRC}/tools/perf man
touch $@
.tools_install_mark: .tools_compile_mark
rm -rf debian/$(LINUX_TOOLS_PKG)
mkdir -p debian/$(LINUX_TOOLS_PKG)/usr/bin
mkdir -p debian/$(LINUX_TOOLS_PKG)/usr/share/man/man1
install -m 755 $(BUILD_DIR)/$(KERNEL_SRC)/tools/perf/perf debian/$(LINUX_TOOLS_PKG)/usr/bin/perf_$(KERNEL_MAJMIN)
for i in $(BUILD_DIR)/$(KERNEL_SRC)/tools/perf/Documentation/*.1; do \
rm -rf debian/${LINUX_TOOLS_PKG}
mkdir -p debian/${LINUX_TOOLS_PKG}/usr/bin
mkdir -p debian/${LINUX_TOOLS_PKG}/usr/share/man/man1
install -m 755 ${BUILD_DIR}/${KERNEL_SRC}/tools/perf/perf debian/${LINUX_TOOLS_PKG}/usr/bin/perf_$(KERNEL_MAJMIN)
for i in ${BUILD_DIR}/${KERNEL_SRC}/tools/perf/Documentation/*.1; do \
fname="$${i##*/}"; manname="$${fname%.1}"; \
install -m644 "$$i" "debian/$(LINUX_TOOLS_PKG)/usr/share/man/man1/$${manname}_$(KERNEL_MAJMIN).1"; \
install -m644 "$$i" "debian/${LINUX_TOOLS_PKG}/usr/share/man/man1/$${manname}_$(KERNEL_MAJMIN).1"; \
done
touch $@
.headers_prepare_mark: .config_mark
rm -rf debian/$(PVE_HEADER_PKG)
mkdir -p debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)
install -m 0644 $(KERNEL_SRC)/.config debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)
make -C $(KERNEL_SRC_COPY) mrproper
cd $(KERNEL_SRC_COPY); find . -path './debian/*' -prune \
rm -rf debian/${PVE_HEADER_PKG}
mkdir -p debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
install -m 0644 ${KERNEL_SRC}/.config debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
make -C ${KERNEL_SRC_COPY} mrproper
cd ${KERNEL_SRC_COPY}; find . -path './debian/*' -prune \
-o -path './include/*' -prune \
-o -path './Documentation' -prune \
-o -path './scripts' -prune \
@@ -209,40 +254,40 @@ endif
-o -name '*.sh' \
-o -name '*.pl' \
\) \
-print | cpio -pd --preserve-modification-time $(BUILD_DIR)/debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)
cd $(KERNEL_SRC_COPY); \
-print | cpio -pd --preserve-modification-time ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
cd ${KERNEL_SRC_COPY}; \
( \
find arch/$(KERNEL_HEADER_ARCH) -name include -type d -print | \
find arch/${KERNEL_HEADER_ARCH} -name include -type d -print | \
xargs -n1 -i: find : -type f \
) | \
cpio -pd --preserve-modification-time $(BUILD_DIR)/debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)
cpio -pd --preserve-modification-time ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
touch $@
.headers_compile_mark: .headers_prepare_mark
# set output to subdir of source to reduce number of hardcoded paths in output files
rm -rf $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PVE_HEADER_PKG)
mkdir -p $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PVE_HEADER_PKG)
cp $(KERNEL_SRC)/.config $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PVE_HEADER_PKG)/.config
$(MAKE) -C $(KERNEL_SRC_COPY) O=$(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PVE_HEADER_PKG) -j1 syncconfig modules_prepare prepare scripts
cd $(KERNEL_SRC_COPY); cp -a include scripts $(BUILD_DIR)/debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)
find $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PVE_HEADER_PKG) -name \*.o.ur-\* -o -name '*.cmd' | xargs rm -f
rsync --ignore-existing -r -v -a $(addprefix $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PVE_HEADER_PKG)/,arch include kernel scripts tools) $(BUILD_DIR)/debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/
rm -rf $(BUILD_DIR)/$(KERNEL_SRC_COPY)
rm -rf ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}
mkdir -p ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}
cp ${KERNEL_SRC}/.config ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}/.config
${MAKE} -C ${KERNEL_SRC_COPY} O=${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} -j1 syncconfig modules_prepare prepare scripts
cd ${KERNEL_SRC_COPY}; cp -a include scripts ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
find ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} -name \*.o.ur-\* -o -name '*.cmd' | xargs rm -f
rsync --ignore-existing -r -v -a $(addprefix ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}/,arch include kernel scripts tools) ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/
rm -rf ${BUILD_DIR}/${KERNEL_SRC_COPY}
touch $@
.headers_install_mark: .compile_mark .modules_compile_mark .headers_compile_mark
cp $(KERNEL_SRC)/include/generated/compile.h debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/include/generated/compile.h
install -m 0644 $(KERNEL_SRC)/Module.symvers debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)
mkdir -p debian/$(PVE_HEADER_PKG)/lib/modules/$(KVNAME)
ln -sf /usr/src/linux-headers-$(KVNAME) debian/$(PVE_HEADER_PKG)/lib/modules/$(KVNAME)/build
cp ${KERNEL_SRC}/include/generated/compile.h debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/include/generated/compile.h
install -m 0644 ${KERNEL_SRC}/Module.symvers debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
mkdir -p debian/${PVE_HEADER_PKG}/lib/modules/${KVNAME}
ln -sf /usr/src/linux-headers-${KVNAME} debian/${PVE_HEADER_PKG}/lib/modules/${KVNAME}/build
touch $@
.usr_headers_install_mark: PKG_DIR = debian/$(PVE_USR_HEADER_PKG)
.usr_headers_install_mark: OUT_DIR = $(PKG_DIR)/usr
.usr_headers_install_mark: PKG_DIR = debian/${PVE_USR_HEADER_PKG}
.usr_headers_install_mark: OUT_DIR = ${PKG_DIR}/usr
.usr_headers_install_mark: .config_mark
rm -rf '$(PKG_DIR)'
mkdir -p '$(PKG_DIR)'
$(MAKE) -C $(KERNEL_SRC) headers_install ARCH=$(KERNEL_HEADER_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
rm -rf '${PKG_DIR}'
mkdir -p '${PKG_DIR}'
$(MAKE) -C ${KERNEL_SRC} headers_install ARCH=$(KERNEL_HEADER_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi
find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} +
@@ -253,43 +298,43 @@ endif
mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/
touch $@
.modules_compile_mark: $(MODULES)/zfs.ko
.modules_compile_mark: ${MODULES}/zfs.ko
touch $@
$(MODULES)/zfs.ko: .compile_mark
cd $(MODULES)/$(ZFSDIR); ./autogen.sh
cd $(MODULES)/$(ZFSDIR); ./configure --with-config=kernel --with-linux=$(BUILD_DIR)/$(KERNEL_SRC) --with-linux-obj=$(BUILD_DIR)/$(KERNEL_SRC)
$(MAKE) -C $(MODULES)/$(ZFSDIR)
cp $(MODULES)/$(ZFSDIR)/module/avl/zavl.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/nvpair/znvpair.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/unicode/zunicode.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/zcommon/zcommon.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/icp/icp.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/zfs/zfs.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/lua/zlua.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/spl/spl.ko $(MODULES)/
cp $(MODULES)/$(ZFSDIR)/module/zstd/zzstd.ko $(MODULES)/
${MODULES}/zfs.ko: .compile_mark
cd ${MODULES}/${ZFSDIR}; ./autogen.sh
cd ${MODULES}/${ZFSDIR}; ./configure --with-config=kernel --with-linux=${BUILD_DIR}/${KERNEL_SRC} --with-linux-obj=${BUILD_DIR}/${KERNEL_SRC}
${MAKE} -C ${MODULES}/${ZFSDIR}
cp ${MODULES}/${ZFSDIR}/module/avl/zavl.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/nvpair/znvpair.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/unicode/zunicode.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/zcommon/zcommon.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/icp/icp.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/zfs/zfs.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/lua/zlua.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/spl/spl.ko ${MODULES}/
cp ${MODULES}/${ZFSDIR}/module/zstd/zzstd.ko ${MODULES}/
fwlist-$(KVNAME): .compile_mark .modules_compile_mark
debian/scripts/find-firmware.pl debian/$(PVE_KERNEL_PKG)/lib/modules/$(KVNAME) >fwlist.tmp
fwlist-${KVNAME}: .compile_mark .modules_compile_mark
debian/scripts/find-firmware.pl debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME} >fwlist.tmp
mv fwlist.tmp $@
.PHONY: fwcheck
fwcheck: fwlist-$(KVNAME) fwlist-previous
fwcheck: fwlist-${KVNAME} fwlist-previous
@echo "checking fwlist for changes since last built firmware package.."
@echo "if this check fails, add fwlist-$(KVNAME) to the pve-firmware repository and upload a new firmware package together with the $(KVNAME) kernel"
@echo "if this check fails, add fwlist-${KVNAME} to the pve-firmware repository and upload a new firmware package together with the ${KVNAME} kernel"
sort fwlist-previous | uniq > fwlist-previous.sorted
sort fwlist-$(KVNAME) | uniq > fwlist-$(KVNAME).sorted
diff -up -N fwlist-previous.sorted fwlist-$(KVNAME).sorted > fwlist.diff
rm fwlist.diff fwlist-previous.sorted fwlist-$(KVNAME).sorted
sort fwlist-${KVNAME} | uniq > fwlist-${KVNAME}.sorted
diff -up -N fwlist-previous.sorted fwlist-${KVNAME}.sorted > fwlist.diff
rm fwlist.diff fwlist-previous.sorted fwlist-${KVNAME}.sorted
@echo "done, no need to rebuild pve-firmware"
abi-$(KVNAME): .compile_mark
debian/scripts/abi-generate debian/$(PVE_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/Module.symvers abi-$(KVNAME) $(KVNAME)
abi-${KVNAME}: .compile_mark
debian/scripts/abi-generate debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/Module.symvers abi-${KVNAME} ${KVNAME}
.PHONY: abicheck
abicheck: debian/scripts/abi-check abi-$(KVNAME) abi-prev-* abi-blacklist
debian/scripts/abi-check abi-$(KVNAME) abi-prev-* $(SKIPABI)
abicheck: debian/scripts/abi-check abi-${KVNAME} abi-prev-* abi-blacklist
debian/scripts/abi-check abi-${KVNAME} abi-prev-* ${SKIPABI}
.PHONY: clean
+25
View File
@@ -0,0 +1,25 @@
Source: pve-kernel-signed
Section: kernel
Priority: optional
Maintainer: Proxmox Support Team <support@proxmox.com>
Standards-Version: 4.2.0
Build-Depends: debhelper-compat (= 12), dh-exec, python3:any, rsync, sbsigntool, pve-kernel-@KVNAME@ (= @UNSIGNED_VERSION@)
Rules-Requires-Root: no
Vcs-Git: git://git.proxmox.com/git/pve-kernel
Vcs-Browser: https://git.proxmox.com/?p=pve-kernel.git
Package: pve-kernel-@KVNAME@-signed
Section: admin
Priority: optional
Architecture: any
Provides: linux-image-@KVNAME@-amd64, pve-kernel-@KVNAME@
Depends: ${unsigned:Depends}, ${misc:Depends}
Recommends: ${unsigned:Recommends}
Suggests: ${unsigned:Suggests}
Breaks: ${unsigned:Breaks}
Conflicts: pve-kernel-@KVNAME@
Replaces: pve-kernel-@KVNAME@
Description: ${unsigned:DescriptionShort} (signed)
${unsigned:DescriptionLong}
.
This package contains the kernel image signed by the Proxmox Secure Boot CA.
+13
View File
@@ -0,0 +1,13 @@
{
"packages": {
"pve-kernel-@KVNAME@": {
"trusted_certs": [],
"files": [
{
"sig_type": "efi",
"file": "boot/vmlinuz-@KVNAME@"
}
]
}
}
}
+58
View File
@@ -0,0 +1,58 @@
#!/usr/bin/make -f
SHELL := bash -e
export DH_OPTIONS
include /usr/share/dpkg/architecture.mk
KERNEL_VERSION=@KVNAME@
IMAGE_PACKAGE_NAME=pve-kernel-$(KERNEL_VERSION)
PACKAGE_NAME=$(IMAGE_PACKAGE_NAME)-signed
PACKAGE_VERSION=@PKG_VERSION@
PACKAGE_DIR=debian/$(PACKAGE_NAME)
SIGNATURE_DIR=debian/signatures/${IMAGE_PACKAGE_NAME}
build: build-arch build-indep
build-arch:
build-indep:
clean:
dh_testdir
dh_clean
binary: binary-arch binary-indep
binary-arch:
dh_testdir
mkdir -p $(PACKAGE_DIR)/boot
rsync -a $(patsubst %,/boot/%-$(KERNEL_VERSION),config System.map vmlinuz) $(PACKAGE_DIR)/boot/
if [ -f $(SIGNATURE_DIR)/boot/vmlinuz-$(KERNEL_VERSION).sig ]; then \
sbattach --attach $(SIGNATURE_DIR)/boot/vmlinuz-$(KERNEL_VERSION).sig \
$(PACKAGE_DIR)/boot/vmlinuz-$(KERNEL_VERSION); \
else \
echo "No signature for image 'vmlinuz-$(KERNEL_VERSION)' found in '$(SIGNATURE_DIR)'"; \
false; \
fi
mkdir -p $(PACKAGE_DIR)/lib/modules/$(KERNEL_VERSION)
rsync -ar /lib/modules/$(KERNEL_VERSION)/ $(PACKAGE_DIR)/lib/modules/$(KERNEL_VERSION)/
mkdir -p $(PACKAGE_DIR)/lib/modprobe.d/
cp /lib/modprobe.d/blacklist_$(IMAGE_PACKAGE_NAME).conf $(PACKAGE_DIR)/lib/modprobe.d/
dh_install
dh_installchangelogs
dh_installdocs -A debian/copyright debian/SOURCE
dh_lintian
dh_compress
dh_fixperms
dh_installdeb
# Copy most package relations and description from unsigned package
for field in Depends Suggests Recommends Breaks; do \
echo >> debian/$(PACKAGE_NAME).substvars "unsigned:$$field=$$(dpkg-query -f '$${'$$field'}' -W $(IMAGE_PACKAGE_NAME))"; \
done
echo >> debian/$(PACKAGE_NAME).substvars "unsigned:DescriptionShort=$$(dpkg-query -f '$${Description}' -W $(IMAGE_PACKAGE_NAME) | head -n 1)"
echo >> debian/$(PACKAGE_NAME).substvars "unsigned:DescriptionLong=$$(dpkg-query -f '$${Description}' -W $(IMAGE_PACKAGE_NAME) | tail -n +2 | sed -rz 's/\$$/$${}/g; s/^ //; s/\n \.?/$${Newline}/g')"
dh_gencontrol -- -v$(PACKAGE_VERSION)
dh_md5sums
dh_builddeb
binary-indep:
.PHONY: build build-arch build-indep clean binary binary-arch binary-indep
+1
View File
@@ -0,0 +1 @@
3.0 (native)
-2
View File
@@ -1,2 +0,0 @@
pve-kernel source: debian-control-has-dbgsym-package (in section for pve-kernel-*-pve-dbgsym) Package [debian/control:*]
pve-kernel source: license-problem-gfdl-invariants invariant part is: with the :ref:`invariant sections <fdl-invariant>` being list their titles, with the :ref:`front-cover texts <fdl-cover-texts>` being list, and with the :ref:`back-cover texts <fdl-cover-texts>` being list [ubuntu-kernel/Documentation/userspace-api/media/fdl-appendix.rst]
+284 -74
View File
@@ -17,10 +17,13 @@ aic94xx-seq.fw kernel/drivers/scsi/aic94xx/aic94xx.ko
amd/amd_sev_fam17h_model0xh.sbin kernel/drivers/crypto/ccp/ccp.ko
amd/amd_sev_fam17h_model3xh.sbin kernel/drivers/crypto/ccp/ccp.ko
amd/amd_sev_fam19h_model0xh.sbin kernel/drivers/crypto/ccp/ccp.ko
amdgpu/aldebaran_cap.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_sjt_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_sjt_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_sos.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/aldebaran_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -77,14 +80,11 @@ amdgpu/cyan_skillfish2_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish2_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish2_sdma1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish2_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_sdma1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/cyan_skillfish_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dcn_3_1_4_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dcn_3_1_5_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dcn_3_1_6_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dcn_3_2_0_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dcn_3_2_1_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dimgrey_cavefish_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dimgrey_cavefish_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/dimgrey_cavefish_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -108,6 +108,54 @@ amdgpu/fiji_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/fiji_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/fiji_uvd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/fiji_vce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_6_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_6_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_6_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_6_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_6_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_6_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_7_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_7_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_7_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_7_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_7_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_10_3_7_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_imu.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_mes1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_mes.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_0_toc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_1_imu.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_1_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_1_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_1_mes1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_1_mes.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_1_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_1_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_2_imu.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_2_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_2_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_2_mes1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_2_mes.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_2_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_2_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_3_imu.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_3_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_3_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_3_mes1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_3_mes.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_3_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_3_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_4_imu.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_4_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_4_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_4_mes1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_4_mes.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_4_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/gc_11_0_4_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/green_sardine_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/green_sardine_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/green_sardine_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -138,6 +186,7 @@ amdgpu/hawaii_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/hawaii_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/hawaii_uvd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/hawaii_vce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/ip_discovery.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/kabini_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/kabini_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/kabini_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -168,7 +217,6 @@ amdgpu/mullins_uvd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/mullins_vce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -182,6 +230,7 @@ amdgpu/navi10_sos.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi10_vcn.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi12_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi12_cap.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi12_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi12_dmcu.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi12_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -199,7 +248,6 @@ amdgpu/navi12_vcn.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi14_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi14_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi14_ce_wks.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi14_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi14_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi14_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/navi14_mec2_wks.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -317,6 +365,20 @@ amdgpu/polaris12_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/polaris12_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/polaris12_uvd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/polaris12_vce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_0_sos.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_0_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_10_sos.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_10_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_11_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_11_toc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_4_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_4_toc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_5_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_5_toc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_7_sos.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_7_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_8_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/psp_13_0_8_toc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/raven2_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/raven2_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/raven2_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -344,7 +406,6 @@ amdgpu/raven_vcn.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -352,12 +413,20 @@ amdgpu/renoir_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/renoir_vcn.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sdma_5_2_6.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sdma_5_2_7.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sdma_6_0_0.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sdma_6_0_1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sdma_6_0_2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sdma_6_0_3.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/si58_mc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_cap.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_mes1.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_mes.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -366,6 +435,9 @@ amdgpu/sienna_cichlid_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_sos.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_ta.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/sienna_cichlid_vcn.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/smu_13_0_0.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/smu_13_0_10.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/smu_13_0_7.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/stoney_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/stoney_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/stoney_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -407,7 +479,6 @@ amdgpu/topaz_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -416,8 +487,13 @@ amdgpu/vangogh_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_sdma.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_toc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vangogh_vcn.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vcn_3_1_2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vcn_4_0_0.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vcn_4_0_2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vcn_4_0_4.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vega10_acg_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vega10_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vega10_cap.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vega10_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vega10_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/vega10_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -478,10 +554,8 @@ amdgpu/verde_pfp.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/verde_rlc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/verde_smc.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/verde_uvd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/yellow_carp_asd.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/yellow_carp_ce.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/yellow_carp_dmcub.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/yellow_carp_gpu_info.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/yellow_carp_me.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/yellow_carp_mec2.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
amdgpu/yellow_carp_mec.bin kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
@@ -579,9 +653,7 @@ atmel_at76c505-rfmd.bin kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
atmel_at76c506.bin kernel/drivers/net/wireless/atmel/atmel.ko
atmel_at76c506-wpa.bin kernel/drivers/net/wireless/atmel/atmel.ko
atmel/wilc1000_wifi_firmware-1.bin kernel/drivers/net/wireless/microchip/wilc1000/wilc1000.ko
atmsar11.fw kernel/drivers/atm/ambassador.ko
atsc_denver.inp kernel/drivers/media/common/siano/smsmdtv.ko
av7110/bootcode.bin kernel/drivers/staging/media/av7110/dvb-ttpci.ko
b43legacy/ucode2.fw kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
b43legacy/ucode4.fw kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
b43/ucode11.fw kernel/drivers/net/wireless/broadcom/b43/b43.ko
@@ -617,6 +689,12 @@ bnx2x/bnx2x-e2-7.13.15.0.fw kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
bnx2x/bnx2x-e2-7.13.21.0.fw kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
brcm/bcm43xx-0.fw kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
brcm/bcm43xx_hdr-0.fw kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
brcm/brcmbt4377*.bin kernel/drivers/bluetooth/hci_bcm4377.ko
brcm/brcmbt4377*.ptb kernel/drivers/bluetooth/hci_bcm4377.ko
brcm/brcmbt4378*.bin kernel/drivers/bluetooth/hci_bcm4377.ko
brcm/brcmbt4378*.ptb kernel/drivers/bluetooth/hci_bcm4377.ko
brcm/brcmbt4387*.bin kernel/drivers/bluetooth/hci_bcm4377.ko
brcm/brcmbt4387*.ptb kernel/drivers/bluetooth/hci_bcm4377.ko
brcm/brcmfmac43012-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43012-sdio.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43143.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
@@ -637,6 +715,8 @@ brcm/brcmfmac43430a0-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brc
brcm/brcmfmac43430b0-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43430-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43430-sdio.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43439-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43439-sdio.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43455-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43455-sdio.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43456-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
@@ -644,6 +724,10 @@ brcm/brcmfmac4350c2-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcm
brcm/brcmfmac4350-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4354-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4354-sdio.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4355c1-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4355c1-pcie.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4355-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4355-pcie.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43569.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4356-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4356-pcie.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
@@ -655,7 +739,10 @@ brcm/brcmfmac4358-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfm
brcm/brcmfmac4359-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4359-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43602-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4364-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4364b2-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4364b2-pcie.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4364b3-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4364b3-pcie.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4365b-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4365c-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4366b-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
@@ -666,7 +753,12 @@ brcm/brcmfmac4373-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfm
brcm/brcmfmac4373-sdio.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43752-sdio.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac43752-sdio.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4377b3-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4377b3-pcie.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4378b1-pcie.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac4378b1-pcie.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac*-pcie.*.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac*-pcie.*.clm_blob kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac*-pcie.*.txt kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac*-pcie.txt kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
brcm/brcmfmac*-sdio.*.bin kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
@@ -700,7 +792,6 @@ cmmb_vega_12mhz.inp kernel/drivers/media/common/siano/smsmdtv.ko
cmmb_venice_12mhz.inp kernel/drivers/media/common/siano/smsmdtv.ko
comedi/jr3pci.idm kernel/drivers/comedi/drivers/jr3_pci.ko
cp204unx.cod kernel/drivers/tty/moxa.ko
cpia2/stv0672_vp4.bin kernel/drivers/media/usb/cpia2/cpia2.ko
cs46xx/cwc4630 kernel/sound/pci/cs46xx/snd-cs46xx.ko
cs46xx/cwcasync kernel/sound/pci/cs46xx/snd-cs46xx.ko
cs46xx/cwcbinhack kernel/sound/pci/cs46xx/snd-cs46xx.ko
@@ -739,6 +830,16 @@ dvb-demod-si2168-a20-01.fw kernel/drivers/media/dvb-frontends/si2168.ko
dvb-demod-si2168-a30-01.fw kernel/drivers/media/dvb-frontends/si2168.ko
dvb-demod-si2168-b40-01.fw kernel/drivers/media/dvb-frontends/si2168.ko
dvb-demod-si2168-d60-01.fw kernel/drivers/media/dvb-frontends/si2168.ko
dvb_driver_si2141_rom60.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2141_rom61.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2146_rom11.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2147_rom50.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2148_rom32.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2148_rom33.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2157_rom50.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2158_rom51.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2177_rom50.fw kernel/drivers/media/tuners/si2157.ko
dvb_driver_si2178_rom50.fw kernel/drivers/media/tuners/si2157.ko
dvb-fe-af9013.fw kernel/drivers/media/dvb-frontends/af9013.ko
dvb-fe-cx24117.fw kernel/drivers/media/dvb-frontends/cx24117.ko
dvb-fe-drxj-mc-1.0.8.fw kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko
@@ -860,39 +961,57 @@ hfi1_dc8051.fw kernel/drivers/infiniband/hw/hfi1/hfi1.ko
hfi1_fabric.fw kernel/drivers/infiniband/hw/hfi1/hfi1.ko
hfi1_pcie.fw kernel/drivers/infiniband/hw/hfi1/hfi1.ko
hfi1_sbus.fw kernel/drivers/infiniband/hw/hfi1/hfi1.ko
i915/adlp_dmc_ver2_12.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/adlp_guc_62.0.3.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/adlp_dmc_ver2_16.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/adlp_guc_69.0.3.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/adlp_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/adlp_guc_70.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/adls_dmc_ver2_01.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/bxt_dmc_ver1_07.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/bxt_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/bxt_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/bxt_huc_2.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/cml_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/cml_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/cml_huc_4.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/dg1_dmc_ver2_02.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/ehl_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/dg1_guc_70.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/dg1_huc.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/dg2_dmc_ver2_08.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/dg2_guc_70.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/dg2_huc_gsc.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/ehl_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/ehl_huc_9.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/glk_dmc_ver1_04.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/glk_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/glk_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/glk_huc_4.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/icl_dmc_ver1_09.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/icl_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/icl_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/icl_huc_9.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/kbl_dmc_ver1_04.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/kbl_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/kbl_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/kbl_huc_4.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/rkl_dmc_ver2_03.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/skl_dmc_ver1_27.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/skl_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/skl_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/skl_huc_2.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/tgl_dmc_ver2_12.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/tgl_guc_62.0.0.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/tgl_guc_69.0.3.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/tgl_guc_70.1.1.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/tgl_guc_70.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/tgl_huc_7.9.3.bin kernel/drivers/gpu/drm/i915/i915.ko
i915/tgl_huc.bin kernel/drivers/gpu/drm/i915/i915.ko
idt82p33xxx.bin kernel/drivers/ptp/ptp_idt82p33.ko
ifpp.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
inside-secure/eip197b/ifpp.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
inside-secure/eip197b/ipue.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
inside-secure/eip197d/ifpp.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
inside-secure/eip197d/ipue.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
inside-secure/eip197_minifw/ifpp.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
inside-secure/eip197_minifw/ipue.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
intel/ibt-11-5.ddc kernel/drivers/bluetooth/btintel.ko
intel/ibt-11-5.sfi kernel/drivers/bluetooth/btintel.ko
intel/ibt-12-16.ddc kernel/drivers/bluetooth/btintel.ko
intel/ibt-12-16.sfi kernel/drivers/bluetooth/btintel.ko
intel/ice/ddp/ice.pkg kernel/drivers/net/ethernet/intel/ice/ice.ko
ipue.bin kernel/drivers/crypto/inside-secure/crypto_safexcel.ko
ipw2100-1.3.fw kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
ipw2100-1.3-i.fw kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
ipw2100-1.3-p.fw kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
@@ -932,32 +1051,42 @@ iwlwifi-8000C-36.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-8265-36.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-9000-pu-b0-jf-b0-46.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-9260-th-b0-jf-b0-46.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-gf4-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-gf-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-mr-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-cc-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-fm-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-gf4-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-gf-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-mr-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-Qu-b0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-Qu-b0-jf-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-Qu-c0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuQnj-b0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuQnj-b0-jf-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuZ-a0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuZ-a0-jf-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-so-a0-gf-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-so-a0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-so-a0-jf-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-gf4-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-gf-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-hr-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-jf-b0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-mr-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ty-a0-gf-a0-66.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-fm4-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-fm-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-gf4-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-gf-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-bz-a0-mr-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-BzBnj-a0-fm4-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-BzBnj-a0-fm-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-BzBnj-a0-gf4-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-BzBnj-a0-gf-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-BzBnj-a0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-BzBnj-b0-fm-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-cc-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-gl-a0-fm-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-gl-b0-fm-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-fm-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-gf4-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-gf-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ma-a0-mr-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-Qu-b0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-Qu-b0-jf-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-Qu-c0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuQnj-b0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuQnj-b0-jf-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuZ-a0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-QuZ-a0-jf-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-so-a0-gf-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-so-a0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-so-a0-jf-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-gf4-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-gf-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-hr-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-jf-b0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-SoSnj-a0-mr-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
iwlwifi-ty-a0-gf-a0-72.ucode kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
kaweth/new_code.bin kernel/drivers/net/usb/kaweth.ko
kaweth/new_code_fix.bin kernel/drivers/net/usb/kaweth.ko
kaweth/trigger_code.bin kernel/drivers/net/usb/kaweth.ko
@@ -1021,13 +1150,14 @@ liquidio/lio_23xx_nic.bin kernel/drivers/net/ethernet/cavium/liquidio/liquidio.k
liquidio/lio_410nv_nic.bin kernel/drivers/net/ethernet/cavium/liquidio/liquidio.ko
me2600_firmware.bin kernel/drivers/comedi/drivers/me_daq.ko
me4000_firmware.bin kernel/drivers/comedi/drivers/me4000.ko
mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin kernel/drivers/bluetooth/btmtk.ko
mediatek/mt7610e.bin kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0e.ko
mediatek/mt7610e.bin kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.ko
mediatek/mt7610u.bin kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.ko
mediatek/mt7615_cr4.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
mediatek/mt7615_n9.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
mediatek/mt7615_rom_patch.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
mediatek/mt7622pr2h.bin kernel/drivers/bluetooth/btmtkuart.ko
mediatek/mt7622pr2h.bin kernel/drivers/bluetooth/btmtk.ko
mediatek/mt7650e.bin kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0e.ko
mediatek/mt7663_n9_rebb.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
mediatek/mt7663_n9_rebb.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663s.ko
@@ -1035,28 +1165,35 @@ mediatek/mt7663_n9_rebb.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7
mediatek/mt7663_n9_v3.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
mediatek/mt7663_n9_v3.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663s.ko
mediatek/mt7663_n9_v3.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko
mediatek/mt7663pr2h.bin kernel/drivers/bluetooth/btmtksdio.ko
mediatek/mt7663pr2h.bin kernel/drivers/bluetooth/btmtkuart.ko
mediatek/mt7663pr2h.bin kernel/drivers/bluetooth/btusb.ko
mediatek/mt7663pr2h.bin kernel/drivers/bluetooth/btmtk.ko
mediatek/mt7663pr2h.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
mediatek/mt7663pr2h.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663s.ko
mediatek/mt7663pr2h.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko
mediatek/mt7663pr2h_rebb.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
mediatek/mt7663pr2h_rebb.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663s.ko
mediatek/mt7663pr2h_rebb.bin kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko
mediatek/mt7668pr2h.bin kernel/drivers/bluetooth/btmtksdio.ko
mediatek/mt7668pr2h.bin kernel/drivers/bluetooth/btmtkuart.ko
mediatek/mt7668pr2h.bin kernel/drivers/bluetooth/btusb.ko
mediatek/mt7668pr2h.bin kernel/drivers/bluetooth/btmtk.ko
mediatek/mt7915_rom_patch.bin kernel/drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
mediatek/mt7915_wa.bin kernel/drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
mediatek/mt7915_wm.bin kernel/drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
mediatek/mt7916_rom_patch.bin kernel/drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
mediatek/mt7916_wa.bin kernel/drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
mediatek/mt7916_wm.bin kernel/drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
mediatek/mt7996/mt7996_rom_patch.bin kernel/drivers/net/wireless/mediatek/mt76/mt7996/mt7996e.ko
mediatek/mt7996/mt7996_wa.bin kernel/drivers/net/wireless/mediatek/mt76/mt7996/mt7996e.ko
mediatek/mt7996/mt7996_wm.bin kernel/drivers/net/wireless/mediatek/mt76/mt7996/mt7996e.ko
mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko
mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko
mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921s.ko
mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921u.ko
mediatek/WIFI_RAM_CODE_MT7922_1.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko
mediatek/WIFI_RAM_CODE_MT7961_1.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko
mellanox/mlxsw_spectrum-13.2008.2406.mfa2 kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
mellanox/mlxsw_spectrum2-29.2008.2406.mfa2 kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
mellanox/mlxsw_spectrum3-30.2008.2406.mfa2 kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
mediatek/WIFI_RAM_CODE_MT7961_1.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921s.ko
mediatek/WIFI_RAM_CODE_MT7961_1.bin kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921u.ko
mellanox/lc_ini_bundle_2010_1006.bin kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
mellanox/mlxsw_spectrum-13.2010.1006.mfa2 kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
mellanox/mlxsw_spectrum2-29.2010.1006.mfa2 kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
mellanox/mlxsw_spectrum3-30.2010.1006.mfa2 kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
microchip/mscc_vsc8574_revb_int8051_29e8.bin kernel/drivers/net/phy/mscc/mscc.ko
microchip/mscc_vsc8584_revb_int8051_fb48.bin kernel/drivers/net/phy/mscc/mscc.ko
mixart/miXart8AES.xlx kernel/sound/pci/mixart/snd-mixart.ko
@@ -1080,6 +1217,7 @@ mrvl/sd8897_uapsta.bin kernel/drivers/bluetooth/btmrvl_sdio.ko
mrvl/sd8897_uapsta.bin kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
mrvl/sd8987_uapsta.bin kernel/drivers/bluetooth/btmrvl_sdio.ko
mrvl/sd8987_uapsta.bin kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
mrvl/sdiouart8997_combo_v4.bin kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
mrvl/sdsd8977_combo_v2.bin kernel/drivers/bluetooth/btmrvl_sdio.ko
mrvl/sdsd8977_combo_v2.bin kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
mrvl/sdsd8997_combo_v4.bin kernel/drivers/bluetooth/btmrvl_sdio.ko
@@ -1129,6 +1267,71 @@ netronome/nic_AMDA0099-0001_2x25.nffw kernel/drivers/net/ethernet/netronome/nfp/
ni6534a.bin kernel/drivers/comedi/drivers/ni_pcidio.ko
niscrb01.bin kernel/drivers/comedi/drivers/ni_pcidio.ko
niscrb02.bin kernel/drivers/comedi/drivers/ni_pcidio.ko
nvidia/ga102/acr/ucode_ahesasc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/acr/ucode_asb.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/acr/ucode_unload.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/gr/fecs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/gr/fecs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/gr/gpccs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/gr/gpccs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/gr/NET_img.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/sec2/hs_bl_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga102/sec2/sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/acr/ucode_ahesasc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/acr/ucode_asb.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/acr/ucode_unload.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/gr/fecs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/gr/fecs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/gr/gpccs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/gr/gpccs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/gr/NET_img.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/sec2/hs_bl_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga103/sec2/sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/acr/ucode_ahesasc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/acr/ucode_asb.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/acr/ucode_unload.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/gr/fecs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/gr/fecs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/gr/gpccs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/gr/gpccs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/gr/NET_img.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/sec2/hs_bl_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga104/sec2/sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/acr/ucode_ahesasc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/acr/ucode_asb.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/acr/ucode_unload.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/gr/fecs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/gr/fecs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/gr/gpccs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/gr/gpccs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/gr/NET_img.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/sec2/hs_bl_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga106/sec2/sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/acr/ucode_ahesasc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/acr/ucode_asb.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/acr/ucode_unload.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/gr/fecs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/gr/fecs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/gr/gpccs_bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/gr/gpccs_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/gr/NET_img.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/sec2/hs_bl_sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/ga107/sec2/sig.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/gm200/acr/bl.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/gm200/acr/ucode_load.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/gm200/acr/ucode_unload.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
@@ -1338,6 +1541,7 @@ nvidia/tu102/gr/sw_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu102/gr/sw_ctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu102/gr/sw_method_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu102/gr/sw_nonctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu102/gr/sw_veid_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu102/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu102/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu102/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
@@ -1359,6 +1563,7 @@ nvidia/tu104/gr/sw_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu104/gr/sw_ctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu104/gr/sw_method_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu104/gr/sw_nonctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu104/gr/sw_veid_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu104/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu104/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu104/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
@@ -1380,6 +1585,7 @@ nvidia/tu106/gr/sw_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu106/gr/sw_ctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu106/gr/sw_method_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu106/gr/sw_nonctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu106/gr/sw_veid_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu106/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu106/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu106/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
@@ -1401,6 +1607,7 @@ nvidia/tu116/gr/sw_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu116/gr/sw_ctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu116/gr/sw_method_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu116/gr/sw_nonctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu116/gr/sw_veid_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu116/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu116/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu116/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
@@ -1422,6 +1629,7 @@ nvidia/tu117/gr/sw_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu117/gr/sw_ctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu117/gr/sw_method_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu117/gr/sw_nonctx.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu117/gr/sw_veid_bundle_init.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu117/nvdec/scrubber.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu117/sec2/desc.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
nvidia/tu117/sec2/image.bin kernel/drivers/gpu/drm/nouveau/nouveau.ko
@@ -1448,6 +1656,7 @@ pcxhr/xlxc924.dat kernel/sound/pci/pcxhr/snd-pcxhr.ko
pcxhr/xlxint.dat kernel/sound/pci/pcxhr/snd-pcxhr.ko
phanfw.bin kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
phanfw.bin kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
plfxlc/lifi-x.bin kernel/drivers/net/wireless/purelifi/plfxlc/plfxlc.ko
prism2_ru.fw kernel/drivers/staging/wlan-ng/prism2_usb.ko
prism_ap_fw.bin kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
prism_sta_fw.bin kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
@@ -1459,7 +1668,7 @@ qat_c3xxx.bin kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
qat_c3xxx_mmp.bin kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
qat_c62x.bin kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
qat_c62x_mmp.bin kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
qed/qed_init_values_zipped-8.42.2.0.bin kernel/drivers/net/ethernet/qlogic/qed/qed.ko
qed/qed_init_values_zipped-8.59.1.0.bin kernel/drivers/net/ethernet/qlogic/qed/qed.ko
ql2100_fw.bin kernel/drivers/scsi/qla2xxx/qla2xxx.ko
ql2200_fw.bin kernel/drivers/scsi/qla2xxx/qla2xxx.ko
ql2300_fw.bin kernel/drivers/scsi/qla2xxx/qla2xxx.ko
@@ -1737,10 +1946,13 @@ rtl_bt/rtl8822b_config.bin kernel/drivers/bluetooth/btrtl.ko
rtl_bt/rtl8822b_fw.bin kernel/drivers/bluetooth/btrtl.ko
rtl_bt/rtl8852au_config.bin kernel/drivers/bluetooth/btrtl.ko
rtl_bt/rtl8852au_fw.bin kernel/drivers/bluetooth/btrtl.ko
rtl_bt/rtl8852bu_config.bin kernel/drivers/bluetooth/btrtl.ko
rtl_bt/rtl8852bu_fw.bin kernel/drivers/bluetooth/btrtl.ko
rtl_bt/rtl8852cu_config.bin kernel/drivers/bluetooth/btrtl.ko
rtl_bt/rtl8852cu_fw.bin kernel/drivers/bluetooth/btrtl.ko
rtl_nic/rtl8105e-1.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8106e-1.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8106e-2.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8107e-1.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8107e-2.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8125a-3.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8125b-2.fw kernel/drivers/net/ethernet/realtek/r8169.ko
@@ -1761,13 +1973,13 @@ rtl_nic/rtl8168f-2.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8168fp-3.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8168g-2.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8168g-3.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8168h-1.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8168h-2.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8402-1.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8411-1.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtl_nic/rtl8411-2.fw kernel/drivers/net/ethernet/realtek/r8169.ko
rtlwifi/rtl8188efw.bin kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
rtlwifi/rtl8188eufw.bin kernel/drivers/staging/r8188eu/r8188eu.ko
rtlwifi/rtl8188fufw.bin kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
rtlwifi/rtl8192cfw.bin kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
rtlwifi/rtl8192cfwU_B.bin kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
rtlwifi/rtl8192cfwU.bin kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
@@ -1798,8 +2010,9 @@ rtw88/rtw8821c_fw.bin kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821c.ko
rtw88/rtw8822b_fw.bin kernel/drivers/net/wireless/realtek/rtw88/rtw88_8822b.ko
rtw88/rtw8822c_fw.bin kernel/drivers/net/wireless/realtek/rtw88/rtw88_8822c.ko
rtw88/rtw8822c_wow_fw.bin kernel/drivers/net/wireless/realtek/rtw88/rtw88_8822c.ko
rtw89/rtw8852a_fw.bin kernel/drivers/net/wireless/realtek/rtw89/rtw89_core.ko
s5k4ecgx.bin kernel/drivers/media/i2c/s5k4ecgx.ko
rtw89/rtw8852a_fw.bin kernel/drivers/net/wireless/realtek/rtw89/rtw89_8852a.ko
rtw89/rtw8852b_fw.bin kernel/drivers/net/wireless/realtek/rtw89/rtw89_8852b.ko
rtw89/rtw8852c_fw.bin kernel/drivers/net/wireless/realtek/rtw89/rtw89_8852c.ko
sd8385.bin kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
sd8385_helper.bin kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
sd8686.bin kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
@@ -1843,7 +2056,6 @@ ti-connectivity/wl128x-fw-5-mr.bin kernel/drivers/net/wireless/ti/wl12xx/wl12xx.
ti-connectivity/wl128x-fw-5-plt.bin kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
ti-connectivity/wl128x-fw-5-sr.bin kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
ti-connectivity/wl18xx-fw-4.bin kernel/drivers/net/wireless/ti/wl18xx/wl18xx.ko
tigon/tg357766.bin kernel/drivers/net/ethernet/broadcom/tg3.ko
tigon/tg3.bin kernel/drivers/net/ethernet/broadcom/tg3.ko
tigon/tg3_tso5.bin kernel/drivers/net/ethernet/broadcom/tg3.ko
tigon/tg3_tso.bin kernel/drivers/net/ethernet/broadcom/tg3.ko
@@ -1898,8 +2110,6 @@ vx/bd563s3.boot kernel/sound/drivers/vx/snd-vx-lib.ko
vx/bd563v2.boot kernel/sound/drivers/vx/snd-vx-lib.ko
vx/bx_1_vp4.b56 kernel/sound/drivers/vx/snd-vx-lib.ko
vx/bx_1_vxp.b56 kernel/sound/drivers/vx/snd-vx-lib.ko
vxge/X3fw.ncf kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
vxge/X3fw-pxe.ncf kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
vx/l_1_v22.d56 kernel/sound/drivers/vx/snd-vx-lib.ko
vx/l_1_vp4.d56 kernel/sound/drivers/vx/snd-vx-lib.ko
vx/l_1_vx2.d56 kernel/sound/drivers/vx/snd-vx-lib.ko
@@ -1918,9 +2128,9 @@ wil6210_sparrow_plus.fw kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
wil6436.brd kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
wil6436.fw kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
wlan/prima/WCNSS_qcom_wlan_nv.bin kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
xc3028L-v36.fw kernel/drivers/media/tuners/tuner-xc2028.ko
xc3028L-v36.fw kernel/drivers/media/tuners/xc2028.ko
xc3028-v27.fw kernel/drivers/media/pci/cx18/cx18.ko
xc3028-v27.fw kernel/drivers/media/tuners/tuner-xc2028.ko
xc3028-v27.fw kernel/drivers/media/tuners/xc2028.ko
yam/1200.bin kernel/drivers/net/hamradio/yam.ko
yam/9600.bin kernel/drivers/net/hamradio/yam.ko
yamaha/ds1_ctrl.fw kernel/sound/pci/ymfpci/snd-ymfpci.ko
@@ -17,28 +17,19 @@ $KBUILD_BUILD_TIMESTAMP.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
scripts/mkcompile_h | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
init/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h
index 6a2a04d92f42..6c9430ee1a09 100755
--- a/scripts/mkcompile_h
+++ b/scripts/mkcompile_h
@@ -22,10 +22,14 @@ else
VERSION=$KBUILD_BUILD_VERSION
fi
diff --git a/init/Makefile b/init/Makefile
index 26de459006c4..3157d9c79901 100644
--- a/init/Makefile
+++ b/init/Makefile
@@ -29,7 +29,7 @@ preempt-flag-$(CONFIG_PREEMPT_DYNAMIC) := PREEMPT_DYNAMIC
preempt-flag-$(CONFIG_PREEMPT_RT) := PREEMPT_RT
-if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
- TIMESTAMP=`date`
+if [ -z "$KBUILD_BUILD_VERSION_TIMESTAMP" ]; then
+ if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
+ TIMESTAMP=`date`
+ else
+ TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
+ fi
else
- TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
+ TIMESTAMP=$KBUILD_BUILD_VERSION_TIMESTAMP
fi
if test -z "$KBUILD_BUILD_USER"; then
LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
build-version = $(or $(KBUILD_BUILD_VERSION), $(build-version-auto))
-build-timestamp = $(or $(KBUILD_BUILD_TIMESTAMP), $(build-timestamp-auto))
+build-timestamp = $(or $(KBUILD_BUILD_VERSION_TIMESTAMP), $(KBUILD_BUILD_TIMESTAMP), $(build-timestamp-auto))
# Maximum length of UTS_VERSION is 64 chars
filechk_uts_version = \
@@ -19,10 +19,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
index 3326dfced68a..3f1604948ace 100644
index 75204d36d7f9..1fb5ff73ec1e 100644
--- a/net/bridge/br_stp_if.c
+++ b/net/bridge/br_stp_if.c
@@ -268,10 +268,7 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
@@ -265,10 +265,7 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
return false;
list_for_each_entry(p, &br->port_list, list) {
@@ -55,10 +55,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 files changed, 111 insertions(+)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 6c1254a22225..91c091c0f2c9 100644
index 2e77ecc12692..eae6fdc4c683 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -4035,6 +4035,15 @@
@@ -4188,6 +4188,15 @@
Also, it enforces the PCI Local Bus spec
rule that those bits should be 0 in system reset
events (useful for kexec/kdump cases).
@@ -75,7 +75,7 @@ index 6c1254a22225..91c091c0f2c9 100644
Safety option to keep boot IRQs enabled. This
should never be necessary.
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index bc680bdcbbed..faa53ccc9b69 100644
index 267e6002e29f..fac76ca1d16a 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -194,6 +194,106 @@ static int __init pci_apply_final_quirks(void)
@@ -185,7 +185,7 @@ index bc680bdcbbed..faa53ccc9b69 100644
/*
* Decoding should be disabled for a PCI device during BAR sizing to avoid
* conflict. But doing so may cause problems on host bridge and perhaps other
@@ -4972,6 +5072,8 @@ static const struct pci_dev_acs_enabled {
@@ -4959,6 +5059,8 @@ static const struct pci_dev_acs_enabled {
{ PCI_VENDOR_ID_CAVIUM, 0xA060, pci_quirk_mf_endpoint_acs },
/* APM X-Gene */
{ PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs },
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index d11c581ce9b9..0b0ce6979370 100644
index 07aae60288f9..949b7204cf52 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -79,7 +79,7 @@ module_param(halt_poll_ns, uint, 0644);
@@ -3,22 +3,26 @@ From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Date: Wed, 7 Oct 2020 17:18:28 +0200
Subject: [PATCH] net: core: downgrade unregister_netdevice refcount leak from
emergency to error
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index f80bc2ca888a..6ca7a4b8a8f4 100644
index fce980d531bd..5079a3851798 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -10562,7 +10562,7 @@ static void netdev_wait_allrefs(struct net_device *dev)
if (refcnt != 1 &&
time_after(jiffies, warning_time +
netdev_unregister_timeout_secs * HZ)) {
- pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n",
+ pr_err("unregister_netdevice: waiting for %s to become free. Usage count = %d\n",
dev->name, refcnt);
warning_time = jiffies;
}
@@ -10257,7 +10257,7 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
if (time_after(jiffies, warning_time +
READ_ONCE(netdev_unregister_timeout_secs) * HZ)) {
list_for_each_entry(dev, list, todo_list) {
- pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n",
+ pr_err("unregister_netdevice: waiting for %s to become free. Usage count = %d\n",
dev->name, netdev_refcnt_read(dev));
ref_tracker_dir_print(&dev->refcnt_tracker, 10);
}
@@ -1,104 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Date: Mon, 27 Sep 2021 11:28:39 +0200
Subject: [PATCH] Revert "PCI: Coalesce host bridge contiguous apertures"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit ab20e43b20b60f5cc8e2ea3763ffa388158469ac.
was reverted upstream because of reports similar to
Link: https://bugzilla.proxmox.com/show_bug.cgi?id=3552
Link: https://lore.kernel.org/r/20210709231529.GA3270116@roeck-us.net
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
drivers/pci/probe.c | 50 ++++-----------------------------------------
1 file changed, 4 insertions(+), 46 deletions(-)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 103ee42f6717..6b73e9179111 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -20,7 +20,6 @@
#include <linux/irqdomain.h>
#include <linux/pm_runtime.h>
#include <linux/bitfield.h>
-#include <linux/list_sort.h>
#include "pci.h"
#define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */
@@ -881,31 +880,14 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus)
dev_set_msi_domain(&bus->dev, d);
}
-static int res_cmp(void *priv, const struct list_head *a,
- const struct list_head *b)
-{
- struct resource_entry *entry1, *entry2;
-
- entry1 = container_of(a, struct resource_entry, node);
- entry2 = container_of(b, struct resource_entry, node);
-
- if (entry1->res->flags != entry2->res->flags)
- return entry1->res->flags > entry2->res->flags;
-
- if (entry1->offset != entry2->offset)
- return entry1->offset > entry2->offset;
-
- return entry1->res->start > entry2->res->start;
-}
-
static int pci_register_host_bridge(struct pci_host_bridge *bridge)
{
struct device *parent = bridge->dev.parent;
- struct resource_entry *window, *next, *n;
+ struct resource_entry *window, *n;
struct pci_bus *bus, *b;
- resource_size_t offset, next_offset;
+ resource_size_t offset;
LIST_HEAD(resources);
- struct resource *res, *next_res;
+ struct resource *res;
char addr[64], *fmt;
const char *name;
int err;
@@ -988,35 +970,11 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE)
dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n");
- /* Sort and coalesce contiguous windows */
- list_sort(NULL, &resources, res_cmp);
- resource_list_for_each_entry_safe(window, n, &resources) {
- if (list_is_last(&window->node, &resources))
- break;
-
- next = list_next_entry(window, node);
- offset = window->offset;
- res = window->res;
- next_offset = next->offset;
- next_res = next->res;
-
- if (res->flags != next_res->flags || offset != next_offset)
- continue;
-
- if (res->end + 1 == next_res->start) {
- next_res->start = res->start;
- res->flags = res->start = res->end = 0;
- }
- }
-
/* Add initial resources to the bus */
resource_list_for_each_entry_safe(window, n, &resources) {
+ list_move_tail(&window->node, &bridge->windows);
offset = window->offset;
res = window->res;
- if (!res->end)
- continue;
-
- list_move_tail(&window->node, &bridge->windows);
if (res->flags & IORESOURCE_BUS)
pci_bus_insert_busn_res(bus, bus->number, res->end);
@@ -0,0 +1,72 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Date: Sat, 7 Jan 2023 13:48:41 +0100
Subject: [PATCH] Revert "RDMA/irdma: Report the correct link speed"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
seem to cause a regression with some NICs:
https://lore.kernel.org/netdev/CAK8fFZ6A_Gphw_3-QMGKEFQk=sfCw1Qmq0TVZK3rtAi7vb621A@mail.gmail.com/
This reverts commit e8553504e366c8a47d1f6156c30d6eb9778cda13.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
drivers/infiniband/hw/irdma/verbs.c | 35 ++++++++++++++++++++++++++---
1 file changed, 32 insertions(+), 3 deletions(-)
diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index f6973ea55eda..132fe91bb799 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -63,6 +63,36 @@ static int irdma_query_device(struct ib_device *ibdev,
return 0;
}
+/**
+ * irdma_get_eth_speed_and_width - Get IB port speed and width from netdev speed
+ * @link_speed: netdev phy link speed
+ * @active_speed: IB port speed
+ * @active_width: IB port width
+ */
+static void irdma_get_eth_speed_and_width(u32 link_speed, u16 *active_speed,
+ u8 *active_width)
+{
+ if (link_speed <= SPEED_1000) {
+ *active_width = IB_WIDTH_1X;
+ *active_speed = IB_SPEED_SDR;
+ } else if (link_speed <= SPEED_10000) {
+ *active_width = IB_WIDTH_1X;
+ *active_speed = IB_SPEED_FDR10;
+ } else if (link_speed <= SPEED_20000) {
+ *active_width = IB_WIDTH_4X;
+ *active_speed = IB_SPEED_DDR;
+ } else if (link_speed <= SPEED_25000) {
+ *active_width = IB_WIDTH_1X;
+ *active_speed = IB_SPEED_EDR;
+ } else if (link_speed <= SPEED_40000) {
+ *active_width = IB_WIDTH_4X;
+ *active_speed = IB_SPEED_FDR10;
+ } else {
+ *active_width = IB_WIDTH_4X;
+ *active_speed = IB_SPEED_EDR;
+ }
+}
+
/**
* irdma_query_port - get port attributes
* @ibdev: device pointer from stack
@@ -90,9 +120,8 @@ static int irdma_query_port(struct ib_device *ibdev, u32 port,
props->state = IB_PORT_DOWN;
props->phys_state = IB_PORT_PHYS_STATE_DISABLED;
}
-
- ib_get_eth_speed(ibdev, port, &props->active_speed,
- &props->active_width);
+ irdma_get_eth_speed_and_width(SPEED_100000, &props->active_speed,
+ &props->active_width);
if (rdma_protocol_roce(ibdev, 1)) {
props->gid_tbl_len = 32;
@@ -1,112 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date: Tue, 13 Jul 2021 20:50:07 +0800
Subject: [PATCH] PCI: Reinstate "PCI: Coalesce host bridge contiguous
apertures"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Built-in graphics on HP EliteDesk 805 G6 doesn't work because graphics
can't get the BAR it needs:
pci_bus 0000:00: root bus resource [mem 0x10020200000-0x100303fffff window]
pci_bus 0000:00: root bus resource [mem 0x10030400000-0x100401fffff window]
pci 0000:00:08.1: bridge window [mem 0xd2000000-0xd23fffff]
pci 0000:00:08.1: bridge window [mem 0x10030000000-0x100401fffff 64bit pref]
pci 0000:00:08.1: can't claim BAR 15 [mem 0x10030000000-0x100401fffff 64bit pref]: no compatible bridge window
pci 0000:00:08.1: [mem 0x10030000000-0x100401fffff 64bit pref] clipped to [mem 0x10030000000-0x100303fffff 64bit pref]
pci 0000:00:08.1: bridge window [mem 0x10030000000-0x100303fffff 64bit pref]
pci 0000:07:00.0: can't claim BAR 0 [mem 0x10030000000-0x1003fffffff 64bit pref]: no compatible bridge window
pci 0000:07:00.0: can't claim BAR 2 [mem 0x10040000000-0x100401fffff 64bit pref]: no compatible bridge window
However, the root bus has two contiguous apertures that can contain the
child resource requested.
Coalesce contiguous apertures so we can allocate from the entire contiguous
region.
This is the second take of commit 65db04053efe ("PCI: Coalesce host
bridge contiguous apertures"). The original approach sorts the apertures
by address, but that makes NVMe stop working on QEMU ppc:sam460ex:
PCI host bridge to bus 0002:00
pci_bus 0002:00: root bus resource [io 0x0000-0xffff]
pci_bus 0002:00: root bus resource [mem 0xd80000000-0xdffffffff] (bus address [0x80000000-0xffffffff])
pci_bus 0002:00: root bus resource [mem 0xc0ee00000-0xc0eefffff] (bus address [0x00000000-0x000fffff])
After the offending commit:
PCI host bridge to bus 0002:00
pci_bus 0002:00: root bus resource [io 0x0000-0xffff]
pci_bus 0002:00: root bus resource [mem 0xc0ee00000-0xc0eefffff] (bus address [0x00000000-0x000fffff])
pci_bus 0002:00: root bus resource [mem 0xd80000000-0xdffffffff] (bus address [0x80000000-0xffffffff])
Since the apertures on HP EliteDesk 805 G6 are already in ascending
order, doing a precautious sorting is not necessary.
Remove the sorting part to avoid the regression on ppc:sam460ex.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=212013
Cc: Guenter Roeck <linux@roeck-us.net>
Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
drivers/pci/probe.c | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 6b73e9179111..50eef5b211f4 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -883,11 +883,11 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus)
static int pci_register_host_bridge(struct pci_host_bridge *bridge)
{
struct device *parent = bridge->dev.parent;
- struct resource_entry *window, *n;
+ struct resource_entry *window, *next, *n;
struct pci_bus *bus, *b;
- resource_size_t offset;
+ resource_size_t offset, next_offset;
LIST_HEAD(resources);
- struct resource *res;
+ struct resource *res, *next_res;
char addr[64], *fmt;
const char *name;
int err;
@@ -970,11 +970,34 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE)
dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n");
+ /* Coalesce contiguous windows */
+ resource_list_for_each_entry_safe(window, n, &resources) {
+ if (list_is_last(&window->node, &resources))
+ break;
+
+ next = list_next_entry(window, node);
+ offset = window->offset;
+ res = window->res;
+ next_offset = next->offset;
+ next_res = next->res;
+
+ if (res->flags != next_res->flags || offset != next_offset)
+ continue;
+
+ if (res->end + 1 == next_res->start) {
+ next_res->start = res->start;
+ res->flags = res->start = res->end = 0;
+ }
+ }
+
/* Add initial resources to the bus */
resource_list_for_each_entry_safe(window, n, &resources) {
- list_move_tail(&window->node, &bridge->windows);
offset = window->offset;
res = window->res;
+ if (!res->end)
+ continue;
+
+ list_move_tail(&window->node, &bridge->windows);
if (res->flags & IORESOURCE_BUS)
pci_bus_insert_busn_res(bus, bus->number, res->end);
@@ -0,0 +1,29 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Date: Tue, 10 Jan 2023 08:52:40 +0100
Subject: [PATCH] Revert "fortify: Do not cast to "unsigned char""
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 106b7a61c488d2022f44e3531ce33461c7c0685f.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
include/linux/fortify-string.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/fortify-string.h b/include/linux/fortify-string.h
index 7cad8bb031e9..acc24887db3e 100644
--- a/include/linux/fortify-string.h
+++ b/include/linux/fortify-string.h
@@ -18,7 +18,7 @@ void __write_overflow_field(size_t avail, size_t wanted) __compiletime_warning("
#define __compiletime_strlen(p) \
({ \
- char *__p = (char *)(p); \
+ unsigned char *__p = (unsigned char *)(p); \
size_t __ret = SIZE_MAX; \
size_t __p_size = __member_size(p); \
if (__p_size != SIZE_MAX && \
@@ -1,28 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
Date: Thu, 14 Sep 2017 11:09:58 +0200
Subject: [PATCH] do not generate split BTF type info per default
This reverts commit a8ed1a0607cfa5478ff6009539f44790c4d0956d.
It breaks ZFS sometimes:
https://github.com/openzfs/zfs/issues/12301#issuecomment-873303739
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
lib/Kconfig.debug | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 28faea9b5da6..9cfb8a026adb 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -331,7 +331,7 @@ config PAHOLE_HAS_SPLIT_BTF
def_bool PAHOLE_VERSION >= 119
config DEBUG_INFO_BTF_MODULES
- def_bool y
+ def_bool n
depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF
help
Generate compact split BTF type information for kernel modules.
@@ -1,147 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Tue, 11 Jan 2022 09:31:59 +0100
Subject: [PATCH] blk-cgroup: always terminate io.stat lines
With the removal of seq_get_buf in blkcg_print_one_stat, we
cannot make adding the newline conditional on there being
relevant stats because the name was already written out
unconditionally.
Otherwise we may end up with multiple device names in one
line which is confusing and doesn't follow the nested-keyed
file format.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Fixes: 252c651a4c85 ("blk-cgroup: stop using seq_get_buf")
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
block/blk-cgroup.c | 9 ++-------
block/blk-iocost.c | 5 ++---
block/blk-iolatency.c | 8 +++-----
include/linux/blk-cgroup.h | 2 +-
4 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index fd81a7370864..4677829e4ae3 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -900,7 +900,6 @@ static void blkcg_print_one_stat(struct blkcg_gq *blkg, struct seq_file *s)
{
struct blkg_iostat_set *bis = &blkg->iostat;
u64 rbytes, wbytes, rios, wios, dbytes, dios;
- bool has_stats = false;
const char *dname;
unsigned seq;
int i;
@@ -926,14 +925,12 @@ static void blkcg_print_one_stat(struct blkcg_gq *blkg, struct seq_file *s)
} while (u64_stats_fetch_retry(&bis->sync, seq));
if (rbytes || wbytes || rios || wios) {
- has_stats = true;
seq_printf(s, "rbytes=%llu wbytes=%llu rios=%llu wios=%llu dbytes=%llu dios=%llu",
rbytes, wbytes, rios, wios,
dbytes, dios);
}
if (blkcg_debug_stats && atomic_read(&blkg->use_delay)) {
- has_stats = true;
seq_printf(s, " use_delay=%d delay_nsec=%llu",
atomic_read(&blkg->use_delay),
atomic64_read(&blkg->delay_nsec));
@@ -945,12 +942,10 @@ static void blkcg_print_one_stat(struct blkcg_gq *blkg, struct seq_file *s)
if (!blkg->pd[i] || !pol->pd_stat_fn)
continue;
- if (pol->pd_stat_fn(blkg->pd[i], s))
- has_stats = true;
+ pol->pd_stat_fn(blkg->pd[i], s);
}
- if (has_stats)
- seq_printf(s, "\n");
+ seq_puts(s, "\n");
}
static int blkcg_print_stat(struct seq_file *sf, void *v)
diff --git a/block/blk-iocost.c b/block/blk-iocost.c
index 645a589edda8..b0846da38eda 100644
--- a/block/blk-iocost.c
+++ b/block/blk-iocost.c
@@ -3028,13 +3028,13 @@ static void ioc_pd_free(struct blkg_policy_data *pd)
kfree(iocg);
}
-static bool ioc_pd_stat(struct blkg_policy_data *pd, struct seq_file *s)
+static void ioc_pd_stat(struct blkg_policy_data *pd, struct seq_file *s)
{
struct ioc_gq *iocg = pd_to_iocg(pd);
struct ioc *ioc = iocg->ioc;
if (!ioc->enabled)
- return false;
+ return;
if (iocg->level == 0) {
unsigned vp10k = DIV64_U64_ROUND_CLOSEST(
@@ -3050,7 +3050,6 @@ static bool ioc_pd_stat(struct blkg_policy_data *pd, struct seq_file *s)
iocg->last_stat.wait_us,
iocg->last_stat.indebt_us,
iocg->last_stat.indelay_us);
- return true;
}
static u64 ioc_weight_prfill(struct seq_file *sf, struct blkg_policy_data *pd,
diff --git a/block/blk-iolatency.c b/block/blk-iolatency.c
index bdef8395af6e..a5f13743a280 100644
--- a/block/blk-iolatency.c
+++ b/block/blk-iolatency.c
@@ -906,7 +906,7 @@ static int iolatency_print_limit(struct seq_file *sf, void *v)
return 0;
}
-static bool iolatency_ssd_stat(struct iolatency_grp *iolat, struct seq_file *s)
+static void iolatency_ssd_stat(struct iolatency_grp *iolat, struct seq_file *s)
{
struct latency_stat stat;
int cpu;
@@ -929,17 +929,16 @@ static bool iolatency_ssd_stat(struct iolatency_grp *iolat, struct seq_file *s)
(unsigned long long)stat.ps.missed,
(unsigned long long)stat.ps.total,
iolat->rq_depth.max_depth);
- return true;
}
-static bool iolatency_pd_stat(struct blkg_policy_data *pd, struct seq_file *s)
+static void iolatency_pd_stat(struct blkg_policy_data *pd, struct seq_file *s)
{
struct iolatency_grp *iolat = pd_to_lat(pd);
unsigned long long avg_lat;
unsigned long long cur_win;
if (!blkcg_debug_stats)
- return false;
+ return;
if (iolat->ssd)
return iolatency_ssd_stat(iolat, s);
@@ -952,7 +951,6 @@ static bool iolatency_pd_stat(struct blkg_policy_data *pd, struct seq_file *s)
else
seq_printf(s, " depth=%u avg_lat=%llu win=%llu",
iolat->rq_depth.max_depth, avg_lat, cur_win);
- return true;
}
static struct blkg_policy_data *iolatency_pd_alloc(gfp_t gfp,
diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index bc5c04d711bb..618359e3beca 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -153,7 +153,7 @@ typedef void (blkcg_pol_online_pd_fn)(struct blkg_policy_data *pd);
typedef void (blkcg_pol_offline_pd_fn)(struct blkg_policy_data *pd);
typedef void (blkcg_pol_free_pd_fn)(struct blkg_policy_data *pd);
typedef void (blkcg_pol_reset_pd_stats_fn)(struct blkg_policy_data *pd);
-typedef bool (blkcg_pol_stat_pd_fn)(struct blkg_policy_data *pd,
+typedef void (blkcg_pol_stat_pd_fn)(struct blkg_policy_data *pd,
struct seq_file *s);
struct blkcg_policy {
@@ -1,34 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Tue, 25 Jan 2022 10:12:19 +0100
Subject: [PATCH] drivers/firmware: Don't mark as busy the simple-framebuffer
IO resource
The sysfb_create_simplefb() function requests a IO memory resource for the
simple-framebuffer platform device, but it also marks it as busy which can
lead to drivers requesting the same memory resource to fail.
Let's drop the IORESOURCE_BUSY flag and let drivers to request it as busy
instead.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
drivers/firmware/sysfb_simplefb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/firmware/sysfb_simplefb.c b/drivers/firmware/sysfb_simplefb.c
index fd4fa923088a..ca907f7e76c6 100644
--- a/drivers/firmware/sysfb_simplefb.c
+++ b/drivers/firmware/sysfb_simplefb.c
@@ -99,7 +99,7 @@ __init struct platform_device *sysfb_create_simplefb(const struct screen_info *s
/* setup IORESOURCE_MEM as framebuffer memory */
memset(&res, 0, sizeof(res));
- res.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
+ res.flags = IORESOURCE_MEM;
res.name = simplefb_resname;
res.start = base;
res.end = res.start + length - 1;
@@ -1,63 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Thomas Zimmermann <tzimmermann@suse.de>
Date: Tue, 25 Jan 2022 10:12:20 +0100
Subject: [PATCH] drm/simpledrm: Request memory region in driver
Requesting the framebuffer memory in simpledrm marks the memory
range as busy. This used to be done by the firmware sysfb code,
but the driver is the correct place.
v2:
* use I/O memory if request_mem_region() fails (Jocelyn)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
drivers/gpu/drm/tiny/simpledrm.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c
index f3c2c173ca4b..da58c0d0f44d 100644
--- a/drivers/gpu/drm/tiny/simpledrm.c
+++ b/drivers/gpu/drm/tiny/simpledrm.c
@@ -525,21 +525,33 @@ static int simpledrm_device_init_mm(struct simpledrm_device *sdev)
{
struct drm_device *dev = &sdev->dev;
struct platform_device *pdev = sdev->pdev;
- struct resource *mem;
+ struct resource *res, *mem;
void __iomem *screen_base;
int ret;
- mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!mem)
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res)
return -EINVAL;
- ret = devm_aperture_acquire_from_firmware(dev, mem->start, resource_size(mem));
+ ret = devm_aperture_acquire_from_firmware(dev, res->start, resource_size(res));
if (ret) {
drm_err(dev, "could not acquire memory range %pr: error %d\n",
- mem, ret);
+ res, ret);
return ret;
}
+ mem = devm_request_mem_region(&pdev->dev, res->start, resource_size(res),
+ sdev->dev.driver->name);
+ if (!mem) {
+ /*
+ * We cannot make this fatal. Sometimes this comes from magic
+ * spaces our resource handlers simply don't know about. Use
+ * the I/O-memory resource as-is and try to map that instead.
+ */
+ drm_warn(dev, "could not acquire memory region %pr\n", res);
+ mem = res;
+ }
+
screen_base = devm_ioremap_wc(&pdev->dev, mem->start,
resource_size(mem));
if (!screen_base)
@@ -1,148 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Thomas Zimmermann <tzimmermann@suse.de>
Date: Tue, 25 Jan 2022 10:12:21 +0100
Subject: [PATCH] fbdev/simplefb: Request memory region in driver
Requesting the framebuffer memory in simpledrm marks the memory
range as busy. This used to be done by the firmware sysfb code,
but the driver is the correct place.
v2:
* store memory region in struct for later cleanup (Javier)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
drivers/video/fbdev/simplefb.c | 65 +++++++++++++++++++++++-----------
1 file changed, 45 insertions(+), 20 deletions(-)
diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index a2e3a4690025..8acfb12abfee 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c
@@ -66,7 +66,21 @@ static int simplefb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
return 0;
}
-struct simplefb_par;
+struct simplefb_par {
+ u32 palette[PSEUDO_PALETTE_SIZE];
+ struct resource *mem;
+#if defined CONFIG_OF && defined CONFIG_COMMON_CLK
+ bool clks_enabled;
+ unsigned int clk_count;
+ struct clk **clks;
+#endif
+#if defined CONFIG_OF && defined CONFIG_REGULATOR
+ bool regulators_enabled;
+ u32 regulator_count;
+ struct regulator **regulators;
+#endif
+};
+
static void simplefb_clocks_destroy(struct simplefb_par *par);
static void simplefb_regulators_destroy(struct simplefb_par *par);
@@ -76,12 +90,18 @@ static void simplefb_regulators_destroy(struct simplefb_par *par);
*/
static void simplefb_destroy(struct fb_info *info)
{
+ struct simplefb_par *par = info->par;
+ struct resource *mem = par->mem;
+
simplefb_regulators_destroy(info->par);
simplefb_clocks_destroy(info->par);
if (info->screen_base)
iounmap(info->screen_base);
framebuffer_release(info);
+
+ if (mem)
+ release_mem_region(mem->start, resource_size(mem));
}
static const struct fb_ops simplefb_ops = {
@@ -175,20 +195,6 @@ static int simplefb_parse_pd(struct platform_device *pdev,
return 0;
}
-struct simplefb_par {
- u32 palette[PSEUDO_PALETTE_SIZE];
-#if defined CONFIG_OF && defined CONFIG_COMMON_CLK
- bool clks_enabled;
- unsigned int clk_count;
- struct clk **clks;
-#endif
-#if defined CONFIG_OF && defined CONFIG_REGULATOR
- bool regulators_enabled;
- u32 regulator_count;
- struct regulator **regulators;
-#endif
-};
-
#if defined CONFIG_OF && defined CONFIG_COMMON_CLK
/*
* Clock handling code.
@@ -411,7 +417,7 @@ static int simplefb_probe(struct platform_device *pdev)
struct simplefb_params params;
struct fb_info *info;
struct simplefb_par *par;
- struct resource *mem;
+ struct resource *res, *mem;
/*
* Generic drivers must not be registered if a framebuffer exists.
@@ -436,15 +442,28 @@ static int simplefb_probe(struct platform_device *pdev)
if (ret)
return ret;
- mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!mem) {
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res) {
dev_err(&pdev->dev, "No memory resource\n");
return -EINVAL;
}
+ mem = request_mem_region(res->start, resource_size(res), "simplefb");
+ if (!mem) {
+ /*
+ * We cannot make this fatal. Sometimes this comes from magic
+ * spaces our resource handlers simply don't know about. Use
+ * the I/O-memory resource as-is and try to map that instead.
+ */
+ dev_warn(&pdev->dev, "simplefb: cannot reserve video memory at %pR\n", res);
+ mem = res;
+ }
+
info = framebuffer_alloc(sizeof(struct simplefb_par), &pdev->dev);
- if (!info)
- return -ENOMEM;
+ if (!info) {
+ ret = -ENOMEM;
+ goto error_release_mem_region;
+ }
platform_set_drvdata(pdev, info);
par = info->par;
@@ -501,6 +520,9 @@ static int simplefb_probe(struct platform_device *pdev)
info->var.xres, info->var.yres,
info->var.bits_per_pixel, info->fix.line_length);
+ if (mem != res)
+ par->mem = mem; /* release in clean-up handler */
+
ret = register_framebuffer(info);
if (ret < 0) {
dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret);
@@ -519,6 +541,9 @@ static int simplefb_probe(struct platform_device *pdev)
iounmap(info->screen_base);
error_fb_release:
framebuffer_release(info);
+error_release_mem_region:
+ if (mem != res)
+ release_mem_region(mem->start, resource_size(mem));
return ret;
}
@@ -1,81 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Olga Kornievskaia <kolga@netapp.com>
Date: Wed, 16 Mar 2022 18:24:26 -0400
Subject: [PATCH] NFSv4.1 provide mount option to toggle trunking discovery
Introduce a new mount option -- trunkdiscovery,notrunkdiscovery -- to
toggle whether or not the client will engage in actively discovery
of trunking locations.
v2 make notrunkdiscovery default
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Fixes: 1976b2b31462 ("NFSv4.1 query for fs_location attr on a new file system")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
(cherry picked from commit a43bf604446414103b7535f38e739b65601c4fb2)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
fs/nfs/client.c | 3 ++-
fs/nfs/fs_context.c | 8 ++++++++
include/linux/nfs_fs_sb.h | 1 +
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 090b16890e3d..f303e96ce165 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -861,7 +861,8 @@ int nfs_probe_fsinfo(struct nfs_server *server, struct nfs_fh *mntfh, struct nfs
}
if (clp->rpc_ops->discover_trunking != NULL &&
- (server->caps & NFS_CAP_FS_LOCATIONS)) {
+ (server->caps & NFS_CAP_FS_LOCATIONS &&
+ (server->flags & NFS_MOUNT_TRUNK_DISCOVERY))) {
error = clp->rpc_ops->discover_trunking(server, mntfh);
if (error < 0)
return error;
diff --git a/fs/nfs/fs_context.c b/fs/nfs/fs_context.c
index fb3cad38b149..0166370f088e 100644
--- a/fs/nfs/fs_context.c
+++ b/fs/nfs/fs_context.c
@@ -79,6 +79,7 @@ enum nfs_param {
Opt_source,
Opt_tcp,
Opt_timeo,
+ Opt_trunkdiscovery,
Opt_udp,
Opt_v,
Opt_vers,
@@ -179,6 +180,7 @@ static const struct fs_parameter_spec nfs_fs_parameters[] = {
fsparam_string("source", Opt_source),
fsparam_flag ("tcp", Opt_tcp),
fsparam_u32 ("timeo", Opt_timeo),
+ fsparam_flag_no("trunkdiscovery", Opt_trunkdiscovery),
fsparam_flag ("udp", Opt_udp),
fsparam_flag ("v2", Opt_v),
fsparam_flag ("v3", Opt_v),
@@ -528,6 +530,12 @@ static int nfs_fs_context_parse_param(struct fs_context *fc,
else
ctx->flags &= ~NFS_MOUNT_NOCTO;
break;
+ case Opt_trunkdiscovery:
+ if (result.negated)
+ ctx->flags &= ~NFS_MOUNT_TRUNK_DISCOVERY;
+ else
+ ctx->flags |= NFS_MOUNT_TRUNK_DISCOVERY;
+ break;
case Opt_ac:
if (result.negated)
ctx->flags |= NFS_MOUNT_NOAC;
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h
index 5e065f16d061..324bdd653ad4 100644
--- a/include/linux/nfs_fs_sb.h
+++ b/include/linux/nfs_fs_sb.h
@@ -157,6 +157,7 @@ struct nfs_server {
#define NFS_MOUNT_SOFTREVAL 0x800000
#define NFS_MOUNT_WRITE_EAGER 0x01000000
#define NFS_MOUNT_WRITE_WAIT 0x02000000
+#define NFS_MOUNT_TRUNK_DISCOVERY 0x04000000
unsigned int fattr_valid; /* Valid attributes */
unsigned int caps; /* server capabilities */
@@ -1,69 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Marc Bevand <m@zorinaq.com>
Date: Tue, 21 Dec 2021 15:31:12 -0800
Subject: [PATCH] EDAC/amd64: Add PCI device IDs for family 19h model 50h
Add the new family 19h model 50h PCI IDs (device 18h functions 0 and 6)
to support Ryzen 5000 APUs ("Cezanne").
Signed-off-by: Marc Bevand <m@zorinaq.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
drivers/edac/amd64_edac.c | 15 +++++++++++++++
drivers/edac/amd64_edac.h | 3 +++
2 files changed, 18 insertions(+)
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index c6c58f01067f..f8ef2edf8abf 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -2660,6 +2660,16 @@ static struct amd64_family_type family_types[] = {
.dbam_to_cs = f17_addr_mask_to_cs_size,
}
},
+ [F19_M50H_CPUS] = {
+ .ctl_name = "F19h_M50h",
+ .f0_id = PCI_DEVICE_ID_AMD_19H_M50H_DF_F0,
+ .f6_id = PCI_DEVICE_ID_AMD_19H_M50H_DF_F6,
+ .max_mcs = 2,
+ .ops = {
+ .early_channel_count = f17_early_channel_count,
+ .dbam_to_cs = f17_addr_mask_to_cs_size,
+ }
+ },
};
/*
@@ -3706,6 +3716,11 @@ static struct amd64_family_type *per_family_init(struct amd64_pvt *pvt)
pvt->ops = &family_types[F17_M70H_CPUS].ops;
fam_type->ctl_name = "F19h_M20h";
break;
+ } else if (pvt->model >= 0x50 && pvt->model <= 0x5f) {
+ fam_type = &family_types[F19_M50H_CPUS];
+ pvt->ops = &family_types[F19_M50H_CPUS].ops;
+ fam_type->ctl_name = "F19h_M50h";
+ break;
} else if (pvt->model >= 0xa0 && pvt->model <= 0xaf) {
fam_type = &family_types[F19_M10H_CPUS];
pvt->ops = &family_types[F19_M10H_CPUS].ops;
diff --git a/drivers/edac/amd64_edac.h b/drivers/edac/amd64_edac.h
index 650cab401e21..352bda9803f6 100644
--- a/drivers/edac/amd64_edac.h
+++ b/drivers/edac/amd64_edac.h
@@ -128,6 +128,8 @@
#define PCI_DEVICE_ID_AMD_19H_DF_F6 0x1656
#define PCI_DEVICE_ID_AMD_19H_M10H_DF_F0 0x14ad
#define PCI_DEVICE_ID_AMD_19H_M10H_DF_F6 0x14b3
+#define PCI_DEVICE_ID_AMD_19H_M50H_DF_F0 0x166a
+#define PCI_DEVICE_ID_AMD_19H_M50H_DF_F6 0x1670
/*
* Function 1 - Address Map
@@ -301,6 +303,7 @@ enum amd_families {
F17_M70H_CPUS,
F19_CPUS,
F19_M10H_CPUS,
+ F19_M50H_CPUS,
NUM_FAMILIES,
};
@@ -1,53 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:49:59 +0300
Subject: [PATCH] bug: introduce ASSERT_STRUCT_OFFSET
ASSERT_STRUCT_OFFSET allows to assert during the build of
the kernel that a field in a struct have an expected offset.
KVM used to have such macro, but there is almost nothing KVM specific
in it so move it to build_bug.h, so that it can be used in other
places in KVM.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/kvm/vmx/vmcs12.h | 5 ++---
include/linux/build_bug.h | 9 +++++++++
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kvm/vmx/vmcs12.h b/arch/x86/kvm/vmx/vmcs12.h
index 2a45f026ee11..ba8617964982 100644
--- a/arch/x86/kvm/vmx/vmcs12.h
+++ b/arch/x86/kvm/vmx/vmcs12.h
@@ -208,9 +208,8 @@ struct __packed vmcs12 {
/*
* For save/restore compatibility, the vmcs12 field offsets must not change.
*/
-#define CHECK_OFFSET(field, loc) \
- BUILD_BUG_ON_MSG(offsetof(struct vmcs12, field) != (loc), \
- "Offset of " #field " in struct vmcs12 has changed.")
+#define CHECK_OFFSET(field, loc) \
+ ASSERT_STRUCT_OFFSET(struct vmcs12, field, loc)
static inline void vmx_check_vmcs12_offsets(void)
{
diff --git a/include/linux/build_bug.h b/include/linux/build_bug.h
index e3a0be2c90ad..3aa3640f8c18 100644
--- a/include/linux/build_bug.h
+++ b/include/linux/build_bug.h
@@ -77,4 +77,13 @@
#define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr)
#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
+
+/*
+ * Compile time check that field has an expected offset
+ */
+#define ASSERT_STRUCT_OFFSET(type, field, expected_offset) \
+ BUILD_BUG_ON_MSG(offsetof(type, field) != (expected_offset), \
+ "Offset of " #field " in " #type " has changed.")
+
+
#endif /* _LINUX_BUILD_BUG_H */
@@ -1,34 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:02 +0300
Subject: [PATCH] KVM: x86: emulator: update the emulation mode after rsm
This ensures that RIP will be correctly written back,
because the RSM instruction can switch the CPU mode from
32 bit (or less) to 64 bit.
This fixes a guest crash in case the #SMI is received
while the guest runs a code from an address > 32 bit.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/kvm/emulate.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 98b25a7af8ce..0616ee9cd977 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2638,6 +2638,11 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt)
if (ret != X86EMUL_CONTINUE)
goto emulate_shutdown;
+
+ ret = emulator_recalc_and_set_mode(ctxt);
+ if (ret != X86EMUL_CONTINUE)
+ goto emulate_shutdown;
+
/*
* Note, the ctxt->ops callbacks are responsible for handling side
* effects when writing MSRs and CRs, e.g. MMU context resets, CPUID
@@ -1,280 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:05 +0300
Subject: [PATCH] KVM: x86: emulator/smm: add structs for KVM's smram layout
Those structs will be used to read/write the smram state image.
Also document the differences between KVM's SMRAM layout and SMRAM
layout that is used by real Intel/AMD cpus.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/kvm/emulate.c | 6 +
arch/x86/kvm/kvm_emulate.h | 218 +++++++++++++++++++++++++++++++++++++
arch/x86/kvm/x86.c | 1 +
3 files changed, 225 insertions(+)
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 0616ee9cd977..6866f09a5b53 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -5829,3 +5829,9 @@ bool emulator_can_use_gpa(struct x86_emulate_ctxt *ctxt)
return true;
}
+
+void __init kvm_emulator_init(void)
+{
+ __check_smram32_offsets();
+ __check_smram64_offsets();
+}
diff --git a/arch/x86/kvm/kvm_emulate.h b/arch/x86/kvm/kvm_emulate.h
index fb09cd22cb7f..0b2bbcce321a 100644
--- a/arch/x86/kvm/kvm_emulate.h
+++ b/arch/x86/kvm/kvm_emulate.h
@@ -13,6 +13,7 @@
#define _ASM_X86_KVM_X86_EMULATE_H
#include <asm/desc_defs.h>
+#include <linux/build_bug.h>
#include "fpu.h"
struct x86_emulate_ctxt;
@@ -482,6 +483,223 @@ enum x86_intercept {
nr_x86_intercepts
};
+
+/* 32 bit KVM's emulated SMM layout. Loosely based on Intel's layout */
+
+struct kvm_smm_seg_state_32 {
+ u32 flags;
+ u32 limit;
+ u32 base;
+} __packed;
+
+struct kvm_smram_state_32 {
+ u32 reserved1[62];
+ u32 smbase;
+ u32 smm_revision;
+ u32 reserved2[5];
+ u32 cr4; /* CR4 is not present in Intel/AMD SMRAM image */
+ u32 reserved3[5];
+
+ /*
+ * Segment state is not present/documented in the Intel/AMD SMRAM image
+ * Instead this area on Intel/AMD contains IO/HLT restart flags.
+ */
+ struct kvm_smm_seg_state_32 ds;
+ struct kvm_smm_seg_state_32 fs;
+ struct kvm_smm_seg_state_32 gs;
+ struct kvm_smm_seg_state_32 idtr; /* IDTR has only base and limit */
+ struct kvm_smm_seg_state_32 tr;
+ u32 reserved;
+ struct kvm_smm_seg_state_32 gdtr; /* GDTR has only base and limit */
+ struct kvm_smm_seg_state_32 ldtr;
+ struct kvm_smm_seg_state_32 es;
+ struct kvm_smm_seg_state_32 cs;
+ struct kvm_smm_seg_state_32 ss;
+
+ u32 es_sel;
+ u32 cs_sel;
+ u32 ss_sel;
+ u32 ds_sel;
+ u32 fs_sel;
+ u32 gs_sel;
+ u32 ldtr_sel;
+ u32 tr_sel;
+
+ u32 dr7;
+ u32 dr6;
+ u32 gprs[8]; /* GPRS in the "natural" X86 order (EAX/ECX/EDX.../EDI) */
+ u32 eip;
+ u32 eflags;
+ u32 cr3;
+ u32 cr0;
+} __packed;
+
+
+static inline void __check_smram32_offsets(void)
+{
+#define __CHECK_SMRAM32_OFFSET(field, offset) \
+ ASSERT_STRUCT_OFFSET(struct kvm_smram_state_32, field, offset - 0xFE00)
+
+ __CHECK_SMRAM32_OFFSET(reserved1, 0xFE00);
+ __CHECK_SMRAM32_OFFSET(smbase, 0xFEF8);
+ __CHECK_SMRAM32_OFFSET(smm_revision, 0xFEFC);
+ __CHECK_SMRAM32_OFFSET(reserved2, 0xFF00);
+ __CHECK_SMRAM32_OFFSET(cr4, 0xFF14);
+ __CHECK_SMRAM32_OFFSET(reserved3, 0xFF18);
+ __CHECK_SMRAM32_OFFSET(ds, 0xFF2C);
+ __CHECK_SMRAM32_OFFSET(fs, 0xFF38);
+ __CHECK_SMRAM32_OFFSET(gs, 0xFF44);
+ __CHECK_SMRAM32_OFFSET(idtr, 0xFF50);
+ __CHECK_SMRAM32_OFFSET(tr, 0xFF5C);
+ __CHECK_SMRAM32_OFFSET(gdtr, 0xFF6C);
+ __CHECK_SMRAM32_OFFSET(ldtr, 0xFF78);
+ __CHECK_SMRAM32_OFFSET(es, 0xFF84);
+ __CHECK_SMRAM32_OFFSET(cs, 0xFF90);
+ __CHECK_SMRAM32_OFFSET(ss, 0xFF9C);
+ __CHECK_SMRAM32_OFFSET(es_sel, 0xFFA8);
+ __CHECK_SMRAM32_OFFSET(cs_sel, 0xFFAC);
+ __CHECK_SMRAM32_OFFSET(ss_sel, 0xFFB0);
+ __CHECK_SMRAM32_OFFSET(ds_sel, 0xFFB4);
+ __CHECK_SMRAM32_OFFSET(fs_sel, 0xFFB8);
+ __CHECK_SMRAM32_OFFSET(gs_sel, 0xFFBC);
+ __CHECK_SMRAM32_OFFSET(ldtr_sel, 0xFFC0);
+ __CHECK_SMRAM32_OFFSET(tr_sel, 0xFFC4);
+ __CHECK_SMRAM32_OFFSET(dr7, 0xFFC8);
+ __CHECK_SMRAM32_OFFSET(dr6, 0xFFCC);
+ __CHECK_SMRAM32_OFFSET(gprs, 0xFFD0);
+ __CHECK_SMRAM32_OFFSET(eip, 0xFFF0);
+ __CHECK_SMRAM32_OFFSET(eflags, 0xFFF4);
+ __CHECK_SMRAM32_OFFSET(cr3, 0xFFF8);
+ __CHECK_SMRAM32_OFFSET(cr0, 0xFFFC);
+#undef __CHECK_SMRAM32_OFFSET
+}
+
+
+/* 64 bit KVM's emulated SMM layout. Based on AMD64 layout */
+
+struct kvm_smm_seg_state_64 {
+ u16 selector;
+ u16 attributes;
+ u32 limit;
+ u64 base;
+};
+
+struct kvm_smram_state_64 {
+
+ struct kvm_smm_seg_state_64 es;
+ struct kvm_smm_seg_state_64 cs;
+ struct kvm_smm_seg_state_64 ss;
+ struct kvm_smm_seg_state_64 ds;
+ struct kvm_smm_seg_state_64 fs;
+ struct kvm_smm_seg_state_64 gs;
+ struct kvm_smm_seg_state_64 gdtr; /* GDTR has only base and limit*/
+ struct kvm_smm_seg_state_64 ldtr;
+ struct kvm_smm_seg_state_64 idtr; /* IDTR has only base and limit*/
+ struct kvm_smm_seg_state_64 tr;
+
+ /* I/O restart and auto halt restart are not implemented by KVM */
+ u64 io_restart_rip;
+ u64 io_restart_rcx;
+ u64 io_restart_rsi;
+ u64 io_restart_rdi;
+ u32 io_restart_dword;
+ u32 reserved1;
+ u8 io_inst_restart;
+ u8 auto_hlt_restart;
+ u8 reserved2[6];
+
+ u64 efer;
+
+ /*
+ * Two fields below are implemented on AMD only, to store
+ * SVM guest vmcb address if the #SMI was received while in the guest mode.
+ */
+ u64 svm_guest_flag;
+ u64 svm_guest_vmcb_gpa;
+ u64 svm_guest_virtual_int; /* unknown purpose, not implemented */
+
+ u32 reserved3[3];
+ u32 smm_revison;
+ u32 smbase;
+ u32 reserved4[5];
+
+ /* ssp and svm_* fields below are not implemented by KVM */
+ u64 ssp;
+ u64 svm_guest_pat;
+ u64 svm_host_efer;
+ u64 svm_host_cr4;
+ u64 svm_host_cr3;
+ u64 svm_host_cr0;
+
+ u64 cr4;
+ u64 cr3;
+ u64 cr0;
+ u64 dr7;
+ u64 dr6;
+ u64 rflags;
+ u64 rip;
+ u64 gprs[16]; /* GPRS in a reversed "natural" X86 order (R15/R14/../RCX/RAX.) */
+};
+
+
+static inline void __check_smram64_offsets(void)
+{
+#define __CHECK_SMRAM64_OFFSET(field, offset) \
+ ASSERT_STRUCT_OFFSET(struct kvm_smram_state_64, field, offset - 0xFE00)
+
+ __CHECK_SMRAM64_OFFSET(es, 0xFE00);
+ __CHECK_SMRAM64_OFFSET(cs, 0xFE10);
+ __CHECK_SMRAM64_OFFSET(ss, 0xFE20);
+ __CHECK_SMRAM64_OFFSET(ds, 0xFE30);
+ __CHECK_SMRAM64_OFFSET(fs, 0xFE40);
+ __CHECK_SMRAM64_OFFSET(gs, 0xFE50);
+ __CHECK_SMRAM64_OFFSET(gdtr, 0xFE60);
+ __CHECK_SMRAM64_OFFSET(ldtr, 0xFE70);
+ __CHECK_SMRAM64_OFFSET(idtr, 0xFE80);
+ __CHECK_SMRAM64_OFFSET(tr, 0xFE90);
+ __CHECK_SMRAM64_OFFSET(io_restart_rip, 0xFEA0);
+ __CHECK_SMRAM64_OFFSET(io_restart_rcx, 0xFEA8);
+ __CHECK_SMRAM64_OFFSET(io_restart_rsi, 0xFEB0);
+ __CHECK_SMRAM64_OFFSET(io_restart_rdi, 0xFEB8);
+ __CHECK_SMRAM64_OFFSET(io_restart_dword, 0xFEC0);
+ __CHECK_SMRAM64_OFFSET(reserved1, 0xFEC4);
+ __CHECK_SMRAM64_OFFSET(io_inst_restart, 0xFEC8);
+ __CHECK_SMRAM64_OFFSET(auto_hlt_restart, 0xFEC9);
+ __CHECK_SMRAM64_OFFSET(reserved2, 0xFECA);
+ __CHECK_SMRAM64_OFFSET(efer, 0xFED0);
+ __CHECK_SMRAM64_OFFSET(svm_guest_flag, 0xFED8);
+ __CHECK_SMRAM64_OFFSET(svm_guest_vmcb_gpa, 0xFEE0);
+ __CHECK_SMRAM64_OFFSET(svm_guest_virtual_int, 0xFEE8);
+ __CHECK_SMRAM64_OFFSET(reserved3, 0xFEF0);
+ __CHECK_SMRAM64_OFFSET(smm_revison, 0xFEFC);
+ __CHECK_SMRAM64_OFFSET(smbase, 0xFF00);
+ __CHECK_SMRAM64_OFFSET(reserved4, 0xFF04);
+ __CHECK_SMRAM64_OFFSET(ssp, 0xFF18);
+ __CHECK_SMRAM64_OFFSET(svm_guest_pat, 0xFF20);
+ __CHECK_SMRAM64_OFFSET(svm_host_efer, 0xFF28);
+ __CHECK_SMRAM64_OFFSET(svm_host_cr4, 0xFF30);
+ __CHECK_SMRAM64_OFFSET(svm_host_cr3, 0xFF38);
+ __CHECK_SMRAM64_OFFSET(svm_host_cr0, 0xFF40);
+ __CHECK_SMRAM64_OFFSET(cr4, 0xFF48);
+ __CHECK_SMRAM64_OFFSET(cr3, 0xFF50);
+ __CHECK_SMRAM64_OFFSET(cr0, 0xFF58);
+ __CHECK_SMRAM64_OFFSET(dr7, 0xFF60);
+ __CHECK_SMRAM64_OFFSET(dr6, 0xFF68);
+ __CHECK_SMRAM64_OFFSET(rflags, 0xFF70);
+ __CHECK_SMRAM64_OFFSET(rip, 0xFF78);
+ __CHECK_SMRAM64_OFFSET(gprs, 0xFF80);
+#undef __CHECK_SMRAM64_OFFSET
+}
+
+union kvm_smram {
+ struct kvm_smram_state_64 smram64;
+ struct kvm_smram_state_32 smram32;
+ u8 bytes[512];
+};
+
+void __init kvm_emulator_init(void);
+
+
/* Host execution mode. */
#if defined(CONFIG_X86_32)
#define X86EMUL_MODE_HOST X86EMUL_MODE_PROT32
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 7e817493667d..f62bce0a74f0 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -12695,6 +12695,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit);
static int __init kvm_x86_init(void)
{
kvm_mmu_x86_module_init();
+ kvm_emulator_init();
mitigate_smt_rsb &= boot_cpu_has_bug(X86_BUG_SMT_RSB) && cpu_smt_possible();
return 0;
}
@@ -1,214 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:06 +0300
Subject: [PATCH] KVM: x86: emulator/smm: use smram structs in the common code
Switch from using a raw array to 'union kvm_smram'.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/include/asm/kvm_host.h | 5 +++--
arch/x86/kvm/emulate.c | 12 +++++++-----
arch/x86/kvm/kvm_emulate.h | 3 ++-
arch/x86/kvm/svm/svm.c | 8 ++++++--
arch/x86/kvm/vmx/vmx.c | 4 ++--
arch/x86/kvm/x86.c | 16 ++++++++--------
6 files changed, 28 insertions(+), 20 deletions(-)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index b2a98914a63c..4b1514a174b0 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -200,6 +200,7 @@ typedef enum exit_fastpath_completion fastpath_t;
struct x86_emulate_ctxt;
struct x86_exception;
+union kvm_smram;
enum x86_intercept;
enum x86_intercept_stage;
@@ -1464,8 +1465,8 @@ struct kvm_x86_ops {
void (*setup_mce)(struct kvm_vcpu *vcpu);
int (*smi_allowed)(struct kvm_vcpu *vcpu, bool for_injection);
- int (*enter_smm)(struct kvm_vcpu *vcpu, char *smstate);
- int (*leave_smm)(struct kvm_vcpu *vcpu, const char *smstate);
+ int (*enter_smm)(struct kvm_vcpu *vcpu, union kvm_smram *smram);
+ int (*leave_smm)(struct kvm_vcpu *vcpu, const union kvm_smram *smram);
void (*enable_smi_window)(struct kvm_vcpu *vcpu);
int (*mem_enc_op)(struct kvm *kvm, void __user *argp);
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 6866f09a5b53..ae6f89b79ef2 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2566,16 +2566,18 @@ static int rsm_load_state_64(struct x86_emulate_ctxt *ctxt,
static int em_rsm(struct x86_emulate_ctxt *ctxt)
{
unsigned long cr0, cr4, efer;
- char buf[512];
+ const union kvm_smram smram;
u64 smbase;
int ret;
+ BUILD_BUG_ON(sizeof(smram) != 512);
+
if ((ctxt->ops->get_hflags(ctxt) & X86EMUL_SMM_MASK) == 0)
return emulate_ud(ctxt);
smbase = ctxt->ops->get_smbase(ctxt);
- ret = ctxt->ops->read_phys(ctxt, smbase + 0xfe00, buf, sizeof(buf));
+ ret = ctxt->ops->read_phys(ctxt, smbase + 0xfe00, (void *)&smram, sizeof(smram));
if (ret != X86EMUL_CONTINUE)
return X86EMUL_UNHANDLEABLE;
@@ -2625,15 +2627,15 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt)
* state (e.g. enter guest mode) before loading state from the SMM
* state-save area.
*/
- if (ctxt->ops->leave_smm(ctxt, buf))
+ if (ctxt->ops->leave_smm(ctxt, &smram))
goto emulate_shutdown;
#ifdef CONFIG_X86_64
if (emulator_has_longmode(ctxt))
- ret = rsm_load_state_64(ctxt, buf);
+ ret = rsm_load_state_64(ctxt, (const char *)&smram);
else
#endif
- ret = rsm_load_state_32(ctxt, buf);
+ ret = rsm_load_state_32(ctxt, (const char *)&smram);
if (ret != X86EMUL_CONTINUE)
goto emulate_shutdown;
diff --git a/arch/x86/kvm/kvm_emulate.h b/arch/x86/kvm/kvm_emulate.h
index 0b2bbcce321a..3b37b3e17379 100644
--- a/arch/x86/kvm/kvm_emulate.h
+++ b/arch/x86/kvm/kvm_emulate.h
@@ -19,6 +19,7 @@
struct x86_emulate_ctxt;
enum x86_intercept;
enum x86_intercept_stage;
+union kvm_smram;
struct x86_exception {
u8 vector;
@@ -233,7 +234,7 @@ struct x86_emulate_ops {
unsigned (*get_hflags)(struct x86_emulate_ctxt *ctxt);
void (*exiting_smm)(struct x86_emulate_ctxt *ctxt);
- int (*leave_smm)(struct x86_emulate_ctxt *ctxt, const char *smstate);
+ int (*leave_smm)(struct x86_emulate_ctxt *ctxt, const union kvm_smram *smram);
void (*triple_fault)(struct x86_emulate_ctxt *ctxt);
int (*set_xcr)(struct x86_emulate_ctxt *ctxt, u32 index, u64 xcr);
};
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index af33aafcb410..76a35d939b9f 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -4328,12 +4328,14 @@ static int svm_smi_allowed(struct kvm_vcpu *vcpu, bool for_injection)
return !svm_smi_blocked(vcpu);
}
-static int svm_enter_smm(struct kvm_vcpu *vcpu, char *smstate)
+static int svm_enter_smm(struct kvm_vcpu *vcpu, union kvm_smram *smram)
{
struct vcpu_svm *svm = to_svm(vcpu);
struct kvm_host_map map_save;
int ret;
+ char *smstate = (char *)smram;
+
if (!is_guest_mode(vcpu))
return 0;
@@ -4375,7 +4377,7 @@ static int svm_enter_smm(struct kvm_vcpu *vcpu, char *smstate)
return 0;
}
-static int svm_leave_smm(struct kvm_vcpu *vcpu, const char *smstate)
+static int svm_leave_smm(struct kvm_vcpu *vcpu, const union kvm_smram *smram)
{
struct vcpu_svm *svm = to_svm(vcpu);
struct kvm_host_map map, map_save;
@@ -4383,6 +4385,8 @@ static int svm_leave_smm(struct kvm_vcpu *vcpu, const char *smstate)
struct vmcb *vmcb12;
int ret;
+ const char *smstate = (const char *)smram;
+
if (!guest_cpuid_has(vcpu, X86_FEATURE_LM))
return 0;
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index ab7141c1def4..f844864b5763 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -7652,7 +7652,7 @@ static int vmx_smi_allowed(struct kvm_vcpu *vcpu, bool for_injection)
return !is_smm(vcpu);
}
-static int vmx_enter_smm(struct kvm_vcpu *vcpu, char *smstate)
+static int vmx_enter_smm(struct kvm_vcpu *vcpu, union kvm_smram *smram)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
@@ -7666,7 +7666,7 @@ static int vmx_enter_smm(struct kvm_vcpu *vcpu, char *smstate)
return 0;
}
-static int vmx_leave_smm(struct kvm_vcpu *vcpu, const char *smstate)
+static int vmx_leave_smm(struct kvm_vcpu *vcpu, const union kvm_smram *smram)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
int ret;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index f62bce0a74f0..3d282bcce9ef 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -7489,9 +7489,9 @@ static void emulator_exiting_smm(struct x86_emulate_ctxt *ctxt)
}
static int emulator_leave_smm(struct x86_emulate_ctxt *ctxt,
- const char *smstate)
+ const union kvm_smram *smram)
{
- return static_call(kvm_x86_leave_smm)(emul_to_vcpu(ctxt), smstate);
+ return static_call(kvm_x86_leave_smm)(emul_to_vcpu(ctxt), smram);
}
static void emulator_triple_fault(struct x86_emulate_ctxt *ctxt)
@@ -9370,25 +9370,25 @@ static void enter_smm(struct kvm_vcpu *vcpu)
struct kvm_segment cs, ds;
struct desc_ptr dt;
unsigned long cr0;
- char buf[512];
+ union kvm_smram smram;
- memset(buf, 0, 512);
+ memset(smram.bytes, 0, sizeof(smram.bytes));
#ifdef CONFIG_X86_64
if (guest_cpuid_has(vcpu, X86_FEATURE_LM))
- enter_smm_save_state_64(vcpu, buf);
+ enter_smm_save_state_64(vcpu, (char *)&smram);
else
#endif
- enter_smm_save_state_32(vcpu, buf);
+ enter_smm_save_state_32(vcpu, (char *)&smram);
/*
* Give enter_smm() a chance to make ISA-specific changes to the vCPU
* state (e.g. leave guest mode) after we've saved the state into the
* SMM state-save area.
*/
- static_call(kvm_x86_enter_smm)(vcpu, buf);
+ static_call(kvm_x86_enter_smm)(vcpu, &smram);
kvm_smm_changed(vcpu, true);
- kvm_vcpu_write_guest(vcpu, vcpu->arch.smbase + 0xfe00, buf, sizeof(buf));
+ kvm_vcpu_write_guest(vcpu, vcpu->arch.smbase + 0xfe00, &smram, sizeof(smram));
if (static_call(kvm_x86_get_nmi_mask)(vcpu))
vcpu->arch.hflags |= HF_SMM_INSIDE_NMI_MASK;
@@ -1,268 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:07 +0300
Subject: [PATCH] KVM: x86: emulator/smm: use smram struct for 32 bit smram
load/restore
Use kvm_smram_state_32 struct to save/restore 32 bit SMM state
(used when X86_FEATURE_LM is not present in the guest CPUID).
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/kvm/emulate.c | 81 +++++++++++++++---------------------------
arch/x86/kvm/x86.c | 75 +++++++++++++++++---------------------
2 files changed, 60 insertions(+), 96 deletions(-)
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index ae6f89b79ef2..36c45c89563c 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2343,25 +2343,17 @@ static void rsm_set_desc_flags(struct desc_struct *desc, u32 flags)
desc->type = (flags >> 8) & 15;
}
-static int rsm_load_seg_32(struct x86_emulate_ctxt *ctxt, const char *smstate,
+static void rsm_load_seg_32(struct x86_emulate_ctxt *ctxt,
+ const struct kvm_smm_seg_state_32 *state,
+ u16 selector,
int n)
{
struct desc_struct desc;
- int offset;
- u16 selector;
-
- selector = GET_SMSTATE(u32, smstate, 0x7fa8 + n * 4);
-
- if (n < 3)
- offset = 0x7f84 + n * 12;
- else
- offset = 0x7f2c + (n - 3) * 12;
- set_desc_base(&desc, GET_SMSTATE(u32, smstate, offset + 8));
- set_desc_limit(&desc, GET_SMSTATE(u32, smstate, offset + 4));
- rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, offset));
+ set_desc_base(&desc, state->base);
+ set_desc_limit(&desc, state->limit);
+ rsm_set_desc_flags(&desc, state->flags);
ctxt->ops->set_segment(ctxt, selector, &desc, 0, n);
- return X86EMUL_CONTINUE;
}
#ifdef CONFIG_X86_64
@@ -2432,63 +2424,46 @@ static int rsm_enter_protected_mode(struct x86_emulate_ctxt *ctxt,
}
static int rsm_load_state_32(struct x86_emulate_ctxt *ctxt,
- const char *smstate)
+ const struct kvm_smram_state_32 *smstate)
{
- struct desc_struct desc;
struct desc_ptr dt;
- u16 selector;
- u32 val, cr0, cr3, cr4;
int i;
- cr0 = GET_SMSTATE(u32, smstate, 0x7ffc);
- cr3 = GET_SMSTATE(u32, smstate, 0x7ff8);
- ctxt->eflags = GET_SMSTATE(u32, smstate, 0x7ff4) | X86_EFLAGS_FIXED;
- ctxt->_eip = GET_SMSTATE(u32, smstate, 0x7ff0);
+ ctxt->eflags = smstate->eflags | X86_EFLAGS_FIXED;
+ ctxt->_eip = smstate->eip;
for (i = 0; i < 8; i++)
- *reg_write(ctxt, i) = GET_SMSTATE(u32, smstate, 0x7fd0 + i * 4);
-
- val = GET_SMSTATE(u32, smstate, 0x7fcc);
+ *reg_write(ctxt, i) = smstate->gprs[i];
- if (ctxt->ops->set_dr(ctxt, 6, val))
+ if (ctxt->ops->set_dr(ctxt, 6, smstate->dr6))
return X86EMUL_UNHANDLEABLE;
-
- val = GET_SMSTATE(u32, smstate, 0x7fc8);
-
- if (ctxt->ops->set_dr(ctxt, 7, val))
+ if (ctxt->ops->set_dr(ctxt, 7, smstate->dr7))
return X86EMUL_UNHANDLEABLE;
- selector = GET_SMSTATE(u32, smstate, 0x7fc4);
- set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7f64));
- set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7f60));
- rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7f5c));
- ctxt->ops->set_segment(ctxt, selector, &desc, 0, VCPU_SREG_TR);
+ rsm_load_seg_32(ctxt, &smstate->tr, smstate->tr_sel, VCPU_SREG_TR);
+ rsm_load_seg_32(ctxt, &smstate->ldtr, smstate->ldtr_sel, VCPU_SREG_LDTR);
- selector = GET_SMSTATE(u32, smstate, 0x7fc0);
- set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7f80));
- set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7f7c));
- rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7f78));
- ctxt->ops->set_segment(ctxt, selector, &desc, 0, VCPU_SREG_LDTR);
- dt.address = GET_SMSTATE(u32, smstate, 0x7f74);
- dt.size = GET_SMSTATE(u32, smstate, 0x7f70);
+ dt.address = smstate->gdtr.base;
+ dt.size = smstate->gdtr.limit;
ctxt->ops->set_gdt(ctxt, &dt);
- dt.address = GET_SMSTATE(u32, smstate, 0x7f58);
- dt.size = GET_SMSTATE(u32, smstate, 0x7f54);
+ dt.address = smstate->idtr.base;
+ dt.size = smstate->idtr.limit;
ctxt->ops->set_idt(ctxt, &dt);
- for (i = 0; i < 6; i++) {
- int r = rsm_load_seg_32(ctxt, smstate, i);
- if (r != X86EMUL_CONTINUE)
- return r;
- }
+ rsm_load_seg_32(ctxt, &smstate->es, smstate->es_sel, VCPU_SREG_ES);
+ rsm_load_seg_32(ctxt, &smstate->cs, smstate->cs_sel, VCPU_SREG_CS);
+ rsm_load_seg_32(ctxt, &smstate->ss, smstate->ss_sel, VCPU_SREG_SS);
- cr4 = GET_SMSTATE(u32, smstate, 0x7f14);
+ rsm_load_seg_32(ctxt, &smstate->ds, smstate->ds_sel, VCPU_SREG_DS);
+ rsm_load_seg_32(ctxt, &smstate->fs, smstate->fs_sel, VCPU_SREG_FS);
+ rsm_load_seg_32(ctxt, &smstate->gs, smstate->gs_sel, VCPU_SREG_GS);
- ctxt->ops->set_smbase(ctxt, GET_SMSTATE(u32, smstate, 0x7ef8));
+ ctxt->ops->set_smbase(ctxt, smstate->smbase);
- return rsm_enter_protected_mode(ctxt, cr0, cr3, cr4);
+ return rsm_enter_protected_mode(ctxt, smstate->cr0,
+ smstate->cr3, smstate->cr4);
}
#ifdef CONFIG_X86_64
@@ -2635,7 +2610,7 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt)
ret = rsm_load_state_64(ctxt, (const char *)&smram);
else
#endif
- ret = rsm_load_state_32(ctxt, (const char *)&smram);
+ ret = rsm_load_state_32(ctxt, &smram.smram32);
if (ret != X86EMUL_CONTINUE)
goto emulate_shutdown;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 3d282bcce9ef..c6b5c0543931 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -9224,22 +9224,18 @@ static u32 enter_smm_get_segment_flags(struct kvm_segment *seg)
return flags;
}
-static void enter_smm_save_seg_32(struct kvm_vcpu *vcpu, char *buf, int n)
+static void enter_smm_save_seg_32(struct kvm_vcpu *vcpu,
+ struct kvm_smm_seg_state_32 *state,
+ u32 *selector,
+ int n)
{
struct kvm_segment seg;
- int offset;
kvm_get_segment(vcpu, &seg, n);
- put_smstate(u32, buf, 0x7fa8 + n * 4, seg.selector);
-
- if (n < 3)
- offset = 0x7f84 + n * 12;
- else
- offset = 0x7f2c + (n - 3) * 12;
-
- put_smstate(u32, buf, offset + 8, seg.base);
- put_smstate(u32, buf, offset + 4, seg.limit);
- put_smstate(u32, buf, offset, enter_smm_get_segment_flags(&seg));
+ *selector = seg.selector;
+ state->base = seg.base;
+ state->limit = seg.limit;
+ state->flags = enter_smm_get_segment_flags(&seg);
}
#ifdef CONFIG_X86_64
@@ -9260,54 +9256,47 @@ static void enter_smm_save_seg_64(struct kvm_vcpu *vcpu, char *buf, int n)
}
#endif
-static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, char *buf)
+static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_state_32 *smram)
{
struct desc_ptr dt;
- struct kvm_segment seg;
unsigned long val;
int i;
- put_smstate(u32, buf, 0x7ffc, kvm_read_cr0(vcpu));
- put_smstate(u32, buf, 0x7ff8, kvm_read_cr3(vcpu));
- put_smstate(u32, buf, 0x7ff4, kvm_get_rflags(vcpu));
- put_smstate(u32, buf, 0x7ff0, kvm_rip_read(vcpu));
+ smram->cr0 = kvm_read_cr0(vcpu);
+ smram->cr3 = kvm_read_cr3(vcpu);
+ smram->eflags = kvm_get_rflags(vcpu);
+ smram->eip = kvm_rip_read(vcpu);
for (i = 0; i < 8; i++)
- put_smstate(u32, buf, 0x7fd0 + i * 4, kvm_register_read_raw(vcpu, i));
+ smram->gprs[i] = kvm_register_read_raw(vcpu, i);
kvm_get_dr(vcpu, 6, &val);
- put_smstate(u32, buf, 0x7fcc, (u32)val);
+ smram->dr6 = (u32)val;
kvm_get_dr(vcpu, 7, &val);
- put_smstate(u32, buf, 0x7fc8, (u32)val);
+ smram->dr7 = (u32)val;
- kvm_get_segment(vcpu, &seg, VCPU_SREG_TR);
- put_smstate(u32, buf, 0x7fc4, seg.selector);
- put_smstate(u32, buf, 0x7f64, seg.base);
- put_smstate(u32, buf, 0x7f60, seg.limit);
- put_smstate(u32, buf, 0x7f5c, enter_smm_get_segment_flags(&seg));
-
- kvm_get_segment(vcpu, &seg, VCPU_SREG_LDTR);
- put_smstate(u32, buf, 0x7fc0, seg.selector);
- put_smstate(u32, buf, 0x7f80, seg.base);
- put_smstate(u32, buf, 0x7f7c, seg.limit);
- put_smstate(u32, buf, 0x7f78, enter_smm_get_segment_flags(&seg));
+ enter_smm_save_seg_32(vcpu, &smram->tr, &smram->tr_sel, VCPU_SREG_TR);
+ enter_smm_save_seg_32(vcpu, &smram->ldtr, &smram->ldtr_sel, VCPU_SREG_LDTR);
static_call(kvm_x86_get_gdt)(vcpu, &dt);
- put_smstate(u32, buf, 0x7f74, dt.address);
- put_smstate(u32, buf, 0x7f70, dt.size);
+ smram->gdtr.base = dt.address;
+ smram->gdtr.limit = dt.size;
static_call(kvm_x86_get_idt)(vcpu, &dt);
- put_smstate(u32, buf, 0x7f58, dt.address);
- put_smstate(u32, buf, 0x7f54, dt.size);
+ smram->idtr.base = dt.address;
+ smram->idtr.limit = dt.size;
- for (i = 0; i < 6; i++)
- enter_smm_save_seg_32(vcpu, buf, i);
+ enter_smm_save_seg_32(vcpu, &smram->es, &smram->es_sel, VCPU_SREG_ES);
+ enter_smm_save_seg_32(vcpu, &smram->cs, &smram->cs_sel, VCPU_SREG_CS);
+ enter_smm_save_seg_32(vcpu, &smram->ss, &smram->ss_sel, VCPU_SREG_SS);
- put_smstate(u32, buf, 0x7f14, kvm_read_cr4(vcpu));
+ enter_smm_save_seg_32(vcpu, &smram->ds, &smram->ds_sel, VCPU_SREG_DS);
+ enter_smm_save_seg_32(vcpu, &smram->fs, &smram->fs_sel, VCPU_SREG_FS);
+ enter_smm_save_seg_32(vcpu, &smram->gs, &smram->gs_sel, VCPU_SREG_GS);
- /* revision id */
- put_smstate(u32, buf, 0x7efc, 0x00020000);
- put_smstate(u32, buf, 0x7ef8, vcpu->arch.smbase);
+ smram->cr4 = kvm_read_cr4(vcpu);
+ smram->smm_revision = 0x00020000;
+ smram->smbase = vcpu->arch.smbase;
}
#ifdef CONFIG_X86_64
@@ -9378,7 +9367,7 @@ static void enter_smm(struct kvm_vcpu *vcpu)
enter_smm_save_state_64(vcpu, (char *)&smram);
else
#endif
- enter_smm_save_state_32(vcpu, (char *)&smram);
+ enter_smm_save_state_32(vcpu, &smram.smram32);
/*
* Give enter_smm() a chance to make ISA-specific changes to the vCPU
@@ -1,279 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:08 +0300
Subject: [PATCH] KVM: x86: emulator/smm: use smram struct for 64 bit smram
load/restore
Use kvm_smram_state_64 struct to save/restore the 64 bit SMM state
(used when X86_FEATURE_LM is present in the guest CPUID,
regardless of 32-bitness of the guest).
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/kvm/emulate.c | 88 ++++++++++++++----------------------------
arch/x86/kvm/x86.c | 75 ++++++++++++++++-------------------
2 files changed, 62 insertions(+), 101 deletions(-)
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 36c45c89563c..eb2f5e43f6ad 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2357,24 +2357,16 @@ static void rsm_load_seg_32(struct x86_emulate_ctxt *ctxt,
}
#ifdef CONFIG_X86_64
-static int rsm_load_seg_64(struct x86_emulate_ctxt *ctxt, const char *smstate,
- int n)
+static void rsm_load_seg_64(struct x86_emulate_ctxt *ctxt,
+ const struct kvm_smm_seg_state_64 *state,
+ int n)
{
struct desc_struct desc;
- int offset;
- u16 selector;
- u32 base3;
-
- offset = 0x7e00 + n * 16;
-
- selector = GET_SMSTATE(u16, smstate, offset);
- rsm_set_desc_flags(&desc, GET_SMSTATE(u16, smstate, offset + 2) << 8);
- set_desc_limit(&desc, GET_SMSTATE(u32, smstate, offset + 4));
- set_desc_base(&desc, GET_SMSTATE(u32, smstate, offset + 8));
- base3 = GET_SMSTATE(u32, smstate, offset + 12);
- ctxt->ops->set_segment(ctxt, selector, &desc, base3, n);
- return X86EMUL_CONTINUE;
+ rsm_set_desc_flags(&desc, state->attributes << 8);
+ set_desc_limit(&desc, state->limit);
+ set_desc_base(&desc, (u32)state->base);
+ ctxt->ops->set_segment(ctxt, state->selector, &desc, state->base >> 32, n);
}
#endif
@@ -2468,71 +2460,49 @@ static int rsm_load_state_32(struct x86_emulate_ctxt *ctxt,
#ifdef CONFIG_X86_64
static int rsm_load_state_64(struct x86_emulate_ctxt *ctxt,
- const char *smstate)
+ const struct kvm_smram_state_64 *smstate)
{
- struct desc_struct desc;
struct desc_ptr dt;
- u64 val, cr0, cr3, cr4;
- u32 base3;
- u16 selector;
int i, r;
for (i = 0; i < 16; i++)
- *reg_write(ctxt, i) = GET_SMSTATE(u64, smstate, 0x7ff8 - i * 8);
+ *reg_write(ctxt, i) = smstate->gprs[15 - i];
- ctxt->_eip = GET_SMSTATE(u64, smstate, 0x7f78);
- ctxt->eflags = GET_SMSTATE(u32, smstate, 0x7f70) | X86_EFLAGS_FIXED;
+ ctxt->_eip = smstate->rip;
+ ctxt->eflags = smstate->rflags | X86_EFLAGS_FIXED;
- val = GET_SMSTATE(u64, smstate, 0x7f68);
-
- if (ctxt->ops->set_dr(ctxt, 6, val))
+ if (ctxt->ops->set_dr(ctxt, 6, smstate->dr6))
return X86EMUL_UNHANDLEABLE;
-
- val = GET_SMSTATE(u64, smstate, 0x7f60);
-
- if (ctxt->ops->set_dr(ctxt, 7, val))
+ if (ctxt->ops->set_dr(ctxt, 7, smstate->dr7))
return X86EMUL_UNHANDLEABLE;
- cr0 = GET_SMSTATE(u64, smstate, 0x7f58);
- cr3 = GET_SMSTATE(u64, smstate, 0x7f50);
- cr4 = GET_SMSTATE(u64, smstate, 0x7f48);
- ctxt->ops->set_smbase(ctxt, GET_SMSTATE(u32, smstate, 0x7f00));
- val = GET_SMSTATE(u64, smstate, 0x7ed0);
+ ctxt->ops->set_smbase(ctxt, smstate->smbase);
- if (ctxt->ops->set_msr(ctxt, MSR_EFER, val & ~EFER_LMA))
+ if (ctxt->ops->set_msr(ctxt, MSR_EFER, smstate->efer & ~EFER_LMA))
return X86EMUL_UNHANDLEABLE;
- selector = GET_SMSTATE(u32, smstate, 0x7e90);
- rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7e92) << 8);
- set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7e94));
- set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7e98));
- base3 = GET_SMSTATE(u32, smstate, 0x7e9c);
- ctxt->ops->set_segment(ctxt, selector, &desc, base3, VCPU_SREG_TR);
+ rsm_load_seg_64(ctxt, &smstate->tr, VCPU_SREG_TR);
- dt.size = GET_SMSTATE(u32, smstate, 0x7e84);
- dt.address = GET_SMSTATE(u64, smstate, 0x7e88);
+ dt.size = smstate->idtr.limit;
+ dt.address = smstate->idtr.base;
ctxt->ops->set_idt(ctxt, &dt);
- selector = GET_SMSTATE(u32, smstate, 0x7e70);
- rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7e72) << 8);
- set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7e74));
- set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7e78));
- base3 = GET_SMSTATE(u32, smstate, 0x7e7c);
- ctxt->ops->set_segment(ctxt, selector, &desc, base3, VCPU_SREG_LDTR);
+ rsm_load_seg_64(ctxt, &smstate->ldtr, VCPU_SREG_LDTR);
- dt.size = GET_SMSTATE(u32, smstate, 0x7e64);
- dt.address = GET_SMSTATE(u64, smstate, 0x7e68);
+ dt.size = smstate->gdtr.limit;
+ dt.address = smstate->gdtr.base;
ctxt->ops->set_gdt(ctxt, &dt);
- r = rsm_enter_protected_mode(ctxt, cr0, cr3, cr4);
+ r = rsm_enter_protected_mode(ctxt, smstate->cr0, smstate->cr3, smstate->cr4);
if (r != X86EMUL_CONTINUE)
return r;
- for (i = 0; i < 6; i++) {
- r = rsm_load_seg_64(ctxt, smstate, i);
- if (r != X86EMUL_CONTINUE)
- return r;
- }
+ rsm_load_seg_64(ctxt, &smstate->es, VCPU_SREG_ES);
+ rsm_load_seg_64(ctxt, &smstate->cs, VCPU_SREG_CS);
+ rsm_load_seg_64(ctxt, &smstate->ss, VCPU_SREG_SS);
+ rsm_load_seg_64(ctxt, &smstate->ds, VCPU_SREG_DS);
+ rsm_load_seg_64(ctxt, &smstate->fs, VCPU_SREG_FS);
+ rsm_load_seg_64(ctxt, &smstate->gs, VCPU_SREG_GS);
return X86EMUL_CONTINUE;
}
@@ -2607,7 +2577,7 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt)
#ifdef CONFIG_X86_64
if (emulator_has_longmode(ctxt))
- ret = rsm_load_state_64(ctxt, (const char *)&smram);
+ ret = rsm_load_state_64(ctxt, &smram.smram64);
else
#endif
ret = rsm_load_state_32(ctxt, &smram.smram32);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index c6b5c0543931..f309248fa888 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -9239,20 +9239,17 @@ static void enter_smm_save_seg_32(struct kvm_vcpu *vcpu,
}
#ifdef CONFIG_X86_64
-static void enter_smm_save_seg_64(struct kvm_vcpu *vcpu, char *buf, int n)
+static void enter_smm_save_seg_64(struct kvm_vcpu *vcpu,
+ struct kvm_smm_seg_state_64 *state,
+ int n)
{
struct kvm_segment seg;
- int offset;
- u16 flags;
kvm_get_segment(vcpu, &seg, n);
- offset = 0x7e00 + n * 16;
-
- flags = enter_smm_get_segment_flags(&seg) >> 8;
- put_smstate(u16, buf, offset, seg.selector);
- put_smstate(u16, buf, offset + 2, flags);
- put_smstate(u32, buf, offset + 4, seg.limit);
- put_smstate(u64, buf, offset + 8, seg.base);
+ state->selector = seg.selector;
+ state->attributes = enter_smm_get_segment_flags(&seg) >> 8;
+ state->limit = seg.limit;
+ state->base = seg.base;
}
#endif
@@ -9300,57 +9297,51 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat
}
#ifdef CONFIG_X86_64
-static void enter_smm_save_state_64(struct kvm_vcpu *vcpu, char *buf)
+static void enter_smm_save_state_64(struct kvm_vcpu *vcpu, struct kvm_smram_state_64 *smram)
{
struct desc_ptr dt;
- struct kvm_segment seg;
unsigned long val;
int i;
for (i = 0; i < 16; i++)
- put_smstate(u64, buf, 0x7ff8 - i * 8, kvm_register_read_raw(vcpu, i));
+ smram->gprs[15 - i] = kvm_register_read_raw(vcpu, i);
+
+ smram->rip = kvm_rip_read(vcpu);
+ smram->rflags = kvm_get_rflags(vcpu);
- put_smstate(u64, buf, 0x7f78, kvm_rip_read(vcpu));
- put_smstate(u32, buf, 0x7f70, kvm_get_rflags(vcpu));
kvm_get_dr(vcpu, 6, &val);
- put_smstate(u64, buf, 0x7f68, val);
+ smram->dr6 = val;
kvm_get_dr(vcpu, 7, &val);
- put_smstate(u64, buf, 0x7f60, val);
-
- put_smstate(u64, buf, 0x7f58, kvm_read_cr0(vcpu));
- put_smstate(u64, buf, 0x7f50, kvm_read_cr3(vcpu));
- put_smstate(u64, buf, 0x7f48, kvm_read_cr4(vcpu));
+ smram->dr7 = val;
- put_smstate(u32, buf, 0x7f00, vcpu->arch.smbase);
+ smram->cr0 = kvm_read_cr0(vcpu);
+ smram->cr3 = kvm_read_cr3(vcpu);
+ smram->cr4 = kvm_read_cr4(vcpu);
- /* revision id */
- put_smstate(u32, buf, 0x7efc, 0x00020064);
+ smram->smbase = vcpu->arch.smbase;
+ smram->smm_revison = 0x00020064;
- put_smstate(u64, buf, 0x7ed0, vcpu->arch.efer);
+ smram->efer = vcpu->arch.efer;
- kvm_get_segment(vcpu, &seg, VCPU_SREG_TR);
- put_smstate(u16, buf, 0x7e90, seg.selector);
- put_smstate(u16, buf, 0x7e92, enter_smm_get_segment_flags(&seg) >> 8);
- put_smstate(u32, buf, 0x7e94, seg.limit);
- put_smstate(u64, buf, 0x7e98, seg.base);
+ enter_smm_save_seg_64(vcpu, &smram->tr, VCPU_SREG_TR);
static_call(kvm_x86_get_idt)(vcpu, &dt);
- put_smstate(u32, buf, 0x7e84, dt.size);
- put_smstate(u64, buf, 0x7e88, dt.address);
+ smram->idtr.limit = dt.size;
+ smram->idtr.base = dt.address;
- kvm_get_segment(vcpu, &seg, VCPU_SREG_LDTR);
- put_smstate(u16, buf, 0x7e70, seg.selector);
- put_smstate(u16, buf, 0x7e72, enter_smm_get_segment_flags(&seg) >> 8);
- put_smstate(u32, buf, 0x7e74, seg.limit);
- put_smstate(u64, buf, 0x7e78, seg.base);
+ enter_smm_save_seg_64(vcpu, &smram->ldtr, VCPU_SREG_LDTR);
static_call(kvm_x86_get_gdt)(vcpu, &dt);
- put_smstate(u32, buf, 0x7e64, dt.size);
- put_smstate(u64, buf, 0x7e68, dt.address);
+ smram->gdtr.limit = dt.size;
+ smram->gdtr.base = dt.address;
- for (i = 0; i < 6; i++)
- enter_smm_save_seg_64(vcpu, buf, i);
+ enter_smm_save_seg_64(vcpu, &smram->es, VCPU_SREG_ES);
+ enter_smm_save_seg_64(vcpu, &smram->cs, VCPU_SREG_CS);
+ enter_smm_save_seg_64(vcpu, &smram->ss, VCPU_SREG_SS);
+ enter_smm_save_seg_64(vcpu, &smram->ds, VCPU_SREG_DS);
+ enter_smm_save_seg_64(vcpu, &smram->fs, VCPU_SREG_FS);
+ enter_smm_save_seg_64(vcpu, &smram->gs, VCPU_SREG_GS);
}
#endif
@@ -9364,7 +9355,7 @@ static void enter_smm(struct kvm_vcpu *vcpu)
memset(smram.bytes, 0, sizeof(smram.bytes));
#ifdef CONFIG_X86_64
if (guest_cpuid_has(vcpu, X86_FEATURE_LM))
- enter_smm_save_state_64(vcpu, (char *)&smram);
+ enter_smm_save_state_64(vcpu, &smram.smram64);
else
#endif
enter_smm_save_state_32(vcpu, &smram.smram32);
@@ -1,98 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:09 +0300
Subject: [PATCH] KVM: x86: SVM: use smram structs
This removes the last user of put_smstate/GET_SMSTATE so
remove these functions as well.
Also add a sanity check that we don't attempt to enter the SMM
on non long mode capable guest CPU with a running nested guest.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/include/asm/kvm_host.h | 6 ------
arch/x86/kvm/svm/svm.c | 21 ++++++---------------
2 files changed, 6 insertions(+), 21 deletions(-)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 4b1514a174b0..95d609e67dd0 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1936,12 +1936,6 @@ static inline int kvm_cpu_get_apicid(int mps_cpu)
#endif
}
-#define put_smstate(type, buf, offset, val) \
- *(type *)((buf) + (offset) - 0x7e00) = val
-
-#define GET_SMSTATE(type, buf, offset) \
- (*(type *)((buf) + (offset) - 0x7e00))
-
int kvm_cpu_dirty_log_size(void);
int alloc_all_memslots_rmaps(struct kvm *kvm);
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 76a35d939b9f..ba3861d5114b 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -4334,15 +4334,11 @@ static int svm_enter_smm(struct kvm_vcpu *vcpu, union kvm_smram *smram)
struct kvm_host_map map_save;
int ret;
- char *smstate = (char *)smram;
-
if (!is_guest_mode(vcpu))
return 0;
- /* FED8h - SVM Guest */
- put_smstate(u64, smstate, 0x7ed8, 1);
- /* FEE0h - SVM Guest VMCB Physical Address */
- put_smstate(u64, smstate, 0x7ee0, svm->nested.vmcb12_gpa);
+ smram->smram64.svm_guest_flag = 1;
+ smram->smram64.svm_guest_vmcb_gpa = svm->nested.vmcb12_gpa;
svm->vmcb->save.rax = vcpu->arch.regs[VCPU_REGS_RAX];
svm->vmcb->save.rsp = vcpu->arch.regs[VCPU_REGS_RSP];
@@ -4381,28 +4377,23 @@ static int svm_leave_smm(struct kvm_vcpu *vcpu, const union kvm_smram *smram)
{
struct vcpu_svm *svm = to_svm(vcpu);
struct kvm_host_map map, map_save;
- u64 saved_efer, vmcb12_gpa;
struct vmcb *vmcb12;
int ret;
- const char *smstate = (const char *)smram;
-
if (!guest_cpuid_has(vcpu, X86_FEATURE_LM))
return 0;
/* Non-zero if SMI arrived while vCPU was in guest mode. */
- if (!GET_SMSTATE(u64, smstate, 0x7ed8))
+ if (!smram->smram64.svm_guest_flag)
return 0;
if (!guest_cpuid_has(vcpu, X86_FEATURE_SVM))
return 1;
- saved_efer = GET_SMSTATE(u64, smstate, 0x7ed0);
- if (!(saved_efer & EFER_SVME))
+ if (!(smram->smram64.efer & EFER_SVME))
return 1;
- vmcb12_gpa = GET_SMSTATE(u64, smstate, 0x7ee0);
- if (kvm_vcpu_map(vcpu, gpa_to_gfn(vmcb12_gpa), &map) == -EINVAL)
+ if (kvm_vcpu_map(vcpu, gpa_to_gfn(smram->smram64.svm_guest_vmcb_gpa), &map) == -EINVAL)
return 1;
ret = 1;
@@ -4427,7 +4418,7 @@ static int svm_leave_smm(struct kvm_vcpu *vcpu, const union kvm_smram *smram)
vmcb12 = map.hva;
nested_load_control_from_vmcb12(svm, &vmcb12->control);
- ret = enter_svm_guest_mode(vcpu, vmcb12_gpa, vmcb12, false);
+ ret = enter_svm_guest_mode(vcpu, smram->smram64.svm_guest_vmcb_gpa, vmcb12, false);
if (ret)
goto unmap_save;
@@ -1,40 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:10 +0300
Subject: [PATCH] KVM: x86: SVM: don't save SVM state to SMRAM when VM is not
long mode capable
When the guest CPUID doesn't have support for long mode, 32 bit SMRAM
layout is used and it has no support for preserving EFER and/or SVM
state.
Note that this isn't relevant to running 32 bit guests on VM which is
long mode capable - such VM can still run 32 bit guests in compatibility
mode.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/kvm/svm/svm.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index ba3861d5114b..ebbd2d3b4e53 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -4337,6 +4337,15 @@ static int svm_enter_smm(struct kvm_vcpu *vcpu, union kvm_smram *smram)
if (!is_guest_mode(vcpu))
return 0;
+ /*
+ * 32 bit SMRAM format doesn't preserve EFER and SVM state.
+ * SVM should not be enabled by the userspace without marking
+ * the CPU as at least long mode capable.
+ */
+
+ if (!guest_cpuid_has(vcpu, X86_FEATURE_LM))
+ return 1;
+
smram->smram64.svm_guest_flag = 1;
smram->smram64.svm_guest_vmcb_gpa = svm->nested.vmcb12_gpa;
@@ -1,180 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk@redhat.com>
Date: Wed, 3 Aug 2022 18:50:11 +0300
Subject: [PATCH] KVM: x86: emulator/smm: preserve interrupt shadow in SMRAM
When #SMI is asserted, the CPU can be in interrupt shadow
due to sti or mov ss.
It is not mandatory in Intel/AMD prm to have the #SMI
blocked during the shadow, and on top of
that, since neither SVM nor VMX has true support for SMI
window, waiting for one instruction would mean single stepping
the guest.
Instead, allow #SMI in this case, but both reset the interrupt
window and stash its value in SMRAM to restore it on exit
from SMM.
This fixes rare failures seen mostly on windows guests on VMX,
when #SMI falls on the sti instruction which mainfest in
VM entry failure due to EFLAGS.IF not being set, but STI interrupt
window still being set in the VMCS.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
arch/x86/kvm/emulate.c | 17 ++++++++++++++---
arch/x86/kvm/kvm_emulate.h | 10 ++++++----
arch/x86/kvm/x86.c | 12 ++++++++++++
3 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index eb2f5e43f6ad..7f5710c34f4e 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2419,7 +2419,7 @@ static int rsm_load_state_32(struct x86_emulate_ctxt *ctxt,
const struct kvm_smram_state_32 *smstate)
{
struct desc_ptr dt;
- int i;
+ int i, r;
ctxt->eflags = smstate->eflags | X86_EFLAGS_FIXED;
ctxt->_eip = smstate->eip;
@@ -2454,8 +2454,16 @@ static int rsm_load_state_32(struct x86_emulate_ctxt *ctxt,
ctxt->ops->set_smbase(ctxt, smstate->smbase);
- return rsm_enter_protected_mode(ctxt, smstate->cr0,
- smstate->cr3, smstate->cr4);
+ r = rsm_enter_protected_mode(ctxt, smstate->cr0,
+ smstate->cr3, smstate->cr4);
+
+ if (r != X86EMUL_CONTINUE)
+ return r;
+
+ ctxt->ops->set_int_shadow(ctxt, 0);
+ ctxt->interruptibility = (u8)smstate->int_shadow;
+
+ return X86EMUL_CONTINUE;
}
#ifdef CONFIG_X86_64
@@ -2504,6 +2512,9 @@ static int rsm_load_state_64(struct x86_emulate_ctxt *ctxt,
rsm_load_seg_64(ctxt, &smstate->fs, VCPU_SREG_FS);
rsm_load_seg_64(ctxt, &smstate->gs, VCPU_SREG_GS);
+ ctxt->ops->set_int_shadow(ctxt, 0);
+ ctxt->interruptibility = (u8)smstate->int_shadow;
+
return X86EMUL_CONTINUE;
}
#endif
diff --git a/arch/x86/kvm/kvm_emulate.h b/arch/x86/kvm/kvm_emulate.h
index 3b37b3e17379..a64c190abf28 100644
--- a/arch/x86/kvm/kvm_emulate.h
+++ b/arch/x86/kvm/kvm_emulate.h
@@ -231,6 +231,7 @@ struct x86_emulate_ops {
bool (*guest_has_rdpid)(struct x86_emulate_ctxt *ctxt);
void (*set_nmi_mask)(struct x86_emulate_ctxt *ctxt, bool masked);
+ void (*set_int_shadow)(struct x86_emulate_ctxt *ctxt, u8 shadow);
unsigned (*get_hflags)(struct x86_emulate_ctxt *ctxt);
void (*exiting_smm)(struct x86_emulate_ctxt *ctxt);
@@ -497,7 +498,8 @@ struct kvm_smram_state_32 {
u32 reserved1[62];
u32 smbase;
u32 smm_revision;
- u32 reserved2[5];
+ u32 reserved2[4];
+ u32 int_shadow; /* KVM extension */
u32 cr4; /* CR4 is not present in Intel/AMD SMRAM image */
u32 reserved3[5];
@@ -545,6 +547,7 @@ static inline void __check_smram32_offsets(void)
__CHECK_SMRAM32_OFFSET(smbase, 0xFEF8);
__CHECK_SMRAM32_OFFSET(smm_revision, 0xFEFC);
__CHECK_SMRAM32_OFFSET(reserved2, 0xFF00);
+ __CHECK_SMRAM32_OFFSET(int_shadow, 0xFF10);
__CHECK_SMRAM32_OFFSET(cr4, 0xFF14);
__CHECK_SMRAM32_OFFSET(reserved3, 0xFF18);
__CHECK_SMRAM32_OFFSET(ds, 0xFF2C);
@@ -604,7 +607,7 @@ struct kvm_smram_state_64 {
u64 io_restart_rsi;
u64 io_restart_rdi;
u32 io_restart_dword;
- u32 reserved1;
+ u32 int_shadow;
u8 io_inst_restart;
u8 auto_hlt_restart;
u8 reserved2[6];
@@ -642,7 +645,6 @@ struct kvm_smram_state_64 {
u64 gprs[16]; /* GPRS in a reversed "natural" X86 order (R15/R14/../RCX/RAX.) */
};
-
static inline void __check_smram64_offsets(void)
{
#define __CHECK_SMRAM64_OFFSET(field, offset) \
@@ -663,7 +665,7 @@ static inline void __check_smram64_offsets(void)
__CHECK_SMRAM64_OFFSET(io_restart_rsi, 0xFEB0);
__CHECK_SMRAM64_OFFSET(io_restart_rdi, 0xFEB8);
__CHECK_SMRAM64_OFFSET(io_restart_dword, 0xFEC0);
- __CHECK_SMRAM64_OFFSET(reserved1, 0xFEC4);
+ __CHECK_SMRAM64_OFFSET(int_shadow, 0xFEC4);
__CHECK_SMRAM64_OFFSET(io_inst_restart, 0xFEC8);
__CHECK_SMRAM64_OFFSET(auto_hlt_restart, 0xFEC9);
__CHECK_SMRAM64_OFFSET(reserved2, 0xFECA);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index f309248fa888..4ea0e8112c42 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -7476,6 +7476,11 @@ static void emulator_set_nmi_mask(struct x86_emulate_ctxt *ctxt, bool masked)
static_call(kvm_x86_set_nmi_mask)(emul_to_vcpu(ctxt), masked);
}
+static void emulator_set_int_shadow(struct x86_emulate_ctxt *ctxt, u8 shadow)
+{
+ static_call(kvm_x86_set_interrupt_shadow)(emul_to_vcpu(ctxt), shadow);
+}
+
static unsigned emulator_get_hflags(struct x86_emulate_ctxt *ctxt)
{
return emul_to_vcpu(ctxt)->arch.hflags;
@@ -7545,6 +7550,7 @@ static const struct x86_emulate_ops emulate_ops = {
.guest_has_fxsr = emulator_guest_has_fxsr,
.guest_has_rdpid = emulator_guest_has_rdpid,
.set_nmi_mask = emulator_set_nmi_mask,
+ .set_int_shadow = emulator_set_int_shadow,
.get_hflags = emulator_get_hflags,
.exiting_smm = emulator_exiting_smm,
.leave_smm = emulator_leave_smm,
@@ -9294,6 +9300,8 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat
smram->cr4 = kvm_read_cr4(vcpu);
smram->smm_revision = 0x00020000;
smram->smbase = vcpu->arch.smbase;
+
+ smram->int_shadow = static_call(kvm_x86_get_interrupt_shadow)(vcpu);
}
#ifdef CONFIG_X86_64
@@ -9342,6 +9350,8 @@ static void enter_smm_save_state_64(struct kvm_vcpu *vcpu, struct kvm_smram_stat
enter_smm_save_seg_64(vcpu, &smram->ds, VCPU_SREG_DS);
enter_smm_save_seg_64(vcpu, &smram->fs, VCPU_SREG_FS);
enter_smm_save_seg_64(vcpu, &smram->gs, VCPU_SREG_GS);
+
+ smram->int_shadow = static_call(kvm_x86_get_interrupt_shadow)(vcpu);
}
#endif
@@ -9378,6 +9388,8 @@ static void enter_smm(struct kvm_vcpu *vcpu)
kvm_set_rflags(vcpu, X86_EFLAGS_FIXED);
kvm_rip_write(vcpu, 0x8000);
+ static_call(kvm_x86_set_interrupt_shadow)(vcpu, 0);
+
cr0 = vcpu->arch.cr0 & ~(X86_CR0_PE | X86_CR0_EM | X86_CR0_TS | X86_CR0_PG);
static_call(kvm_x86_set_cr0)(vcpu, cr0);
vcpu->arch.cr0 = cr0;