Linux 6.6.26
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.26 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/hw-vuln/spectre.rst | 48 - Documentation/admin-guide/kernel-parameters.txt | 12 Makefile | 2 arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 2 arch/arm64/kernel/ptrace.c | 5 arch/arm64/kvm/hyp/pgtable.c | 11 arch/arm64/net/bpf_jit_comp.c | 4 arch/powerpc/mm/book3s64/pgtable.c | 2 arch/riscv/include/asm/uaccess.h | 4 arch/riscv/include/uapi/asm/auxvec.h | 2 arch/riscv/kernel/patch.c | 8 arch/riscv/kernel/process.c | 3 arch/riscv/kvm/aia_aplic.c | 37 arch/s390/boot/vmem.c | 2 arch/s390/include/asm/pgtable.h | 4 arch/s390/kernel/entry.S | 1 arch/s390/mm/gmap.c | 2 arch/s390/mm/hugetlbpage.c | 4 arch/s390/mm/pageattr.c | 2 arch/s390/mm/pgtable.c | 2 arch/s390/mm/vmem.c | 6 arch/s390/net/bpf_jit_comp.c | 46 - arch/sparc/mm/init_64.c | 2 arch/x86/Kconfig | 25 arch/x86/boot/compressed/Makefile | 2 arch/x86/boot/compressed/misc.c | 16 arch/x86/boot/compressed/sev.c | 3 arch/x86/coco/core.c | 41 arch/x86/entry/common.c | 10 arch/x86/entry/entry_64.S | 61 + arch/x86/entry/entry_64_compat.S | 16 arch/x86/entry/syscall_32.c | 21 arch/x86/entry/syscall_64.c | 19 arch/x86/entry/syscall_x32.c | 10 arch/x86/events/amd/core.c | 24 arch/x86/events/amd/lbr.c | 16 arch/x86/events/intel/ds.c | 8 arch/x86/include/asm/asm-prototypes.h | 1 arch/x86/include/asm/boot.h | 1 arch/x86/include/asm/coco.h | 2 arch/x86/include/asm/cpufeature.h | 8 arch/x86/include/asm/cpufeatures.h | 21 arch/x86/include/asm/disabled-features.h | 3 arch/x86/include/asm/init.h | 2 arch/x86/include/asm/mem_encrypt.h | 8 arch/x86/include/asm/msr-index.h | 9 arch/x86/include/asm/nospec-branch.h | 88 +- arch/x86/include/asm/required-features.h | 3 arch/x86/include/asm/sev.h | 10 arch/x86/include/asm/syscall.h | 11 arch/x86/include/uapi/asm/bootparam.h | 1 arch/x86/kernel/cpu/amd.c | 129 ++- arch/x86/kernel/cpu/bugs.c | 126 ++ arch/x86/kernel/cpu/common.c | 24 arch/x86/kernel/cpu/mce/core.c | 4 arch/x86/kernel/cpu/scattered.c | 2 arch/x86/kernel/head64.c | 3 arch/x86/kernel/mpparse.c | 10 arch/x86/kernel/setup.c | 2 arch/x86/kernel/sev-shared.c | 23 arch/x86/kernel/sev.c | 14 arch/x86/kernel/vmlinux.lds.S | 7 arch/x86/kvm/mmu/mmu.c | 2 arch/x86/kvm/reverse_cpuid.h | 5 arch/x86/kvm/svm/sev.c | 45 - arch/x86/kvm/trace.h | 10 arch/x86/kvm/vmx/vmenter.S | 2 arch/x86/kvm/x86.c | 2 arch/x86/lib/Makefile | 13 arch/x86/lib/retpoline.S | 165 ++- arch/x86/mm/fault.c | 4 arch/x86/mm/ident_map.c | 23 arch/x86/mm/init_64.c | 4 arch/x86/mm/kasan_init_64.c | 2 arch/x86/mm/mem_encrypt_identity.c | 76 - arch/x86/mm/pat/memtype.c | 49 - arch/x86/mm/pat/set_memory.c | 6 arch/x86/mm/pgtable.c | 2 arch/x86/mm/pti.c | 2 arch/x86/net/bpf_jit_comp.c | 2 arch/x86/power/hibernate.c | 2 arch/x86/xen/mmu_pv.c | 4 drivers/acpi/acpica/dbnames.c | 8 drivers/ata/sata_mv.c | 63 - drivers/ata/sata_sx4.c | 6 drivers/base/core.c | 26 drivers/base/regmap/regcache-maple.c | 6 drivers/bluetooth/btqca.c | 8 drivers/bluetooth/hci_qca.c | 19 drivers/dma-buf/st-dma-fence-chain.c | 6 drivers/firmware/efi/libstub/efi-stub-helper.c | 8 drivers/firmware/efi/libstub/efistub.h | 2 drivers/firmware/efi/libstub/x86-stub.c | 14 drivers/gpio/gpiolib-cdev.c | 58 + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 43 - drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 10 drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 3 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 11 drivers/gpu/drm/amd/include/amd_shared.h | 1 drivers/gpu/drm/drm_prime.c | 7 drivers/gpu/drm/i915/Makefile | 1 drivers/gpu/drm/i915/display/intel_cursor.c | 6 drivers/gpu/drm/i915/display/intel_display_types.h | 1 drivers/gpu/drm/i915/display/intel_fb_pin.c | 10 drivers/gpu/drm/i915/display/skl_universal_plane.c | 5 drivers/gpu/drm/i915/gem/i915_gem_create.c | 4 drivers/gpu/drm/i915/gt/gen8_engine_cs.c | 10 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 21 drivers/gpu/drm/i915/gt/intel_engine_pm.c | 2 drivers/gpu/drm/i915/gt/intel_execlists_submission.c | 4 drivers/gpu/drm/i915/gt/intel_gt.h | 31 drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.c | 39 drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.h | 13 drivers/gpu/drm/i915/gt/intel_gt_mcr.c | 7 drivers/gpu/drm/i915/gt/intel_gt_regs.h | 6 drivers/gpu/drm/i915/gt/intel_lrc.c | 38 drivers/gpu/drm/i915/gt/intel_mocs.c | 23 drivers/gpu/drm/i915/gt/intel_rc6.c | 6 drivers/gpu/drm/i915/gt/intel_reset.c | 20 drivers/gpu/drm/i915/gt/intel_reset.h | 2 drivers/gpu/drm/i915/gt/intel_rps.c | 2 drivers/gpu/drm/i915/gt/intel_workarounds.c | 422 +++------- drivers/gpu/drm/i915/gt/uc/intel_guc.c | 26 drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 6 drivers/gpu/drm/i915/i915_debugfs.c | 2 drivers/gpu/drm/i915/i915_drv.h | 4 drivers/gpu/drm/i915/i915_perf.c | 11 drivers/gpu/drm/i915/intel_clock_gating.c | 8 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 6 drivers/gpu/drm/panfrost/panfrost_gpu.c | 6 drivers/md/dm-integrity.c | 2 drivers/net/dsa/mv88e6xxx/chip.c | 6 drivers/net/dsa/sja1105/sja1105_mdio.c | 2 drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c | 28 drivers/net/ethernet/freescale/fec_main.c | 11 drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_tqp_stats.c | 2 drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 19 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 4 drivers/net/ethernet/intel/e1000/e1000_hw.c | 46 - drivers/net/ethernet/intel/e1000e/80003es2lan.c | 3 drivers/net/ethernet/intel/e1000e/82571.c | 3 drivers/net/ethernet/intel/e1000e/ethtool.c | 7 drivers/net/ethernet/intel/e1000e/hw.h | 2 drivers/net/ethernet/intel/e1000e/ich8lan.c | 56 - drivers/net/ethernet/intel/e1000e/mac.c | 2 drivers/net/ethernet/intel/e1000e/netdev.c | 35 drivers/net/ethernet/intel/e1000e/phy.c | 191 ++-- drivers/net/ethernet/intel/e1000e/phy.h | 2 drivers/net/ethernet/intel/fm10k/fm10k_pf.c | 4 drivers/net/ethernet/intel/fm10k/fm10k_vf.c | 10 drivers/net/ethernet/intel/i40e/i40e.h | 59 - drivers/net/ethernet/intel/i40e/i40e_adminq.c | 8 drivers/net/ethernet/intel/i40e/i40e_adminq.h | 3 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | 2 drivers/net/ethernet/intel/i40e/i40e_alloc.h | 24 drivers/net/ethernet/intel/i40e/i40e_client.c | 1 drivers/net/ethernet/intel/i40e/i40e_common.c | 12 drivers/net/ethernet/intel/i40e/i40e_dcb.c | 4 drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c | 2 drivers/net/ethernet/intel/i40e/i40e_ddp.c | 2 drivers/net/ethernet/intel/i40e/i40e_debug.h | 47 + drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 3 drivers/net/ethernet/intel/i40e/i40e_diag.h | 5 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 3 drivers/net/ethernet/intel/i40e/i40e_hmc.c | 16 drivers/net/ethernet/intel/i40e/i40e_hmc.h | 4 drivers/net/ethernet/intel/i40e/i40e_io.h | 16 drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c | 9 drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h | 2 drivers/net/ethernet/intel/i40e/i40e_main.c | 70 + drivers/net/ethernet/intel/i40e/i40e_nvm.c | 3 drivers/net/ethernet/intel/i40e/i40e_osdep.h | 59 - drivers/net/ethernet/intel/i40e/i40e_prototype.h | 4 drivers/net/ethernet/intel/i40e/i40e_ptp.c | 9 drivers/net/ethernet/intel/i40e/i40e_register.h | 5 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 89 +- drivers/net/ethernet/intel/i40e/i40e_txrx.h | 6 drivers/net/ethernet/intel/i40e/i40e_txrx_common.h | 2 drivers/net/ethernet/intel/i40e/i40e_type.h | 56 - drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 47 - drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | 4 drivers/net/ethernet/intel/i40e/i40e_xsk.c | 4 drivers/net/ethernet/intel/i40e/i40e_xsk.h | 4 drivers/net/ethernet/intel/iavf/iavf_common.c | 3 drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 5 drivers/net/ethernet/intel/iavf/iavf_fdir.c | 1 drivers/net/ethernet/intel/iavf/iavf_txrx.c | 1 drivers/net/ethernet/intel/ice/ice_adminq_cmd.h | 3 drivers/net/ethernet/intel/ice/ice_lag.c | 4 drivers/net/ethernet/intel/ice/ice_lib.c | 74 + drivers/net/ethernet/intel/ice/ice_switch.c | 24 drivers/net/ethernet/intel/ice/ice_switch.h | 4 drivers/net/ethernet/intel/ice/ice_vf_vsi_vlan_ops.c | 18 drivers/net/ethernet/intel/igb/e1000_82575.c | 29 drivers/net/ethernet/intel/igb/e1000_i210.c | 19 drivers/net/ethernet/intel/igb/e1000_mac.c | 2 drivers/net/ethernet/intel/igb/e1000_nvm.c | 18 drivers/net/ethernet/intel/igb/e1000_phy.c | 13 drivers/net/ethernet/intel/igb/igb_ethtool.c | 8 drivers/net/ethernet/intel/igb/igb_main.c | 4 drivers/net/ethernet/intel/igbvf/mbx.c | 1 drivers/net/ethernet/intel/igbvf/netdev.c | 33 drivers/net/ethernet/intel/igc/igc_i225.c | 1 drivers/net/ethernet/intel/igc/igc_main.c | 4 drivers/net/ethernet/intel/igc/igc_phy.c | 1 drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 30 drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 16 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 8 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 8 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 8 drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 19 drivers/net/ethernet/marvell/octeontx2/af/cgx.c | 5 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c | 2 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c | 2 drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 2 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c | 31 drivers/net/ethernet/microchip/lan743x_main.c | 18 drivers/net/ethernet/microchip/lan743x_main.h | 4 drivers/net/ethernet/microsoft/mana/mana_en.c | 2 drivers/net/ethernet/realtek/r8169_main.c | 40 drivers/net/ethernet/renesas/ravb_main.c | 33 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 40 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 38 drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c | 8 drivers/net/phy/micrel.c | 31 drivers/net/usb/ax88179_178a.c | 2 drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 2 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 4 drivers/net/wireless/intel/iwlwifi/mvm/rfi.c | 8 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 31 drivers/net/wwan/t7xx/t7xx_cldma.c | 4 drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 9 drivers/net/wwan/t7xx/t7xx_pcie_mac.c | 8 drivers/net/xen-netfront.c | 1 drivers/of/dynamic.c | 12 drivers/of/module.c | 8 drivers/perf/riscv_pmu.c | 4 drivers/s390/net/qeth_core_main.c | 38 drivers/scsi/myrb.c | 20 drivers/scsi/myrs.c | 24 drivers/scsi/sd.c | 2 drivers/spi/spi-pci1xxxx.c | 2 drivers/spi/spi-s3c64xx.c | 80 + drivers/usb/typec/ucsi/ucsi_glink.c | 14 fs/btrfs/extent_io.c | 208 +++- fs/btrfs/inode.c | 22 fs/nfsd/nfs4state.c | 7 fs/pipe.c | 17 fs/smb/client/cached_dir.c | 6 fs/smb/client/cifs_debug.c | 6 fs/smb/client/cifsfs.c | 11 fs/smb/client/cifsglob.h | 17 fs/smb/client/connect.c | 45 + fs/smb/client/dir.c | 15 fs/smb/client/file.c | 111 ++ fs/smb/client/fs_context.c | 6 fs/smb/client/fs_context.h | 12 fs/smb/client/fscache.c | 16 fs/smb/client/fscache.h | 6 fs/smb/client/inode.c | 2 fs/smb/client/ioctl.c | 6 fs/smb/client/misc.c | 2 fs/smb/client/smb1ops.c | 4 fs/smb/client/smb2misc.c | 4 fs/smb/client/smb2ops.c | 11 fs/smb/client/smb2pdu.c | 2 fs/smb/server/ksmbd_netlink.h | 3 fs/smb/server/mgmt/share_config.c | 7 fs/smb/server/smb2ops.c | 10 fs/smb/server/smb2pdu.c | 3 fs/smb/server/transport_ipc.c | 37 fs/vboxsf/super.c | 3 include/kvm/arm_pmu.h | 2 include/linux/avf/virtchnl.h | 5 include/linux/bpf.h | 16 include/linux/device.h | 1 include/linux/io_uring_types.h | 1 include/linux/secretmem.h | 4 include/linux/skbuff.h | 7 include/linux/udp.h | 28 include/net/bluetooth/hci.h | 9 include/net/inet_connection_sock.h | 1 include/net/mana/mana.h | 1 include/net/sock.h | 7 io_uring/io_uring.c | 18 io_uring/kbuf.c | 118 -- io_uring/kbuf.h | 8 kernel/bpf/syscall.c | 35 kernel/bpf/verifier.c | 5 kernel/trace/bpf_trace.c | 10 mm/memory.c | 4 net/9p/client.c | 10 net/ax25/ax25_dev.c | 2 net/bluetooth/hci_debugfs.c | 48 - net/bluetooth/hci_event.c | 25 net/bluetooth/hci_sync.c | 5 net/bridge/netfilter/ebtables.c | 6 net/core/gro.c | 3 net/core/sock_map.c | 6 net/hsr/hsr_slave.c | 3 net/ipv4/inet_connection_sock.c | 33 net/ipv4/inet_fragment.c | 70 + net/ipv4/ip_fragment.c | 2 net/ipv4/ip_gre.c | 5 net/ipv4/netfilter/arp_tables.c | 4 net/ipv4/netfilter/ip_tables.c | 4 net/ipv4/tcp.c | 2 net/ipv4/udp.c | 7 net/ipv4/udp_offload.c | 23 net/ipv6/ip6_fib.c | 14 net/ipv6/ip6_gre.c | 3 net/ipv6/netfilter/ip6_tables.c | 4 net/ipv6/netfilter/nf_conntrack_reasm.c | 2 net/ipv6/udp.c | 2 net/ipv6/udp_offload.c | 8 net/mptcp/protocol.c | 106 -- net/mptcp/subflow.c | 2 net/netfilter/nf_tables_api.c | 92 +- net/nfc/nci/core.c | 5 net/rds/rdma.c | 2 net/sched/act_skbmod.c | 10 net/sched/sch_api.c | 2 net/sunrpc/svcsock.c | 10 net/tls/tls_sw.c | 7 net/vmw_vsock/virtio_transport.c | 3 scripts/bpf_doc.py | 4 scripts/mod/Makefile | 4 scripts/mod/modpost.c | 73 - scripts/mod/modpost.h | 25 scripts/mod/symsearch.c | 199 ++++ security/selinux/selinuxfs.c | 12 sound/pci/emu10k1/emu10k1_callback.c | 7 sound/pci/hda/cs35l56_hda.c | 4 sound/pci/hda/cs35l56_hda_i2c.c | 13 sound/pci/hda/cs35l56_hda_spi.c | 13 sound/pci/hda/patch_realtek.c | 3 sound/soc/amd/acp/acp-pci.c | 5 sound/soc/codecs/rt5682-sdw.c | 4 sound/soc/codecs/rt711-sdca-sdw.c | 4 sound/soc/codecs/rt711-sdw.c | 4 sound/soc/codecs/rt712-sdca-sdw.c | 5 sound/soc/codecs/rt722-sdca-sdw.c | 4 sound/soc/codecs/wm_adsp.c | 3 sound/soc/soc-ops.c | 2 sound/soc/sof/amd/acp.c | 8 tools/arch/x86/include/asm/cpufeatures.h | 2 tools/net/ynl/ynl-gen-c.py | 7 tools/testing/selftests/mm/vm_util.h | 2 tools/testing/selftests/net/mptcp/mptcp_connect.sh | 85 +- tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 tools/testing/selftests/net/reuseaddr_conflict.c | 2 tools/testing/selftests/net/test_vxlan_mdb.sh | 205 +++- tools/testing/selftests/net/udpgro_fwd.sh | 10 355 files changed, 4153 insertions(+), 2335 deletions(-)
Aleksandr Loktionov (2):
i40e: fix i40e_count_filters() to count only active/new filters
i40e: fix vf may be used uninitialized in this function warning
Aleksandr Mishin (2):
net: phy: micrel: Fix potential null pointer dereference
octeontx2-af: Add array index check
Alexandra Winter (1):
s390/qeth: handle deferred cc1
Alexandre Ghiti (1):
riscv: Disable preemption when using patch_map()
Andi Shyti (3):
drm/i915/gt: Disable HW load balancing for CCS drm/i915/gt: Do not generate the command streamer for all the CCS drm/i915/gt: Enable only one CCS for compute workload
Andrei Matei (1):
bpf: Protect against int overflow for stack access size
Andrii Nakryiko (2):
bpf: put uprobe link's path and task in release callback
bpf: support deferring bpf_link dealloc to after RCU grace period
Antoine Tenart (5):
selftests: net: gro fwd: update vxlan GRO test expectations
gro: fix ownership transfer
udp: do not accept non-tunnel GSO skbs landing in a tunnel
udp: do not transition UDP GRO fraglist partial checksums to unnecessary
udp: prevent local UDP tunnel packets from being GROed
Anup Patel (2):
RISC-V: KVM: Fix APLIC setipnum_le/be write emulation
RISC-V: KVM: Fix APLIC in_clrip[x] read emulation
Ard Biesheuvel (5):
efi/libstub: Add generic support for parsing mem_encrypt= x86/sme: Move early SME kernel encryption handling into .head.text x86/sev: Move early startup code into .head.text section x86/efistub: Remap kernel text read-only before dropping NX attribute x86/boot: Move mem_encrypt= parsing to the decompressor
Arnd Bergmann (4):
dm integrity: fix out-of-range warning
ata: sata_sx4: fix pdc20621_get_from_dimm() on 64-bit
scsi: mylex: Fix sysfs buffer lengths
ata: sata_mv: Fix PCI device ID table declaration compilation warning
Artem Savkov (1):
arm64: bpf: fix 32bit unconditional bswap
Ashish Kalra (1):
KVM: SVM: Add support for allowing zero SEV ASIDs
Atlas Yu (1):
r8169: skip DASH fw status checks when DASH is disabled
Bartosz Golaszewski (2):
gpio: cdev: sanitize the label before requesting the interrupt
gpio: cdev: check for NULL labels when sanitizing them for irqs
Bastien Nocera (1):
Bluetooth: Fix TOCTOU in HCI debugfs implementation
Benjamin Berg (1):
wifi: iwlwifi: mvm: include link ID when releasing frames
Bjørn Mork (1):
net: wwan: t7xx: Split 64bit accesses to fix alignment issues
Borislav Petkov (AMD) (11):
x86/CPU/AMD: Add ZenX generations flags
x86/CPU/AMD: Carve out the erratum 1386 fix
x86/CPU/AMD: Move erratum 1076 fix into the Zen1 init function x86/CPU/AMD: Move Zenbleed check to the Zen2 init function x86/CPU/AMD: Move the DIV0 bug detection to the Zen1 init function x86/CPU/AMD: Get rid of amd_erratum_1054[]
x86/CPU/AMD: Add X86_FEATURE_ZEN1
x86/bugs: Fix the SRSO mitigation on Zen3/4
x86/retpoline: Do the necessary fixup to the Zen3/4 srso return thunk for !SRSO x86/retpoline: Add NOENDBR annotation to the SRSO dummy return thunk x86/mce: Make sure to grab mce_sysfs_mutex in set_bank()
Chris Park (1):
drm/amd/display: Prevent crash when disable stream
Christian Göttsche (1):
selinux: avoid dereference of garbage after mount failure
Christian Hewitt (1):
drm/panfrost: fix power transition timeout warnings
Christoffer Sandberg (1):
ALSA: hda/realtek - Fix inactive headset mic jack
Christophe JAILLET (2):
vboxsf: Avoid an spurious warning if load_nls_xxx() fails
net: dsa: sja1105: Fix parameters order in sja1110_pcs_mdio_write_c45()
Chuck Lever (1):
SUNRPC: Fix a slow server-side memory leak with RPC-over-TCP
Claudiu Beznea (1):
net: ravb: Let IP-specific receive function to interrogate descriptors
Daniel Sneddon (2):
x86/bhi: Define SPEC_CTRL_BHI_DIS_S
KVM: x86: Add BHI_NO
Dave Airlie (1):
nouveau/uvmm: fix addr/range calcs for remap operations
David Hildenbrand (2):
x86/mm/pat: fix VM_PAT handling in COW mappings mm/secretmem: fix GUP-fast succeeding on secretmem folios
David Howells (2):
cifs: Fix duplicate fscache cookie warnings
cifs: Fix caching to try to do open O_WRONLY as rdwr on server
David Thompson (3):
mlxbf_gige: stop PHY during open() error paths
mlxbf_gige: call request_irq() after NAPI initialized
mlxbf_gige: stop interface during shutdown
Davide Caratti (2):
mptcp: don't overwrite sock_ops in mptcp_is_tcpsk()
mptcp: don't account accept() of non-MPC client as fallback to TCP
Dmytro Laktyushkin (1):
drm/amd/display: Fix DPSTREAM CLK on and off sequence
Dominique Martinet (1):
9p: Fix read/write debug statements to report server reply
Duanqiang Wen (1):
net: txgbe: fix i2c dev name cannot match clkdev
Duoming Zhou (1):
ax25: fix use-after-free bugs caused by ax25_ds_del_timer
Edward Liaw (1):
selftests/mm: include strings.h for ffsl
Emmanuel Grumbach (1):
wifi: iwlwifi: disable multi rx queue for 9000
Eric Dumazet (5):
tcp: properly terminate timers for kernel sockets
netfilter: validate user input for expected length net/sched: act_skbmod: prevent kernel-infoleak net/sched: fix lockdep splat in qdisc_tree_reduce_backlog()
erspan: make sure erspan_base_hdr is present in skb->head
Filipe Manana (2):
btrfs: ensure fiemap doesn't race with writes when FIEMAP_FLAG_SYNC is given
btrfs: fix race when detecting delalloc ranges during fiemap
Florian Westphal (1):
inet: inet_defrag: prevent sk release while still in use
Geliang Tang (1):
selftests: mptcp: join: fix dev in check_endpoint
Greg Kroah-Hartman (3):
Revert "x86/mpparse: Register APIC address only once"
x86: set SPECTRE_BHI_ON as default
Linux 6.6.26
Haiyang Zhang (1):
net: mana: Fix Rx DMA datasize and skb_over_panic
Hangbin Liu (1):
scripts/bpf_doc: Use silent mode when exec make cmd
Hariprasad Kelam (2):
Octeontx2-af: fix pause frame configuration in GMP mode
octeontx2-af: Fix issue with loading coalesced KPU profiles
Heiner Kallweit (1):
r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d
Herve Codina (2):
driver core: Introduce device_link_wait_removal()
of: dynamic: Synchronize of_changeset_destroy() with the devlink removals
Horatiu Vultur (1):
net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping
Hou Wenlong (1):
x86/head/64: Move the __head definition to <asm/init.h>
Huai-Yuan Liu (1):
spi: mchp-pci1xxx: Fix a possible null pointer dereference in pci1xxx_spi_probe
Hui Wang (1):
Bluetooth: hci_event: set the conn encrypted before conn establishes
I Gede Agastya Darma Laksana (1):
ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with microphone
Ido Schimmel (1):
selftests: vxlan_mdb: Fix failures with old libnet
Ilya Leoshkevich (1):
s390/bpf: Fix bpf_plt pointer arithmetic
Ingo Molnar (1):
Revert "x86/mm/ident_map: Use gbpages only where full GB page should be mapped."
Ivan Vecera (10):
i40e: Fix VF MAC filter removal
i40e: Remove _t suffix from enum type names
i40e: Enforce software interrupt during busy-poll exit
i40e: Remove back pointer from i40e_hw structure
i40e: Refactor I40E_MDIO_CLAUSE* macros
virtchnl: Add header dependencies
i40e: Simplify memory allocation functions
i40e: Move memory allocation structures to i40e_alloc.h
i40e: Split i40e_osdep.h
i40e: Remove circular header dependencies and fix headers
Jack Brennen (1):
modpost: Optimize symbol search from linear to binary search
Jaewon Kim (1):
spi: s3c64xx: Use DMA mode from fifo size
Jakub Kicinski (2):
tools: ynl: fix setting presence bits in simple nests
selftests: reuseaddr_conflict: add missing new line at the end of the output
Jakub Sitnicki (1):
bpf, sockmap: Prevent lock inversion deadlock in map delete elem
Jann Horn (1):
fs/pipe: Fix lockdep false-positive in watchqueue pipe_write()
Jason A. Donenfeld (1):
x86/coco: Require seeding RNG with RDRAND on CoCo systems
Jeff Layton (1):
nfsd: hold a lighter-weight client reference over CB_RECALL_ANY
Jens Axboe (5):
io_uring/kbuf: get rid of lower BGID lists io_uring/kbuf: get rid of bl->is_ready io_uring/kbuf: protect io_buffer_list teardown with a reference
io_uring: use private workqueue for exit work io_uring/kbuf: hold io_buffer_list reference over mmap
Jesper Dangaard Brouer (1):
xen-netfront: Add missing skb_mark_for_recycle
Jesse Brandeburg (4):
ice: fix memory corruption bug with suspend and rebuild
intel: add bit macro includes where needed
intel: legacy: field get conversion
ice: fix typo in assignment
Jian Shen (1):
net: hns3: mark unexcuted loopback test result as UNEXECUTED
Jie Wang (1):
net: hns3: fix index limit to support all queue stats
Johan Hovold (4):
Revert "Bluetooth: hci_qca: Set BDA quirk bit if fwnode exists in DT"
arm64: dts: qcom: sc7180-trogdor: mark bluetooth address as broken
Bluetooth: qca: fix device-address endianness
Bluetooth: add quirk for broken address properties
Johannes Berg (1):
wifi: iwlwifi: mvm: rfi: fix potential response leaks
Jose Ignacio Tornos Martinez (1):
net: usb: ax88179_178a: avoid the interface always configured as random address
Josh Poimboeuf (4):
x86/srso: Improve i-cache locality for alias mitigation x86/srso: Disentangle rethunk-dependent options x86/nospec: Refactor UNTRAIN_RET[_*]
x86/bugs: Change commas to semicolons in 'spectre_v2' sysfs file
Justin Chen (1):
net: bcmasp: Bring up unimac after PHY link up
Kan Liang (1):
perf/x86/intel/ds: Don't clear ->pebs_data_cfg for the last PEBS event
Kent Gibson (1):
gpio: cdev: fix missed label sanitizing in debounce_setup()
Krishna Kurapati (1):
usb: typec: ucsi: Fix race between typec_switch and role_switch
Kuniyuki Iwashima (2):
tcp: Fix bind() regression for v6-only wildcard and v4(-mapped-v6) non-wildcard addresses.
ipv6: Fix infinite recursion in fib6_dump_done().
Kurt Kanzenbach (1):
igc: Remove stale comment about Tx timestamping
Li Nan (1):
scsi: sd: Unregister device if device_add_disk() failed in sd_probe()
Linus Torvalds (1):
x86/syscall: Don't force use of indirect calls for system calls
Maarten Lankhorst (1):
drm/i915/display: Use i915_gem_object_get_dma_address to get dma address
Mahmoud Adam (1):
net/rds: fix possible cp null dereference
Marco Pinna (1):
vsock/virtio: fix packet delivery to tap device
Mario Limonciello (3):
drm/amd: Evict resources during PM ops prepare() callback drm/amd: Add concept of running prepare_suspend() sequence for IP blocks drm/amd: Flush GFXOFF requests in prepare stage
Mark Brown (1):
arm64/ptrace: Use saved floating point state type to determine SVE layout
Masahiro Yamada (1):
modpost: do not make find_tosym() return NULL
Matt Roper (7):
drm/i915/dg2: Drop pre-production GT workarounds drm/i915: Tidy workaround definitions
drm/i915: Consolidate condition for Wa_22011802037 drm/i915/xelpg: Call Xe_LPG workaround functions based on IP version drm/i915: Eliminate IS_MTL_GRAPHICS_STEP
drm/i915: Replace several IS_METEORLAKE with proper IP version checks drm/i915/xelpg: Extend some workarounds/tuning to gfx version 12.74
Matthieu Baerts (NGI0) (1):
selftests: mptcp: connect: fix shellcheck warnings
Michael Krummsdorf (1):
net: dsa: mv88e6xxx: fix usable ports on 88e6020
Michal Swiatkowski (1):
ice: realloc VSI stats arrays
Namjae Jeon (3):
ksmbd: don't send oplock break if rename fails
ksmbd: validate payload size in ipc response
ksmbd: do not set SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1
Nikita Kiryushin (1):
ACPICA: debugger: check status of acpi_evaluate_object() in acpi_db_walk_for_fields()
Oliver Upton (1):
KVM: arm64: Fix host-programmed guest events in nVHE
Oswald Buddenhagen (1):
Revert "ALSA: emu10k1: fix synthesizer sample playback position and caching"
Pablo Neira Ayuso (8):
netfilter: nf_tables: reject destroy command to remove basechain hooks
netfilter: nf_tables: reject table flag and netdev basechain updates
netfilter: nf_tables: skip netdev hook unregistration if table is dormant
netfilter: nf_tables: release batch on table validation from abort path
netfilter: nf_tables: release mutex after nft_gc_seq_end from abort path
netfilter: nf_tables: reject new basechain after table flag update
netfilter: nf_tables: flush pending destroy work before exit_net release
netfilter: nf_tables: discard table flag update with pending basechain deletion
Paul Barker (2):
net: ravb: Always process TX descriptor ring
net: ravb: Always update error counters
Paulo Alcantara (11):
smb: client: handle DFS tcons in cifs_construct_tcon()
smb: client: serialise cifs_construct_tcon() with cifs_mount_mutex
smb: client: fix potential UAF in cifs_debug_files_proc_show()
smb: client: fix potential UAF in cifs_stats_proc_write()
smb: client: fix potential UAF in cifs_stats_proc_show()
smb: client: fix potential UAF in cifs_dump_full_key()
smb: client: fix potential UAF in smb2_is_valid_oplock_break()
smb: client: fix potential UAF in smb2_is_valid_lease_break()
smb: client: fix potential UAF in is_valid_oplock_break()
smb: client: fix potential UAF in smb2_is_network_name_deleted()
smb: client: fix potential UAF in cifs_signal_cifsd_for_reconnect()
Pavel Sakharov (1):
dma-buf: Fix NULL pointer dereference in sanitycheck()
Pawan Gupta (4):
x86/bhi: Add support for clearing branch history at syscall entry x86/bhi: Enumerate Branch History Injection (BHI) bug x86/bhi: Add BHI mitigation knob
x86/bhi: Mitigate KVM by default
Peter Xu (1):
mm/treewide: replace pud_large() with pud_leaf()
Petr Oros (1):
ice: fix enabling RX VLAN filtering
Pierre-Louis Bossart (5):
ASoC: rt5682-sdw: fix locking sequence
ASoC: rt711-sdca: fix locking sequence
ASoC: rt711-sdw: fix locking sequence
ASoC: rt712-sdca-sdw: fix locking sequence
ASoC: rt722-sdca-sdw: fix locking sequence
Piotr Wejman (1):
net: stmmac: fix rx queue priority assignment
Przemek Kitszel (1):
ixgbe: avoid sleeping allocation in ixgbe_ipsec_vf_add_sa()
Pu Lehui (1):
drivers/perf: riscv: Disable PERF_SAMPLE_BRANCH_* while not supported
Puranjay Mohan (1):
bpf, arm64: fix bug in BPF_LDX_MEMSX
Raju Lakkaraju (1):
net: lan743x: Add set RFE read fifo threshold for PCI1x1x chips
Ravi Gunasekaran (1):
net: hsr: hsr_slave: Fix the promiscuous mode in offload mode
Richard Fitzgerald (3):
ASoC: wm_adsp: Fix missing mutex_lock in wm_adsp_write_ctl()
regmap: maple: Fix cache corruption in regcache_maple_drop()
regmap: maple: Fix uninitialized symbol 'ret' warnings
Ritvik Budhiraja (1):
smb3: retrying on failed server close
Rob Clark (1):
drm/prime: Unbreak virtgpu dma-buf export
Ryosuke Yasuoka (1):
nfc: nci: Fix uninit-value in nci_dev_up and nci_ntf_packet
Sabrina Dubroca (3):
tls: recv: process_rx_list shouldn't use an offset with kvec
tls: adjust recv return with async crypto and failed copy to userspace
tls: get psock ref after taking rxlock to avoid leak
Sam Protsenko (1):
spi: s3c64xx: Extract FIFO depth calculation to a dedicated macro
Samuel Holland (1):
riscv: Fix spurious errors from __get/put_kernel_nofault
Sandipan Das (3):
perf/x86/amd/core: Update and fix stalled-cycles-* events for Zen 2 and later x86/cpufeatures: Add new word for scattered features perf/x86/amd/lbr: Use freeze based on availability
Sean Christopherson (2):
x86/cpufeatures: Add CPUID_LNX_5 to track recently added Linux-defined word
KVM: SVM: Use unsigned integers when dealing with ASIDs
Sergey Shtylyov (1):
of: module: prevent NULL pointer dereference in vsnprintf()
Simon Trimmer (2):
ALSA: hda: cs35l56: Set the init_done flag before component_add()
ALSA: hda: cs35l56: Add ACPI device match tables
Stefan O'Rear (1):
riscv: process: Fix kernel gp leakage
Stephen Lee (1):
ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw
Steven Zou (1):
ice: Refactor FW data type and fix bitmap casting issue
Su Hui (1):
octeontx2-pf: check negative error code in otx2_open()
Sumanth Korikkar (1):
s390/entry: align system call table on 8 bytes
Tejas Upadhyay (2):
drm/i915/mtl: Update workaround 14016712196
drm/i915/mtl: Update workaround 14018575942Tudor Ambarus (6):
spi: s3c64xx: sort headers alphabetically
spi: s3c64xx: explicitly include <linux/bits.h>
spi: s3c64xx: remove else after return
spi: s3c64xx: define a magic value
spi: s3c64xx: allow full FIFO masks
spi: s3c64xx: determine the fifo depth only once
Uros Bizjak (1):
x86/bpf: Fix IP after emitting call depth accounting
Victor Isaev (1):
RISC-V: Update AT_VECTOR_SIZE_ARCH for new AT_MINSIGSTKSZ
Vijendar Mukunda (2):
ASoC: amd: acp: fix for acp_init function error handling
ASoC: SOF: amd: fix for false dsp interrupts
Ville Syrjälä (1):
drm/i915: Pre-populate the cursor physical dma address
Vitaly Lifshits (3):
e1000e: Workaround for sporadic MDI error on Meteor Lake systems
e1000e: Minor flow correction in e1000_shutdown function
e1000e: move force SMBUS from enable ulp function to avoid PHY loss issue
Wei Fang (1):
net: fec: Set mac_managed_pm during probe
Will Deacon (1):
KVM: arm64: Ensure target address is granule-aligned for range TLBI
Yonglong Liu (1):
net: hns3: fix kernel crash when devlink reload during pf initialization
Ziyang Xuan (1):
netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get()
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/hw-vuln/spectre.rst +42 -6
@@ -138,11 +138,10 @@ associated with the source address of the indirect branch. Specifically, the BHB might be shared across privilege levels even in the presence of Enhanced IBRS. -Currently the only known real-world BHB attack vector is via -unprivileged eBPF. Therefore, it's highly recommended to not enable -unprivileged eBPF, especially when eIBRS is used (without retpolines). -For a full mitigation against BHB attacks, it's recommended to use -retpolines (or eIBRS combined with retpolines). +Previously the only known real-world BHB attack vector was via unprivileged +eBPF. Further research has found attacks that don't require unprivileged eBPF. +For a full mitigation against BHB attacks it is recommended to set BHI_DIS_S or +use the BHB clearing sequence. Attack scenarios ----------------
@@ -430,6 +429,23 @@ The possible values in this file are: 'PBRSB-eIBRS: Not affected' CPU is not affected by PBRSB =========================== ======================================================= + - Branch History Injection (BHI) protection status: + +.. list-table:: + + * - BHI: Not affected + - System is not affected + * - BHI: Retpoline + - System is protected by retpoline + * - BHI: BHI_DIS_S + - System is protected by BHI_DIS_S + * - BHI: SW loop; KVM SW loop + - System is protected by software clearing sequence + * - BHI: Syscall hardening + - Syscalls are hardened against BHI + * - BHI: Syscall hardening; KVM: SW loop + - System is protected from userspace attacks by syscall hardening; KVM is protected by software clearing sequence + Full mitigation might require a microcode update from the CPU vendor. When the necessary microcode is not available, the kernel will report vulnerability.
@@ -484,7 +500,11 @@ Spectre variant 2 Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at boot, by setting the IBRS bit, and they're automatically protected against - Spectre v2 variant attacks. + some Spectre v2 variant attacks. The BHB can still influence the choice of + indirect branch predictor entry, and although branch predictor entries are + isolated between modes when eIBRS is enabled, the BHB itself is not isolated + between modes. Systems which support BHI_DIS_S will set it to protect against + BHI attacks. On Intel's enhanced IBRS systems, this includes cross-thread branch target injections on SMT systems (STIBP). In other words, Intel eIBRS enables
@@ -638,6 +658,22 @@ kernel command line. spectre_v2=off. Spectre variant 1 mitigations cannot be disabled. + spectre_bhi= + + [X86] Control mitigation of Branch History Injection + (BHI) vulnerability. Syscalls are hardened against BHI + regardless of this setting. This setting affects the deployment + of the HW BHI control and the SW BHB clearing sequence. + + on + unconditionally enable. + off + unconditionally disable. + auto + enable if hardware mitigation + control(BHI_DIS_S) is available, otherwise + enable alternate mitigation in KVM. + For spectre_v2_user see Documentation/admin-guide/kernel-parameters.txt Mitigation selection guide
Documentation/admin-guide/kernel-parameters.txt +12 -0
@@ -5920,6 +5920,18 @@ sonypi.*= [HW] Sony Programmable I/O Control Device driver See Documentation/admin-guide/laptops/sonypi.rst + spectre_bhi= [X86] Control mitigation of Branch History Injection + (BHI) vulnerability. Syscalls are hardened against BHI + reglardless of this setting. This setting affects the + deployment of the HW BHI control and the SW BHB + clearing sequence. + + on - unconditionally enable. + off - unconditionally disable. + auto - (default) enable hardware mitigation + (BHI_DIS_S) if available, otherwise enable + alternate mitigation in KVM. + spectre_v2= [X86] Control mitigation of Spectre variant 2 (indirect branch speculation) vulnerability. The default operation protects the kernel from
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 25 +SUBLEVEL = 26 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi +2 -0
@@ -970,6 +970,8 @@ bluetooth: bluetooth { vddrf-supply = <&pp1300_l2c>; vddch0-supply = <&pp3300_l10c>; max-speed = <3200000>; + + qcom,local-bd-address-broken; }; };
arch/arm64/kernel/ptrace.c +1 -4
@@ -728,7 +728,6 @@ static void sve_init_header_from_task(struct user_sve_header *header, {unsigned int vq;bool active; -bool fpsimd_only;enum vec_type task_type;memset (header,0 ,sizeof (*header));
@@ -744,12 +743,10 @@ static void sve_init_header_from_task(struct user_sve_header *header,case ARM64_VEC_SVE :if (test_tsk_thread_flag (target,TIF_SVE_VL_INHERIT )) header->flags |=SVE_PT_VL_INHERIT ; - fpsimd_only = !test_tsk_thread_flag (target,TIF_SVE );break ;case ARM64_VEC_SME :if (test_tsk_thread_flag (target,TIF_SME_VL_INHERIT )) header->flags |=SVE_PT_VL_INHERIT ; - fpsimd_only = false;break ;default :WARN_ON_ONCE (1 );
@@ -757,7 +754,7 @@ static void sve_init_header_from_task(struct user_sve_header *header, }if (active) { -if (fpsimd_only) { +if (target->thread.fp_type ==FP_STATE_FPSIMD ) { header->flags |=SVE_PT_REGS_FPSIMD ; }else { header->flags |=SVE_PT_REGS_SVE ;
arch/arm64/kvm/hyp/pgtable.c +7 -4
@@ -805,12 +805,15 @@ static bool stage2_try_break_pte(const struct kvm_pgtable_visit_ctx *ctx,* Perform the appropriate TLB invalidation based on the * evicted pte value (if any). */ -if (kvm_pte_table (ctx->old, ctx->level)) -kvm_tlb_flush_vmid_range (mmu, ctx->addr, -kvm_granule_size (ctx->level)); -else if (kvm_pte_valid (ctx->old)) +if (kvm_pte_table (ctx->old, ctx->level)) { +u64 size =kvm_granule_size (ctx->level); +u64 addr =ALIGN_DOWN (ctx->addr, size); + +kvm_tlb_flush_vmid_range (mmu, addr, size); + }else if (kvm_pte_valid (ctx->old)) {kvm_call_hyp (__kvm_tlb_flush_vmid_ipa, mmu, ctx->addr, ctx->level); + } }if (stage2_pte_is_counted (ctx->old))
arch/arm64/net/bpf_jit_comp.c +2 -2
@@ -876,7 +876,7 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,emit (A64_UXTH (is64, dst, dst), ctx);break ;case 32 : -emit (A64_REV32 (is64, dst, dst), ctx); +emit (A64_REV32 (0 , dst, dst), ctx);/* upper 32 bits already cleared */ break ;case 64 :
@@ -1189,7 +1189,7 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, }else {emit_a64_mov_i (1 , tmp, off, ctx);if (sign_extend) -emit (A64_LDRSW (dst, src_adj, off_adj), ctx); +emit (A64_LDRSW (dst, src, tmp), ctx);else emit (A64_LDR32 (dst, src, tmp), ctx); }
arch/powerpc/mm/book3s64/pgtable.c +1 -1
@@ -130,7 +130,7 @@ void set_pud_at(struct mm_struct *mm, unsigned long addr,WARN_ON (pte_hw_valid (pud_pte (*pudp)));assert_spin_locked (pud_lockptr (mm, pudp)); -WARN_ON (!(pud_large (pud))); +WARN_ON (!(pud_leaf (pud)));#endif trace_hugepage_set_pud (addr,pud_val (pud));return set_pte_at (mm, addr,pudp_ptep (pudp),pud_pte (pud));
arch/riscv/include/asm/uaccess.h +2 -2
@@ -319,7 +319,7 @@ unsigned long __must_check clear_user(void __user *to, unsigned long n)#define __get_kernel_nofault (dst, src, type, err_label) \ do { \ - long __kr_err; \ + long __kr_err = 0; \ \ __get_user_nocheck(*((type *)(dst)), (type *)(src), __kr_err); \ if (unlikely(__kr_err)) \
@@ -328,7 +328,7 @@ do { \#define __put_kernel_nofault (dst, src, type, err_label) \ do { \ - long __kr_err; \ + long __kr_err = 0; \ \ __put_user_nocheck(*((type *)(src)), (type *)(dst), __kr_err); \ if (unlikely(__kr_err)) \
arch/riscv/include/uapi/asm/auxvec.h +1 -1
@@ -34,7 +34,7 @@#define AT_L3_CACHEGEOMETRY 47/* entries in ARCH_DLINFO */ -#define AT_VECTOR_SIZE_ARCH 9 +#define AT_VECTOR_SIZE_ARCH 10#define AT_MINSIGSTKSZ 51#endif /* _UAPI_ASM_RISCV_AUXVEC_H */
arch/riscv/kernel/patch.c +8 -0
@@ -80,6 +80,8 @@ static int __patch_insn_set(void *addr, u8 c, size_t len)*/ lockdep_assert_held (&text_mutex); +preempt_disable (); +if (across_pages)patch_map (addr +PAGE_SIZE ,FIX_TEXT_POKE1 );
@@ -92,6 +94,8 @@ static int __patch_insn_set(void *addr, u8 c, size_t len)if (across_pages)patch_unmap (FIX_TEXT_POKE1 ); +preempt_enable (); +return 0 ; }NOKPROBE_SYMBOL (__patch_insn_set);
@@ -122,6 +126,8 @@ static int __patch_insn_write(void *addr, const void *insn, size_t len)if (!riscv_patch_in_stop_machine)lockdep_assert_held (&text_mutex); +preempt_disable (); +if (across_pages)patch_map (addr +PAGE_SIZE ,FIX_TEXT_POKE1 );
@@ -134,6 +140,8 @@ static int __patch_insn_write(void *addr, const void *insn, size_t len)if (across_pages)patch_unmap (FIX_TEXT_POKE1 ); +preempt_enable (); +return ret; }NOKPROBE_SYMBOL (__patch_insn_write);
arch/riscv/kernel/process.c +0 -3
@@ -26,8 +26,6 @@#include <asm/cpuidle.h> #include <asm/vector.h> -registerunsigned long gp_in_global __asm__("gp" ); -#if defined(CONFIG_STACKPROTECTOR ) && !defined(CONFIG_STACKPROTECTOR_PER_TASK )#include <linux/stackprotector.h> unsigned long __stack_chk_guard__read_mostly ;
@@ -186,7 +184,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)if (unlikely (args->fn)) {/* Kernel thread */ memset (childregs,0 ,sizeof (struct pt_regs )); - childregs->gp = gp_in_global;/* Supervisor/Machine, irqs on: */ childregs->status =SR_PP |SR_PIE ;
arch/riscv/kvm/aia_aplic.c +31 -6
@@ -137,11 +137,21 @@ static void aplic_write_pending(struct aplic *aplic, u32 irq, bool pending)raw_spin_lock_irqsave (&irqd->lock, flags); sm = irqd->sourcecfg &APLIC_SOURCECFG_SM_MASK ; -if (!pending && - ((sm ==APLIC_SOURCECFG_SM_LEVEL_HIGH ) || - (sm ==APLIC_SOURCECFG_SM_LEVEL_LOW ))) +if (sm ==APLIC_SOURCECFG_SM_INACTIVE ) goto skip_write_pending; +if (sm ==APLIC_SOURCECFG_SM_LEVEL_HIGH || + sm ==APLIC_SOURCECFG_SM_LEVEL_LOW ) { +if (!pending) + goto skip_write_pending; +if ((irqd->state &APLIC_IRQ_STATE_INPUT ) && + sm ==APLIC_SOURCECFG_SM_LEVEL_LOW ) + goto skip_write_pending; +if (!(irqd->state &APLIC_IRQ_STATE_INPUT ) && + sm ==APLIC_SOURCECFG_SM_LEVEL_HIGH ) + goto skip_write_pending; + } +if (pending) irqd->state |=APLIC_IRQ_STATE_PENDING ;else
@@ -187,16 +197,31 @@ static void aplic_write_enabled(struct aplic *aplic, u32 irq, bool enabled)static bool aplic_read_input (struct aplic *aplic,u32 irq) { -bool ret; -unsigned long flags; +u32 sourcecfg, sm, raw_input, irq_inverted;struct aplic_irq *irqd; +unsigned long flags; +bool ret = false;if (!irq || aplic->nr_irqs <= irq)return false; irqd = &aplic->irqs[irq];raw_spin_lock_irqsave (&irqd->lock, flags); - ret = (irqd->state &APLIC_IRQ_STATE_INPUT ) ? true : false; + + sourcecfg = irqd->sourcecfg; +if (sourcecfg &APLIC_SOURCECFG_D ) + goto skip; + + sm = sourcecfg &APLIC_SOURCECFG_SM_MASK ; +if (sm ==APLIC_SOURCECFG_SM_INACTIVE ) + goto skip; + + raw_input = (irqd->state &APLIC_IRQ_STATE_INPUT ) ?1 :0 ; + irq_inverted = (sm ==APLIC_SOURCECFG_SM_LEVEL_LOW || + sm ==APLIC_SOURCECFG_SM_EDGE_FALL ) ?1 :0 ; + ret = !!(raw_input ^ irq_inverted); + +skip:raw_spin_unlock_irqrestore (&irqd->lock, flags);return ret;
arch/s390/boot/vmem.c +1 -1
@@ -360,7 +360,7 @@ static void pgtable_pud_populate(p4d_t *p4d, unsigned long addr, unsigned long e } pmd =boot_crst_alloc (_SEGMENT_ENTRY_EMPTY);pud_populate (&init_mm, pud, pmd); - }else if (pud_large (*pud)) { + }else if (pud_leaf (*pud)) {continue ; }pgtable_pmd_populate (pud, addr, next, mode);
arch/s390/include/asm/pgtable.h +2 -2
@@ -729,7 +729,7 @@ static inline int pud_bad(pud_t pud) {unsigned long type =pud_val (pud) & _REGION_ENTRY_TYPE_MASK; -if (type > _REGION_ENTRY_TYPE_R3 ||pud_large (pud)) +if (type > _REGION_ENTRY_TYPE_R3 ||pud_leaf (pud))return 1 ;if (type < _REGION_ENTRY_TYPE_R3)return 0 ;
@@ -1396,7 +1396,7 @@ static inline unsigned long pud_deref(pud_t pud)unsigned long origin_mask; origin_mask = _REGION_ENTRY_ORIGIN; -if (pud_large (pud)) +if (pud_leaf (pud)) origin_mask = _REGION3_ENTRY_ORIGIN_LARGE;return (unsigned long )__va (pud_val (pud) & origin_mask); }
arch/s390/kernel/entry.S +1 -0
@@ -653,6 +653,7 @@ SYM_DATA_START_LOCAL(daton_psw) SYM_DATA_END(daton_psw) .section .rodata, "a" + .balign 8 #define SYSCALL(esame,emu) .quad __s390x_ ## esame SYM_DATA_START(sys_call_table) #include "asm/syscall_table.h"
arch/s390/mm/gmap.c +1 -1
@@ -596,7 +596,7 @@ int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr) pud =pud_offset (p4d, vmaddr);VM_BUG_ON (pud_none (*pud));/* large puds cannot yet be handled */ -if (pud_large (*pud)) +if (pud_leaf (*pud))return -EFAULT ; pmd =pmd_offset (pud, vmaddr);VM_BUG_ON (pmd_none (*pmd));
arch/s390/mm/hugetlbpage.c +2 -2
@@ -224,7 +224,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm,if (p4d_present (*p4dp)) { pudp =pud_offset (p4dp, addr);if (pud_present (*pudp)) { -if (pud_large (*pudp)) +if (pud_leaf (*pudp))return (pte_t *) pudp; pmdp =pmd_offset (pudp, addr); }
@@ -240,7 +240,7 @@ int pmd_huge(pmd_t pmd)int pud_huge (pud_t pud) { -return pud_large (pud); +return pud_leaf (pud); }bool __init arch_hugetlb_valid_size (unsigned long size)
arch/s390/mm/pageattr.c +1 -1
@@ -274,7 +274,7 @@ static int walk_pud_level(p4d_t *p4d, unsigned long addr, unsigned long end,if (pud_none (*pudp))return -EINVAL ; next =pud_addr_end (addr, end); -if (pud_large (*pudp)) { +if (pud_leaf (*pudp)) { need_split = !!(flags &SET_MEMORY_4K ); need_split |= !!(addr & ~PUD_MASK ); need_split |= !!(addr +PUD_SIZE > next);
arch/s390/mm/pgtable.c +1 -1
@@ -479,7 +479,7 @@ static int pmd_lookup(struct mm_struct *mm, unsigned long addr, pmd_t **pmdp)return -ENOENT ;/* Large PUDs are not supported yet. */ -if (pud_large (*pud)) +if (pud_leaf (*pud))return -EFAULT ; *pmdp =pmd_offset (pud, addr);
arch/s390/mm/vmem.c +3 -3
@@ -322,7 +322,7 @@ static int modify_pud_table(p4d_t *p4d, unsigned long addr, unsigned long end,if (!add) {if (pud_none (*pud))continue ; -if (pud_large (*pud)) { +if (pud_leaf (*pud)) {if (IS_ALIGNED (addr,PUD_SIZE ) &&IS_ALIGNED (next,PUD_SIZE )) {pud_clear (pud);
@@ -343,7 +343,7 @@ static int modify_pud_table(p4d_t *p4d, unsigned long addr, unsigned long end,if (!pmd) goto out;pud_populate (&init_mm, pud, pmd); - }else if (pud_large (*pud)) { + }else if (pud_leaf (*pud)) {continue ; } ret =modify_pmd_table (pud, addr, next, add, direct);
@@ -586,7 +586,7 @@ pte_t *vmem_get_alloc_pte(unsigned long addr, bool alloc)if (!pmd) goto out;pud_populate (&init_mm, pud, pmd); - }else if (WARN_ON_ONCE (pud_large (*pud))) { + }else if (WARN_ON_ONCE (pud_leaf (*pud))) { goto out; } pmd =pmd_offset (pud, addr);
arch/s390/net/bpf_jit_comp.c +20 -26
96 lines not on this page · raw message
arch/sparc/mm/init_64.c +1 -1
@@ -1665,7 +1665,7 @@ bool kern_addr_valid(unsigned long addr)if (pud_none (*pud))return false; -if (pud_large (*pud)) +if (pud_leaf (*pud))return pfn_valid (pud_pfn (*pud)); pmd =pmd_offset (pud, addr);
arch/x86/Kconfig +25 -0
@@ -2566,6 +2566,31 @@ config MITIGATION_RFDS stored in floating point, vector and integer registers. See also <file:Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst> +choice + prompt "Clear branch history" + depends on CPU_SUP_INTEL + default SPECTRE_BHI_ON + help + Enable BHI mitigations. BHI attacks are a form of Spectre V2 attacks + where the branch history buffer is poisoned to speculatively steer + indirect branches. + See <file:Documentation/admin-guide/hw-vuln/spectre.rst> + +config SPECTRE_BHI_ON + bool "on" + help + Equivalent to setting spectre_bhi=on command line parameter. +config SPECTRE_BHI_OFF + bool "off" + help + Equivalent to setting spectre_bhi=off command line parameter. +config SPECTRE_BHI_AUTO + bool "auto" + help + Equivalent to setting spectre_bhi=auto command line parameter. + +endchoice + endif config ARCH_HAS_ADD_PAGES
arch/x86/boot/compressed/Makefile +1 -1
@@ -84,7 +84,7 @@ LDFLAGS_vmlinux += -T hostprogs := mkpiggy HOST_EXTRACFLAGS += -I$(srctree)/tools/include -sed-voffset := -e 's/^\([0-9a-fA-F]*\) [ABCDGRSTVW] \(_text\|__bss_start\|_end\)$$/\#define VO_\2 _AC(0x\1,UL)/p' +sed-voffset := -e 's/^\([0-9a-fA-F]*\) [ABCDGRSTVW] \(_text\|__start_rodata\|__bss_start\|_end\)$$/\#define VO_\2 _AC(0x\1,UL)/p' quiet_cmd_voffset = VOFFSET $@ cmd_voffset = $(NM) $< | sed -n $(sed-voffset) > $@
arch/x86/boot/compressed/misc.c +16 -0
@@ -330,6 +330,7 @@ static size_t parse_elf(void *output)return ehdr.e_entry -LOAD_PHYSICAL_ADDR ; } +const unsigned long kernel_text_size = VO___start_rodata - VO__text;const unsigned long kernel_total_size = VO__end - VO__text;static u8 boot_heap[BOOT_HEAP_SIZE ]__aligned(4) ;
@@ -357,6 +358,19 @@ unsigned long decompress_kernel(unsigned char *outbuf, unsigned long virt_addr,return entry; } +/* +* Set the memory encryption xloadflag based on the mem_encrypt= command line +* parameter, if provided. +*/ +static void parse_mem_encrypt (struct setup_header *hdr) +{ +int on =cmdline_find_option_bool ("mem_encrypt=on" ); +int off =cmdline_find_option_bool ("mem_encrypt=off" ); + +if (on > off) + hdr->xloadflags |=XLF_MEM_ENCRYPTION ; +} +/* * The compressed kernel image (ZO), has been moved so that its position * is against the end of the buffer used to hold the uncompressed kernel
@@ -387,6 +401,8 @@ asmlinkage __visible void *extract_kernel(void *rmode, unsigned char *output)/* Clear flags intended for solely in-kernel use. */ boot_params->hdr.loadflags &= ~KASLR_FLAG ; +parse_mem_encrypt (&boot_params->hdr); +sanitize_boot_params (boot_params);if (boot_params->screen_info.orig_video_mode ==7 ) {
arch/x86/boot/compressed/sev.c +3 -0
@@ -116,6 +116,9 @@ static bool fault_in_kernel_space(unsigned long address)#undef __init#define __init +#undef __head +#define __head +#define __BOOT_COMPRESSED/* Basic instruction decoding support needed */
arch/x86/coco/core.c +41 -0
57 lines not on this page · raw message
arch/x86/entry/common.c +5 -5
@@ -48,7 +48,7 @@ static __always_inline bool do_syscall_x64(struct pt_regs *regs, int nr)if (likely (unr < NR_syscalls)) { unr =array_index_nospec (unr, NR_syscalls); - regs->ax = sys_call_table[unr](regs); + regs->ax =x64_sys_call (regs, unr);return true; }return false;
@@ -65,7 +65,7 @@ static __always_inline bool do_syscall_x32(struct pt_regs *regs, int nr)if (IS_ENABLED (CONFIG_X86_X32_ABI ) &&likely (xnr < X32_NR_syscalls)) { xnr =array_index_nospec (xnr, X32_NR_syscalls); - regs->ax = x32_sys_call_table[xnr](regs); + regs->ax =x32_sys_call (regs, xnr);return true; }return false;
@@ -114,7 +114,7 @@ static __always_inline void do_syscall_32_irqs_on(struct pt_regs *regs, int nr)if (likely (unr < IA32_NR_syscalls)) { unr =array_index_nospec (unr, IA32_NR_syscalls); - regs->ax = ia32_sys_call_table[unr](regs); + regs->ax =ia32_sys_call (regs, unr); }else if (nr !=-1 ) { regs->ax =__ia32_sys_ni_syscall (regs); }
@@ -141,7 +141,7 @@ static __always_inline bool int80_is_external(void) }/** -* int80_emulation - 32-bit legacy syscall entry +* do_int80_emulation - 32-bit legacy syscall C entry from asm * * This entry point can be used by 32-bit and 64-bit programs to perform * 32-bit system calls. Instances of INT $0x80 can be found inline in
@@ -159,7 +159,7 @@ static __always_inline bool int80_is_external(void)* eax: system call number * ebx, ecx, edx, esi, edi, ebp: arg1 - arg 6 */ -DEFINE_IDTENTRY_RAW (int80_emulation) +__visible noinstr void do_int80_emulation(struct pt_regs *regs) {int nr;
arch/x86/entry/entry_64.S +61 -0
70 lines not on this page · raw message
arch/x86/entry/entry_64_compat.S +16 -0
@@ -92,6 +92,7 @@ SYM_INNER_LABEL(entry_SYSENTER_compat_after_hwframe, SYM_L_GLOBAL) IBRS_ENTER UNTRAIN_RET + CLEAR_BRANCH_HISTORY /* * SYSENTER doesn't filter flags, so we need to clear NT and AC
@@ -209,6 +210,7 @@ SYM_INNER_LABEL(entry_SYSCALL_compat_after_hwframe, SYM_L_GLOBAL) IBRS_ENTER UNTRAIN_RET + CLEAR_BRANCH_HISTORY movq %rsp, %rdi call do_fast_syscall_32
@@ -277,3 +279,17 @@ SYM_INNER_LABEL(entry_SYSRETL_compat_end, SYM_L_GLOBAL) ANNOTATE_NOENDBR int3 SYM_CODE_END(entry_SYSCALL_compat) + +/* + * int 0x80 is used by 32 bit mode as a system call entry. Normally idt entries + * point to C routines, however since this is a system call interface the branch + * history needs to be scrubbed to protect against BHI attacks, and that + * scrubbing needs to take place in assembly code prior to entering any C + * routines. + */ +SYM_CODE_START(int80_emulation) + ANNOTATE_NOENDBR + UNWIND_HINT_FUNC + CLEAR_BRANCH_HISTORY + jmp do_int80_emulation +SYM_CODE_END(int80_emulation)
arch/x86/entry/syscall_32.c +19 -2
@@ -18,8 +18,25 @@#include <asm/syscalls_32.h> #undef __SYSCALL +/* +* The sys_call_table[] is no longer used for system calls, but +* kernel/trace/trace_syscalls.c still wants to know the system +* call address. +*/ +#ifdef CONFIG_X86_32 #define __SYSCALL (nr, sym) __ia32_##sym, - -__visible const sys_call_ptr_t ia32_sys_call_table[] = { +const sys_call_ptr_t sys_call_table[] = { #include <asm/syscalls_32.h> }; +#undef __SYSCALL +#endif + +#define __SYSCALL (nr, sym) case nr: return __ia32_##sym(regs); + +long ia32_sys_call (const struct pt_regs *regs,unsigned int nr) +{ +switch (nr) { +#include <asm/syscalls_32.h> +default :return __ia32_sys_ni_syscall (regs); + } +};
arch/x86/entry/syscall_64.c +17 -2
@@ -11,8 +11,23 @@#include <asm/syscalls_64.h> #undef __SYSCALL +/* +* The sys_call_table[] is no longer used for system calls, but +* kernel/trace/trace_syscalls.c still wants to know the system +* call address. +*/ #define __SYSCALL (nr, sym) __x64_##sym, - -asmlinkage const sys_call_ptr_t sys_call_table[] = { +const sys_call_ptr_t sys_call_table[] = {#include <asm/syscalls_64.h> }; +#undef __SYSCALL + +#define __SYSCALL (nr, sym) case nr: return __x64_##sym(regs); + +long x64_sys_call (const struct pt_regs *regs,unsigned int nr) +{ +switch (nr) { +#include <asm/syscalls_64.h> +default :return __x64_sys_ni_syscall (regs); + } +};
arch/x86/entry/syscall_x32.c +7 -3
@@ -11,8 +11,12 @@#include <asm/syscalls_x32.h> #undef __SYSCALL -#define __SYSCALL (nr, sym) __x64_##sym, +#define __SYSCALL (nr, sym) case nr: return __x64_##sym(regs); -asmlinkage const sys_call_ptr_t x32_sys_call_table[] = { -#include <asm/syscalls_x32.h> +long x32_sys_call (const struct pt_regs *regs,unsigned int nr) +{ +switch (nr) { +#include <asm/syscalls_x32.h> +default :return __x64_sys_ni_syscall (regs); + } };
arch/x86/events/amd/core.c +19 -5
@@ -250,7 +250,7 @@ static const u64 amd_perfmon_event_map[PERF_COUNT_HW_MAX] =/* * AMD Performance Monitor Family 17h and later: */ -static const u64 amd_f17h_perfmon_event_map[PERF_COUNT_HW_MAX ] = +static const u64 amd_zen1_perfmon_event_map[PERF_COUNT_HW_MAX ] = { [PERF_COUNT_HW_CPU_CYCLES ] =0x0076 , [PERF_COUNT_HW_INSTRUCTIONS ] =0x00c0 ,
@@ -262,10 +262,24 @@ static const u64 amd_f17h_perfmon_event_map[PERF_COUNT_HW_MAX] = [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = 0x0187, }; +static const u64 amd_zen2_perfmon_event_map[PERF_COUNT_HW_MAX ] = +{ + [PERF_COUNT_HW_CPU_CYCLES ] =0x0076 , + [PERF_COUNT_HW_INSTRUCTIONS ] =0x00c0 , + [PERF_COUNT_HW_CACHE_REFERENCES ] =0xff60 , + [PERF_COUNT_HW_CACHE_MISSES ] =0x0964 , + [PERF_COUNT_HW_BRANCH_INSTRUCTIONS ] =0x00c2 , + [PERF_COUNT_HW_BRANCH_MISSES ] =0x00c3 , + [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND ] =0x00a9 , +}; +static u64 amd_pmu_event_map (int hw_event) { -if (boot_cpu_data.x86 >=0x17 ) -return amd_f17h_perfmon_event_map[hw_event]; +if (cpu_feature_enabled (X86_FEATURE_ZEN2 ) || boot_cpu_data.x86 >=0x19 ) +return amd_zen2_perfmon_event_map[hw_event]; + +if (cpu_feature_enabled (X86_FEATURE_ZEN1 )) +return amd_zen1_perfmon_event_map[hw_event];return amd_perfmon_event_map[hw_event]; }
@@ -904,8 +918,8 @@ static int amd_pmu_v2_handle_irq(struct pt_regs *regs)if (!status) goto done; -/* Read branch records before unfreezing */ -if (status &GLOBAL_STATUS_LBRS_FROZEN ) { +/* Read branch records */ +if (x86_pmu.lbr_nr) {amd_pmu_lbr_read (); status &= ~GLOBAL_STATUS_LBRS_FROZEN ; }
arch/x86/events/amd/lbr.c +10 -6
@@ -400,10 +400,12 @@ void amd_pmu_lbr_enable_all(void)wrmsrl (MSR_AMD64_LBR_SELECT , lbr_select); } -rdmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl); -rdmsrl (MSR_AMD_DBG_EXTN_CFG , dbg_extn_cfg); +if (cpu_feature_enabled (X86_FEATURE_AMD_LBR_PMC_FREEZE )) { +rdmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl); +wrmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl |DEBUGCTLMSR_FREEZE_LBRS_ON_PMI ); + } -wrmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl |DEBUGCTLMSR_FREEZE_LBRS_ON_PMI ); +rdmsrl (MSR_AMD_DBG_EXTN_CFG , dbg_extn_cfg);wrmsrl (MSR_AMD_DBG_EXTN_CFG , dbg_extn_cfg |DBG_EXTN_CFG_LBRV2EN ); }
@@ -416,10 +418,12 @@ void amd_pmu_lbr_disable_all(void)return ;rdmsrl (MSR_AMD_DBG_EXTN_CFG , dbg_extn_cfg); -rdmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl); -wrmsrl (MSR_AMD_DBG_EXTN_CFG , dbg_extn_cfg & ~DBG_EXTN_CFG_LBRV2EN ); -wrmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl & ~DEBUGCTLMSR_FREEZE_LBRS_ON_PMI ); + +if (cpu_feature_enabled (X86_FEATURE_AMD_LBR_PMC_FREEZE )) { +rdmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl); +wrmsrl (MSR_IA32_DEBUGCTLMSR , dbg_ctl & ~DEBUGCTLMSR_FREEZE_LBRS_ON_PMI ); + } }__init int amd_pmu_lbr_init (void )
arch/x86/events/intel/ds.c +4 -4
@@ -1236,11 +1236,11 @@ pebs_update_state(bool needed_cb, struct cpu_hw_events *cpuc,struct pmu *pmu = event->pmu;/* -* Make sure we get updated with the first PEBS -* event. It will trigger also during removal, but -* that does not hurt: +* Make sure we get updated with the first PEBS event. +* During removal, ->pebs_data_cfg is still valid for +* the last PEBS event. Don't clear it. */ -if (cpuc->n_pebs ==1 ) +if ((cpuc->n_pebs ==1 ) && add) cpuc->pebs_data_cfg =PEBS_UPDATE_DS_SW ;if (needed_cb !=pebs_needs_sched_cb (cpuc)) {
arch/x86/include/asm/asm-prototypes.h +1 -0
@@ -13,6 +13,7 @@#include <asm/preempt.h> #include <asm/asm.h> #include <asm/gsseg.h> +#include <asm/nospec-branch.h> #ifndef CONFIG_X86_CMPXCHG64 extern void cmpxchg8b_emu (void );
arch/x86/include/asm/boot.h +1 -0
@@ -81,6 +81,7 @@#ifndef __ASSEMBLY__extern unsigned int output_len; +extern const unsigned long kernel_text_size;extern const unsigned long kernel_total_size; unsigned long decompress_kernel(unsigned char *outbuf, unsigned long virt_addr,
arch/x86/include/asm/coco.h +2 -0
@@ -22,6 +22,7 @@ static inline void cc_set_mask(u64 mask)u64 cc_mkenc (u64 val);u64 cc_mkdec (u64 val); +void cc_random_init (void );#else static inline u64 cc_mkenc (u64 val) {
@@ -32,6 +33,7 @@ static inline u64 cc_mkdec(u64 val) {return val; } +static inline void cc_random_init (void ) { }#endif #endif /* _ASM_X86_COCO_H */
arch/x86/include/asm/cpufeature.h +6 -2
@@ -33,6 +33,8 @@ enum cpuid_leafsCPUID_7_EDX ,CPUID_8000_001F_EAX ,CPUID_8000_0021_EAX , +CPUID_LNX_5 , + NR_CPUID_WORDS, };#define X86_CAP_FMT_NUM "%d:%d"
@@ -91,8 +93,9 @@ extern const char * const x86_bug_flags[NBUGINTS*32]; CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 18, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 19, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 20, feature_bit) || \ + CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 21, feature_bit) || \ REQUIRED_MASK_CHECK || \ - BUILD_BUG_ON_ZERO(NCAPINTS != 21)) + BUILD_BUG_ON_ZERO(NCAPINTS != 22))#define DISABLED_MASK_BIT_SET (feature_bit) \ ( CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 0, feature_bit) || \
@@ -116,8 +119,9 @@ extern const char * const x86_bug_flags[NBUGINTS*32]; CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 18, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 19, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 20, feature_bit) || \ + CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 21, feature_bit) || \ DISABLED_MASK_CHECK || \ - BUILD_BUG_ON_ZERO(NCAPINTS != 21)) + BUILD_BUG_ON_ZERO(NCAPINTS != 22))#define cpu_has (c, bit) \ (__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
arch/x86/include/asm/cpufeatures.h +19 -2
@@ -13,7 +13,7 @@/* * Defines x86 CPU feature bits */ -#define NCAPINTS 21/* N 32-bit words worth of info */ +#define NCAPINTS 22/* N 32-bit words worth of info */ #define NBUGINTS 2/* N 32-bit bug flags */ /*
@@ -218,7 +218,7 @@#define X86_FEATURE_IBRS ( 7*32+25)/* Indirect Branch Restricted Speculation */ #define X86_FEATURE_IBPB ( 7*32+26)/* Indirect Branch Prediction Barrier */ #define X86_FEATURE_STIBP ( 7*32+27)/* Single Thread Indirect Branch Predictors */ -#define X86_FEATURE_ZEN (7*32+28)/* "" CPU based on Zen microarchitecture */ +#define X86_FEATURE_ZEN ( 7*32+28)/* "" Generic flag for all Zen and newer */ #define X86_FEATURE_L1TF_PTEINV ( 7*32+29)/* "" L1TF workaround PTE inversion */ #define X86_FEATURE_IBRS_ENHANCED ( 7*32+30)/* Enhanced IBRS */ #define X86_FEATURE_MSR_IA32_FEAT_CTL ( 7*32+31)/* "" MSR IA32_FEAT_CTL configured */
@@ -312,6 +312,10 @@#define X86_FEATURE_SRSO_ALIAS (11*32+25)/* "" AMD BTB untrain RETs through aliasing */ #define X86_FEATURE_IBPB_ON_VMEXIT (11*32+26)/* "" Issue an IBPB only on VMEXIT */ #define X86_FEATURE_APIC_MSRS_FENCE (11*32+27)/* "" IA32_TSC_DEADLINE and X2APIC MSRs need fencing */ +#define X86_FEATURE_ZEN2 (11*32+28)/* "" CPU based on Zen2 microarchitecture */ +#define X86_FEATURE_ZEN3 (11*32+29)/* "" CPU based on Zen3 microarchitecture */ +#define X86_FEATURE_ZEN4 (11*32+30)/* "" CPU based on Zen4 microarchitecture */ +#define X86_FEATURE_ZEN1 (11*32+31)/* "" CPU based on Zen1 microarchitecture */ /* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */ #define X86_FEATURE_AVX_VNNI (12*32+ 4)/* AVX VNNI instructions */
@@ -452,6 +456,18 @@#define X86_FEATURE_IBPB_BRTYPE (20*32+28)/* "" MSR_PRED_CMD[IBPB] flushes all branch type predictions */ #define X86_FEATURE_SRSO_NO (20*32+29)/* "" CPU is not affected by SRSO */ +/* +* Extended auxiliary flags: Linux defined - for features scattered in various +* CPUID levels like 0x80000022, etc and Linux defined features. +* +* Reuse free bits when adding new feature flags! +*/ +#define X86_FEATURE_AMD_LBR_PMC_FREEZE (21*32+ 0)/* AMD LBR and PMC Freeze */ +#define X86_FEATURE_CLEAR_BHB_LOOP (21*32+ 1)/* "" Clear branch history at syscall entry using SW loop */ +#define X86_FEATURE_BHI_CTRL (21*32+ 2)/* "" BHI_DIS_S HW control available */ +#define X86_FEATURE_CLEAR_BHB_HW (21*32+ 3)/* "" BHI_DIS_S HW control enabled */ +#define X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT (21*32+ 4)/* "" Clear branch history at vmexit using SW loop */ +/* * BUG word(s) */
@@ -499,4 +515,5 @@#define X86_BUG_SRSO X86_BUG(1*32 + 0)/* AMD SRSO bug */ #define X86_BUG_DIV0 X86_BUG(1*32 + 1)/* AMD DIV0 speculation bug */ #define X86_BUG_RFDS X86_BUG(1*32 + 2)/* CPU is vulnerable to Register File Data Sampling */ +#define X86_BUG_BHI X86_BUG(1*32 + 3)/* CPU is affected by Branch History Injection */ #endif /* _ASM_X86_CPUFEATURES_H */
arch/x86/include/asm/disabled-features.h +2 -1
@@ -143,6 +143,7 @@#define DISABLED_MASK18 (DISABLE_IBT)#define DISABLED_MASK19 0#define DISABLED_MASK20 0 -#define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21) +#define DISABLED_MASK21 0 +#define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22)#endif /* _ASM_X86_DISABLED_FEATURES_H */
arch/x86/include/asm/init.h +2 -0
@@ -2,6 +2,8 @@ #ifndef _ASM_X86_INIT_H #define _ASM_X86_INIT_H +#define __head __section(".head.text") + struct x86_mapping_info { void *(*alloc_pgt_page)(void *); /* allocate buf for page table */ void *context; /* context for alloc_pgt_page */
arch/x86/include/asm/mem_encrypt.h +4 -4
@@ -46,8 +46,8 @@ void __init sme_unmap_bootdata(char *real_mode_data);void __init sme_early_init (void );void __init sev_setup_arch (void ); -void __init sme_encrypt_kernel (struct boot_params *bp); -void __init sme_enable (struct boot_params *bp); +void sme_encrypt_kernel (struct boot_params *bp); +void sme_enable (struct boot_params *bp);int __init early_set_memory_decrypted (unsigned long vaddr,unsigned long size);int __init early_set_memory_encrypted (unsigned long vaddr,unsigned long size);
@@ -81,8 +81,8 @@ static inline void __init sme_unmap_bootdata(char *real_mode_data) { }static inline void __init sme_early_init (void ) { }static inline void __init sev_setup_arch (void ) { } -static inline void __init sme_encrypt_kernel (struct boot_params *bp) { } -static inline void __init sme_enable (struct boot_params *bp) { } +static inline void sme_encrypt_kernel (struct boot_params *bp) { } +static inline void sme_enable (struct boot_params *bp) { }static inline void sev_es_init_vc_handling (void ) { }
arch/x86/include/asm/msr-index.h +8 -1
@@ -50,10 +50,13 @@#define SPEC_CTRL_SSBD BIT(SPEC_CTRL_SSBD_SHIFT)/* Speculative Store Bypass Disable */ #define SPEC_CTRL_RRSBA_DIS_S_SHIFT 6/* Disable RRSBA behavior */ #define SPEC_CTRL_RRSBA_DIS_S BIT(SPEC_CTRL_RRSBA_DIS_S_SHIFT) +#define SPEC_CTRL_BHI_DIS_S_SHIFT 10/* Disable Branch History Injection behavior */ +#define SPEC_CTRL_BHI_DIS_S BIT(SPEC_CTRL_BHI_DIS_S_SHIFT)/* A mask for bits which the kernel toggles when controlling mitigations */ #define SPEC_CTRL_MITIGATIONS_MASK (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP | SPEC_CTRL_SSBD \ - | SPEC_CTRL_RRSBA_DIS_S) + | SPEC_CTRL_RRSBA_DIS_S \ + | SPEC_CTRL_BHI_DIS_S)#define MSR_IA32_PRED_CMD 0x00000049/* Prediction Command */ #define PRED_CMD_IBPB BIT(0)/* Indirect Branch Prediction Barrier */
@@ -152,6 +155,10 @@* are restricted to targets in * kernel. */ +#define ARCH_CAP_BHI_NO BIT(20)/* +* CPU is not affected by Branch +* History Injection. +*/ #define ARCH_CAP_PBRSB_NO BIT(24)/* * Not susceptible to Post-Barrier * Return Stack Buffer Predictions.
arch/x86/include/asm/nospec-branch.h +58 -30
125 lines not on this page · raw message
arch/x86/include/asm/required-features.h +2 -1
@@ -99,6 +99,7 @@#define REQUIRED_MASK18 0#define REQUIRED_MASK19 0#define REQUIRED_MASK20 0 -#define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21) +#define REQUIRED_MASK21 0 +#define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22)#endif /* _ASM_X86_REQUIRED_FEATURES_H */
arch/x86/include/asm/sev.h +5 -5
@@ -199,15 +199,15 @@ static inline int pvalidate(unsigned long vaddr, bool rmp_psize, bool validate)struct snp_guest_request_ioctl ;void setup_ghcb (void ); -void __init early_snp_set_memory_private (unsigned long vaddr,unsigned long paddr, -unsigned long npages); -void __init early_snp_set_memory_shared (unsigned long vaddr,unsigned long paddr, -unsigned long npages); +void early_snp_set_memory_private (unsigned long vaddr,unsigned long paddr, +unsigned long npages); +void early_snp_set_memory_shared (unsigned long vaddr,unsigned long paddr, +unsigned long npages);void snp_set_memory_shared (unsigned long vaddr,unsigned long npages);void snp_set_memory_private (unsigned long vaddr,unsigned long npages);void snp_set_wakeup_secondary_cpu (void );bool snp_init (struct boot_params *bp); -void __init __noreturn snp_abort (void ); +void __noreturn snp_abort (void );void snp_dmi_setup (void );int snp_issue_guest_request (u64 exit_code,struct snp_req_data *input,struct snp_guest_request_ioctl *rio);void snp_accept_memory (phys_addr_t start,phys_addr_t end);
arch/x86/include/asm/syscall.h +5 -6
@@ -16,19 +16,17 @@#include <asm/thread_info.h> /* for TS_COMPAT */ #include <asm/unistd.h> +/* This is used purely for kernel/trace/trace_syscalls.c */ typedef long (*sys_call_ptr_t )(const struct pt_regs *);extern const sys_call_ptr_t sys_call_table[]; -#if defined(CONFIG_X86_32 ) -#define ia32_sys_call_table sys_call_table -#else /* * These may not exist, but still put the prototypes in so we * can use IS_ENABLED(). */ -extern const sys_call_ptr_t ia32_sys_call_table[]; -extern const sys_call_ptr_t x32_sys_call_table[]; -#endif +extern long ia32_sys_call (const struct pt_regs *,unsigned int nr); +extern long x32_sys_call (const struct pt_regs *,unsigned int nr); +extern long x64_sys_call (const struct pt_regs *,unsigned int nr);/* * Only the low 32 bits of orig_ax are meaningful, so we return int.
@@ -127,6 +125,7 @@ static inline int syscall_get_arch(struct task_struct *task) }void do_syscall_64 (struct pt_regs *regs,int nr); +void do_int80_emulation (struct pt_regs *regs);#endif /* CONFIG_X86_32 */
arch/x86/include/uapi/asm/bootparam.h +1 -0
@@ -38,6 +38,7 @@#define XLF_EFI_KEXEC (1<<4)#define XLF_5LEVEL (1<<5)#define XLF_5LEVEL_ENABLED (1<<6) +#define XLF_MEM_ENCRYPTION (1<<7)#ifndef __ASSEMBLY__
arch/x86/kernel/cpu/amd.c +91 -38
203 lines not on this page · raw message
arch/x86/kernel/cpu/bugs.c +110 -16
189 lines not on this page · raw message
arch/x86/kernel/cpu/common.c +16 -8
@@ -1165,6 +1165,7 @@ static void identify_cpu_without_cpuid(struct cpuinfo_x86 *c)#define NO_SPECTRE_V2 BIT(8)#define NO_MMIO BIT(9)#define NO_EIBRS_PBRSB BIT(10) +#define NO_BHI BIT(11)#define VULNWL (vendor, family, model, whitelist) \ X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, whitelist)
@@ -1227,18 +1228,18 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {VULNWL_INTEL (ATOM_TREMONT_D ,NO_ITLB_MULTIHIT |NO_EIBRS_PBRSB ),/* AMD Family 0xf - 0x12 */ -VULNWL_AMD (0x0f ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO ), -VULNWL_AMD (0x10 ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO ), -VULNWL_AMD (0x11 ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO ), -VULNWL_AMD (0x12 ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO ), +VULNWL_AMD (0x0f ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_BHI ), +VULNWL_AMD (0x10 ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_BHI ), +VULNWL_AMD (0x11 ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_BHI ), +VULNWL_AMD (0x12 ,NO_MELTDOWN |NO_SSB |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_BHI ),/* FAMILY_ANY must be last, otherwise 0x0f - 0x12 matches won't work */ -VULNWL_AMD (X86_FAMILY_ANY ,NO_MELTDOWN |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_EIBRS_PBRSB ), -VULNWL_HYGON (X86_FAMILY_ANY ,NO_MELTDOWN |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_EIBRS_PBRSB ), +VULNWL_AMD (X86_FAMILY_ANY ,NO_MELTDOWN |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_EIBRS_PBRSB |NO_BHI ), +VULNWL_HYGON (X86_FAMILY_ANY ,NO_MELTDOWN |NO_L1TF |NO_MDS |NO_SWAPGS |NO_ITLB_MULTIHIT |NO_MMIO |NO_EIBRS_PBRSB |NO_BHI ),/* Zhaoxin Family 7 */ -VULNWL (CENTAUR ,7 ,X86_MODEL_ANY ,NO_SPECTRE_V2 |NO_SWAPGS |NO_MMIO ), - VULNWL(ZHAOXIN, 7, X86_MODEL_ANY, NO_SPECTRE_V2 | NO_SWAPGS | NO_MMIO), +VULNWL (CENTAUR ,7 ,X86_MODEL_ANY ,NO_SPECTRE_V2 |NO_SWAPGS |NO_MMIO |NO_BHI ), + VULNWL(ZHAOXIN, 7, X86_MODEL_ANY, NO_SPECTRE_V2 | NO_SWAPGS | NO_MMIO | NO_BHI), {} };
@@ -1475,6 +1476,13 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)if (vulnerable_to_rfds (ia32_cap))setup_force_cpu_bug (X86_BUG_RFDS ); +/* When virtualized, eIBRS could be hidden, assume vulnerable */ +if (!(ia32_cap &ARCH_CAP_BHI_NO ) && + !cpu_matches (cpu_vuln_whitelist,NO_BHI ) && + (boot_cpu_has (X86_FEATURE_IBRS_ENHANCED ) || +boot_cpu_has (X86_FEATURE_HYPERVISOR ))) +setup_force_cpu_bug (X86_BUG_BHI ); +if (cpu_matches (cpu_vuln_whitelist,NO_MELTDOWN ))return ;
arch/x86/kernel/cpu/mce/core.c +3 -1
@@ -2468,12 +2468,14 @@ static ssize_t set_bank(struct device *s, struct device_attribute *attr,return -EINVAL ; b = &per_cpu (mce_banks_array, s->id)[bank]; -if (!b->init)return -ENODEV ; b->ctl = new; + +mutex_lock (&mce_sysfs_mutex);mce_restart (); +mutex_unlock (&mce_sysfs_mutex);return size; }
arch/x86/kernel/cpu/scattered.c +2 -0
@@ -28,6 +28,7 @@ static const struct cpuid_bit cpuid_bits[] = { { X86_FEATURE_EPB, CPUID_ECX, 3, 0x00000006, 0 }, { X86_FEATURE_INTEL_PPIN, CPUID_EBX, 0, 0x00000007, 1 }, { X86_FEATURE_RRSBA_CTRL, CPUID_EDX, 2, 0x00000007, 2 }, + { X86_FEATURE_BHI_CTRL, CPUID_EDX, 4, 0x00000007, 2 }, { X86_FEATURE_CQM_LLC, CPUID_EDX, 1, 0x0000000f, 0 }, { X86_FEATURE_CQM_OCCUP_LLC, CPUID_EDX, 0, 0x0000000f, 1 }, { X86_FEATURE_CQM_MBM_TOTAL, CPUID_EDX, 1, 0x0000000f, 1 },
@@ -49,6 +50,7 @@ static const struct cpuid_bit cpuid_bits[] = { { X86_FEATURE_BMEC, CPUID_EBX, 3, 0x80000020, 0 }, { X86_FEATURE_PERFMON_V2, CPUID_EAX, 0, 0x80000022, 0 }, { X86_FEATURE_AMD_LBR_V2, CPUID_EAX, 1, 0x80000022, 0 }, + { X86_FEATURE_AMD_LBR_PMC_FREEZE, CPUID_EAX, 2, 0x80000022, 0 }, { 0, 0, 0, 0, 0 } };
arch/x86/kernel/head64.c +1 -2
@@ -41,6 +41,7 @@#include <asm/trapnr.h> #include <asm/sev.h> #include <asm/tdx.h> +#include <asm/init.h> /* * Manage page tables very early on.
@@ -84,8 +85,6 @@ static struct desc_ptr startup_gdt_descr = { .address = 0, }; -#define __head __section(".head.text") - static void __head *fixup_pointer(void *ptr, unsigned long physaddr) {return ptr - (void *)_text + (void *)physaddr;
arch/x86/kernel/mpparse.c +5 -5
@@ -196,12 +196,12 @@ static int __init smp_read_mpc(struct mpc_table *mpc, unsigned early)if (!smp_check_mpc (mpc, oem, str))return 0 ; -if (early) { -/* Initialize the lapic mapping */ -if (!acpi_lapic) -register_lapic_address (mpc->lapic); +/* Initialize the lapic mapping */ +if (!acpi_lapic) +register_lapic_address (mpc->lapic); + +if (early)return 1 ; - }/* Now process the configuration blocks. */ while (count < mpc->length) {
arch/x86/kernel/setup.c +2 -0
@@ -35,6 +35,7 @@#include <asm/bios_ebda.h> #include <asm/bugs.h> #include <asm/cacheinfo.h> +#include <asm/coco.h> #include <asm/cpu.h> #include <asm/efi.h> #include <asm/gart.h>
@@ -1120,6 +1121,7 @@ void __init setup_arch(char **cmdline_p)* memory size. */ sev_setup_arch (); +cc_random_init ();efi_fake_memmap ();efi_find_mirror ();
arch/x86/kernel/sev-shared.c +10 -13
@@ -89,7 +89,8 @@ static bool __init sev_es_check_cpu_features(void)return true; } -static void __noreturn sev_es_terminate (unsigned int set,unsigned int reason) +static void __head __noreturn +sev_es_terminate (unsigned int set,unsigned int reason) {u64 val =GHCB_MSR_TERM_REQ ;
@@ -326,13 +327,7 @@ static int sev_cpuid_hv(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid*/ static const struct snp_cpuid_table *snp_cpuid_get_table (void ) { -void *ptr; - - asm ("lea cpuid_table_copy(%%rip), %0" - :"=r" (ptr) - :"p" (&cpuid_table_copy)); - -return ptr; +return &RIP_REL_REF (cpuid_table_copy); }/*
@@ -391,7 +386,7 @@ static u32 snp_cpuid_calc_xsave_size(u64 xfeatures_en, bool compacted)return xsave_size; } -static bool +static bool __headsnp_cpuid_get_validated_func (struct cpuid_leaf *leaf) {const struct snp_cpuid_table *cpuid_table =snp_cpuid_get_table ();
@@ -528,7 +523,8 @@ static int snp_cpuid_postprocess(struct ghcb *ghcb, struct es_em_ctxt *ctxt,* Returns -EOPNOTSUPP if feature not enabled. Any other non-zero return value * should be treated as fatal by caller. */ -static int snp_cpuid (struct ghcb *ghcb,struct es_em_ctxt *ctxt,struct cpuid_leaf *leaf) +static int __head +snp_cpuid (struct ghcb *ghcb,struct es_em_ctxt *ctxt,struct cpuid_leaf *leaf) {const struct snp_cpuid_table *cpuid_table =snp_cpuid_get_table ();
@@ -570,7 +566,7 @@ static int snp_cpuid(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_le* page yet, so it only supports the MSR based communication with the * hypervisor and only the CPUID exit-code. */ -void __init do_vc_no_ghcb (struct pt_regs *regs,unsigned long exit_code) +void __head do_vc_no_ghcb(struct pt_regs *regs, unsigned long exit_code) {unsigned int subfn =lower_bits (regs->cx,32 );unsigned int fn =lower_bits (regs->ax,32 );
@@ -1016,7 +1012,8 @@ struct cc_setup_data {* Search for a Confidential Computing blob passed in as a setup_data entry * via the Linux Boot Protocol. */ -static struct cc_blob_sev_info *find_cc_blob_setup_data (struct boot_params *bp) +static __head +struct cc_blob_sev_info *find_cc_blob_setup_data(struct boot_params *bp) {struct cc_setup_data *sd =NULL ;struct setup_data *hdr;
@@ -1043,7 +1040,7 @@ static struct cc_blob_sev_info *find_cc_blob_setup_data(struct boot_params *bp)* mapping needs to be updated in sync with all the changes to virtual memory * layout and related mapping facilities throughout the boot process. */ -static void __init setup_cpuid_table (const struct cc_blob_sev_info *cc_info) +static void __head setup_cpuid_table(const struct cc_blob_sev_info *cc_info) {const struct snp_cpuid_table *cpuid_table_fw, *cpuid_table;int i;
arch/x86/kernel/sev.c +8 -6
@@ -26,6 +26,7 @@#include <linux/dmi.h> #include <uapi/linux/sev-guest.h> +#include <asm/init.h> #include <asm/cpu_entry_area.h> #include <asm/stacktrace.h> #include <asm/sev.h>
@@ -683,8 +684,9 @@ static u64 __init get_jump_table_addr(void)return ret; } -static void early_set_pages_state (unsigned long vaddr,unsigned long paddr, -unsigned long npages,enum psc_op op) +static void __head +early_set_pages_state (unsigned long vaddr,unsigned long paddr, +unsigned long npages,enum psc_op op) {unsigned long paddr_end;u64 val;
@@ -740,7 +742,7 @@ static void early_set_pages_state(unsigned long vaddr, unsigned long paddr,sev_es_terminate (SEV_TERM_SET_LINUX ,GHCB_TERM_PSC ); } -void __init early_snp_set_memory_private (unsigned long vaddr,unsigned long paddr, +void __head early_snp_set_memory_private(unsigned long vaddr, unsigned long paddr,unsigned long npages) {/*
@@ -2045,7 +2047,7 @@ bool __init handle_vc_boot_ghcb(struct pt_regs *regs)* * Scan for the blob in that order. */ -static __init struct cc_blob_sev_info *find_cc_blob (struct boot_params *bp) +static __head struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp) {struct cc_blob_sev_info *cc_info;
@@ -2071,7 +2073,7 @@ static __init struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp)return cc_info; } -bool __init snp_init (struct boot_params *bp) +bool __head snp_init(struct boot_params *bp) {struct cc_blob_sev_info *cc_info;
@@ -2093,7 +2095,7 @@ bool __init snp_init(struct boot_params *bp)return true; } -void __init __noreturn snp_abort (void ) +void __head __noreturn snp_abort(void) {sev_es_terminate (SEV_TERM_SET_GEN ,GHCB_SNP_UNSUPPORTED ); }
arch/x86/kernel/vmlinux.lds.S +2 -5
@@ -139,10 +139,7 @@ SECTIONS STATIC_CALL_TEXT ALIGN_ENTRY_TEXT_BEGIN -#ifdef CONFIG_CPU_SRSO *(.text..__x86.rethunk_untrain) -#endif - ENTRY_TEXT #ifdef CONFIG_CPU_SRSO
@@ -520,12 +517,12 @@ INIT_PER_CPU(irq_stack_backing_store); "fixed_percpu_data is not at start of per-cpu area"); #endif -#ifdef CONFIG_RETHUNK +#ifdef CONFIG_CPU_UNRET_ENTRY . = ASSERT((retbleed_return_thunk & 0x3f) == 0, "retbleed_return_thunk not cacheline-aligned"); -. = ASSERT((srso_safe_ret & 0x3f) == 0, "srso_safe_ret not cacheline-aligned"); #endif #ifdef CONFIG_CPU_SRSO +. = ASSERT((srso_safe_ret & 0x3f) == 0, "srso_safe_ret not cacheline-aligned"); /* * GNU ld cannot do XOR until 2.41. * https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f6f78318fca803c4907fb8d7f6ded8295f1947b1
arch/x86/kvm/mmu/mmu.c +1 -1
@@ -3120,7 +3120,7 @@ static int host_pfn_mapping_level(struct kvm *kvm, gfn_t gfn,if (pud_none (pud) || !pud_present (pud)) goto out; -if (pud_large (pud)) { +if (pud_leaf (pud)) { level =PG_LEVEL_1G ; goto out; }
arch/x86/kvm/reverse_cpuid.h +4 -1
@@ -52,7 +52,7 @@ enum kvm_only_cpuid_leafs {#define X86_FEATURE_IPRED_CTRL KVM_X86_FEATURE(CPUID_7_2_EDX, 1)#define KVM_X86_FEATURE_RRSBA_CTRL KVM_X86_FEATURE(CPUID_7_2_EDX, 2)#define X86_FEATURE_DDPD_U KVM_X86_FEATURE(CPUID_7_2_EDX, 3) -#define X86_FEATURE_BHI_CTRL KVM_X86_FEATURE(CPUID_7_2_EDX, 4) +#define KVM_X86_FEATURE_BHI_CTRL KVM_X86_FEATURE(CPUID_7_2_EDX, 4)#define X86_FEATURE_MCDT_NO KVM_X86_FEATURE(CPUID_7_2_EDX, 5)/* CPUID level 0x80000007 (EDX). */
@@ -102,10 +102,12 @@ static const struct cpuid_reg reverse_cpuid[] = {*/ static __always_inline void reverse_cpuid_check(unsigned int x86_leaf) { +BUILD_BUG_ON (NR_CPUID_WORDS !=NCAPINTS );BUILD_BUG_ON (x86_leaf ==CPUID_LNX_1 );BUILD_BUG_ON (x86_leaf ==CPUID_LNX_2 );BUILD_BUG_ON (x86_leaf ==CPUID_LNX_3 );BUILD_BUG_ON (x86_leaf ==CPUID_LNX_4 ); +BUILD_BUG_ON (x86_leaf ==CPUID_LNX_5 );BUILD_BUG_ON (x86_leaf >=ARRAY_SIZE (reverse_cpuid));BUILD_BUG_ON (reverse_cpuid[x86_leaf].function ==0 ); }
@@ -126,6 +128,7 @@ static __always_inline u32 __feature_translate(int x86_feature)KVM_X86_TRANSLATE_FEATURE (CONSTANT_TSC );KVM_X86_TRANSLATE_FEATURE (PERFMON_V2 );KVM_X86_TRANSLATE_FEATURE (RRSBA_CTRL ); +KVM_X86_TRANSLATE_FEATURE (BHI_CTRL );default :return x86_feature; }
arch/x86/kvm/svm/sev.c +28 -17
108 lines not on this page · raw message
arch/x86/kvm/trace.h +5 -5
@@ -732,13 +732,13 @@ TRACE_EVENT(kvm_nested_intr_vmexit,* Tracepoint for nested #vmexit because of interrupt pending */ TRACE_EVENT(kvm_invlpga, - TP_PROTO(__u64 rip, int asid, u64 address), + TP_PROTO(__u64 rip, unsigned int asid, u64 address), TP_ARGS(rip, asid, address), TP_STRUCT__entry( - __field( __u64, rip ) - __field( int, asid ) - __field( __u64, address ) + __field( __u64, rip ) + __field( unsigned int, asid ) + __field( __u64, address ) ), TP_fast_assign(
@@ -747,7 +747,7 @@ TRACE_EVENT(kvm_invlpga, __entry->address = address; ), -TP_printk ("rip: 0x%016llx asid: %d address: 0x%016llx" , +TP_printk ("rip: 0x%016llx asid: %u address: 0x%016llx" , __entry->rip, __entry->asid, __entry->address) );
arch/x86/kvm/vmx/vmenter.S +2 -0
@@ -275,6 +275,8 @@ SYM_INNER_LABEL_ALIGN(vmx_vmexit, SYM_L_GLOBAL) call vmx_spec_ctrl_restore_host + CLEAR_BRANCH_HISTORY_VMEXIT + /* Put return value in AX */ mov %_ASM_BX, %_ASM_AX
arch/x86/kvm/x86.c +1 -1
@@ -1621,7 +1621,7 @@ static bool kvm_is_immutable_feature_msr(u32 msr) ARCH_CAP_PSCHANGE_MC_NO | ARCH_CAP_TSX_CTRL_MSR | ARCH_CAP_TAA_NO | \ ARCH_CAP_SBDR_SSDP_NO | ARCH_CAP_FBSDP_NO | ARCH_CAP_PSDP_NO | \ ARCH_CAP_FB_CLEAR | ARCH_CAP_RRSBA | ARCH_CAP_PBRSB_NO | ARCH_CAP_GDS_NO | \ - ARCH_CAP_RFDS_NO | ARCH_CAP_RFDS_CLEAR) + ARCH_CAP_RFDS_NO | ARCH_CAP_RFDS_CLEAR | ARCH_CAP_BHI_NO)static u64 kvm_get_arch_capabilities (void ) {
arch/x86/lib/Makefile +0 -13
@@ -14,19 +14,6 @@ ifdef CONFIG_KCSAN CFLAGS_REMOVE_delay.o = $(CC_FLAGS_FTRACE) endif -# Early boot use of cmdline; don't instrument it -ifdef CONFIG_AMD_MEM_ENCRYPT -KCOV_INSTRUMENT_cmdline.o := n -KASAN_SANITIZE_cmdline.o := n -KCSAN_SANITIZE_cmdline.o := n - -ifdef CONFIG_FUNCTION_TRACER -CFLAGS_REMOVE_cmdline.o = -pg -endif - -CFLAGS_cmdline.o := -fno-stack-protector -fno-jump-tables -endif - inat_tables_script = $(srctree)/arch/x86/tools/gen-insn-attr-x86.awk inat_tables_maps = $(srctree)/arch/x86/lib/x86-opcode-map.txt quiet_cmd_inat_tables = GEN $@
arch/x86/lib/retpoline.S +92 -73
212 lines not on this page · raw message
arch/x86/mm/fault.c +2 -2
@@ -376,7 +376,7 @@ static void dump_pagetable(unsigned long address) goto bad;pr_cont ("PUD %lx " ,pud_val (*pud)); -if (!pud_present (*pud) ||pud_large (*pud)) +if (!pud_present (*pud) ||pud_leaf (*pud)) goto out; pmd =pmd_offset (pud, address);
@@ -1037,7 +1037,7 @@ spurious_kernel_fault(unsigned long error_code, unsigned long address)if (!pud_present (*pud))return 0 ; -if (pud_large (*pud)) +if (pud_leaf (*pud))return spurious_kernel_fault_check (error_code, (pte_t *) pud); pmd =pmd_offset (pud, address);
arch/x86/mm/ident_map.c +5 -18
@@ -26,31 +26,18 @@ static int ident_pud_init(struct x86_mapping_info *info, pud_t *pud_page,for (; addr < end; addr = next) {pud_t *pud = pud_page +pud_index (addr);pmd_t *pmd; -bool use_gbpage; next = (addr &PUD_MASK ) +PUD_SIZE ;if (next > end) next = end; -/* if this is already a gbpage, this portion is already mapped */ -if (pud_large (*pud)) -continue ; - -/* Is using a gbpage allowed? */ - use_gbpage = info->direct_gbpages; - -/* Don't use gbpage if it maps more than the requested region. */ -/* at the begining: */ - use_gbpage &= ((addr & ~PUD_MASK ) ==0 ); -/* ... or at the end: */ - use_gbpage &= ((next & ~PUD_MASK ) ==0 ); - -/* Never overwrite existing mappings */ - use_gbpage &= !pud_present (*pud); - -if (use_gbpage) { +if (info->direct_gbpages) {pud_t pudval; +if (pud_present (*pud)) +continue ; + + addr &=PUD_MASK ; pudval =__pud ((addr - info->offset) | info->page_flag);set_pud (pud, pudval);continue ;
arch/x86/mm/init_64.c +2 -2
@@ -617,7 +617,7 @@ phys_pud_init(pud_t *pud_page, unsigned long paddr, unsigned long paddr_end, }if (!pud_none (*pud)) { -if (!pud_large (*pud)) { +if (!pud_leaf (*pud)) { pmd =pmd_offset (pud,0 ); paddr_last = phys_pmd_init(pmd, paddr, paddr_end,
@@ -1163,7 +1163,7 @@ remove_pud_table(pud_t *pud_start, unsigned long addr, unsigned long end,if (!pud_present (*pud))continue ; -if (pud_large (*pud) && +if (pud_leaf (*pud) &&IS_ALIGNED (addr,PUD_SIZE ) &&IS_ALIGNED (next,PUD_SIZE )) {spin_lock (&init_mm.page_table_lock);
arch/x86/mm/kasan_init_64.c +1 -1
@@ -115,7 +115,7 @@ static void __init kasan_populate_p4d(p4d_t *p4d, unsigned long addr, pud =pud_offset (p4d, addr);do { next =pud_addr_end (addr, end); -if (!pud_large (*pud)) +if (!pud_leaf (*pud))kasan_populate_pud (pud, addr, next, nid); }while (pud++, addr = next, addr != end); }
arch/x86/mm/mem_encrypt_identity.c +21 -55
197 lines not on this page · raw message
arch/x86/mm/pat/memtype.c +35 -14
79 lines not on this page · raw message
arch/x86/mm/pat/set_memory.c +3 -3
@@ -684,7 +684,7 @@ pte_t *lookup_address_in_pgd(pgd_t *pgd, unsigned long address,return NULL ; *level =PG_LEVEL_1G ; -if (pud_large (*pud) || !pud_present (*pud)) +if (pud_leaf (*pud) || !pud_present (*pud))return (pte_t *)pud; pmd =pmd_offset (pud, address);
@@ -743,7 +743,7 @@ pmd_t *lookup_pmd_address(unsigned long address)return NULL ; pud =pud_offset (p4d, address); -if (pud_none (*pud) ||pud_large (*pud) || !pud_present (*pud)) +if (pud_none (*pud) ||pud_leaf (*pud) || !pud_present (*pud))return NULL ;return pmd_offset (pud, address);
@@ -1274,7 +1274,7 @@ static void unmap_pud_range(p4d_t *p4d, unsigned long start, unsigned long end)*/ while (end - start >=PUD_SIZE ) { -if (pud_large (*pud)) +if (pud_leaf (*pud))pud_clear (pud);else unmap_pmd_range (pud, start, start +PUD_SIZE );
arch/x86/mm/pgtable.c +1 -1
@@ -774,7 +774,7 @@ int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot)*/ int pud_clear_huge (pud_t *pud) { -if (pud_large (*pud)) { +if (pud_leaf (*pud)) {pud_clear (pud);return 1 ; }
arch/x86/mm/pti.c +1 -1
@@ -217,7 +217,7 @@ static pmd_t *pti_user_pagetable_walk_pmd(unsigned long address) pud =pud_offset (p4d, address);/* The user page tables do not use large mappings: */ -if (pud_large (*pud)) { +if (pud_leaf (*pud)) {WARN_ON (1 );return NULL ; }
arch/x86/net/bpf_jit_comp.c +1 -1
@@ -344,7 +344,7 @@ static int emit_call(u8 **pprog, void *func, void *ip)static int emit_rsb_call (u8 **pprog,void *func,void *ip) {OPTIMIZER_HIDE_VAR (func); -x86_call_depth_emit_accounting (pprog, func); + ip +=x86_call_depth_emit_accounting (pprog, func);return emit_patch (pprog, func, ip,0xE8 ); }
arch/x86/power/hibernate.c +1 -1
@@ -170,7 +170,7 @@ int relocate_restore_code(void) goto out; } pud =pud_offset (p4d, relocated_restore_code); -if (pud_large (*pud)) { +if (pud_leaf (*pud)) {set_pud (pud,__pud (pud_val (*pud) & ~_PAGE_NX)); goto out; }
arch/x86/xen/mmu_pv.c +2 -2
@@ -1082,7 +1082,7 @@ static void __init xen_cleanmfnmap_pud(pud_t *pud, bool unpin)pmd_t *pmd_tbl;int i; -if (pud_large (*pud)) { +if (pud_leaf (*pud)) { pa =pud_val (*pud) &PHYSICAL_PAGE_MASK ;xen_free_ro_pages (pa,PUD_SIZE );return ;
@@ -1863,7 +1863,7 @@ static phys_addr_t __init xen_early_virt_to_phys(unsigned long vaddr)if (!pud_present (pud))return 0 ; pa =pud_val (pud) &PTE_PFN_MASK ; -if (pud_large (pud)) +if (pud_leaf (pud))return pa + (vaddr & ~PUD_MASK ); pmd = native_make_pmd(xen_read_phys_ulong(pa + pmd_index(vaddr) *
drivers/acpi/acpica/dbnames.c +6 -2
@@ -550,8 +550,12 @@ acpi_db_walk_for_fields(acpi_handle obj_handle,ACPI_FREE (buffer.pointer); buffer.length =ACPI_ALLOCATE_LOCAL_BUFFER ; -acpi_evaluate_object (obj_handle,NULL ,NULL , &buffer); - + status =acpi_evaluate_object (obj_handle,NULL ,NULL , &buffer); +if (ACPI_FAILURE (status)) { +acpi_os_printf ("Could Not evaluate object %p\n" , + obj_handle); +return (AE_OK ); + }/* * Since this is a field unit, surround the output in braces */
drivers/ata/sata_mv.c +31 -32
87 lines not on this page · raw message
drivers/ata/sata_sx4.c +2 -4
@@ -957,8 +957,7 @@ static void pdc20621_get_from_dimm(struct ata_host *host, void *psource, offset -= (idx * window_size); idx++; - dist = ((long ) (window_size - (offset + size))) >=0 ? size : - (long ) (window_size - offset); + dist =min (size, window_size - offset);memcpy_fromio (psource, dimm_mmio + offset /4 , dist); psource += dist;
@@ -1005,8 +1004,7 @@ static void pdc20621_put_to_dimm(struct ata_host *host, void *psource,readl (mmio +PDC_DIMM_WINDOW_CTLR ); offset -= (idx * window_size); idx++; - dist = ((long )(s32)(window_size - (offset + size))) >=0 ? size : - (long ) (window_size - offset); + dist =min (size, window_size - offset);memcpy_toio (dimm_mmio + offset /4 , psource, dist);writel (0x01 , mmio +PDC_GENERAL_CTLR );readl (mmio +PDC_GENERAL_CTLR );
drivers/base/core.c +23 -3
@@ -44,6 +44,7 @@ static bool fw_devlink_is_permissive(void);static void __fw_devlink_link_to_consumers (struct device *dev);static bool fw_devlink_drv_reg_done;static bool fw_devlink_best_effort; +static struct workqueue_struct *device_link_wq;/** * __fwnode_link_add - Create a link between two fwnode_handles.
@@ -531,12 +532,26 @@ static void devlink_dev_release(struct device *dev)/* * It may take a while to complete this work because of the SRCU * synchronization in device_link_release_fn() and if the consumer or -* supplier devices get deleted when it runs, so put it into the "long" -* workqueue. +* supplier devices get deleted when it runs, so put it into the +* dedicated workqueue. */ -queue_work (system_long_wq, &link->rm_work); +queue_work (device_link_wq, &link->rm_work); } +/** +* device_link_wait_removal - Wait for ongoing devlink removal jobs to terminate +*/ +void device_link_wait_removal (void ) +{ +/* +* devlink removal jobs are queued in the dedicated work queue. +* To be sure that all removal jobs are terminated, ensure that any +* scheduled work has run to completion. +*/ +flush_workqueue (device_link_wq); +} +EXPORT_SYMBOL_GPL (device_link_wait_removal); +static struct class devlink_class = { .name ="devlink" , .dev_groups = devlink_groups,
@@ -4090,9 +4105,14 @@ int __init devices_init(void) sysfs_dev_char_kobj =kobject_create_and_add ("char" , dev_kobj);if (!sysfs_dev_char_kobj) goto char_kobj_err; + device_link_wq =alloc_workqueue ("device_link_wq" ,0 ,0 ); +if (!device_link_wq) + goto wq_err;return 0 ; + wq_err: +kobject_put (sysfs_dev_char_kobj); char_kobj_err:kobject_put (sysfs_dev_block_kobj); block_kobj_err:
drivers/base/regmap/regcache-maple.c +3 -3
@@ -112,7 +112,7 @@ static int regcache_maple_drop(struct regmap *map, unsigned int min,unsigned long *entry, *lower, *upper;unsigned long lower_index, lower_last;unsigned long upper_index, upper_last; -int ret; +int ret =0 ; lower =NULL ; upper =NULL ;
@@ -145,7 +145,7 @@ static int regcache_maple_drop(struct regmap *map, unsigned int min, upper_index = max +1 ; upper_last = mas.last; - upper =kmemdup (&entry[max +1 ], + upper =kmemdup (&entry[max - mas.index +1 ], ((mas.last - max) *sizeof (unsigned long )), map->alloc_flags);
@@ -244,7 +244,7 @@ static int regcache_maple_sync(struct regmap *map, unsigned int min,unsigned long lmin = min;unsigned long lmax = max;unsigned int r, v, sync_start; -int ret; +int ret =0 ;bool sync_needed = false; map->cache_bypass = true;
drivers/bluetooth/btqca.c +6 -2
@@ -758,11 +758,15 @@ EXPORT_SYMBOL_GPL(qca_uart_setup);int qca_set_bdaddr (struct hci_dev *hdev,const bdaddr_t *bdaddr) { +bdaddr_t bdaddr_swapped;struct sk_buff *skb;int err; - skb =__hci_cmd_sync_ev (hdev,EDL_WRITE_BD_ADDR_OPCODE ,6 , bdaddr, -HCI_EV_VENDOR ,HCI_INIT_TIMEOUT ); +baswap (&bdaddr_swapped, bdaddr); + + skb =__hci_cmd_sync_ev (hdev,EDL_WRITE_BD_ADDR_OPCODE ,6 , + &bdaddr_swapped,HCI_EV_VENDOR , +HCI_INIT_TIMEOUT );if (IS_ERR (skb)) { err =PTR_ERR (skb);bt_dev_err (hdev,"QCA Change address cmd failed (%d)" , err);
drivers/bluetooth/hci_qca.c +9 -10
@@ -7,7 +7,6 @@* * Copyright (C) 2007 Texas Instruments, Inc. * Copyright (c) 2010, 2012, 2018 The Linux Foundation. All rights reserved. -* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
Lines of this file are not shown. View the raw message.
drivers/firmware/efi/libstub/efi-stub-helper.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/firmware/efi/libstub/x86-stub.c +13 -1
Lines of this file are not shown. View the raw message.
drivers/gpio/gpiolib-cdev.c +50 -8
58 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +38 -5
43 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +7 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +5 -6
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/include/amd_shared.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_cursor.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_display_types.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_fb_pin.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/skl_universal_plane.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gem/i915_gem_create.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/gen8_engine_cs.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_engine_cs.c +18 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_engine_pm.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_execlists_submission.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.c new file +39 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.h new file +13 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_gt_regs.h +6 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_workarounds.c +130 -292
422 lines not on this page · raw message
drivers/gpu/drm/i915/gt/uc/intel_guc.c +7 -19
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +2 -4
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/intel_clock_gating.c +0 -8
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/panfrost/panfrost_gpu.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c +19 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_main.c +9 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_tqp_stats.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c +17 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000/e1000_hw.c +20 -26
46 lines not on this page · raw message
drivers/net/ethernet/intel/e1000e/80003es2lan.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/82571.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/ethtool.c +3 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/ich8lan.c +33 -23
56 lines not on this page · raw message
drivers/net/ethernet/intel/e1000e/mac.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/netdev.c +25 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/phy.c +115 -76
191 lines not on this page · raw message
drivers/net/ethernet/intel/e1000e/phy.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_pf.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_vf.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e.h +22 -37
59 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_adminq.c +2 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_adminq.h +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_alloc.h +12 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_client.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_common.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_dcb.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_ddp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_debug.h new file +47 -0
47 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_debugfs.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_diag.h +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_hmc.c +5 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_hmc.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_io.h new file +16 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c +3 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +46 -24
70 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_nvm.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_osdep.h deleted +0 -59
59 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_prototype.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_ptp.c +5 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_register.h +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_txrx.c +64 -25
89 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_txrx.h +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_txrx_common.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_type.h +9 -47
56 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +24 -23
47 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_xsk.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_xsk.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_common.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_ethtool.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_fdir.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_txrx.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_adminq_cmd.h +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_lag.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_lib.c +47 -27
74 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_switch.c +14 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_switch.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_vf_vsi_vlan_ops.c +8 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/e1000_82575.c +11 -18
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/e1000_i210.c +10 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/e1000_mac.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/e1000_nvm.c +8 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/e1000_phy.c +5 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/igb_ethtool.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/igb_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igbvf/netdev.c +16 -17
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_i225.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_phy.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +14 -16
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +3 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +3 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c +8 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/cgx.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c +22 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.c +18 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/realtek/r8169_main.c +36 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +14 -19
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +31 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +31 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/iwl-trans.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/rfi.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c +18 -13
Lines of this file are not shown. View the raw message.
drivers/spi/spi-s3c64xx.c +57 -23
80 lines not on this page · raw message
fs/btrfs/extent_io.c +151 -57
208 lines not on this page · raw message
fs/smb/client/connect.c +44 -1
45 lines not on this page · raw message
fs/smb/client/file.c +95 -16
111 lines not on this page · raw message
io_uring/kbuf.c +41 -77
118 lines not on this page · raw message
net/bluetooth/hci_debugfs.c +32 -16
48 lines not on this page · raw message
net/ipv4/inet_fragment.c +57 -13
70 lines not on this page · raw message
net/ipv6/netfilter/nf_conntrack_reasm.c +1 -1
Lines of this file are not shown. View the raw message.
net/mptcp/protocol.c +42 -64
106 lines not on this page · raw message
net/netfilter/nf_tables_api.c +72 -20
92 lines not on this page · raw message
scripts/mod/modpost.c +9 -64
73 lines not on this page · raw message
scripts/mod/symsearch.c new file +199 -0
199 lines not on this page · raw message
tools/arch/x86/include/asm/cpufeatures.h +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_connect.sh +56 -29
85 lines not on this page · raw message
tools/testing/selftests/net/mptcp/mptcp_join.sh +3 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/reuseaddr_conflict.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/test_vxlan_mdb.sh +128 -77
205 lines not on this page · raw message
tools/testing/selftests/net/udpgro_fwd.sh +2 -8
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.