Skip to contentSkip to conversation

Linux 5.14.10

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Oct 7, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.14.10 kernel.

All users of the 5.14 kernel series must upgrade.

The updated 5.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.14.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

------------

 Makefile                                                |    2 
 arch/m68k/kernel/entry.S                                |    2 
 arch/mips/net/bpf_jit.c                                 |   57 +++++--
 arch/nios2/Kconfig.debug                                |    3 
 arch/nios2/kernel/setup.c                               |    2 
 arch/s390/include/asm/ccwgroup.h                        |    2 
 arch/x86/crypto/aesni-intel_glue.c                      |    2 
 arch/x86/events/intel/core.c                            |    1 
 arch/x86/include/asm/kvm_page_track.h                   |    2 
 arch/x86/include/asm/kvmclock.h                         |   14 +
 arch/x86/kernel/kvmclock.c                              |   13 -
 arch/x86/kvm/cpuid.c                                    |    4 
 arch/x86/kvm/emulate.c                                  |    1 
 arch/x86/kvm/ioapic.c                                   |   10 -
 arch/x86/kvm/mmu/page_track.c                           |    4 
 arch/x86/kvm/svm/nested.c                               |    1 
 arch/x86/kvm/svm/sev.c                                  |   92 +++++++----
 arch/x86/kvm/vmx/evmcs.c                                |   12 +
 arch/x86/kvm/vmx/nested.c                               |    6 
 arch/x86/kvm/vmx/vmx.c                                  |   11 -
 arch/x86/kvm/x86.c                                      |   10 +
 arch/x86/net/bpf_jit_comp.c                             |   66 +++++---
 block/bfq-iosched.c                                     |   16 -
 drivers/acpi/nfit/core.c                                |   12 +
 drivers/base/core.c                                     |   36 +++-
 drivers/block/nbd.c                                     |   29 ++-
 drivers/cpufreq/cpufreq_governor_attr_set.c             |    2 
 drivers/crypto/ccp/ccp-ops.c                            |   14 -
 drivers/gpio/gpio-pca953x.c                             |   11 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c              |   15 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c             |   31 +++
 drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c               |   62 ++-----
 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h                |    9 -
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c                   |    2 
 drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c                  |    8 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c       |    2 
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c        |   15 -
 drivers/gpu/drm/i915/gt/intel_rps.c                     |    2 
 drivers/gpu/drm/i915/gvt/scheduler.c                    |    4 
 drivers/gpu/drm/i915/i915_request.c                     |   11 -
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c                  |    8 
 drivers/hid/hid-betopff.c                               |   13 +
 drivers/hid/hid-u2fzero.c                               |    4 
 drivers/hid/usbhid/hid-core.c                           |   13 +
 drivers/hwmon/mlxreg-fan.c                              |   12 +
 drivers/hwmon/occ/common.c                              |   17 --
 drivers/hwmon/pmbus/mp2975.c                            |    2 
 drivers/hwmon/tmp421.c                                  |   71 ++++----
 drivers/hwmon/w83791d.c                                 |   29 +--
 drivers/hwmon/w83792d.c                                 |   28 +--
 drivers/hwmon/w83793.c                                  |   26 +--
 drivers/infiniband/core/cma.c                           |   51 +++++-
 drivers/infiniband/core/cma_priv.h                      |    1 
 drivers/infiniband/hw/hfi1/ipoib_tx.c                   |    8 
 drivers/infiniband/hw/hns/hns_roce_cq.c                 |   31 ++-
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c              |   13 -
 drivers/infiniband/hw/irdma/cm.c                        |    4 
 drivers/infiniband/hw/irdma/hw.c                        |   14 +
 drivers/infiniband/hw/irdma/i40iw_if.c                  |    2 
 drivers/infiniband/hw/irdma/main.h                      |    1 
 drivers/infiniband/hw/irdma/user.h                      |    2 
 drivers/infiniband/hw/irdma/utils.c                     |    2 
 drivers/infiniband/hw/irdma/verbs.c                     |    9 -
 drivers/interconnect/qcom/sdm660.c                      |   11 -
 drivers/ipack/devices/ipoctal.c                         |   63 +++++--
 drivers/media/platform/s5p-jpeg/jpeg-core.c             |   18 +-
 drivers/media/platform/s5p-jpeg/jpeg-core.h             |   28 +--
 drivers/media/rc/ir_toy.c                               |   21 ++
 drivers/mmc/host/renesas_sdhi_core.c                    |    2 
 drivers/net/dsa/mv88e6xxx/chip.c                        |   17 +-
 drivers/net/dsa/mv88e6xxx/chip.h                        |    1 
 drivers/net/dsa/mv88e6xxx/global1.c                     |    2 
 drivers/net/dsa/mv88e6xxx/port.c                        |    2 
 drivers/net/ethernet/freescale/enetc/enetc_pf.c         |    3 
 drivers/net/ethernet/hisilicon/hns3/hnae3.h             |    1 
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c         |   16 -
 drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c      |  105 ++++++++-----
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c  |   21 +-
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c  |   29 +--
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c |   19 +-
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c   |   33 ----
 drivers/net/ethernet/intel/e100.c                       |   22 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c        |    2 
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c           |    8 
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c          |   47 +++--
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h            |    1 
 drivers/net/ethernet/micrel/Makefile                    |    6 
 drivers/net/ethernet/micrel/ks8851_common.c             |    8 
 drivers/net/ethernet/pensando/ionic/ionic_stats.c       |    9 -
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c       |    4 
 drivers/net/mhi/net.c                                   |    6 
 drivers/net/phy/bcm7xxx.c                               |  114 +++++++++++++-
 drivers/net/phy/mdio_bus.c                              |    4 
 drivers/net/usb/hso.c                                   |    6 
 drivers/net/usb/smsc95xx.c                              |    3 
 drivers/net/wireless/mac80211_hwsim.c                   |    4 
 drivers/nvme/host/core.c                                |    4 
 drivers/nvme/host/nvme.h                                |    6 
 drivers/nvme/host/pci.c                                 |    3 
 drivers/pinctrl/qcom/pinctrl-spmi-gpio.c                |   37 ++++
 drivers/platform/x86/intel-hid.c                        |   27 ++-
 drivers/ptp/ptp_kvm_x86.c                               |    9 -
 drivers/s390/cio/ccwgroup.c                             |   10 -
 drivers/s390/net/qeth_core.h                            |    1 
 drivers/s390/net/qeth_core_main.c                       |   19 --
 drivers/s390/net/qeth_l2_main.c                         |    1 
 drivers/s390/net/qeth_l3_main.c                         |    1 
 drivers/scsi/csiostor/csio_init.c                       |    1 
 drivers/scsi/elx/libefc/efc_device.c                    |    7 
 drivers/scsi/elx/libefc/efc_fabric.c                    |    3 
 drivers/scsi/qla2xxx/qla_def.h                          |    1 
 drivers/scsi/qla2xxx/qla_isr.c                          |    2 
 drivers/scsi/qla2xxx/qla_nvme.c                         |   40 ++--
 drivers/scsi/ufs/ufshcd-pci.c                           |   78 +++++++++
 drivers/scsi/ufs/ufshcd.c                               |    6 
 drivers/scsi/ufs/ufshcd.h                               |    1 
 drivers/staging/media/hantro/hantro_drv.c               |    2 
 drivers/staging/media/sunxi/cedrus/cedrus_video.c       |    2 
 drivers/tty/vt/vt.c                                     |   21 ++
 drivers/watchdog/Kconfig                                |    2 
 fs/binfmt_elf.c                                         |    2 
 fs/debugfs/inode.c                                      |    2 
 fs/ext4/dir.c                                           |    6 
 fs/ext4/extents.c                                       |   19 +-
 fs/ext4/fast_commit.c                                   |    6 
 fs/ext4/inode.c                                         |    5 
 fs/ext4/super.c                                         |   21 +-
 fs/verity/enable.c                                      |    2 
 fs/verity/open.c                                        |    2 
 include/linux/bpf.h                                     |    2 
 include/linux/fwnode.h                                  |   11 -
 include/net/ip_fib.h                                    |    2 
 include/net/nexthop.h                                   |    2 
 include/net/sock.h                                      |    2 
 include/sound/rawmidi.h                                 |    1 
 include/uapi/sound/asound.h                             |    1 
 kernel/bpf/bpf_struct_ops.c                             |    7 
 kernel/bpf/core.c                                       |    2 
 kernel/sched/cpufreq_schedutil.c                        |   16 +
 kernel/sched/debug.c                                    |    8 
 kernel/sched/fair.c                                     |    6 
 lib/Kconfig.kasan                                       |    2 
 mm/util.c                                               |    4 
 net/core/sock.c                                         |   32 +++
 net/ipv4/fib_semantics.c                                |   16 +
 net/ipv4/udp.c                                          |   10 -
 net/ipv6/route.c                                        |    5 
 net/ipv6/udp.c                                          |    2 
 net/mac80211/mesh_ps.c                                  |    3 
 net/mac80211/rate.c                                     |    4 
 net/mac80211/tx.c                                       |   12 +
 net/mac80211/wpa.c                                      |    6 
 net/mptcp/mptcp_diag.c                                  |    2 
 net/mptcp/pm_netlink.c                                  |    4 
 net/mptcp/protocol.h                                    |    2 
 net/mptcp/subflow.c                                     |    2 
 net/mptcp/syncookies.c                                  |   13 -
 net/mptcp/token.c                                       |   11 -
 net/mptcp/token_test.c                                  |   14 -
 net/netfilter/ipset/ip_set_hash_gen.h                   |    4 
 net/netfilter/ipvs/ip_vs_conn.c                         |    4 
 net/netfilter/nf_conntrack_core.c                       |   70 ++++----
 net/netfilter/nf_tables_api.c                           |   30 ++-
 net/netfilter/nft_compat.c                              |   17 +-
 net/netfilter/xt_LOG.c                                  |   10 +
 net/netfilter/xt_NFLOG.c                                |   10 +
 net/sched/cls_flower.c                                  |    6 
 net/sctp/input.c                                        |    2 
 net/unix/af_unix.c                                      |   34 +++-
 sound/core/rawmidi.c                                    |    9 +
 sound/firewire/motu/amdtp-motu.c                        |    7 
 sound/pci/hda/patch_realtek.c                           |  129 ++++++++++++++++
 sound/soc/fsl/fsl_esai.c                                |   16 +
 sound/soc/fsl/fsl_micfil.c                              |   15 +
 sound/soc/fsl/fsl_sai.c                                 |   14 +
 sound/soc/fsl/fsl_spdif.c                               |   14 +
 sound/soc/fsl/fsl_xcvr.c                                |   15 +
 sound/soc/mediatek/common/mtk-afe-fe-dai.c              |   19 +-
 sound/soc/sof/imx/imx8.c                                |    9 -
 sound/soc/sof/imx/imx8m.c                               |    9 -
 sound/soc/sof/xtensa/core.c                             |    4 
 tools/lib/bpf/linker.c                                  |    8 
 tools/objtool/special.c                                 |   38 +++-
 tools/perf/arch/x86/util/iostat.c                       |    2 
 tools/perf/builtin-stat.c                               |    2 
 tools/perf/tests/dwarf-unwind.c                         |   39 +++-
 tools/testing/selftests/bpf/Makefile                    |    3 
 tools/testing/selftests/bpf/test_lwt_ip_encap.sh        |   13 -
 188 files changed, 1839 insertions(+), 861 deletions(-)

Aaro Koskinen (1):
smsc95xx: fix stalled rx after link change

Adrian Hunter (1):
scsi: ufs: ufs-pci: Fix Intel LKF link stability

Al Viro (1):

      m68k: Update ->thread.esp0 before calling syscall_trace() in ret_from_signal

Alexandra Winter (2):
s390/qeth: Fix deadlock in remove_discipline s390/qeth: fix deadlock during failing recovery

Andrea Claudi (1):
ipvs: check that ip_vs_conn_tab_bits is between 8 and 20

Andrej Shadura (1):
HID: u2fzero: ignore incomplete packets without data

Andrew Lunn (3):
dsa: mv88e6xxx: 6161: Use chip wide MAX MTU
dsa: mv88e6xxx: Fix MTU definition
dsa: mv88e6xxx: Include tagger overhead when setting MTU for DSA and CPU ports

Andrey Gusakov (1):
gpio: pca953x: do not ignore i2c errors

Anirudh Rayabharam (1):
HID: usbhid: free raw_report buffers in usbhid_stop

Arnd Bergmann (1):
net: ks8851: fix link error

Basavaraj Natikar (1):
HID: amd_sfh: Fix potential NULL pointer dereference - take 2

Cameron Berkenpas (1):
ALSA: hda/realtek: Quirks to enable speaker output for Lenovo Legion 7i 15IMHG05, Yoga 7i 14ITL5/15ITL5, and 13s Gen2 laptops.

Charlene Liu (1):
drm/amd/display: Pass PCI deviceid into DC

Chen Jingwen (1):
elf: don't use MAP_FIXED_NOREPLACE for elf interpreter mappings

Chenyi Qiang (1):
KVM: nVMX: Fix nested bus lock VM exit

Chih-Kang Chang (1):

      mac80211: Fix ieee80211_amsdu_aggregate frag_tail bug

Christoph Lameter (1):
IB/cma: Do not send IGMP leaves for sendonly Multicast groups

Dan Carpenter (1):
crypto: ccp - fix resource leaks in ccp_run_aes_gcm_cmd()

Daniele Palmas (1):
drivers: net: mhi: fix error path in mhi_net_newlink

David Collins (1):
pinctrl: qcom: spmi-gpio: correct parent irqspec translation

Davide Caratti (1):
mptcp: allow changing the 'backup' bit when no sockets are open

Dongliang Mu (1):
usb: hso: remove the bailout parameter

Eddie James (1):
hwmon: (occ) Fix P10 VRM temp sensors

Eric Biggers (1):
fs-verity: fix signed integer overflow with i_size near S64_MAX

Eric Dumazet (3):
af_unix: fix races in sk_peer_pid and sk_peer_cred accesses
net: udp: annotate data race around udp_sk(sk)->corkflag
netfilter: conntrack: serialize hash resizes and cleanups

Evgeny Novikov (1):
HID: amd_sfh: Fix potential NULL pointer dereference

F.A.Sulaiman (1):
HID: betop: fix slab-out-of-bounds Write in betop_probe

Felix Fietkau (1):
Revert "mac80211: do not use low data rates for data frames with no ack flag"

Feng Zhou (1):
ixgbe: Fix NULL pointer dereference in ixgbe_xdp_setup

Florian Fainelli (1):
net: phy: bcm7xxx: Fixed indirect MMD operations

Florian Westphal (3):
netfilter: nf_tables: unlink table before deleting it
netfilter: log: work around missing softdep backend module
mptcp: don't return sockets in foreign netns

Greg Kroah-Hartman (1):

      Linux 5.14.10

Guangbin Huang (2):
net: hns3: fix always enable rx vlan filter problem after selftest
net: hns3: disable firmware compatible features when uninstall PF

Guchun Chen (2):
drm/amdgpu: avoid over-handle of fence driver fini in s3 test (v2) drm/amdgpu: stop scheduler when calling hw_fini (v2)

Guo Zhi (1):
RDMA/hfi1: Fix kernel pointer leak

Haimin Zhang (1):
KVM: x86: Handle SRCU initialization failure during page track init

Hawking Zhang (1):
drm/amdgpu: correct initial cp_hqd_quantum for gfx9

Hou Tao (2):
bpf: Handle return value of BPF_PROG_TYPE_STRUCT_OPS prog
ext4: limit the number of blocks in one ADD_RANGE TLV

Ian Rogers (1):
perf test: Fix DWARF unwind for optimized builds.

Igor Matheus Andrade Torrente (1):
tty: Fix out-of-bound vmalloc access in imageblit

Jackie Liu (1):
watchdog/sb_watchdog: fix compilation problem due to COMPILE_TEST

Jacob Keller (2):
e100: fix length calculation in e100_get_regs_len
e100: fix buffer overrun in e100_get_regs

James Morse (1):
cpufreq: schedutil: Destroy mutex before kobject_put() frees the memory

James Smart (1):
scsi: elx: efct: Fix void-pointer-to-enum-cast warning for efc_nport_topology

Jaroslav Kysela (1):
ALSA: rawmidi: introduce SNDRV_RAWMIDI_IOCTL_USER_PVERSION

Jason Gunthorpe (3):
RDMA/cma: Do not change route.addr.src_addr.ss_family RDMA/cma: Ensure rdma_addr_cancel() happens before issuing more requests RDMA/hns: Work around broken constant propagation in gcc 8

Jeffle Xu (1):
ext4: fix reserved space counter leakage

Jens Axboe (1):
Revert "block, bfq: honor already-setup queue merges"

Jernej Skrabec (1):
media: hantro: Fix check for single irq

Jia He (1):
ACPI: NFIT: Use fallback node id when numa info in NFIT table is incorrect

Jian Shen (5):
net: hns3: do not allow call hns3_nic_net_open repeatedly
net: hns3: remove tc enable checking
net: hns3: don't rollback when destroy mqprio fail
net: hns3: fix mixed flag HCLGE_FLAG_MQPRIO_ENABLE and HCLGE_FLAG_DCB_ENABLE
net: hns3: fix show wrong state when add existing uc mac address

Jiri Benc (2):
selftests, bpf: Fix makefile dependencies on libbpf selftests, bpf: test_lwt_ip_encap: Really disable rp_filter

Johan Almbladh (1):
bpf, x86: Fix bpf mapping of atomic fetch implementation

Johan Hovold (5):
ipack: ipoctal: fix stack information leak
ipack: ipoctal: fix tty registration race
ipack: ipoctal: fix tty-registration error handling
ipack: ipoctal: fix missing allocation-failure check
ipack: ipoctal: fix module reference leak

Johannes Berg (3):
mac80211: fix use-after-free in CCMP/GCMP RX
mac80211: mesh: fix potentially unaligned access
mac80211-hwsim: fix late beacon hrtimer handling

Jonathan Hsu (1):
scsi: ufs: Fix illegal offset in UPIU event trace

Josip Pavic (1):
drm/amd/display: initialize backlight_ramping_override to false

José Expósito (1):
platform/x86/intel: hid: Add DMI switches allow list

Jozsef Kadlecsik (1):
netfilter: ipset: Fix oversized kvmalloc() calls

Kan Liang (1):
perf/x86/intel: Update event constraints for ICX

Keith Busch (1):
nvme: add command id quirk for apple controllers

Kevin Hao (1):
cpufreq: schedutil: Use kobject release() method to free sugov_tunables

Kumar Kartikeya Dwivedi (1):
libbpf: Fix segfault in static linker for objects without BTF

Lama Kayal (1):
net/mlx4_en: Resolve bad operstate value

Like Xu (2):
perf iostat: Use system-wide mode if the target cpu_list is unspecified perf iostat: Fix Segmentation fault from NULL 'struct perf_counts_values *'

Likun Gao (1):
drm/amdgpu: adjust fence driver enable sequence

Linus Torvalds (3):
kvm: fix objtool relocation warning
mm: don't allow oversized kvmalloc() calls
objtool: print out the symbol type when complaining about it

Lorenz Bauer (1):
bpf: Exempt CAP_BPF from checks against bpf_jit_limit

Lorenzo Bianconi (1):
mac80211: limit injected vht mcs/nss in ieee80211_parse_tx_radiotap

Marco Elver (1):
kasan: fix Kconfig check of CC_HAS_WORKING_NOSANITIZE_ADDRESS

Matthew Auld (1):
drm/i915/request: fix early tracepoints

Maxim Levitsky (1):
KVM: x86: nSVM: don't copy virt_ext from vmcb12

Mel Gorman (1):
sched/fair: Null terminate buffer when updating tunable_scaling

Michal Koutný (1):
sched/fair: Add ancestors of unthrottled undecayed cfs_rq

Mingwei Zhang (1):
KVM: SVM: fix missing sev_decommission in sev_receive_start

Nadezda Lutovinova (3):
hwmon: (w83793) Fix NULL pointer dereference by removing unnecessary structure field
hwmon: (w83792d) Fix NULL pointer dereference by removing unnecessary structure field
hwmon: (w83791d) Fix NULL pointer dereference by removing unnecessary structure field

Nick Desaulniers (1):
nbd: use shifts rather than multiplies

Nicolas Dufresne (1):
media: cedrus: Fix SUNXI tile size calculation

Nirmoy Das (1):
debugfs: debugfs_create_file_size(): use IS_ERR to check for error

Pablo Neira Ayuso (1):
netfilter: nf_tables: Fix oversized kvmalloc() calls

Paul Fertser (3):
hwmon: (tmp421) handle I2C errors
hwmon: (tmp421) report /PVLD condition as fault
hwmon: (tmp421) fix rounding for negative values

Peng Li (1):
net: hns3: reconstruct function hns3_self_test

Peter Gonda (3):
KVM: SEV: Update svm_vm_copy_asid_from for SEV-ES
KVM: SEV: Acquire vcpu mutex when updating VMSA
KVM: SEV: Allow some commands for mirror VM

Peter Ujfalusi (2):
ASoC: SOF: imx: imx8: Bar index is only valid for IRAM and SRAM types
ASoC: SOF: imx: imx8m: Bar index is only valid for IRAM and SRAM types

Peter Zijlstra (1):
objtool: Teach get_alt_entry() about more relocation types

Piotr Krysiuk (1):
bpf, mips: Validate conditional branch offsets

Praful Swarnakar (1):
drm/amd/display: Fix Display Flicker on embedded panels

Prike Liang (1):
drm/amdgpu: force exit gfxoff on sdma resume for rmb s0ix

Rahul Lakkireddy (1):
scsi: csiostor: Add module softdep on cxgb4

Randy Dunlap (3):
media: s5p-jpeg: rename JPEG marker constants to prevent build warnings
NIOS2: fix kconfig unmet dependency warning for SERIAL_CORE_CONSOLE
NIOS2: setup.c: drop unused variable 'dram_start'

Ritesh Harjani (1):
ext4: fix loff_t overflow in ext4_max_bitmap_size()

Saravana Kannan (3):
driver core: fw_devlink: Add support for FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD
net: mdiobus: Set FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD for mdiobus parents driver core: fw_devlink: Improve handling of cyclic dependencies

Saurav Kashyap (1):
scsi: qla2xxx: Changes to support kdump kernel for NVMe BFS

Sean Christopherson (3):
KVM: x86: Clear KVM's cached guest CR3 at RESET/INIT
KVM: x86: Swap order of CPUID entry "index" vs. "significant flag" checks
KVM: SEV: Pin guest memory for write for RECEIVE_UPDATE_DATA

Sean Young (1):
media: ir_toy: prevent device from hanging during transmit

Shannon Nelson (1):
ionic: fix gathering of debug stats

Shawn Guo (2):
interconnect: qcom: sdm660: Fix id of slv_cnoc_mnoc_cfg
interconnect: qcom: sdm660: Correct NOC_QOS_PRIORITY shift and mask

Shengjiu Wang (5):
ASoC: fsl_sai: register platform component before registering cpu dai
ASoC: fsl_esai: register platform component before registering cpu dai
ASoC: fsl_micfil: register platform component before registering cpu dai
ASoC: fsl_spdif: register platform component before registering cpu dai
ASoC: fsl_xcvr: register platform component before registering cpu dai

Shreyansh Chouhan (1):
crypto: aesni - xts_crypt() return if walk.nbytes is 0

Simon Ser (1):
drm/amdgpu: check tiling flags when creating FB on GFX8-

Sindhu Devale (4):
RDMA/irdma: Skip CQP ring during a reset
RDMA/irdma: Validate number of CQ entries on create CQ RDMA/irdma: Report correct WC error when transport retry counter is exceeded RDMA/irdma: Report correct WC error when there are MW bind errors

Takashi Sakamoto (1):
ALSA: firewire-motu: fix truncated bytes in message tracepoints

Tao Liu (1):
RDMA/cma: Fix listener leak in rdma_cma_listen_on_all() failure

Tejas Upadhyay (1):
drm/i915: Remove warning from the rps worker

Theodore Ts'o (1):
ext4: add error checking to ext4_ext_replay_set_iblocks()

Trevor Wu (1):
ASoC: mediatek: common: handle NULL case in suspend/resume function

Vadim Pasternak (2):
hwmon: (mlxreg-fan) Return non-zero value when fan current state is enforced from sysfs
hwmon: (pmbus/mp2975) Add missed POUT attribute for page 1 mp2975 controller

Vitaly Kuznetsov (2):
KVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()
KVM: nVMX: Filter out all unsupported controls when eVMCS was activated

Vlad Buslov (1):
net: sched: flower: protect fl_walk() with rcu

Vladimir Oltean (1):
net: enetc: fix the incorrect clearing of IF_MODE bits

Wenpeng Liang (2):
RDMA/hns: Fix the size setting error when copying CQE in clean_cq() RDMA/hns: Add the check of the CQE size of the user space

Wolfram Sang (1):
mmc: renesas_sdhi: fix regression with hard reset on old SDHIs

Wong Vee Khee (1):
net: stmmac: fix EEE init issue when paired with EEE capable PHYs

Xiao Liang (1):
net: ipv4: Fix rtnexthop len when RTA_FLOW is present

Xin Long (1):
sctp: break out if skb_header_pointer returns NULL in sctp_rcv_ootb

Yong Zhi (1):
ASoC: SOF: Fix DSP oops stack dump output contents

Zelin Deng (2):
x86/kvmclock: Move this_cpu_pvti into kvmclock.h
ptp: Fix ptp_kvm_getcrosststamp issue for x86 ptp_kvm

Zhenzhong Duan (1):
KVM: VMX: Fix a TSX_CTRL_CPUID_CLEAR field mask issue

Zhi A Wang (1):
drm/i915/gvt: fix the usage of ww lock in gvt scheduler.

yangerkun (2):
ext4: fix potential infinite loop in ext4_dx_readdir()
ext4: flush s_error_work before journal destroy in ext4_fill_super

author maintainer
#1 lore raw
Makefile +1 -1
index 50c17e63c54e..9f99a61d2589 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 14
-SUBLEVEL = 9
+SUBLEVEL = 10
 EXTRAVERSION =
 NAME = Opossums on Parade
 
arch/m68k/kernel/entry.S +2 -0
index 9dd76fbb7c6b..ff9e842cec0f 100644
@@ -186,6 +186,8 @@ ENTRY(ret_from_signal)
 	movel	%curptr@(TASK_STACK),%a1
 	tstb	%a1@(TINFO_FLAGS+2)
 	jge	1f
+	lea	%sp@(SWITCH_STACK_SIZE),%a1
+	movel	%a1,%curptr@(TASK_THREAD+THREAD_ESP0)
 	jbsr	syscall_trace
 1:	RESTORE_SWITCH_STACK
 	addql	#4,%sp
arch/mips/net/bpf_jit.c +43 -14

121 lines not on this page · raw message

arch/nios2/Kconfig.debug +2 -1
index a8bc06e96ef5..ca1beb87f987 100644
@@ -3,9 +3,10 @@
 config EARLY_PRINTK
 	bool "Activate early kernel debugging"
 	default y
+	depends on TTY
 	select SERIAL_CORE_CONSOLE
 	help
-	  Enable early printk on console
+	  Enable early printk on console.
 	  This is useful for kernel debugging when your machine crashes very
 	  early before the console code is initialized.
 	  You should normally say N here, unless you want to debug such a crash.
arch/nios2/kernel/setup.c +0 -2
index cf8d687a2644..40bc8fb75e0b 100644
@@ -149,8 +149,6 @@ static void __init find_limits(unsigned long *min, unsigned long *max_low,
 
 void __init setup_arch(char **cmdline_p)
 {
-	int dram_start;
-
 	console_verbose();
 
 	memory_start = memblock_start_of_DRAM();
arch/s390/include/asm/ccwgroup.h +1 -1
index 20f169b6db4e..d97301d9d0b8 100644
@@ -57,7 +57,7 @@ struct ccwgroup_device *get_ccwgroupdev_by_busid(struct ccwgroup_driver *gdrv,
 						 char *bus_id);
 
 extern int ccwgroup_set_online(struct ccwgroup_device *gdev);
-extern int ccwgroup_set_offline(struct ccwgroup_device *gdev);
+int ccwgroup_set_offline(struct ccwgroup_device *gdev, bool call_gdrv);
 
 extern int ccwgroup_probe_ccwdev(struct ccw_device *cdev);
 extern void ccwgroup_remove_ccwdev(struct ccw_device *cdev);
arch/x86/crypto/aesni-intel_glue.c +1 -1
index 388643ca2177..0fc961bef299 100644
@@ -849,7 +849,7 @@ static int xts_crypt(struct skcipher_request *req, bool encrypt)
 		return -EINVAL;
 
 	err = skcipher_walk_virt(&walk, req, false);
-	if (err)
+	if (!walk.nbytes)
 		return err;
 
 	if (unlikely(tail > 0 && walk.nbytes < walk.total)) {
arch/x86/events/intel/core.c +1 -0
index ac6fd2dabf6a..482224444a1e 100644
@@ -263,6 +263,7 @@ static struct event_constraint intel_icl_event_constraints[] = {
 	INTEL_EVENT_CONSTRAINT_RANGE(0xa8, 0xb0, 0xf),
 	INTEL_EVENT_CONSTRAINT_RANGE(0xb7, 0xbd, 0xf),
 	INTEL_EVENT_CONSTRAINT_RANGE(0xd0, 0xe6, 0xf),
+	INTEL_EVENT_CONSTRAINT(0xef, 0xf),
 	INTEL_EVENT_CONSTRAINT_RANGE(0xf0, 0xf4, 0xf),
 	EVENT_CONSTRAINT_END
 };
arch/x86/include/asm/kvm_page_track.h +1 -1
index 87bd6025d91d..6a5f3acf2b33 100644
@@ -46,7 +46,7 @@ struct kvm_page_track_notifier_node {
 			    struct kvm_page_track_notifier_node *node);
 };
 
-void kvm_page_track_init(struct kvm *kvm);
+int kvm_page_track_init(struct kvm *kvm);
 void kvm_page_track_cleanup(struct kvm *kvm);
 
 void kvm_page_track_free_memslot(struct kvm_memory_slot *slot);
arch/x86/include/asm/kvmclock.h +14 -0
index eceea9299097..6c5765192102 100644
@@ -2,6 +2,20 @@
 #ifndef _ASM_X86_KVM_CLOCK_H
 #define _ASM_X86_KVM_CLOCK_H
 
+#include <linux/percpu.h>
+
 extern struct clocksource kvm_clock;
 
+DECLARE_PER_CPU(struct pvclock_vsyscall_time_info *, hv_clock_per_cpu);
+
+static inline struct pvclock_vcpu_time_info *this_cpu_pvti(void)
+{
+	return &this_cpu_read(hv_clock_per_cpu)->pvti;
+}
+
+static inline struct pvclock_vsyscall_time_info *this_cpu_hvclock(void)
+{
+	return this_cpu_read(hv_clock_per_cpu);
+}
+
 #endif /* _ASM_X86_KVM_CLOCK_H */
arch/x86/kernel/kvmclock.c +2 -11
index ad273e5861c1..73c74b961d0f 100644
@@ -49,18 +49,9 @@ early_param("no-kvmclock-vsyscall", parse_no_kvmclock_vsyscall);
 static struct pvclock_vsyscall_time_info
 			hv_clock_boot[HVC_BOOT_ARRAY_SIZE] __bss_decrypted __aligned(PAGE_SIZE);
 static struct pvclock_wall_clock wall_clock __bss_decrypted;
-static DEFINE_PER_CPU(struct pvclock_vsyscall_time_info *, hv_clock_per_cpu);
 static struct pvclock_vsyscall_time_info *hvclock_mem;
-
-static inline struct pvclock_vcpu_time_info *this_cpu_pvti(void)
-{
-	return &this_cpu_read(hv_clock_per_cpu)->pvti;
-}
-
-static inline struct pvclock_vsyscall_time_info *this_cpu_hvclock(void)
-{
-	return this_cpu_read(hv_clock_per_cpu);
-}
+DEFINE_PER_CPU(struct pvclock_vsyscall_time_info *, hv_clock_per_cpu);
+EXPORT_PER_CPU_SYMBOL_GPL(hv_clock_per_cpu);
 
 /*
  * The wallclock is the time of day when we booted. Since then, some time may
arch/x86/kvm/cpuid.c +2 -2
index fe03bd978761..751aa85a3001 100644
@@ -65,8 +65,8 @@ static inline struct kvm_cpuid_entry2 *cpuid_entry2_find(
 	for (i = 0; i < nent; i++) {
 		e = &entries[i];
 
-		if (e->function == function && (e->index == index ||
-		    !(e->flags & KVM_CPUID_FLAG_SIGNIFCANT_INDEX)))
+		if (e->function == function &&
+		    (!(e->flags & KVM_CPUID_FLAG_SIGNIFCANT_INDEX) || e->index == index))
 			return e;
 	}
 
arch/x86/kvm/emulate.c +0 -1
index 2837110e66ed..50050d06672b 100644
@@ -435,7 +435,6 @@ static int fastop(struct x86_emulate_ctxt *ctxt, fastop_t fop);
 	__FOP_RET(#op)
 
 asm(".pushsection .fixup, \"ax\"\n"
-    ".global kvm_fastop_exception \n"
     "kvm_fastop_exception: xor %esi, %esi; ret\n"
     ".popsection");
 
arch/x86/kvm/ioapic.c +5 -5
index ff005fe738a4..8c065da73f8e 100644
@@ -319,8 +319,8 @@ static void ioapic_write_indirect(struct kvm_ioapic *ioapic, u32 val)
 	unsigned index;
 	bool mask_before, mask_after;
 	union kvm_ioapic_redirect_entry *e;
-	unsigned long vcpu_bitmap;
 	int old_remote_irr, old_delivery_status, old_dest_id, old_dest_mode;
+	DECLARE_BITMAP(vcpu_bitmap, KVM_MAX_VCPUS);
 
 	switch (ioapic->ioregsel) {
 	case IOAPIC_REG_VERSION:
@@ -384,9 +384,9 @@ static void ioapic_write_indirect(struct kvm_ioapic *ioapic, u32 val)
 			irq.shorthand = APIC_DEST_NOSHORT;
 			irq.dest_id = e->fields.dest_id;
 			irq.msi_redir_hint = false;
-			bitmap_zero(&vcpu_bitmap, 16);
+			bitmap_zero(vcpu_bitmap, KVM_MAX_VCPUS);
 			kvm_bitmap_or_dest_vcpus(ioapic->kvm, &irq,
-						 &vcpu_bitmap);
+						 vcpu_bitmap);
 			if (old_dest_mode != e->fields.dest_mode ||
 			    old_dest_id != e->fields.dest_id) {
 				/*
@@ -399,10 +399,10 @@ static void ioapic_write_indirect(struct kvm_ioapic *ioapic, u32 val)
 				    kvm_lapic_irq_dest_mode(
 					!!e->fields.dest_mode);
 				kvm_bitmap_or_dest_vcpus(ioapic->kvm, &irq,
-							 &vcpu_bitmap);
+							 vcpu_bitmap);
 			}
 			kvm_make_scan_ioapic_request_mask(ioapic->kvm,
-							  &vcpu_bitmap);
+							  vcpu_bitmap);
 		} else {
 			kvm_make_scan_ioapic_request(ioapic->kvm);
 		}
arch/x86/kvm/mmu/page_track.c +2 -2
index 91a9f7e0fd91..68e67228101d 100644
@@ -163,13 +163,13 @@ void kvm_page_track_cleanup(struct kvm *kvm)
 	cleanup_srcu_struct(&head->track_srcu);
 }
 
-void kvm_page_track_init(struct kvm *kvm)
+int kvm_page_track_init(struct kvm *kvm)
 {
 	struct kvm_page_track_notifier_head *head;
 
 	head = &kvm->arch.track_notifier_head;
-	init_srcu_struct(&head->track_srcu);
 	INIT_HLIST_HEAD(&head->track_notifier_list);
+	return init_srcu_struct(&head->track_srcu);
 }
 
 /*
arch/x86/kvm/svm/nested.c +0 -1
index e5515477c30a..700bc241cee1 100644
@@ -545,7 +545,6 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm)
 		(svm->nested.ctl.int_ctl & int_ctl_vmcb12_bits) |
 		(svm->vmcb01.ptr->control.int_ctl & int_ctl_vmcb01_bits);
 
-	svm->vmcb->control.virt_ext            = svm->nested.ctl.virt_ext;
 	svm->vmcb->control.int_vector          = svm->nested.ctl.int_vector;
 	svm->vmcb->control.int_state           = svm->nested.ctl.int_state;
 	svm->vmcb->control.event_inj           = svm->nested.ctl.event_inj;
arch/x86/kvm/svm/sev.c +62 -30

157 lines not on this page · raw message

arch/x86/kvm/vmx/evmcs.c +9 -3
index 896b2a50b4aa..a44e2734ff9b 100644
@@ -354,14 +354,20 @@ void nested_evmcs_filter_control_msr(u32 msr_index, u64 *pdata)
 	switch (msr_index) {
 	case MSR_IA32_VMX_EXIT_CTLS:
 	case MSR_IA32_VMX_TRUE_EXIT_CTLS:
-		ctl_high &= ~VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL;
+		ctl_high &= ~EVMCS1_UNSUPPORTED_VMEXIT_CTRL;
 		break;
 	case MSR_IA32_VMX_ENTRY_CTLS:
 	case MSR_IA32_VMX_TRUE_ENTRY_CTLS:
-		ctl_high &= ~VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL;
+		ctl_high &= ~EVMCS1_UNSUPPORTED_VMENTRY_CTRL;
 		break;
 	case MSR_IA32_VMX_PROCBASED_CTLS2:
-		ctl_high &= ~SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES;
+		ctl_high &= ~EVMCS1_UNSUPPORTED_2NDEXEC;
+		break;
+	case MSR_IA32_VMX_PINBASED_CTLS:
+		ctl_high &= ~EVMCS1_UNSUPPORTED_PINCTRL;
+		break;
+	case MSR_IA32_VMX_VMFUNC:
+		ctl_low &= ~EVMCS1_UNSUPPORTED_VMFUNC;
 		break;
 	}
 
arch/x86/kvm/vmx/nested.c +6 -0
index ac1803dac435..ce30503f5438 100644
@@ -5898,6 +5898,12 @@ static bool nested_vmx_l0_wants_exit(struct kvm_vcpu *vcpu,
 	case EXIT_REASON_VMFUNC:
 		/* VM functions are emulated through L2->L0 vmexits. */
 		return true;
+	case EXIT_REASON_BUS_LOCK:
+		/*
+		 * At present, bus lock VM exit is never exposed to L1.
+		 * Handle L2's bus locks in L0 directly.
+		 */
+		return true;
 	default:
 		break;
 	}
arch/x86/kvm/vmx/vmx.c +6 -5
index 256f8cab4b8b..55de1eb135f9 100644
@@ -1840,10 +1840,11 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 				    &msr_info->data))
 			return 1;
 		/*
-		 * Enlightened VMCS v1 doesn't have certain fields, but buggy
-		 * Hyper-V versions are still trying to use corresponding
-		 * features when they are exposed. Filter out the essential
-		 * minimum.
+		 * Enlightened VMCS v1 doesn't have certain VMCS fields but
+		 * instead of just ignoring the features, different Hyper-V
+		 * versions are either trying to use them and fail or do some
+		 * sanity checking and refuse to boot. Filter all unsupported
+		 * features out.
 		 */
 		if (!msr_info->host_initiated &&
 		    vmx->nested.enlightened_vmcs_enabled)
@@ -6815,7 +6816,7 @@ static int vmx_create_vcpu(struct kvm_vcpu *vcpu)
 		 */
 		tsx_ctrl = vmx_find_uret_msr(vmx, MSR_IA32_TSX_CTRL);
 		if (tsx_ctrl)
-			vmx->guest_uret_msrs[i].mask = ~(u64)TSX_CTRL_CPUID_CLEAR;
+			tsx_ctrl->mask = ~(u64)TSX_CTRL_CPUID_CLEAR;
 	}
 
 	err = alloc_loaded_vmcs(&vmx->vmcs01);
arch/x86/kvm/x86.c +9 -1
index 7ec7c2dce506..6d5d6e93f5c4 100644
@@ -10873,6 +10873,9 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
 
 	static_call(kvm_x86_vcpu_reset)(vcpu, init_event);
 
+	vcpu->arch.cr3 = 0;
+	kvm_register_mark_dirty(vcpu, VCPU_EXREG_CR3);
+
 	/*
 	 * Reset the MMU context if paging was enabled prior to INIT (which is
 	 * implied if CR0.PG=1 as CR0 will be '0' prior to RESET).  Unlike the
@@ -11090,9 +11093,15 @@ void kvm_arch_free_vm(struct kvm *kvm)
 
 int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 {
+	int ret;
+
 	if (type)
 		return -EINVAL;
 
+	ret = kvm_page_track_init(kvm);
+	if (ret)
+		return ret;
+
 	INIT_HLIST_HEAD(&kvm->arch.mask_notifier_list);
 	INIT_LIST_HEAD(&kvm->arch.active_mmu_pages);
 	INIT_LIST_HEAD(&kvm->arch.zapped_obsolete_pages);
@@ -11125,7 +11134,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 
 	kvm_apicv_init(kvm);
 	kvm_hv_init_vm(kvm);
-	kvm_page_track_init(kvm);
 	kvm_mmu_init_vm(kvm);
 
 	return static_call(kvm_x86_vm_init)(kvm);
arch/x86/net/bpf_jit_comp.c +48 -18

163 lines not on this page · raw message

block/bfq-iosched.c +3 -13
index 3a1038b6eeb3..9360c65169ff 100644
@@ -2662,15 +2662,6 @@ bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
 	 * are likely to increase the throughput.
 	 */
 	bfqq->new_bfqq = new_bfqq;
-	/*
-	 * The above assignment schedules the following redirections:
-	 * each time some I/O for bfqq arrives, the process that
-	 * generated that I/O is disassociated from bfqq and
-	 * associated with new_bfqq. Here we increases new_bfqq->ref
-	 * in advance, adding the number of processes that are
-	 * expected to be associated with new_bfqq as they happen to
-	 * issue I/O.
-	 */
 	new_bfqq->ref += process_refs;
 	return new_bfqq;
 }
@@ -2733,10 +2724,6 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
 {
 	struct bfq_queue *in_service_bfqq, *new_bfqq;
 
-	/* if a merge has already been setup, then proceed with that first */
-	if (bfqq->new_bfqq)
-		return bfqq->new_bfqq;
-
 	/*
 	 * Check delayed stable merge for rotational or non-queueing
 	 * devs. For this branch to be executed, bfqq must not be
@@ -2838,6 +2825,9 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
 	if (bfq_too_late_for_merging(bfqq))
 		return NULL;
 
+	if (bfqq->new_bfqq)
+		return bfqq->new_bfqq;
+
 	if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq))
 		return NULL;
 
drivers/acpi/nfit/core.c +12 -0
index a3ef6cce644c..7dd80acf92c7 100644
@@ -3007,6 +3007,18 @@ static int acpi_nfit_register_region(struct acpi_nfit_desc *acpi_desc,
 		ndr_desc->target_node = NUMA_NO_NODE;
 	}
 
+	/* Fallback to address based numa information if node lookup failed */
+	if (ndr_desc->numa_node == NUMA_NO_NODE) {
+		ndr_desc->numa_node = memory_add_physaddr_to_nid(spa->address);
+		dev_info(acpi_desc->dev, "changing numa node from %d to %d for nfit region [%pa-%pa]",
+			NUMA_NO_NODE, ndr_desc->numa_node, &res.start, &res.end);
+	}
+	if (ndr_desc->target_node == NUMA_NO_NODE) {
+		ndr_desc->target_node = phys_to_target_node(spa->address);
+		dev_info(acpi_desc->dev, "changing target node from %d to %d for nfit region [%pa-%pa]",
+			NUMA_NO_NODE, ndr_desc->numa_node, &res.start, &res.end);
+	}
+
 	/*
 	 * Persistence domain bits are hierarchical, if
 	 * ACPI_NFIT_CAPABILITY_CACHE_FLUSH is set then
drivers/base/core.c +31 -5
index 8c77e14987d4..56f54e6eb987 100644
@@ -1721,6 +1721,25 @@ static int fw_devlink_create_devlink(struct device *con,
 	struct device *sup_dev;
 	int ret = 0;
 
+	/*
+	 * In some cases, a device P might also be a supplier to its child node
+	 * C. However, this would defer the probe of C until the probe of P
+	 * completes successfully. This is perfectly fine in the device driver
+	 * model. device_add() doesn't guarantee probe completion of the device
+	 * by the time it returns.
+	 *
+	 * However, there are a few drivers that assume C will finish probing
+	 * as soon as it's added and before P finishes probing. So, we provide
+	 * a flag to let fw_devlink know not to delay the probe of C until the
+	 * probe of P completes successfully.
+	 *
+	 * When such a flag is set, we can't create device links where P is the
+	 * supplier of C as that would delay the probe of C.
+	 */
+	if (sup_handle->flags & FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD &&
+	    fwnode_is_ancestor_of(sup_handle, con->fwnode))
+		return -EINVAL;
+
 	sup_dev = get_dev_from_fwnode(sup_handle);
 	if (sup_dev) {
 		/*
@@ -1771,14 +1790,21 @@ static int fw_devlink_create_devlink(struct device *con,
 	 * be broken by applying logic. Check for these types of cycles and
 	 * break them so that devices in the cycle probe properly.
 	 *
-	 * If the supplier's parent is dependent on the consumer, then
-	 * the consumer-supplier dependency is a false dependency. So,
-	 * treat it as an invalid link.
+	 * If the supplier's parent is dependent on the consumer, then the
+	 * consumer and supplier have a cyclic dependency. Since fw_devlink
+	 * can't tell which of the inferred dependencies are incorrect, don't
+	 * enforce probe ordering between any of the devices in this cyclic
+	 * dependency. Do this by relaxing all the fw_devlink device links in
+	 * this cycle and by treating the fwnode link between the consumer and
+	 * the supplier as an invalid dependency.
 	 */
 	sup_dev = fwnode_get_next_parent_dev(sup_handle);
 	if (sup_dev && device_is_dependent(con, sup_dev)) {
-		dev_dbg(con, "Not linking to %pfwP - False link\n",
-			sup_handle);
+		dev_info(con, "Fixing up cyclic dependency with %pfwP (%s)\n",
+			 sup_handle, dev_name(sup_dev));
+		device_links_write_lock();
+		fw_devlink_relax_cycle(con, sup_dev);
+		device_links_write_unlock();
 		ret = -EINVAL;
 	} else {
 		/*
drivers/block/nbd.c +17 -12
index 93708b1938e8..99ab58b877f8 100644
@@ -97,13 +97,18 @@ struct nbd_config {
 
 	atomic_t recv_threads;
 	wait_queue_head_t recv_wq;
-	loff_t blksize;
+	unsigned int blksize_bits;
 	loff_t bytesize;
 #if IS_ENABLED(CONFIG_DEBUG_FS)
 	struct dentry *dbg_dir;
 #endif
 };
 
+static inline unsigned int nbd_blksize(struct nbd_config *config)
+{
+	return 1u << config->blksize_bits;
+}
+
 struct nbd_device {
 	struct blk_mq_tag_set tag_set;
 
@@ -147,7 +152,7 @@ static struct dentry *nbd_dbg_dir;
 
 #define NBD_MAGIC 0x68797548
 
-#define NBD_DEF_BLKSIZE 1024
+#define NBD_DEF_BLKSIZE_BITS 10
 
 static unsigned int nbds_max = 16;
 static int max_part = 16;
@@ -350,12 +355,12 @@ static int nbd_set_size(struct nbd_device *nbd, loff_t bytesize,
 		loff_t blksize)
 {
 	if (!blksize)
-		blksize = NBD_DEF_BLKSIZE;
+		blksize = 1u << NBD_DEF_BLKSIZE_BITS;
 	if (blksize < 512 || blksize > PAGE_SIZE || !is_power_of_2(blksize))
 		return -EINVAL;
 
 	nbd->config->bytesize = bytesize;
-	nbd->config->blksize = blksize;
+	nbd->config->blksize_bits = __ffs(blksize);
 
 	if (!nbd->task_recv)
 		return 0;
@@ -1370,7 +1375,7 @@ static int nbd_start_device(struct nbd_device *nbd)
 		args->index = i;
 		queue_work(nbd->recv_workq, &args->work);
 	}
-	return nbd_set_size(nbd, config->bytesize, config->blksize);
+	return nbd_set_size(nbd, config->bytesize, nbd_blksize(config));
 }
 
 static int nbd_start_device_ioctl(struct nbd_device *nbd, struct block_device *bdev)
@@ -1439,11 +1444,11 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd,
 	case NBD_SET_BLKSIZE:
 		return nbd_set_size(nbd, config->bytesize, arg);
 	case NBD_SET_SIZE:
-		return nbd_set_size(nbd, arg, config->blksize);
+		return nbd_set_size(nbd, arg, nbd_blksize(config));
 	case NBD_SET_SIZE_BLOCKS:
-		if (check_mul_overflow((loff_t)arg, config->blksize, &bytesize))
+		if (check_shl_overflow(arg, config->blksize_bits, &bytesize))
 			return -EINVAL;
-		return nbd_set_size(nbd, bytesize, config->blksize);
+		return nbd_set_size(nbd, bytesize, nbd_blksize(config));
 	case NBD_SET_TIMEOUT:
 		nbd_set_cmd_timeout(nbd, arg);
 		return 0;
@@ -1509,7 +1514,7 @@ static struct nbd_config *nbd_alloc_config(void)
 	atomic_set(&config->recv_threads, 0);
 	init_waitqueue_head(&config->recv_wq);
 	init_waitqueue_head(&config->conn_wait);
-	config->blksize = NBD_DEF_BLKSIZE;
+	config->blksize_bits = NBD_DEF_BLKSIZE_BITS;
 	atomic_set(&config->live_connections, 0);
 	try_module_get(THIS_MODULE);
 	return config;
@@ -1637,7 +1642,7 @@ static int nbd_dev_dbg_init(struct nbd_device *nbd)
 	debugfs_create_file("tasks", 0444, dir, nbd, &nbd_dbg_tasks_fops);
 	debugfs_create_u64("size_bytes", 0444, dir, &config->bytesize);
 	debugfs_create_u32("timeout", 0444, dir, &nbd->tag_set.timeout);
-	debugfs_create_u64("blocksize", 0444, dir, &config->blksize);
+	debugfs_create_u32("blocksize_bits", 0444, dir, &config->blksize_bits);
 	debugfs_create_file("flags", 0444, dir, nbd, &nbd_dbg_flags_fops);
 
 	return 0;
@@ -1841,7 +1846,7 @@ nbd_device_policy[NBD_DEVICE_ATTR_MAX + 1] = {
 static int nbd_genl_size_set(struct genl_info *info, struct nbd_device *nbd)
 {
 	struct nbd_config *config = nbd->config;
-	u64 bsize = config->blksize;
+	u64 bsize = nbd_blksize(config);
 	u64 bytes = config->bytesize;
 
 	if (info->attrs[NBD_ATTR_SIZE_BYTES])
@@ -1850,7 +1855,7 @@ static int nbd_genl_size_set(struct genl_info *info, struct nbd_device *nbd)
 	if (info->attrs[NBD_ATTR_BLOCK_SIZE_BYTES])
 		bsize = nla_get_u64(info->attrs[NBD_ATTR_BLOCK_SIZE_BYTES]);
 
-	if (bytes != config->bytesize || bsize != config->blksize)
+	if (bytes != config->bytesize || bsize != nbd_blksize(config))
 		return nbd_set_size(nbd, bytes, bsize);
 	return 0;
 }
drivers/cpufreq/cpufreq_governor_attr_set.c +1 -1
index 66b05a326910..a6f365b9cc1a 100644
@@ -74,8 +74,8 @@ unsigned int gov_attr_set_put(struct gov_attr_set *attr_set, struct list_head *l
 	if (count)
 		return count;
 
-	kobject_put(&attr_set->kobj);
 	mutex_destroy(&attr_set->update_lock);
+	kobject_put(&attr_set->kobj);
 	return 0;
 }
 EXPORT_SYMBOL_GPL(gov_attr_set_put);
drivers/crypto/ccp/ccp-ops.c +8 -6
index bb88198c874e..aa4e1a500691 100644
@@ -778,7 +778,7 @@ ccp_run_aes_gcm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd)
 				    in_place ? DMA_BIDIRECTIONAL
 					     : DMA_TO_DEVICE);
 		if (ret)
-			goto e_ctx;
+			goto e_aad;
 
 		if (in_place) {
 			dst = src;
@@ -863,7 +863,7 @@ ccp_run_aes_gcm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd)
 	op.u.aes.size = 0;
 	ret = cmd_q->ccp->vdata->perform->aes(&op);
 	if (ret)
-		goto e_dst;
+		goto e_final_wa;
 
 	if (aes->action == CCP_AES_ACTION_ENCRYPT) {
 		/* Put the ciphered tag after the ciphertext. */
@@ -873,17 +873,19 @@ ccp_run_aes_gcm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd)
 		ret = ccp_init_dm_workarea(&tag, cmd_q, authsize,
 					   DMA_BIDIRECTIONAL);
 		if (ret)
-			goto e_tag;
+			goto e_final_wa;
 		ret = ccp_set_dm_area(&tag, 0, p_tag, 0, authsize);
-		if (ret)
-			goto e_tag;
+		if (ret) {
+			ccp_dm_free(&tag);
+			goto e_final_wa;
+		}
 
 		ret = crypto_memneq(tag.address, final_wa.address,
 				    authsize) ? -EBADMSG : 0;
 		ccp_dm_free(&tag);
 	}
 
-e_tag:
+e_final_wa:
 	ccp_dm_free(&final_wa);
 
 e_dst:
drivers/gpio/gpio-pca953x.c +2 -9
index f5cfc0698799..8ebf369b3ba0 100644
@@ -468,15 +468,8 @@ static int pca953x_gpio_get_value(struct gpio_chip *gc, unsigned off)
 	mutex_lock(&chip->i2c_lock);
 	ret = regmap_read(chip->regmap, inreg, &reg_val);
 	mutex_unlock(&chip->i2c_lock);
-	if (ret < 0) {
-		/*
-		 * NOTE:
-		 * diagnostic already emitted; that's all we should
-		 * do unless gpio_*_value_cansleep() calls become different
-		 * from their nonsleeping siblings (and report faults).
-		 */
-		return 0;
-	}
+	if (ret < 0)
+		return ret;
 
 	return !!(reg_val & bit);
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +8 -7
index 7b42636fc7dc..d3247a5cceb4 100644
@@ -3602,9 +3602,9 @@ int amdgpu_device_init(struct amdgpu_device *adev,
 
 fence_driver_init:
 	/* Fence driver */
-	r = amdgpu_fence_driver_init(adev);
+	r = amdgpu_fence_driver_sw_init(adev);
 	if (r) {
-		dev_err(adev->dev, "amdgpu_fence_driver_init failed\n");
+		dev_err(adev->dev, "amdgpu_fence_driver_sw_init failed\n");
 		amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_FENCE_INIT_FAIL, 0, 0);
 		goto failed;
 	}
@@ -3631,6 +3631,8 @@ int amdgpu_device_init(struct amdgpu_device *adev,
 		goto release_ras_con;
 	}
 
+	amdgpu_fence_driver_hw_init(adev);
+
 	dev_info(adev->dev,
 		"SE %d, SH per SE %d, CU per SH %d, active_cu_number %d\n",
 			adev->gfx.config.max_shader_engines,
@@ -3798,7 +3800,7 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
 		else
 			drm_atomic_helper_shutdown(adev_to_drm(adev));
 	}
-	amdgpu_fence_driver_fini_hw(adev);
+	amdgpu_fence_driver_hw_fini(adev);
 
 	if (adev->pm_sysfs_en)
 		amdgpu_pm_sysfs_fini(adev);
@@ -3820,7 +3822,7 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
 void amdgpu_device_fini_sw(struct amdgpu_device *adev)
 {
 	amdgpu_device_ip_fini(adev);
-	amdgpu_fence_driver_fini_sw(adev);
+	amdgpu_fence_driver_sw_fini(adev);
 	release_firmware(adev->firmware.gpu_info_fw);
 	adev->firmware.gpu_info_fw = NULL;
 	adev->accel_working = false;
@@ -3895,7 +3897,7 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
 	/* evict vram memory */
 	amdgpu_bo_evict_vram(adev);
 
-	amdgpu_fence_driver_suspend(adev);
+	amdgpu_fence_driver_hw_fini(adev);
 
 	amdgpu_device_ip_suspend_phase2(adev);
 	/* evict remaining vram memory
@@ -3940,8 +3942,7 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
 		dev_err(adev->dev, "amdgpu_device_ip_resume failed (%d).\n", r);
 		return r;
 	}
-	amdgpu_fence_driver_resume(adev);
-
+	amdgpu_fence_driver_hw_init(adev);
 
 	r = amdgpu_device_ip_late_init(adev);
 	if (r)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +31 -0
index 7a7316731911..dc50c05f23fc 100644
@@ -837,6 +837,28 @@ static int convert_tiling_flags_to_modifier(struct amdgpu_framebuffer *afb)
 	return 0;
 }
 
+/* Mirrors the is_displayable check in radeonsi's gfx6_compute_surface */
+static int check_tiling_flags_gfx6(struct amdgpu_framebuffer *afb)
+{
+	u64 micro_tile_mode;
+
+	/* Zero swizzle mode means linear */
+	if (AMDGPU_TILING_GET(afb->tiling_flags, SWIZZLE_MODE) == 0)
+		return 0;
+
+	micro_tile_mode = AMDGPU_TILING_GET(afb->tiling_flags, MICRO_TILE_MODE);
+	switch (micro_tile_mode) {
+	case 0: /* DISPLAY */
+	case 3: /* RENDER */
+		return 0;
+	default:
+		drm_dbg_kms(afb->base.dev,
+			    "Micro tile mode %llu not supported for scanout\n",
+			    micro_tile_mode);
+		return -EINVAL;
+	}
+}
+
 static void get_block_dimensions(unsigned int block_log2, unsigned int cpp,
 				 unsigned int *width, unsigned int *height)
 {
@@ -1103,6 +1125,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
 				    const struct drm_mode_fb_cmd2 *mode_cmd,
 				    struct drm_gem_object *obj)
 {
+	struct amdgpu_device *adev = drm_to_adev(dev);
 	int ret, i;
 
 	/*
@@ -1122,6 +1145,14 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
 	if (ret)
 		return ret;
 
+	if (!dev->mode_config.allow_fb_modifiers) {
+		drm_WARN_ONCE(dev, adev->family >= AMDGPU_FAMILY_AI,
+			      "GFX9+ requires FB check based on format modifier\n");
+		ret = check_tiling_flags_gfx6(rfb);
+		if (ret)
+			return ret;
+	}
+
 	if (dev->mode_config.allow_fb_modifiers &&
 	    !(rfb->base.flags & DRM_MODE_FB_MODIFIERS)) {
 		ret = convert_tiling_flags_to_modifier(rfb);
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +19 -43

131 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h +4 -5
index e7d3d0dbdd96..9c11ced4312c 100644
@@ -106,9 +106,6 @@ struct amdgpu_fence_driver {
 	struct dma_fence		**fences;
 };
 
-int amdgpu_fence_driver_init(struct amdgpu_device *adev);
-void amdgpu_fence_driver_fini_hw(struct amdgpu_device *adev);
-void amdgpu_fence_driver_fini_sw(struct amdgpu_device *adev);
 void amdgpu_fence_driver_force_completion(struct amdgpu_ring *ring);
 
 int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
@@ -117,8 +114,10 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
 int amdgpu_fence_driver_start_ring(struct amdgpu_ring *ring,
 				   struct amdgpu_irq_src *irq_src,
 				   unsigned irq_type);
-void amdgpu_fence_driver_suspend(struct amdgpu_device *adev);
-void amdgpu_fence_driver_resume(struct amdgpu_device *adev);
+void amdgpu_fence_driver_hw_init(struct amdgpu_device *adev);
+void amdgpu_fence_driver_hw_fini(struct amdgpu_device *adev);
+int amdgpu_fence_driver_sw_init(struct amdgpu_device *adev);
+void amdgpu_fence_driver_sw_fini(struct amdgpu_device *adev);
 int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **fence,
 		      unsigned flags);
 int amdgpu_fence_emit_polling(struct amdgpu_ring *ring, uint32_t *s,
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +1 -1
index 6a23c6826e12..88ed0ef88f7e 100644
@@ -3598,7 +3598,7 @@ static int gfx_v9_0_mqd_init(struct amdgpu_ring *ring)
 
 	/* set static priority for a queue/ring */
 	gfx_v9_0_mqd_set_priority(ring, mqd);
-	mqd->cp_hqd_quantum = RREG32(mmCP_HQD_QUANTUM);
+	mqd->cp_hqd_quantum = RREG32_SOC15(GC, 0, mmCP_HQD_QUANTUM);
 
 	/* map_queues packet doesn't need activate the queue,
 	 * so only kiq need set this field.
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c +8 -0
index 7486e5306786..27e0ca615edc 100644
@@ -883,6 +883,12 @@ static int sdma_v5_2_start(struct amdgpu_device *adev)
 			msleep(1000);
 	}
 
+	/* TODO: check whether can submit a doorbell request to raise
+	 * a doorbell fence to exit gfxoff.
+	 */
+	if (adev->in_s0ix)
+		amdgpu_gfx_off_ctrl(adev, false);
+
 	sdma_v5_2_soft_reset(adev);
 	/* unhalt the MEs */
 	sdma_v5_2_enable(adev, true);
@@ -891,6 +897,8 @@ static int sdma_v5_2_start(struct amdgpu_device *adev)
 
 	/* start the gfx rings and rlc compute queues */
 	r = sdma_v5_2_gfx_resume(adev);
+	if (adev->in_s0ix)
+		amdgpu_gfx_off_ctrl(adev, true);
 	if (r)
 		return r;
 	r = sdma_v5_2_rlc_resume(adev);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -0
index 3bb567ea2cef..a03d7682cd8f 100644
@@ -1117,6 +1117,7 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
 
 	init_data.asic_id.pci_revision_id = adev->pdev->revision;
 	init_data.asic_id.hw_internal_rev = adev->external_rev_id;
+	init_data.asic_id.chip_id = adev->pdev->device;
 
 	init_data.asic_id.vram_width = adev->gmc.vram_width;
 	/* TODO: initialize init_data.asic_id.vram_type here!!!! */
@@ -1724,6 +1725,7 @@ static int dm_late_init(void *handle)
 		linear_lut[i] = 0xFFFF * i / 15;
 
 	params.set = 0;
+	params.backlight_ramping_override = false;
 	params.backlight_ramping_start = 0xCCCC;
 	params.backlight_ramping_reduction = 0xCCCCCCCC;
 	params.backlight_lut_array_size = 16;
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +7 -8
index 83ef72a3ebf4..3c8da3665a27 100644
@@ -1813,14 +1813,13 @@ bool perform_link_training_with_retries(
 		if (panel_mode == DP_PANEL_MODE_EDP) {
 			struct cp_psp *cp_psp = &stream->ctx->cp_psp;
 
-			if (cp_psp && cp_psp->funcs.enable_assr) {
-				if (!cp_psp->funcs.enable_assr(cp_psp->handle, link)) {
-					/* since eDP implies ASSR on, change panel
-					 * mode to disable ASSR
-					 */
-					panel_mode = DP_PANEL_MODE_DEFAULT;
-				}
-			}
+			if (cp_psp && cp_psp->funcs.enable_assr)
+				/* ASSR is bound to fail with unsigned PSP
+				 * verstage used during devlopment phase.
+				 * Report and continue with eDP panel mode to
+				 * perform eDP link training with right settings
+				 */
+				cp_psp->funcs.enable_assr(cp_psp->handle, link);
 		}
 #endif
 
drivers/gpu/drm/i915/gt/intel_rps.c +0 -2
index 06e9a8ed4e03..db9c212a240e 100644
@@ -861,8 +861,6 @@ void intel_rps_park(struct intel_rps *rps)
 {
 	int adj;
 
-	GEM_BUG_ON(atomic_read(&rps->num_waiters));
-
 	if (!intel_rps_clear_active(rps))
 		return;
 
drivers/gpu/drm/i915/gvt/scheduler.c +2 -2
index 734c37c5e347..527b59b86312 100644
@@ -576,7 +576,7 @@ static int prepare_shadow_batch_buffer(struct intel_vgpu_workload *workload)
 
 			/* No one is going to touch shadow bb from now on. */
 			i915_gem_object_flush_map(bb->obj);
-			i915_gem_object_unlock(bb->obj);
+			i915_gem_ww_ctx_fini(&ww);
 		}
 	}
 	return 0;
@@ -630,7 +630,7 @@ static int prepare_shadow_wa_ctx(struct intel_shadow_wa_ctx *wa_ctx)
 		return ret;
 	}
 
-	i915_gem_object_unlock(wa_ctx->indirect_ctx.obj);
+	i915_gem_ww_ctx_fini(&ww);
 
 	/* FIXME: we are not tracking our pinned VMA leaving it
 	 * up to the core to fix up the stray pin_count upon
drivers/gpu/drm/i915/i915_request.c +2 -9
index 37aef1308573..7db972fa7024 100644
@@ -914,8 +914,6 @@ static void __i915_request_ctor(void *arg)
 	i915_sw_fence_init(&rq->submit, submit_notify);
 	i915_sw_fence_init(&rq->semaphore, semaphore_notify);
 
-	dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock, 0, 0);
-
 	rq->capture_list = NULL;
 
 	init_llist_head(&rq->execute_cb);
@@ -978,17 +976,12 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp)
 	rq->ring = ce->ring;
 	rq->execution_mask = ce->engine->mask;
 
-	kref_init(&rq->fence.refcount);
-	rq->fence.flags = 0;
-	rq->fence.error = 0;
-	INIT_LIST_HEAD(&rq->fence.cb_list);
-
 	ret = intel_timeline_get_seqno(tl, rq, &seqno);
 	if (ret)
 		goto err_free;
 
-	rq->fence.context = tl->fence_context;
-	rq->fence.seqno = seqno;
+	dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock,
+		       tl->fence_context, seqno);
 
 	RCU_INIT_POINTER(rq->timeline, tl);
 	rq->hwsp_seqno = tl->hwsp_seqno;
drivers/hid/amd-sfh-hid/amd_sfh_pcie.c +4 -4
index 8d68796aa905..1b4a192b19e5 100644
@@ -239,13 +239,13 @@ static int amd_mp2_pci_probe(struct pci_dev *pdev, const struct pci_device_id *i
 	if (!privdata->cl_data)
 		return -ENOMEM;
 
-	rc = devm_add_action_or_reset(&pdev->dev, amd_mp2_pci_remove, privdata);
+	mp2_select_ops(privdata);
+
+	rc = amd_sfh_hid_client_init(privdata);
 	if (rc)
 		return rc;
 
-	mp2_select_ops(privdata);
-
-	return amd_sfh_hid_client_init(privdata);
+	return devm_add_action_or_reset(&pdev->dev, amd_mp2_pci_remove, privdata);
 }
 
 static const struct pci_device_id amd_mp2_pci_tbl[] = {
drivers/hid/hid-betopff.c +10 -3
index 0790fbd3fc9a..467d789f9bc2 100644
@@ -56,15 +56,22 @@ static int betopff_init(struct hid_device *hid)
 {
 	struct betopff_device *betopff;
 	struct hid_report *report;
-	struct hid_input *hidinput =
-			list_first_entry(&hid->inputs, struct hid_input, list);
+	struct hid_input *hidinput;
 	struct list_head *report_list =
 			&hid->report_enum[HID_OUTPUT_REPORT].report_list;
-	struct input_dev *dev = hidinput->input;
+	struct input_dev *dev;
 	int field_count = 0;
 	int error;
 	int i, j;
 
+	if (list_empty(&hid->inputs)) {
+		hid_err(hid, "no inputs found\n");
+		return -ENODEV;
+	}
+
+	hidinput = list_first_entry(&hid->inputs, struct hid_input, list);
+	dev = hidinput->input;
+
 	if (list_empty(report_list)) {
 		hid_err(hid, "no output reports found\n");
 		return -ENODEV;
drivers/hid/hid-u2fzero.c +3 -1
index 95e0807878c7..d70cd3d7f583 100644
@@ -198,7 +198,9 @@ static int u2fzero_rng_read(struct hwrng *rng, void *data,
 	}
 
 	ret = u2fzero_recv(dev, &req, &resp);
-	if (ret < 0)
+
+	/* ignore errors or packets without data */
+	if (ret < offsetof(struct u2f_hid_msg, init.data))
 		return 0;
 
 	/* only take the minimum amount of data it is safe to take */
drivers/hid/usbhid/hid-core.c +12 -1
index b234958f883a..c56cb03c1551 100644
@@ -505,7 +505,7 @@ static void hid_ctrl(struct urb *urb)
 
 	if (unplug) {
 		usbhid->ctrltail = usbhid->ctrlhead;
-	} else {
+	} else if (usbhid->ctrlhead != usbhid->ctrltail) {
 		usbhid->ctrltail = (usbhid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1);
 
 		if (usbhid->ctrlhead != usbhid->ctrltail &&
@@ -1223,9 +1223,20 @@ static void usbhid_stop(struct hid_device *hid)
 	mutex_lock(&usbhid->mutex);
 
 	clear_bit(HID_STARTED, &usbhid->iofl);
+
 	spin_lock_irq(&usbhid->lock);	/* Sync with error and led handlers */
 	set_bit(HID_DISCONNECTED, &usbhid->iofl);
+	while (usbhid->ctrltail != usbhid->ctrlhead) {
+		if (usbhid->ctrl[usbhid->ctrltail].dir == USB_DIR_OUT) {
+			kfree(usbhid->ctrl[usbhid->ctrltail].raw_report);
+			usbhid->ctrl[usbhid->ctrltail].raw_report = NULL;
+		}
+
+		usbhid->ctrltail = (usbhid->ctrltail + 1) &
+			(HID_CONTROL_FIFO_SIZE - 1);
+	}
 	spin_unlock_irq(&usbhid->lock);
+
 	usb_kill_urb(usbhid->urbin);
 	usb_kill_urb(usbhid->urbout);
 	usb_kill_urb(usbhid->urbctrl);
drivers/hwmon/mlxreg-fan.c +9 -3
index 116681fde33d..89fe7b9fe26b 100644
@@ -315,8 +315,8 @@ static int mlxreg_fan_set_cur_state(struct thermal_cooling_device *cdev,
 {
 	struct mlxreg_fan *fan = cdev->devdata;
 	unsigned long cur_state;
+	int i, config = 0;
 	u32 regval;
-	int i;
 	int err;
 
 	/*
@@ -329,6 +329,12 @@ static int mlxreg_fan_set_cur_state(struct thermal_cooling_device *cdev,
 	 * overwritten.
 	 */
 	if (state >= MLXREG_FAN_SPEED_MIN && state <= MLXREG_FAN_SPEED_MAX) {
+		/*
+		 * This is configuration change, which is only supported through sysfs.
+		 * For configuration non-zero value is to be returned to avoid thermal
+		 * statistics update.
+		 */
+		config = 1;
 		state -= MLXREG_FAN_MAX_STATE;
 		for (i = 0; i < state; i++)
 			fan->cooling_levels[i] = state;
@@ -343,7 +349,7 @@ static int mlxreg_fan_set_cur_state(struct thermal_cooling_device *cdev,
 
 		cur_state = MLXREG_FAN_PWM_DUTY2STATE(regval);
 		if (state < cur_state)
-			return 0;
+			return config;
 
 		state = cur_state;
 	}
@@ -359,7 +365,7 @@ static int mlxreg_fan_set_cur_state(struct thermal_cooling_device *cdev,
 		dev_err(fan->dev, "Failed to write PWM duty\n");
 		return err;
 	}
-	return 0;
+	return config;
 }
 
 static const struct thermal_cooling_device_ops mlxreg_fan_cooling_ops = {
drivers/hwmon/occ/common.c +5 -12
index 0d68a78be980..ae664613289c 100644
@@ -340,18 +340,11 @@ static ssize_t occ_show_temp_10(struct device *dev,
 		if (val == OCC_TEMP_SENSOR_FAULT)
 			return -EREMOTEIO;
 
-		/*
-		 * VRM doesn't return temperature, only alarm bit. This
-		 * attribute maps to tempX_alarm instead of tempX_input for
-		 * VRM
-		 */
-		if (temp->fru_type != OCC_FRU_TYPE_VRM) {
-			/* sensor not ready */
-			if (val == 0)
-				return -EAGAIN;
+		/* sensor not ready */
+		if (val == 0)
+			return -EAGAIN;
 
-			val *= 1000;
-		}
+		val *= 1000;
 		break;
 	case 2:
 		val = temp->fru_type;
@@ -886,7 +879,7 @@ static int occ_setup_sensor_attrs(struct occ *occ)
 					     0, i);
 		attr++;
 
-		if (sensors->temp.version > 1 &&
+		if (sensors->temp.version == 2 &&
 		    temp->fru_type == OCC_FRU_TYPE_VRM) {
 			snprintf(attr->name, sizeof(attr->name),
 				 "temp%d_alarm", s);
drivers/hwmon/pmbus/mp2975.c +1 -1
index eb94bd5f4e2a..51986adfbf47 100644
@@ -54,7 +54,7 @@
 
 #define MP2975_RAIL2_FUNC	(PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | \
 				 PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | \
-				 PMBUS_PHASE_VIRTUAL)
+				 PMBUS_HAVE_POUT | PMBUS_PHASE_VIRTUAL)
 
 struct mp2975_data {
 	struct pmbus_driver_info info;
drivers/hwmon/tmp421.c +39 -32

119 lines not on this page · raw message

drivers/hwmon/w83791d.c +11 -18
index 37b25a1474c4..3c1be2c11fdf 100644
@@ -273,9 +273,6 @@ struct w83791d_data {
 	char valid;			/* !=0 if following fields are valid */
 	unsigned long last_updated;	/* In jiffies */
 
-	/* array of 2 pointers to subclients */
-	struct i2c_client *lm75[2];
-
 	/* volts */
 	u8 in[NUMBER_OF_VIN];		/* Register value */
 	u8 in_max[NUMBER_OF_VIN];	/* Register value */
@@ -1257,7 +1254,6 @@ static const struct attribute_group w83791d_group_fanpwm45 = {
 static int w83791d_detect_subclients(struct i2c_client *client)
 {
 	struct i2c_adapter *adapter = client->adapter;
-	struct w83791d_data *data = i2c_get_clientdata(client);
 	int address = client->addr;
 	int i, id;
 	u8 val;
@@ -1280,22 +1276,19 @@ static int w83791d_detect_subclients(struct i2c_client *client)
 	}
 
 	val = w83791d_read(client, W83791D_REG_I2C_SUBADDR);
-	if (!(val & 0x08))
-		data->lm75[0] = devm_i2c_new_dummy_device(&client->dev, adapter,
-							  0x48 + (val & 0x7));
-	if (!(val & 0x80)) {
-		if (!IS_ERR(data->lm75[0]) &&
-				((val & 0x7) == ((val >> 4) & 0x7))) {
-			dev_err(&client->dev,
-				"duplicate addresses 0x%x, "
-				"use force_subclient\n",
-				data->lm75[0]->addr);
-			return -ENODEV;
-		}
-		data->lm75[1] = devm_i2c_new_dummy_device(&client->dev, adapter,
-							  0x48 + ((val >> 4) & 0x7));
+
+	if (!(val & 0x88) && (val & 0x7) == ((val >> 4) & 0x7)) {
+		dev_err(&client->dev,
+			"duplicate addresses 0x%x, use force_subclient\n", 0x48 + (val & 0x7));
+		return -ENODEV;
 	}
 
+	if (!(val & 0x08))
+		devm_i2c_new_dummy_device(&client->dev, adapter, 0x48 + (val & 0x7));
+
+	if (!(val & 0x80))
+		devm_i2c_new_dummy_device(&client->dev, adapter, 0x48 + ((val >> 4) & 0x7));
+
 	return 0;
 }
 
drivers/hwmon/w83792d.c +11 -17
index abd5c3a722b9..1f175f381350 100644
@@ -264,9 +264,6 @@ struct w83792d_data {
 	char valid;		/* !=0 if following fields are valid */
 	unsigned long last_updated;	/* In jiffies */
 
-	/* array of 2 pointers to subclients */
-	struct i2c_client *lm75[2];
-
 	u8 in[9];		/* Register value */
 	u8 in_max[9];		/* Register value */
 	u8 in_min[9];		/* Register value */
@@ -927,7 +924,6 @@ w83792d_detect_subclients(struct i2c_client *new_client)
 	int address = new_client->addr;
 	u8 val;
 	struct i2c_adapter *adapter = new_client->adapter;
-	struct w83792d_data *data = i2c_get_clientdata(new_client);
 
 	id = i2c_adapter_id(adapter);
 	if (force_subclients[0] == id && force_subclients[1] == address) {
@@ -946,21 +942,19 @@ w83792d_detect_subclients(struct i2c_client *new_client)
 	}
 
 	val = w83792d_read_value(new_client, W83792D_REG_I2C_SUBADDR);
-	if (!(val & 0x08))
-		data->lm75[0] = devm_i2c_new_dummy_device(&new_client->dev, adapter,
-							  0x48 + (val & 0x7));
-	if (!(val & 0x80)) {
-		if (!IS_ERR(data->lm75[0]) &&
-			((val & 0x7) == ((val >> 4) & 0x7))) {
-			dev_err(&new_client->dev,
-				"duplicate addresses 0x%x, use force_subclient\n",
-				data->lm75[0]->addr);
-			return -ENODEV;
-		}
-		data->lm75[1] = devm_i2c_new_dummy_device(&new_client->dev, adapter,
-							  0x48 + ((val >> 4) & 0x7));
+
+	if (!(val & 0x88) && (val & 0x7) == ((val >> 4) & 0x7)) {
+		dev_err(&new_client->dev,
+			"duplicate addresses 0x%x, use force_subclient\n", 0x48 + (val & 0x7));
+		return -ENODEV;
 	}
 
+	if (!(val & 0x08))
+		devm_i2c_new_dummy_device(&new_client->dev, adapter, 0x48 + (val & 0x7));
+
+	if (!(val & 0x80))
+		devm_i2c_new_dummy_device(&new_client->dev, adapter, 0x48 + ((val >> 4) & 0x7));
+
 	return 0;
 }
 
drivers/hwmon/w83793.c +11 -15
index e7d0484eabe4..1d2854de1cfc 100644
@@ -202,7 +202,6 @@ static inline s8 TEMP_TO_REG(long val, s8 min, s8 max)
 }
 
 struct w83793_data {
-	struct i2c_client *lm75[2];
 	struct device *hwmon_dev;
 	struct mutex update_lock;
 	char valid;			/* !=0 if following fields are valid */
@@ -1566,7 +1565,6 @@ w83793_detect_subclients(struct i2c_client *client)
 	int address = client->addr;
 	u8 tmp;
 	struct i2c_adapter *adapter = client->adapter;
-	struct w83793_data *data = i2c_get_clientdata(client);
 
 	id = i2c_adapter_id(adapter);
 	if (force_subclients[0] == id && force_subclients[1] == address) {
@@ -1586,21 +1584,19 @@ w83793_detect_subclients(struct i2c_client *client)
 	}
 
 	tmp = w83793_read_value(client, W83793_REG_I2C_SUBADDR);
-	if (!(tmp & 0x08))
-		data->lm75[0] = devm_i2c_new_dummy_device(&client->dev, adapter,
-							  0x48 + (tmp & 0x7));
-	if (!(tmp & 0x80)) {
-		if (!IS_ERR(data->lm75[0])
-		    && ((tmp & 0x7) == ((tmp >> 4) & 0x7))) {
-			dev_err(&client->dev,
-				"duplicate addresses 0x%x, "
-				"use force_subclients\n", data->lm75[0]->addr);
-			return -ENODEV;
-		}
-		data->lm75[1] = devm_i2c_new_dummy_device(&client->dev, adapter,
-							  0x48 + ((tmp >> 4) & 0x7));
+
+	if (!(tmp & 0x88) && (tmp & 0x7) == ((tmp >> 4) & 0x7)) {
+		dev_err(&client->dev,
+			"duplicate addresses 0x%x, use force_subclient\n", 0x48 + (tmp & 0x7));
+		return -ENODEV;
 	}
 
+	if (!(tmp & 0x08))
+		devm_i2c_new_dummy_device(&client->dev, adapter, 0x48 + (tmp & 0x7));
+
+	if (!(tmp & 0x80))
+		devm_i2c_new_dummy_device(&client->dev, adapter, 0x48 + ((tmp >> 4) & 0x7));
+
 	return 0;
 }
 
drivers/infiniband/core/cma.c +45 -6

107 lines not on this page · raw message

drivers/infiniband/core/cma_priv.h +1 -0
index 5c463da99845..f92f101ea981 100644
@@ -91,6 +91,7 @@ struct rdma_id_private {
 	u8			afonly;
 	u8			timeout;
 	u8			min_rnr_timer;
+	u8 used_resolve_ip;
 	enum ib_gid_type	gid_type;
 
 	/*
drivers/infiniband/hw/hfi1/ipoib_tx.c +4 -4
index 993f9838b6c8..e1fdeadda437 100644
@@ -873,14 +873,14 @@ void hfi1_ipoib_tx_timeout(struct net_device *dev, unsigned int q)
 	struct hfi1_ipoib_txq *txq = &priv->txqs[q];
 	u64 completed = atomic64_read(&txq->complete_txreqs);
 
-	dd_dev_info(priv->dd, "timeout txq %llx q %u stopped %u stops %d no_desc %d ring_full %d\n",
-		    (unsigned long long)txq, q,
+	dd_dev_info(priv->dd, "timeout txq %p q %u stopped %u stops %d no_desc %d ring_full %d\n",
+		    txq, q,
 		    __netif_subqueue_stopped(dev, txq->q_idx),
 		    atomic_read(&txq->stops),
 		    atomic_read(&txq->no_desc),
 		    atomic_read(&txq->ring_full));
-	dd_dev_info(priv->dd, "sde %llx engine %u\n",
-		    (unsigned long long)txq->sde,
+	dd_dev_info(priv->dd, "sde %p engine %u\n",
+		    txq->sde,
 		    txq->sde ? txq->sde->this_idx : 0);
 	dd_dev_info(priv->dd, "flow %x\n", txq->flow.as_int);
 	dd_dev_info(priv->dd, "sent %llu completed %llu used %llu\n",
drivers/infiniband/hw/hns/hns_roce_cq.c +22 -9
index 1e9c3c5bee68..d763f097599f 100644
@@ -326,19 +326,30 @@ static void set_cq_param(struct hns_roce_cq *hr_cq, u32 cq_entries, int vector,
 	INIT_LIST_HEAD(&hr_cq->rq_list);
 }
 
-static void set_cqe_size(struct hns_roce_cq *hr_cq, struct ib_udata *udata,
-			 struct hns_roce_ib_create_cq *ucmd)
+static int set_cqe_size(struct hns_roce_cq *hr_cq, struct ib_udata *udata,
+			struct hns_roce_ib_create_cq *ucmd)
 {
 	struct hns_roce_dev *hr_dev = to_hr_dev(hr_cq->ib_cq.device);
 
-	if (udata) {
-		if (udata->inlen >= offsetofend(typeof(*ucmd), cqe_size))
-			hr_cq->cqe_size = ucmd->cqe_size;
-		else
-			hr_cq->cqe_size = HNS_ROCE_V2_CQE_SIZE;
-	} else {
+	if (!udata) {
 		hr_cq->cqe_size = hr_dev->caps.cqe_sz;
+		return 0;
+	}
+
+	if (udata->inlen >= offsetofend(typeof(*ucmd), cqe_size)) {
+		if (ucmd->cqe_size != HNS_ROCE_V2_CQE_SIZE &&
+		    ucmd->cqe_size != HNS_ROCE_V3_CQE_SIZE) {
+			ibdev_err(&hr_dev->ib_dev,
+				  "invalid cqe size %u.\n", ucmd->cqe_size);
+			return -EINVAL;
+		}
+
+		hr_cq->cqe_size = ucmd->cqe_size;
+	} else {
+		hr_cq->cqe_size = HNS_ROCE_V2_CQE_SIZE;
 	}
+
+	return 0;
 }
 
 int hns_roce_create_cq(struct ib_cq *ib_cq, const struct ib_cq_init_attr *attr,
@@ -366,7 +377,9 @@ int hns_roce_create_cq(struct ib_cq *ib_cq, const struct ib_cq_init_attr *attr,
 
 	set_cq_param(hr_cq, attr->cqe, attr->comp_vector, &ucmd);
 
-	set_cqe_size(hr_cq, udata, &ucmd);
+	ret = set_cqe_size(hr_cq, udata, &ucmd);
+	if (ret)
+		return ret;
 
 	ret = alloc_cq_buf(hr_dev, hr_cq, udata, ucmd.buf_addr);
 	if (ret) {
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +7 -6
index c320891c8763..0ccb0c453f6a 100644
@@ -3306,7 +3306,7 @@ static void __hns_roce_v2_cq_clean(struct hns_roce_cq *hr_cq, u32 qpn,
 			dest = get_cqe_v2(hr_cq, (prod_index + nfreed) &
 					  hr_cq->ib_cq.cqe);
 			owner_bit = hr_reg_read(dest, CQE_OWNER);
-			memcpy(dest, cqe, sizeof(*cqe));
+			memcpy(dest, cqe, hr_cq->cqe_size);
 			hr_reg_write(dest, CQE_OWNER, owner_bit);
 		}
 	}
@@ -4411,7 +4411,12 @@ static int modify_qp_init_to_rtr(struct ib_qp *ibqp,
 	hr_qp->path_mtu = ib_mtu;
 
 	mtu = ib_mtu_enum_to_int(ib_mtu);
-	if (WARN_ON(mtu < 0))
+	if (WARN_ON(mtu <= 0))
+		return -EINVAL;
+#define MAX_LP_MSG_LEN 65536
+	/* MTU * (2 ^ LP_PKTN_INI) shouldn't be bigger than 64KB */
+	lp_pktn_ini = ilog2(MAX_LP_MSG_LEN / mtu);
+	if (WARN_ON(lp_pktn_ini >= 0xF))
 		return -EINVAL;
 
 	if (attr_mask & IB_QP_PATH_MTU) {
@@ -4419,10 +4424,6 @@ static int modify_qp_init_to_rtr(struct ib_qp *ibqp,
 		hr_reg_clear(qpc_mask, QPC_MTU);
 	}
 
-#define MAX_LP_MSG_LEN 65536
-	/* MTU * (2 ^ LP_PKTN_INI) shouldn't be bigger than 64KB */
-	lp_pktn_ini = ilog2(MAX_LP_MSG_LEN / mtu);
-
 	hr_reg_write(context, QPC_LP_PKTN_INI, lp_pktn_ini);
 	hr_reg_clear(qpc_mask, QPC_LP_PKTN_INI);
 
drivers/infiniband/hw/irdma/cm.c +2 -2
index 6b62299abfbb..6dea0a49d171 100644
@@ -3496,7 +3496,7 @@ static void irdma_cm_disconn_true(struct irdma_qp *iwqp)
 	     original_hw_tcp_state == IRDMA_TCP_STATE_TIME_WAIT ||
 	     last_ae == IRDMA_AE_RDMAP_ROE_BAD_LLP_CLOSE ||
 	     last_ae == IRDMA_AE_BAD_CLOSE ||
-	     last_ae == IRDMA_AE_LLP_CONNECTION_RESET || iwdev->reset)) {
+	     last_ae == IRDMA_AE_LLP_CONNECTION_RESET || iwdev->rf->reset)) {
 		issue_close = 1;
 		iwqp->cm_id = NULL;
 		qp->term_flags = 0;
@@ -4250,7 +4250,7 @@ void irdma_cm_teardown_connections(struct irdma_device *iwdev, u32 *ipaddr,
 				       teardown_entry);
 		attr.qp_state = IB_QPS_ERR;
 		irdma_modify_qp(&cm_node->iwqp->ibqp, &attr, IB_QP_STATE, NULL);
-		if (iwdev->reset)
+		if (iwdev->rf->reset)
 			irdma_cm_disconn(cm_node->iwqp);
 		irdma_rem_ref_cm_node(cm_node);
 	}
drivers/infiniband/hw/irdma/hw.c +11 -3
index 00de5ee9a260..7de525a5ccf8 100644
@@ -176,6 +176,14 @@ static void irdma_set_flush_fields(struct irdma_sc_qp *qp,
 	case IRDMA_AE_LLP_RECEIVED_MPA_CRC_ERROR:
 		qp->flush_code = FLUSH_GENERAL_ERR;
 		break;
+	case IRDMA_AE_LLP_TOO_MANY_RETRIES:
+		qp->flush_code = FLUSH_RETRY_EXC_ERR;
+		break;
+	case IRDMA_AE_AMP_MWBIND_INVALID_RIGHTS:
+	case IRDMA_AE_AMP_MWBIND_BIND_DISABLED:
+	case IRDMA_AE_AMP_MWBIND_INVALID_BOUNDS:
+		qp->flush_code = FLUSH_MW_BIND_ERR;
+		break;
 	default:
 		qp->flush_code = FLUSH_FATAL_ERR;
 		break;
@@ -1489,7 +1497,7 @@ void irdma_reinitialize_ieq(struct irdma_sc_vsi *vsi)
 
 	irdma_puda_dele_rsrc(vsi, IRDMA_PUDA_RSRC_TYPE_IEQ, false);
 	if (irdma_initialize_ieq(iwdev)) {
-		iwdev->reset = true;
+		iwdev->rf->reset = true;
 		rf->gen_ops.request_reset(rf);
 	}
 }
@@ -1632,13 +1640,13 @@ void irdma_rt_deinit_hw(struct irdma_device *iwdev)
 	case IEQ_CREATED:
 		if (!iwdev->roce_mode)
 			irdma_puda_dele_rsrc(&iwdev->vsi, IRDMA_PUDA_RSRC_TYPE_IEQ,
-					     iwdev->reset);
+					     iwdev->rf->reset);
 		fallthrough;
 	case ILQ_CREATED:
 		if (!iwdev->roce_mode)
 			irdma_puda_dele_rsrc(&iwdev->vsi,
 					     IRDMA_PUDA_RSRC_TYPE_ILQ,
-					     iwdev->reset);
+					     iwdev->rf->reset);
 		break;
 	default:
 		ibdev_warn(&iwdev->ibdev, "bad init_state = %d\n", iwdev->init_state);
drivers/infiniband/hw/irdma/i40iw_if.c +1 -1
index bddf88194d09..d219f64b2c3d 100644
@@ -55,7 +55,7 @@ static void i40iw_close(struct i40e_info *cdev_info, struct i40e_client *client,
 
 	iwdev = to_iwdev(ibdev);
 	if (reset)
-		iwdev->reset = true;
+		iwdev->rf->reset = true;
 
 	iwdev->iw_status = 0;
 	irdma_port_ibevent(iwdev);
drivers/infiniband/hw/irdma/main.h +0 -1
index 743d9e143a99..b678fe712447 100644
@@ -346,7 +346,6 @@ struct irdma_device {
 	bool roce_mode:1;
 	bool roce_dcqcn_en:1;
 	bool dcb:1;
-	bool reset:1;
 	bool iw_ooo:1;
 	enum init_completion_state init_state;
 
drivers/infiniband/hw/irdma/user.h +2 -0
index ff705f323233..3dcbb1fbf2c6 100644
@@ -102,6 +102,8 @@ enum irdma_flush_opcode {
 	FLUSH_REM_OP_ERR,
 	FLUSH_LOC_LEN_ERR,
 	FLUSH_FATAL_ERR,
+	FLUSH_RETRY_EXC_ERR,
+	FLUSH_MW_BIND_ERR,
 };
 
 enum irdma_cmpl_status {
drivers/infiniband/hw/irdma/utils.c +1 -1
index 5bbe44e54f9a..832e9604766b 100644
@@ -2510,7 +2510,7 @@ void irdma_modify_qp_to_err(struct irdma_sc_qp *sc_qp)
 	struct irdma_qp *qp = sc_qp->qp_uk.back_qp;
 	struct ib_qp_attr attr;
 
-	if (qp->iwdev->reset)
+	if (qp->iwdev->rf->reset)
 		return;
 	attr.qp_state = IB_QPS_ERR;
 
drivers/infiniband/hw/irdma/verbs.c +6 -3
index 717147ed0519..fa393c5ea397 100644
@@ -535,8 +535,7 @@ static int irdma_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata)
 	irdma_qp_rem_ref(&iwqp->ibqp);
 	wait_for_completion(&iwqp->free_qp);
 	irdma_free_lsmm_rsrc(iwqp);
-	if (!iwdev->reset)
-		irdma_cqp_qp_destroy_cmd(&iwdev->rf->sc_dev, &iwqp->sc_qp);
+	irdma_cqp_qp_destroy_cmd(&iwdev->rf->sc_dev, &iwqp->sc_qp);
 
 	if (!iwqp->user_mode) {
 		if (iwqp->iwscq) {
@@ -2041,7 +2040,7 @@ static int irdma_create_cq(struct ib_cq *ibcq,
 		/* Kmode allocations */
 		int rsize;
 
-		if (entries > rf->max_cqe) {
+		if (entries < 1 || entries > rf->max_cqe) {
 			err_code = -EINVAL;
 			goto cq_free_rsrc;
 		}
@@ -3359,6 +3358,10 @@ static enum ib_wc_status irdma_flush_err_to_ib_wc_status(enum irdma_flush_opcode
 		return IB_WC_LOC_LEN_ERR;
 	case FLUSH_GENERAL_ERR:
 		return IB_WC_WR_FLUSH_ERR;
+	case FLUSH_RETRY_EXC_ERR:
+		return IB_WC_RETRY_EXC_ERR;
+	case FLUSH_MW_BIND_ERR:
+		return IB_WC_MW_BIND_ERR;
 	case FLUSH_FATAL_ERR:
 	default:
 		return IB_WC_FATAL_ERR;
drivers/interconnect/qcom/sdm660.c +5 -6
index 632dbdd21915..99eef7e2d326 100644
@@ -44,9 +44,9 @@
 #define NOC_PERM_MODE_BYPASS		(1 << NOC_QOS_MODE_BYPASS)
 
 #define NOC_QOS_PRIORITYn_ADDR(n)	(0x8 + (n * 0x1000))
-#define NOC_QOS_PRIORITY_MASK		0xf
+#define NOC_QOS_PRIORITY_P1_MASK	0xc
+#define NOC_QOS_PRIORITY_P0_MASK	0x3
 #define NOC_QOS_PRIORITY_P1_SHIFT	0x2
-#define NOC_QOS_PRIORITY_P0_SHIFT	0x3
 
 #define NOC_QOS_MODEn_ADDR(n)		(0xc + (n * 0x1000))
 #define NOC_QOS_MODEn_MASK		0x3
@@ -307,7 +307,7 @@ DEFINE_QNODE(slv_bimc_cfg, SDM660_SLAVE_BIMC_CFG, 4, -1, 56, true, -1, 0, -1, 0)
 DEFINE_QNODE(slv_prng, SDM660_SLAVE_PRNG, 4, -1, 44, true, -1, 0, -1, 0);
 DEFINE_QNODE(slv_spdm, SDM660_SLAVE_SPDM, 4, -1, 60, true, -1, 0, -1, 0);
 DEFINE_QNODE(slv_qdss_cfg, SDM660_SLAVE_QDSS_CFG, 4, -1, 63, true, -1, 0, -1, 0);
-DEFINE_QNODE(slv_cnoc_mnoc_cfg, SDM660_SLAVE_BLSP_1, 4, -1, 66, true, -1, 0, -1, SDM660_MASTER_CNOC_MNOC_CFG);
+DEFINE_QNODE(slv_cnoc_mnoc_cfg, SDM660_SLAVE_CNOC_MNOC_CFG, 4, -1, 66, true, -1, 0, -1, SDM660_MASTER_CNOC_MNOC_CFG);
 DEFINE_QNODE(slv_snoc_cfg, SDM660_SLAVE_SNOC_CFG, 4, -1, 70, true, -1, 0, -1, 0);
 DEFINE_QNODE(slv_qm_cfg, SDM660_SLAVE_QM_CFG, 4, -1, 212, true, -1, 0, -1, 0);
 DEFINE_QNODE(slv_clk_ctl, SDM660_SLAVE_CLK_CTL, 4, -1, 47, true, -1, 0, -1, 0);
@@ -624,13 +624,12 @@ static int qcom_icc_noc_set_qos_priority(struct regmap *rmap,
 	/* Must be updated one at a time, P1 first, P0 last */
 	val = qos->areq_prio << NOC_QOS_PRIORITY_P1_SHIFT;
 	rc = regmap_update_bits(rmap, NOC_QOS_PRIORITYn_ADDR(qos->qos_port),
-				NOC_QOS_PRIORITY_MASK, val);
+				NOC_QOS_PRIORITY_P1_MASK, val);
 	if (rc)
 		return rc;
 
-	val = qos->prio_level << NOC_QOS_PRIORITY_P0_SHIFT;
 	return regmap_update_bits(rmap, NOC_QOS_PRIORITYn_ADDR(qos->qos_port),
-				  NOC_QOS_PRIORITY_MASK, val);
+				  NOC_QOS_PRIORITY_P0_MASK, qos->prio_level);
 }
 
 static int qcom_icc_set_noc_qos(struct icc_node *src, u64 max_bw)
drivers/ipack/devices/ipoctal.c +47 -16

142 lines not on this page · raw message

drivers/media/platform/s5p-jpeg/jpeg-core.c +9 -9
index d402e456f27d..7d0ab19c38bb 100644
@@ -1140,8 +1140,8 @@ static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result,
 			continue;
 		length = 0;
 		switch (c) {
-		/* SOF0: baseline JPEG */
-		case SOF0:
+		/* JPEG_MARKER_SOF0: baseline JPEG */
+		case JPEG_MARKER_SOF0:
 			if (get_word_be(&jpeg_buffer, &word))
 				break;
 			length = (long)word - 2;
@@ -1172,7 +1172,7 @@ static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result,
 			notfound = 0;
 			break;
 
-		case DQT:
+		case JPEG_MARKER_DQT:
 			if (get_word_be(&jpeg_buffer, &word))
 				break;
 			length = (long)word - 2;
@@ -1185,7 +1185,7 @@ static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result,
 			skip(&jpeg_buffer, length);
 			break;
 
-		case DHT:
+		case JPEG_MARKER_DHT:
 			if (get_word_be(&jpeg_buffer, &word))
 				break;
 			length = (long)word - 2;
@@ -1198,15 +1198,15 @@ static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result,
 			skip(&jpeg_buffer, length);
 			break;
 
-		case SOS:
+		case JPEG_MARKER_SOS:
 			sos = jpeg_buffer.curr - 2; /* 0xffda */
 			break;
 
 		/* skip payload-less markers */
-		case RST ... RST + 7:
-		case SOI:
-		case EOI:
-		case TEM:
+		case JPEG_MARKER_RST ... JPEG_MARKER_RST + 7:
+		case JPEG_MARKER_SOI:
+		case JPEG_MARKER_EOI:
+		case JPEG_MARKER_TEM:
 			break;
 
 		/* skip uninteresting payload markers */
drivers/media/platform/s5p-jpeg/jpeg-core.h +14 -14
index a77d93c098ce..8473a019bb5f 100644
@@ -37,15 +37,15 @@
 #define EXYNOS3250_IRQ_TIMEOUT		0x10000000
 
 /* a selection of JPEG markers */
-#define TEM				0x01
-#define SOF0				0xc0
-#define DHT				0xc4
-#define RST				0xd0
-#define SOI				0xd8
-#define EOI				0xd9
-#define	SOS				0xda
-#define DQT				0xdb
-#define DHP				0xde
+#define JPEG_MARKER_TEM				0x01
+#define JPEG_MARKER_SOF0				0xc0
+#define JPEG_MARKER_DHT				0xc4
+#define JPEG_MARKER_RST				0xd0
+#define JPEG_MARKER_SOI				0xd8
+#define JPEG_MARKER_EOI				0xd9
+#define	JPEG_MARKER_SOS				0xda
+#define JPEG_MARKER_DQT				0xdb
+#define JPEG_MARKER_DHP				0xde
 
 /* Flags that indicate a format can be used for capture/output */
 #define SJPEG_FMT_FLAG_ENC_CAPTURE	(1 << 0)
@@ -187,11 +187,11 @@ struct s5p_jpeg_marker {
  * @fmt:	driver-specific format of this queue
  * @w:		image width
  * @h:		image height
- * @sos:	SOS marker's position relative to the buffer beginning
- * @dht:	DHT markers' positions relative to the buffer beginning
- * @dqt:	DQT markers' positions relative to the buffer beginning
- * @sof:	SOF0 marker's position relative to the buffer beginning
- * @sof_len:	SOF0 marker's payload length (without length field itself)
+ * @sos:	JPEG_MARKER_SOS's position relative to the buffer beginning
+ * @dht:	JPEG_MARKER_DHT' positions relative to the buffer beginning
+ * @dqt:	JPEG_MARKER_DQT' positions relative to the buffer beginning
+ * @sof:	JPEG_MARKER_SOF0's position relative to the buffer beginning
+ * @sof_len:	JPEG_MARKER_SOF0's payload length (without length field itself)
  * @size:	image buffer size in bytes
  */
 struct s5p_jpeg_q_data {
drivers/media/rc/ir_toy.c +20 -1
index 3e729a17b35f..48d52baec1a1 100644
@@ -24,6 +24,7 @@ static const u8 COMMAND_VERSION[] = { 'v' };
 // End transmit and repeat reset command so we exit sump mode
 static const u8 COMMAND_RESET[] = { 0xff, 0xff, 0, 0, 0, 0, 0 };
 static const u8 COMMAND_SMODE_ENTER[] = { 's' };
+static const u8 COMMAND_SMODE_EXIT[] = { 0 };
 static const u8 COMMAND_TXSTART[] = { 0x26, 0x24, 0x25, 0x03 };
 
 #define REPLY_XMITCOUNT 't'
@@ -309,12 +310,30 @@ static int irtoy_tx(struct rc_dev *rc, uint *txbuf, uint count)
 		buf[i] = cpu_to_be16(v);
 	}
 
-	buf[count] = cpu_to_be16(0xffff);
+	buf[count] = 0xffff;
 
 	irtoy->tx_buf = buf;
 	irtoy->tx_len = size;
 	irtoy->emitted = 0;
 
+	// There is an issue where if the unit is receiving IR while the
+	// first TXSTART command is sent, the device might end up hanging
+	// with its led on. It does not respond to any command when this
+	// happens. To work around this, re-enter sample mode.
+	err = irtoy_command(irtoy, COMMAND_SMODE_EXIT,
+			    sizeof(COMMAND_SMODE_EXIT), STATE_RESET);
+	if (err) {
+		dev_err(irtoy->dev, "exit sample mode: %d\n", err);
+		return err;
+	}
+
+	err = irtoy_command(irtoy, COMMAND_SMODE_ENTER,
+			    sizeof(COMMAND_SMODE_ENTER), STATE_COMMAND);
+	if (err) {
+		dev_err(irtoy->dev, "enter sample mode: %d\n", err);
+		return err;
+	}
+
 	err = irtoy_command(irtoy, COMMAND_TXSTART, sizeof(COMMAND_TXSTART),
 			    STATE_TX);
 	kfree(buf);
drivers/mmc/host/renesas_sdhi_core.c +2 -0
index e49ca0f7fe9a..1543a5dd9425 100644
@@ -582,6 +582,8 @@ static void renesas_sdhi_reset(struct tmio_mmc_host *host)
 		/* Unknown why but without polling reset status, it will hang */
 		read_poll_timeout(reset_control_status, ret, ret == 0, 1, 100,
 				  false, priv->rstc);
+		/* At least SDHI_VER_GEN2_SDR50 needs manual release of reset */
+		sd_ctrl_write16(host, CTL_RESET_SD, 0x0001);
 		priv->needs_adjust_hs400 = false;
 		renesas_sdhi_set_clock(host, host->clk_cache);
 	} else if (priv->scc_ctl) {
drivers/net/dsa/mv88e6xxx/chip.c +10 -7
index 1c122a1f2f97..66b4f4a9832a 100644
@@ -2775,8 +2775,8 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
 	if (err)
 		return err;
 
-	/* Port Control 2: don't force a good FCS, set the maximum frame size to
-	 * 10240 bytes, disable 802.1q tags checking, don't discard tagged or
+	/* Port Control 2: don't force a good FCS, set the MTU size to
+	 * 10222 bytes, disable 802.1q tags checking, don't discard tagged or
 	 * untagged frames on this port, do a destination address lookup on all
 	 * received packets as usual, disable ARP mirroring and don't send a
 	 * copy of all transmitted/received frames on this port to the CPU.
@@ -2795,7 +2795,7 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
 		return err;
 
 	if (chip->info->ops->port_set_jumbo_size) {
-		err = chip->info->ops->port_set_jumbo_size(chip, port, 10240);
+		err = chip->info->ops->port_set_jumbo_size(chip, port, 10218);
 		if (err)
 			return err;
 	}
@@ -2885,10 +2885,10 @@ static int mv88e6xxx_get_max_mtu(struct dsa_switch *ds, int port)
 	struct mv88e6xxx_chip *chip = ds->priv;
 
 	if (chip->info->ops->port_set_jumbo_size)
-		return 10240;
+		return 10240 - VLAN_ETH_HLEN - EDSA_HLEN - ETH_FCS_LEN;
 	else if (chip->info->ops->set_max_frame_size)
-		return 1632;
-	return 1522;
+		return 1632 - VLAN_ETH_HLEN - EDSA_HLEN - ETH_FCS_LEN;
+	return 1522 - VLAN_ETH_HLEN - EDSA_HLEN - ETH_FCS_LEN;
 }
 
 static int mv88e6xxx_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
@@ -2896,6 +2896,9 @@ static int mv88e6xxx_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
 	struct mv88e6xxx_chip *chip = ds->priv;
 	int ret = 0;
 
+	if (dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port))
+		new_mtu += EDSA_HLEN;
+
 	mv88e6xxx_reg_lock(chip);
 	if (chip->info->ops->port_set_jumbo_size)
 		ret = chip->info->ops->port_set_jumbo_size(chip, port, new_mtu);
@@ -3657,7 +3660,6 @@ static const struct mv88e6xxx_ops mv88e6161_ops = {
 	.port_set_ucast_flood = mv88e6352_port_set_ucast_flood,
 	.port_set_mcast_flood = mv88e6352_port_set_mcast_flood,
 	.port_set_ether_type = mv88e6351_port_set_ether_type,
-	.port_set_jumbo_size = mv88e6165_port_set_jumbo_size,
 	.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
 	.port_pause_limit = mv88e6097_port_pause_limit,
 	.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
@@ -3682,6 +3684,7 @@ static const struct mv88e6xxx_ops mv88e6161_ops = {
 	.avb_ops = &mv88e6165_avb_ops,
 	.ptp_ops = &mv88e6165_ptp_ops,
 	.phylink_validate = mv88e6185_phylink_validate,
+	.set_max_frame_size = mv88e6185_g1_set_max_frame_size,
 };
 
 static const struct mv88e6xxx_ops mv88e6165_ops = {
drivers/net/dsa/mv88e6xxx/chip.h +1 -0
index 675b1f3e43b7..59f316cc8583 100644
@@ -18,6 +18,7 @@
 #include <linux/timecounter.h>
 #include <net/dsa.h>
 
+#define EDSA_HLEN		8
 #define MV88E6XXX_N_FID		4096
 
 /* PVT limits for 4-bit port and 5-bit switch */
drivers/net/dsa/mv88e6xxx/global1.c +2 -0
index 815b0f681d69..5848112036b0 100644
@@ -232,6 +232,8 @@ int mv88e6185_g1_set_max_frame_size(struct mv88e6xxx_chip *chip, int mtu)
 	u16 val;
 	int err;
 
+	mtu += ETH_HLEN + ETH_FCS_LEN;
+
 	err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_CTL1, &val);
 	if (err)
 		return err;
drivers/net/dsa/mv88e6xxx/port.c +2 -0
index f77e2ee64a60..451028c57af8 100644
@@ -1277,6 +1277,8 @@ int mv88e6165_port_set_jumbo_size(struct mv88e6xxx_chip *chip, int port,
 	u16 reg;
 	int err;
 
+	size += VLAN_ETH_HLEN + ETH_FCS_LEN;
+
 	err = mv88e6xxx_port_read(chip, port, MV88E6XXX_PORT_CTL2, &reg);
 	if (err)
 		return err;
drivers/net/ethernet/freescale/enetc/enetc_pf.c +1 -2
index c84f6c226743..cf00709caea4 100644
@@ -541,8 +541,7 @@ static void enetc_mac_config(struct enetc_hw *hw, phy_interface_t phy_mode)
 
 	if (phy_interface_mode_is_rgmii(phy_mode)) {
 		val = enetc_port_rd(hw, ENETC_PM0_IF_MODE);
-		val &= ~ENETC_PM0_IFM_EN_AUTO;
-		val &= ENETC_PM0_IFM_IFMODE_MASK;
+		val &= ~(ENETC_PM0_IFM_EN_AUTO | ENETC_PM0_IFM_IFMODE_MASK);
 		val |= ENETC_PM0_IFM_IFMODE_GMII | ENETC_PM0_IFM_RG;
 		enetc_port_wr(hw, ENETC_PM0_IF_MODE, val);
 	}
drivers/net/ethernet/hisilicon/hns3/hnae3.h +0 -1
index e0b7c3c44e7b..32987bd134a1 100644
@@ -750,7 +750,6 @@ struct hnae3_tc_info {
 	u8 prio_tc[HNAE3_MAX_USER_PRIO]; /* TC indexed by prio */
 	u16 tqp_count[HNAE3_MAX_TC];
 	u16 tqp_offset[HNAE3_MAX_TC];
-	unsigned long tc_en; /* bitmap of TC enabled */
 	u8 num_tc; /* Total number of enabled TCs */
 	bool mqprio_active;
 };
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +7 -9
index 9faa3712ea5b..114692c4f797 100644
@@ -620,13 +620,9 @@ static int hns3_nic_set_real_num_queue(struct net_device *netdev)
 			return ret;
 		}
 
-		for (i = 0; i < HNAE3_MAX_TC; i++) {
-			if (!test_bit(i, &tc_info->tc_en))
-				continue;
-
+		for (i = 0; i < tc_info->num_tc; i++)
 			netdev_set_tc_queue(netdev, i, tc_info->tqp_count[i],
 					    tc_info->tqp_offset[i]);
-		}
 	}
 
 	ret = netif_set_real_num_tx_queues(netdev, queue_size);
@@ -776,6 +772,11 @@ static int hns3_nic_net_open(struct net_device *netdev)
 	if (hns3_nic_resetting(netdev))
 		return -EBUSY;
 
+	if (!test_bit(HNS3_NIC_STATE_DOWN, &priv->state)) {
+		netdev_warn(netdev, "net open repeatedly!\n");
+		return 0;
+	}
+
 	netif_carrier_off(netdev);
 
 	ret = hns3_nic_set_real_num_queue(netdev);
@@ -4825,12 +4826,9 @@ static void hns3_init_tx_ring_tc(struct hns3_nic_priv *priv)
 	struct hnae3_tc_info *tc_info = &kinfo->tc_info;
 	int i;
 
-	for (i = 0; i < HNAE3_MAX_TC; i++) {
+	for (i = 0; i < tc_info->num_tc; i++) {
 		int j;
 
-		if (!test_bit(i, &tc_info->tc_en))
-			continue;
-
 		for (j = 0; j < tc_info->tqp_count[i]; j++) {
 			struct hnae3_queue *q;
 
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c +67 -38

140 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c +13 -8
index eb748aa35952..0f0bf3d503bf 100644
@@ -472,7 +472,7 @@ int hclge_cmd_queue_init(struct hclge_dev *hdev)
 	return ret;
 }
 
-static int hclge_firmware_compat_config(struct hclge_dev *hdev)
+static int hclge_firmware_compat_config(struct hclge_dev *hdev, bool en)
 {
 	struct hclge_firmware_compat_cmd *req;
 	struct hclge_desc desc;
@@ -480,13 +480,16 @@ static int hclge_firmware_compat_config(struct hclge_dev *hdev)
 
 	hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_IMP_COMPAT_CFG, false);
 
-	req = (struct hclge_firmware_compat_cmd *)desc.data;
+	if (en) {
+		req = (struct hclge_firmware_compat_cmd *)desc.data;
 
-	hnae3_set_bit(compat, HCLGE_LINK_EVENT_REPORT_EN_B, 1);
-	hnae3_set_bit(compat, HCLGE_NCSI_ERROR_REPORT_EN_B, 1);
-	if (hnae3_dev_phy_imp_supported(hdev))
-		hnae3_set_bit(compat, HCLGE_PHY_IMP_EN_B, 1);
-	req->compat = cpu_to_le32(compat);
+		hnae3_set_bit(compat, HCLGE_LINK_EVENT_REPORT_EN_B, 1);
+		hnae3_set_bit(compat, HCLGE_NCSI_ERROR_REPORT_EN_B, 1);
+		if (hnae3_dev_phy_imp_supported(hdev))
+			hnae3_set_bit(compat, HCLGE_PHY_IMP_EN_B, 1);
+
+		req->compat = cpu_to_le32(compat);
+	}
 
 	return hclge_cmd_send(&hdev->hw, &desc, 1);
 }
@@ -543,7 +546,7 @@ int hclge_cmd_init(struct hclge_dev *hdev)
 	/* ask the firmware to enable some features, driver can work without
 	 * it.
 	 */
-	ret = hclge_firmware_compat_config(hdev);
+	ret = hclge_firmware_compat_config(hdev, true);
 	if (ret)
 		dev_warn(&hdev->pdev->dev,
 			 "Firmware compatible features not enabled(%d).\n",
@@ -573,6 +576,8 @@ static void hclge_cmd_uninit_regs(struct hclge_hw *hw)
 
 void hclge_cmd_uninit(struct hclge_dev *hdev)
 {
+	hclge_firmware_compat_config(hdev, false);
+
 	set_bit(HCLGE_STATE_CMD_DISABLE, &hdev->state);
 	/* wait to ensure that the firmware completes the possible left
 	 * over commands.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c +16 -13
index 39f56f245d84..c90bfde2aecf 100644
@@ -224,6 +224,10 @@ static int hclge_ieee_setets(struct hnae3_handle *h, struct ieee_ets *ets)
 	}
 
 	hclge_tm_schd_info_update(hdev, num_tc);
+	if (num_tc > 1)
+		hdev->flag |= HCLGE_FLAG_DCB_ENABLE;
+	else
+		hdev->flag &= ~HCLGE_FLAG_DCB_ENABLE;
 
 	ret = hclge_ieee_ets_to_tm_info(hdev, ets);
 	if (ret)
@@ -285,8 +289,7 @@ static int hclge_ieee_setpfc(struct hnae3_handle *h, struct ieee_pfc *pfc)
 	u8 i, j, pfc_map, *prio_tc;
 	int ret;
 
-	if (!(hdev->dcbx_cap & DCB_CAP_DCBX_VER_IEEE) ||
-	    hdev->flag & HCLGE_FLAG_MQPRIO_ENABLE)
+	if (!(hdev->dcbx_cap & DCB_CAP_DCBX_VER_IEEE))
 		return -EINVAL;
 
 	if (pfc->pfc_en == hdev->tm_info.pfc_en)
@@ -420,8 +423,6 @@ static int hclge_mqprio_qopt_check(struct hclge_dev *hdev,
 static void hclge_sync_mqprio_qopt(struct hnae3_tc_info *tc_info,
 				   struct tc_mqprio_qopt_offload *mqprio_qopt)
 {
-	int i;
-
 	memset(tc_info, 0, sizeof(*tc_info));
 	tc_info->num_tc = mqprio_qopt->qopt.num_tc;
 	memcpy(tc_info->prio_tc, mqprio_qopt->qopt.prio_tc_map,
@@ -430,9 +431,6 @@ static void hclge_sync_mqprio_qopt(struct hnae3_tc_info *tc_info,
 	       sizeof_field(struct hnae3_tc_info, tqp_count));
 	memcpy(tc_info->tqp_offset, mqprio_qopt->qopt.offset,
 	       sizeof_field(struct hnae3_tc_info, tqp_offset));
-
-	for (i = 0; i < HNAE3_MAX_USER_PRIO; i++)
-		set_bit(tc_info->prio_tc[i], &tc_info->tc_en);
 }
 
 static int hclge_config_tc(struct hclge_dev *hdev,
@@ -498,12 +496,17 @@ static int hclge_setup_tc(struct hnae3_handle *h,
 	return hclge_notify_init_up(hdev);
 
 err_out:
-	/* roll-back */
-	memcpy(&kinfo->tc_info, &old_tc_info, sizeof(old_tc_info));
-	if (hclge_config_tc(hdev, &kinfo->tc_info))
-		dev_err(&hdev->pdev->dev,
-			"failed to roll back tc configuration\n");
-
+	if (!tc) {
+		dev_warn(&hdev->pdev->dev,
+			 "failed to destroy mqprio, will active after reset, ret = %d\n",
+			 ret);
+	} else {
+		/* roll-back */
+		memcpy(&kinfo->tc_info, &old_tc_info, sizeof(old_tc_info));
+		if (hclge_config_tc(hdev, &kinfo->tc_info))
+			dev_err(&hdev->pdev->dev,
+				"failed to roll back tc configuration\n");
+	}
 	hclge_notify_init_up(hdev);
 
 	return ret;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +9 -10
index 90a72c79fec9..9920e76b4f41 100644
@@ -8701,15 +8701,8 @@ int hclge_add_uc_addr_common(struct hclge_vport *vport,
 	}
 
 	/* check if we just hit the duplicate */
-	if (!ret) {
-		dev_warn(&hdev->pdev->dev, "VF %u mac(%pM) exists\n",
-			 vport->vport_id, addr);
-		return 0;
-	}
-
-	dev_err(&hdev->pdev->dev,
-		"PF failed to add unicast entry(%pM) in the MAC table\n",
-		addr);
+	if (!ret)
+		return -EEXIST;
 
 	return ret;
 }
@@ -8861,7 +8854,13 @@ static void hclge_sync_vport_mac_list(struct hclge_vport *vport,
 		} else {
 			set_bit(HCLGE_VPORT_STATE_MAC_TBL_CHANGE,
 				&vport->state);
-			break;
+
+			/* If one unicast mac address is existing in hardware,
+			 * we need to try whether other unicast mac addresses
+			 * are new addresses that can be added.
+			 */
+			if (ret != -EEXIST)
+				break;
 		}
 	}
 }
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +5 -28
index 44618cc4cca1..f314dbd3ce11 100644
@@ -687,12 +687,10 @@ static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport)
 
 	for (i = 0; i < HNAE3_MAX_TC; i++) {
 		if (hdev->hw_tc_map & BIT(i) && i < kinfo->tc_info.num_tc) {
-			set_bit(i, &kinfo->tc_info.tc_en);
 			kinfo->tc_info.tqp_offset[i] = i * kinfo->rss_size;
 			kinfo->tc_info.tqp_count[i] = kinfo->rss_size;
 		} else {
 			/* Set to default queue if TC is disable */
-			clear_bit(i, &kinfo->tc_info.tc_en);
 			kinfo->tc_info.tqp_offset[i] = 0;
 			kinfo->tc_info.tqp_count[i] = 1;
 		}
@@ -729,14 +727,6 @@ static void hclge_tm_tc_info_init(struct hclge_dev *hdev)
 	for (i = 0; i < HNAE3_MAX_USER_PRIO; i++)
 		hdev->tm_info.prio_tc[i] =
 			(i >= hdev->tm_info.num_tc) ? 0 : i;
-
-	/* DCB is enabled if we have more than 1 TC or pfc_en is
-	 * non-zero.
-	 */
-	if (hdev->tm_info.num_tc > 1 || hdev->tm_info.pfc_en)
-		hdev->flag |= HCLGE_FLAG_DCB_ENABLE;
-	else
-		hdev->flag &= ~HCLGE_FLAG_DCB_ENABLE;
 }
 
 static void hclge_tm_pg_info_init(struct hclge_dev *hdev)
@@ -767,10 +757,10 @@ static void hclge_tm_pg_info_init(struct hclge_dev *hdev)
 
 static void hclge_update_fc_mode_by_dcb_flag(struct hclge_dev *hdev)
 {
-	if (!(hdev->flag & HCLGE_FLAG_DCB_ENABLE)) {
+	if (hdev->tm_info.num_tc == 1 && !hdev->tm_info.pfc_en) {
 		if (hdev->fc_mode_last_time == HCLGE_FC_PFC)
 			dev_warn(&hdev->pdev->dev,
-				 "DCB is disable, but last mode is FC_PFC\n");
+				 "Only 1 tc used, but last mode is FC_PFC\n");
 
 		hdev->tm_info.fc_mode = hdev->fc_mode_last_time;
 	} else if (hdev->tm_info.fc_mode != HCLGE_FC_PFC) {
@@ -796,7 +786,7 @@ static void hclge_update_fc_mode(struct hclge_dev *hdev)
 	}
 }
 
-static void hclge_pfc_info_init(struct hclge_dev *hdev)
+void hclge_tm_pfc_info_update(struct hclge_dev *hdev)
 {
 	if (hdev->ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V3)
 		hclge_update_fc_mode(hdev);
@@ -812,7 +802,7 @@ static void hclge_tm_schd_info_init(struct hclge_dev *hdev)
 
 	hclge_tm_vport_info_update(hdev);
 
-	hclge_pfc_info_init(hdev);
+	hclge_tm_pfc_info_update(hdev);
 }
 
 static int hclge_tm_pg_to_pri_map(struct hclge_dev *hdev)
@@ -1558,19 +1548,6 @@ void hclge_tm_schd_info_update(struct hclge_dev *hdev, u8 num_tc)
 	hclge_tm_schd_info_init(hdev);
 }
 
-void hclge_tm_pfc_info_update(struct hclge_dev *hdev)
-{
-	/* DCB is enabled if we have more than 1 TC or pfc_en is
-	 * non-zero.
-	 */
-	if (hdev->tm_info.num_tc > 1 || hdev->tm_info.pfc_en)
-		hdev->flag |= HCLGE_FLAG_DCB_ENABLE;
-	else
-		hdev->flag &= ~HCLGE_FLAG_DCB_ENABLE;
-
-	hclge_pfc_info_init(hdev);
-}
-
 int hclge_tm_init_hw(struct hclge_dev *hdev, bool init)
 {
 	int ret;
@@ -1616,7 +1593,7 @@ int hclge_tm_vport_map_update(struct hclge_dev *hdev)
 	if (ret)
 		return ret;
 
-	if (!(hdev->flag & HCLGE_FLAG_DCB_ENABLE))
+	if (hdev->tm_info.num_tc == 1 && !hdev->tm_info.pfc_en)
 		return 0;
 
 	return hclge_tm_bp_setup(hdev);
drivers/net/ethernet/intel/e100.c +15 -7
index 1b0958bd24f6..1fa68ebe9432 100644
@@ -2437,11 +2437,15 @@ static void e100_get_drvinfo(struct net_device *netdev,
 		sizeof(info->bus_info));
 }
 
-#define E100_PHY_REGS 0x1C
+#define E100_PHY_REGS 0x1D
 static int e100_get_regs_len(struct net_device *netdev)
 {
 	struct nic *nic = netdev_priv(netdev);
-	return 1 + E100_PHY_REGS + sizeof(nic->mem->dump_buf);
+
+	/* We know the number of registers, and the size of the dump buffer.
+	 * Calculate the total size in bytes.
+	 */
+	return (1 + E100_PHY_REGS) * sizeof(u32) + sizeof(nic->mem->dump_buf);
 }
 
 static void e100_get_regs(struct net_device *netdev,
@@ -2455,14 +2459,18 @@ static void e100_get_regs(struct net_device *netdev,
 	buff[0] = ioread8(&nic->csr->scb.cmd_hi) << 24 |
 		ioread8(&nic->csr->scb.cmd_lo) << 16 |
 		ioread16(&nic->csr->scb.status);
-	for (i = E100_PHY_REGS; i >= 0; i--)
-		buff[1 + E100_PHY_REGS - i] =
-			mdio_read(netdev, nic->mii.phy_id, i);
+	for (i = 0; i < E100_PHY_REGS; i++)
+		/* Note that we read the registers in reverse order. This
+		 * ordering is the ABI apparently used by ethtool and other
+		 * applications.
+		 */
+		buff[1 + i] = mdio_read(netdev, nic->mii.phy_id,
+					E100_PHY_REGS - 1 - i);
 	memset(nic->mem->dump_buf, 0, sizeof(nic->mem->dump_buf));
 	e100_exec_cb(nic, NULL, e100_dump);
 	msleep(10);
-	memcpy(&buff[2 + E100_PHY_REGS], nic->mem->dump_buf,
-		sizeof(nic->mem->dump_buf));
+	memcpy(&buff[1 + E100_PHY_REGS], nic->mem->dump_buf,
+	       sizeof(nic->mem->dump_buf));
 }
 
 static void e100_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +1 -1
index 4ceaca0f6ce3..21321d164708 100644
@@ -3204,7 +3204,7 @@ static unsigned int ixgbe_max_channels(struct ixgbe_adapter *adapter)
 		max_combined = ixgbe_max_rss_indices(adapter);
 	}
 
-	return max_combined;
+	return min_t(int, max_combined, num_online_cpus());
 }
 
 static void ixgbe_get_channels(struct net_device *dev,
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +6 -2
index 14aea40da50f..77350e5fdf97 100644
@@ -10112,6 +10112,7 @@ static int ixgbe_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
 	struct ixgbe_adapter *adapter = netdev_priv(dev);
 	struct bpf_prog *old_prog;
 	bool need_reset;
+	int num_queues;
 
 	if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)
 		return -EINVAL;
@@ -10161,11 +10162,14 @@ static int ixgbe_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
 	/* Kick start the NAPI context if there is an AF_XDP socket open
 	 * on that queue id. This so that receiving will start.
 	 */
-	if (need_reset && prog)
-		for (i = 0; i < adapter->num_rx_queues; i++)
+	if (need_reset && prog) {
+		num_queues = min_t(int, adapter->num_rx_queues,
+				   adapter->num_xdp_queues);
+		for (i = 0; i < num_queues; i++)
 			if (adapter->xdp_ring[i]->xsk_pool)
 				(void)ixgbe_xsk_wakeup(adapter->netdev, i,
 						       XDP_WAKEUP_RX);
+	}
 
 	return 0;
 }
drivers/net/ethernet/mellanox/mlx4/en_netdev.c +29 -18

57 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +0 -1
index f3d1a20201ef..6bf558c5ec10 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/micrel/Makefile +2 -4
index 5cc00d22c708..6ecc4eb30e74 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/micrel/ks8851_common.c +8 -0
index 831518466de2..0f9c5457b93e 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/pensando/ionic/ionic_stats.c +0 -9
index 58a854666c62..c14de5fcedea 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4 -0
index 2218bc3a624b..86151a817b79 100644

Lines of this file are not shown. View the raw message.

drivers/net/mhi/net.c +2 -4
index e60e38c1f09d..5e49f7a919b6 100644

Lines of this file are not shown. View the raw message.

drivers/net/phy/bcm7xxx.c +110 -4

114 lines not on this page · raw message

drivers/net/phy/mdio_bus.c +4 -0
index 53f034fc2ef7..ee8313a4ac71 100644

Lines of this file are not shown. View the raw message.

drivers/net/usb/hso.c +3 -3
index 3c7120ec7079..6a0799f5b05f 100644

Lines of this file are not shown. View the raw message.

drivers/net/usb/smsc95xx.c +3 -0
index 4c8ee1cff4d4..4cb71dd1998c 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mac80211_hwsim.c +2 -2
index ffa894f7312a..0adae76eb8df 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/core.c +3 -1
index e2374319df61..9b6f78eac937 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/nvme.h +6 -0
index 26511794629b..12393a72662e 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/pci.c +2 -1
index c246fdacba2e..4f22fbafe964 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +34 -3
index a89d24a040af..9b524969eff7 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/intel-hid.c +22 -5
index 2e4e97a626a5..7b03b497d93b 100644

Lines of this file are not shown. View the raw message.

drivers/ptp/ptp_kvm_x86.c +2 -7
index 3dd519dfc473..d0096cd7096a 100644

Lines of this file are not shown. View the raw message.

drivers/s390/cio/ccwgroup.c +8 -2
index 9748165e08e9..f19f02e75115 100644

Lines of this file are not shown. View the raw message.

drivers/s390/net/qeth_core.h +0 -1
index f4d554ea0c93..52bdb2c8c085 100644

Lines of this file are not shown. View the raw message.

drivers/s390/net/qeth_core_main.c +6 -13
index 51f7f4e680c3..f5bad10f3f44 100644

Lines of this file are not shown. View the raw message.

drivers/s390/net/qeth_l2_main.c +0 -1
index d7cdd9cfe485..3dbe592ca97a 100644

Lines of this file are not shown. View the raw message.

drivers/s390/net/qeth_l3_main.c +0 -1
index f0d6f205c53c..5ba38499e3e2 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/csiostor/csio_init.c +1 -0
index 390b07bf92b9..ccbded3353bd 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/elx/libefc/efc_device.c +3 -4
index 725ca2a23fb2..52be01333c6e 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/elx/libefc/efc_fabric.c +1 -2
index d397220d9e54..3270ce40196c 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qla2xxx/qla_def.h +0 -1
index 2f67ec1df3e6..82b6f4c2eb4a 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qla2xxx/qla_isr.c +2 -0
index d9fb093a60a1..2aa8f519aae6 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qla2xxx/qla_nvme.c +18 -22
index a7259733e470..9316d7d91e2a 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/ufs/ufshcd-pci.c +78 -0

78 lines not on this page · raw message

drivers/scsi/ufs/ufshcd.c +3 -3
index 3a204324151a..a3f5af088122 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/ufs/ufshcd.h +1 -0
index 86d4765a17b8..aa95deffb873 100644

Lines of this file are not shown. View the raw message.

drivers/staging/media/hantro/hantro_drv.c +1 -1
index 31d8449ca1d2..fc769c52c6d3 100644

Lines of this file are not shown. View the raw message.

drivers/staging/media/sunxi/cedrus/cedrus_video.c +1 -1
index 32c13ecb22d8..a8168ac2fbd0 100644

Lines of this file are not shown. View the raw message.

drivers/tty/vt/vt.c +19 -2
index cb72393f92d3..153d4a88ec9a 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/Kconfig +1 -1
index 546dfc1e2349..71cf3f503f16 100644

Lines of this file are not shown. View the raw message.

fs/binfmt_elf.c +1 -1
index 439ed81e755a..964be729ed0a 100644

Lines of this file are not shown. View the raw message.

fs/debugfs/inode.c +1 -1
index 8129a430d789..2f117c57160d 100644

Lines of this file are not shown. View the raw message.

fs/ext4/dir.c +3 -3
index ffb295aa891c..74b172a4adda 100644

Lines of this file are not shown. View the raw message.

fs/ext4/extents.c +14 -5
index 92ad64b89d9b..b1933e3513d6 100644

Lines of this file are not shown. View the raw message.

fs/ext4/fast_commit.c +6 -0
index e8195229c252..782d05a3f97a 100644

Lines of this file are not shown. View the raw message.

fs/ext4/inode.c +5 -0
index d8de607849df..73daf9443e5e 100644

Lines of this file are not shown. View the raw message.

fs/ext4/super.c +15 -6
index 970013c93d3e..59c25a95050a 100644

Lines of this file are not shown. View the raw message.

fs/verity/enable.c +1 -1
index 77e159a0346b..60a4372aa4d7 100644

Lines of this file are not shown. View the raw message.

fs/verity/open.c +1 -1
index 60ff8af7219f..92df87f5fa38 100644

Lines of this file are not shown. View the raw message.

include/linux/bpf.h +2 -0
index e8e2b0393ca9..11da5671d4f0 100644

Lines of this file are not shown. View the raw message.

include/linux/fwnode.h +8 -3
index 59828516ebaf..9f4ad719bfe3 100644

Lines of this file are not shown. View the raw message.

include/net/ip_fib.h +1 -1
index 3ab2563b1a23..7fd7f6093612 100644

Lines of this file are not shown. View the raw message.

include/net/nexthop.h +1 -1
index 10e1777877e6..28085b995ddc 100644

Lines of this file are not shown. View the raw message.

include/net/sock.h +2 -0
index f23cb259b0e2..d28b9bb5ef5a 100644

Lines of this file are not shown. View the raw message.

include/sound/rawmidi.h +1 -0
index 989e1517332d..7a08ed2acd60 100644

Lines of this file are not shown. View the raw message.

include/uapi/sound/asound.h +1 -0
index d17c061950df..9c5121e6ead4 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/bpf_struct_ops.c +5 -2
index 70f6fd4fa305..2ce17447fb76 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/core.c +1 -1
index 0a28a8095d3e..c019611fbc8f 100644

Lines of this file are not shown. View the raw message.

kernel/sched/cpufreq_schedutil.c +11 -5
index 57124614363d..e7af18857371 100644

Lines of this file are not shown. View the raw message.

kernel/sched/debug.c +7 -1
index 7e08e3d947c2..2c879cd02a5f 100644

Lines of this file are not shown. View the raw message.

kernel/sched/fair.c +5 -1
index 30a6984a58f7..423ec671a306 100644

Lines of this file are not shown. View the raw message.

lib/Kconfig.kasan +2 -0
index 1e2d10f86011..cdc842d090db 100644

Lines of this file are not shown. View the raw message.

mm/util.c +4 -0
index c18202b3e659..8bd4a20262a9 100644

Lines of this file are not shown. View the raw message.

net/core/sock.c +26 -6
index a3eea6e0b30a..4a08ae6de578 100644

Lines of this file are not shown. View the raw message.

net/ipv4/fib_semantics.c +9 -7
index 4c0c33e4710d..27fdd86b9cee 100644

Lines of this file are not shown. View the raw message.

net/ipv4/udp.c +5 -5
index 1a742b710e54..915ea635b2d5 100644

Lines of this file are not shown. View the raw message.

net/ipv6/route.c +3 -2
index 603340302101..0aeff2ce17b9 100644

Lines of this file are not shown. View the raw message.

net/ipv6/udp.c +1 -1
index c5e15e94bb00..80ae024d13c8 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mesh_ps.c +2 -1
index 204830a55240..3fbd0b9ff913 100644

Lines of this file are not shown. View the raw message.

net/mac80211/rate.c +0 -4
index e5935e3d7a07..8c6416129d5b 100644

Lines of this file are not shown. View the raw message.

net/mac80211/tx.c +12 -0
index fa09a369214d..751e601c4623 100644

Lines of this file are not shown. View the raw message.

net/mac80211/wpa.c +6 -0
index bca47fad5a16..4eed23e27610 100644

Lines of this file are not shown. View the raw message.

net/mptcp/mptcp_diag.c +1 -1
index f48eb6315bbb..292374fb0779 100644

Lines of this file are not shown. View the raw message.

net/mptcp/pm_netlink.c +1 -3
index 89251cbe9f1a..81103b29c0af 100644

Lines of this file are not shown. View the raw message.

net/mptcp/protocol.h +1 -1
index 6ac564d584c1..c8a49e92e66f 100644

Lines of this file are not shown. View the raw message.

net/mptcp/subflow.c +1 -1
index 966f777d35ce..1f3039b829a7 100644

Lines of this file are not shown. View the raw message.

net/mptcp/syncookies.c +1 -12
index 37127781aee9..7f22526346a7 100644

Lines of this file are not shown. View the raw message.

net/mptcp/token.c +8 -3
index a98e554b034f..e581b341c5be 100644

Lines of this file are not shown. View the raw message.

net/mptcp/token_test.c +8 -6
index e1bd6f0a0676..5d984bec1cd8 100644

Lines of this file are not shown. View the raw message.

net/netfilter/ipset/ip_set_hash_gen.h +2 -2
index 6186358eac7c..6e391308431d 100644

Lines of this file are not shown. View the raw message.

net/netfilter/ipvs/ip_vs_conn.c +4 -0
index c100c6b112c8..2c467c422dc6 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_conntrack_core.c +37 -33

70 lines not on this page · raw message

net/netfilter/nf_tables_api.c +19 -11
index 081437dd75b7..b9546defdc28 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_compat.c +16 -1
index 272bcdb1392d..f69cc73c5813 100644

Lines of this file are not shown. View the raw message.

net/netfilter/xt_LOG.c +9 -1
index 2ff75f7637b0..f39244f9c0ed 100644

Lines of this file are not shown. View the raw message.

net/netfilter/xt_NFLOG.c +9 -1
index fb5793208059..e660c3710a10 100644

Lines of this file are not shown. View the raw message.

net/sched/cls_flower.c +6 -0
index d7869a984881..d2a4e31d963d 100644

Lines of this file are not shown. View the raw message.

net/sctp/input.c +1 -1
index 5ef86fdb1176..1f1786021d9c 100644

Lines of this file are not shown. View the raw message.

net/unix/af_unix.c +28 -6
index 91ff09d833e8..f96ee27d9ff2 100644

Lines of this file are not shown. View the raw message.

sound/core/rawmidi.c +9 -0
index 6c0a4a67ad2e..6f30231bdb88 100644

Lines of this file are not shown. View the raw message.

sound/firewire/motu/amdtp-motu.c +4 -3
index 5388b85fb60e..a18c2c033e83 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +129 -0

129 lines not on this page · raw message

sound/soc/fsl/fsl_esai.c +10 -6
index a961f837cd09..bda66b30e063 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl_micfil.c +10 -5
index 8c0c75ce9490..9f90989ac59a 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl_sai.c +9 -5
index 223fcd15bfcc..38f6362099d5 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl_spdif.c +9 -5
index 8ffb1a6048d6..1c53719bb61e 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl_xcvr.c +10 -5
index fb7c29fc39d7..477d16713e72 100644

Lines of this file are not shown. View the raw message.

sound/soc/mediatek/common/mtk-afe-fe-dai.c +11 -8
index 3cb2adf420bb..ab7bbd53bb01 100644

Lines of this file are not shown. View the raw message.

sound/soc/sof/imx/imx8.c +8 -1
index 12fedf0984bd..7e9723a10d02 100644

Lines of this file are not shown. View the raw message.

sound/soc/sof/imx/imx8m.c +8 -1
index cb822d953767..892e1482f97f 100644

Lines of this file are not shown. View the raw message.

sound/soc/sof/xtensa/core.c +2 -2
index bbb9a2282ed9..f6e3411b33cf 100644

Lines of this file are not shown. View the raw message.

tools/lib/bpf/linker.c +7 -1
index 10911a8cad0f..2df880cefdae 100644

Lines of this file are not shown. View the raw message.

tools/objtool/special.c +30 -8
index bc925cf19e2d..f1428e32a505 100644

Lines of this file are not shown. View the raw message.

tools/perf/arch/x86/util/iostat.c +1 -1
index eeafe97b8105..792cd75ade33 100644

Lines of this file are not shown. View the raw message.

tools/perf/builtin-stat.c +2 -0
index 634375937db9..36033a7372f9 100644

Lines of this file are not shown. View the raw message.

tools/perf/tests/dwarf-unwind.c +32 -7
index a288035eb362..c756284b3b13 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/bpf/Makefile +2 -1
index f405b20c1e6c..93f1f124ef89 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/bpf/test_lwt_ip_encap.sh +8 -5
index 59ea56945e6c..b497bb85b667 100755

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.