Linux 6.11.1
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.11.1 kernel.
All users of the 6.11 kernel series must upgrade.
The updated 6.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.11.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 drivers/accel/drm_accel.c | 110 ++-------------------------------- drivers/bluetooth/btintel_pcie.c | 2 drivers/cpufreq/amd-pstate.c | 5 + drivers/gpu/drm/drm_drv.c | 97 ++++++++++++++--------------- drivers/gpu/drm/drm_file.c | 2 drivers/gpu/drm/drm_internal.h | 4 - drivers/nvme/host/nvme.h | 5 + drivers/nvme/host/pci.c | 18 ++--- drivers/powercap/intel_rapl_common.c | 35 +++++++++- drivers/usb/class/usbtmc.c | 2 drivers/usb/serial/pl2303.c | 1 drivers/usb/serial/pl2303.h | 4 + include/drm/drm_accel.h | 18 ----- include/drm/drm_file.h | 5 + net/netfilter/nft_socket.c | 4 - sound/soc/amd/acp/acp-legacy-common.c | 5 + sound/soc/amd/acp/amd.h | 2 18 files changed, 128 insertions(+), 193 deletions(-)
Dan Carpenter (2):
netfilter: nft_socket: Fix a NULL vs IS_ERR() bug in nft_socket_cgroup_subtree_level()
powercap: intel_rapl: Change an error pointer to NULL
Dhananjay Ugwekar (3):
powercap/intel_rapl: Add support for AMD family 1Ah powercap/intel_rapl: Fix the energy-pkg event for AMD CPUs cpufreq/amd-pstate: Add the missing cpufreq_cpu_put()
Edward Adam Davis (1):
USB: usbtmc: prevent kernel-usb-infoleak
Greg Kroah-Hartman (1):
Linux 6.11.1
Junhao Xie (1):
USB: serial: pl2303: add device id for Macrosilicon MS3020
Keith Busch (1):
nvme-pci: qdepth 1 quirk
Kiran K (1):
Bluetooth: btintel_pcie: Allocate memory for driver private data
Michał Winiarski (3):
drm: Use XArray instead of IDR for minors
accel: Use XArray instead of IDR for minors
drm: Expand max DRM device number to full MINORBITS
Vijendar Mukunda (1):
ASoC: amd: acp: add ZSC control register programming sequence
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 11 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Baby Opossum Posse
drivers/accel/drm_accel.c +7 -103
164 lines not on this page · raw message
drivers/bluetooth/btintel_pcie.c +1 -1
@@ -1208,7 +1208,7 @@ static int btintel_pcie_setup_hdev(struct btintel_pcie_data *data)int err;struct hci_dev *hdev; - hdev =hci_alloc_dev (); + hdev =hci_alloc_dev_priv (sizeof (struct btintel_data ));if (!hdev)return -ENOMEM ;
drivers/cpufreq/amd-pstate.c +4 -1
@@ -554,12 +554,15 @@ static void amd_pstate_update(struct amd_cpudata *cpudata, u32 min_perf, }if (value == prev) -return ; + goto cpufreq_policy_put;WRITE_ONCE (cpudata->cppc_req_cached, value);amd_pstate_update_perf (cpudata, min_perf, des_perf, max_perf, fast_switch); + +cpufreq_policy_put: +cpufreq_cpu_put (policy); }static int amd_pstate_verify (struct cpufreq_policy_data *policy)
drivers/gpu/drm/drm_drv.c +47 -50
194 lines not on this page · raw message
drivers/gpu/drm/drm_file.c +1 -1
@@ -364,7 +364,7 @@ int drm_open(struct inode *inode, struct file *filp)struct drm_minor *minor;int retcode; - minor =drm_minor_acquire (iminor (inode)); + minor =drm_minor_acquire (&drm_minors_xa,iminor (inode));if (IS_ERR (minor))return PTR_ERR (minor);
drivers/gpu/drm/drm_internal.h +0 -4
@@ -81,10 +81,6 @@ void drm_prime_destroy_file_private(struct drm_prime_file_private *prime_fpriv);void drm_prime_remove_buf_handle (struct drm_prime_file_private *prime_fpriv,uint32_t handle); -/* drm_drv.c */ -struct drm_minor *drm_minor_acquire (unsigned int minor_id); -void drm_minor_release (struct drm_minor *minor); -/* drm_managed.c */ void drm_managed_release (struct drm_device *dev);void drmm_add_final_kfree (struct drm_device *dev,void *container);
drivers/nvme/host/nvme.h +5 -0
@@ -90,6 +90,11 @@ enum nvme_quirks {*/ NVME_QUIRK_NO_DEEPEST_PS = (1 <<5 ), +/* +* Problems seen with concurrent commands +*/ + NVME_QUIRK_QDEPTH_ONE = (1 << 6), +/* * Set MEDIUM priority on SQ creation */
drivers/nvme/host/pci.c +9 -9
@@ -2563,15 +2563,8 @@ static int nvme_pci_enable(struct nvme_dev *dev)else dev->io_sqes =NVME_NVM_IOSQES ; -/* -* Temporary fix for the Apple controller found in the MacBook8,1 and -* some MacBook7,1 to avoid controller resets and data loss. -*/ -if (pdev->vendor ==PCI_VENDOR_ID_APPLE && pdev->device ==0x2001 ) { +if (dev->ctrl.quirks &NVME_QUIRK_QDEPTH_ONE ) { dev->q_depth =2 ; -dev_warn (dev->ctrl.device,"detected Apple NVMe controller, " -"set queue depth=%u to work around controller resets\n" , - dev->q_depth); }else if (pdev->vendor ==PCI_VENDOR_ID_SAMSUNG && (pdev->device ==0xa821 || pdev->device ==0xa822 ) &&NVME_CAP_MQES (dev->ctrl.cap) ==0 ) {
@@ -3442,6 +3435,8 @@ static const struct pci_device_id nvme_id_table[] = { NVME_QUIRK_BOGUS_NID, }, { PCI_VDEVICE(REDHAT, 0x0010), /* Qemu emulated controller */ .driver_data = NVME_QUIRK_BOGUS_NID, }, + { PCI_DEVICE(0x1217, 0x8760), /* O2 Micro 64GB Steam Deck */ + .driver_data = NVME_QUIRK_QDEPTH_ONE }, { PCI_DEVICE(0x126f, 0x2262), /* Silicon Motion generic */ .driver_data = NVME_QUIRK_NO_DEEPEST_PS | NVME_QUIRK_BOGUS_NID, },
@@ -3576,7 +3571,12 @@ static const struct pci_device_id nvme_id_table[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMAZON, 0xcd02), .driver_data = NVME_QUIRK_DMA_ADDRESS_BITS_48, }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001), - .driver_data = NVME_QUIRK_SINGLE_VECTOR }, +/* +* Fix for the Apple controller found in the MacBook8,1 and +* some MacBook7,1 to avoid controller resets and data loss. +*/ + .driver_data = NVME_QUIRK_SINGLE_VECTOR | + NVME_QUIRK_QDEPTH_ONE }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2003) }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2005), .driver_data = NVME_QUIRK_SINGLE_VECTOR |
drivers/powercap/intel_rapl_common.c +31 -4
@@ -1285,6 +1285,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = {X86_MATCH_VENDOR_FAM (AMD ,0x17 , &rapl_defaults_amd),X86_MATCH_VENDOR_FAM (AMD ,0x19 , &rapl_defaults_amd), +X86_MATCH_VENDOR_FAM (AMD ,0x1A , &rapl_defaults_amd), X86_MATCH_VENDOR_FAM(HYGON, 0x18, &rapl_defaults_amd), {} };
@@ -2128,6 +2129,21 @@ void rapl_remove_package(struct rapl_package *rp) }EXPORT_SYMBOL_GPL (rapl_remove_package); +/* +* RAPL Package energy counter scope: +* 1. AMD/HYGON platforms use per-PKG package energy counter +* 2. For Intel platforms +* 2.1 CLX-AP platform has per-DIE package energy counter +* 2.2 Other platforms that uses MSR RAPL are single die systems so the +* package energy counter can be considered as per-PKG/per-DIE, +* here it is considered as per-DIE. +* 2.3 New platforms that use TPMI RAPL doesn't care about the +* scope because they are not MSR/CPU based. +*/ +#define rapl_msrs_are_pkg_scope () \ + (boot_cpu_data.x86_vendor == X86_VENDOR_AMD || \ + boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) +/* caller to ensure CPU hotplug lock is held */ struct rapl_package *rapl_find_package_domain_cpuslocked (int id,struct rapl_if_priv *priv,bool id_is_cpu)
@@ -2135,8 +2151,14 @@ struct rapl_package *rapl_find_package_domain_cpuslocked(int id, struct rapl_if_struct rapl_package *rp;int uid; -if (id_is_cpu) - uid =topology_logical_die_id (id); +if (id_is_cpu) { + uid =rapl_msrs_are_pkg_scope () ? +topology_physical_package_id (id) :topology_logical_die_id (id); +if (uid <0 ) { +pr_err ("topology_logical_(package/die)_id() returned a negative value" ); +return NULL ; + } + }else uid = id;
@@ -2168,9 +2190,14 @@ struct rapl_package *rapl_add_package_cpuslocked(int id, struct rapl_if_priv *prreturn ERR_PTR (-ENOMEM );if (id_is_cpu) { - rp->id =topology_logical_die_id (id); + rp->id =rapl_msrs_are_pkg_scope () ? +topology_physical_package_id (id) :topology_logical_die_id (id); +if ((int )(rp->id) <0 ) { +pr_err ("topology_logical_(package/die)_id() returned a negative value" ); +return ERR_PTR (-EINVAL ); + } rp->lead_cpu = id; -if (topology_max_dies_per_package () >1 ) +if (!rapl_msrs_are_pkg_scope () &&topology_max_dies_per_package () >1 )snprintf (rp->name,PACKAGE_DOMAIN_NAME_LENGTH ,"package-%d-die-%d" ,topology_physical_package_id (id),topology_die_id (id));else
drivers/usb/class/usbtmc.c +1 -1
@@ -754,7 +754,7 @@ static struct urb *usbtmc_create_urb(void)if (!urb)return NULL ; - dmabuf =kmalloc (bufsize,GFP_KERNEL ); + dmabuf =kzalloc (bufsize,GFP_KERNEL );if (!dmabuf) {usb_free_urb (urb);return NULL ;
drivers/usb/serial/pl2303.c +1 -0
@@ -118,6 +118,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) }, { USB_DEVICE(AT_VENDOR_ID, AT_VTKIT3_PRODUCT_ID) }, { USB_DEVICE(IBM_VENDOR_ID, IBM_PRODUCT_ID) }, + { USB_DEVICE(MACROSILICON_VENDOR_ID, MACROSILICON_MS3020_PRODUCT_ID) }, { } /* Terminating entry */ };
drivers/usb/serial/pl2303.h +4 -0
@@ -171,3 +171,7 @@/* Allied Telesis VT-Kit3 */ #define AT_VENDOR_ID 0x0caa#define AT_VTKIT3_PRODUCT_ID 0x3001 + +/* Macrosilicon MS3020 */ +#define MACROSILICON_VENDOR_ID 0x345f +#define MACROSILICON_MS3020_PRODUCT_ID 0x3020
include/drm/drm_accel.h +2 -16
@@ -51,11 +51,10 @@#if IS_ENABLED (CONFIG_DRM_ACCEL ) +extern struct xarray accel_minors_xa; +void accel_core_exit (void );int accel_core_init (void ); -void accel_minor_remove (int index); -int accel_minor_alloc (void ); -void accel_minor_replace (struct drm_minor *minor,int index);void accel_set_device_instance_params (struct device *kdev,int index);int accel_open (struct inode *inode,struct file *filp);void accel_debugfs_init (struct drm_device *dev);
@@ -73,19 +72,6 @@ static inline int __init accel_core_init(void)return 0 ; } -static inline void accel_minor_remove (int index) -{ -} - -static inline int accel_minor_alloc (void ) -{ -return -EOPNOTSUPP ; -} - -static inline void accel_minor_replace (struct drm_minor *minor,int index) -{ -} -static inline void accel_set_device_instance_params (struct device *kdev,int index) { }
include/drm/drm_file.h +5 -0
@@ -45,6 +45,8 @@ struct drm_printer;struct device ;struct file ; +extern struct xarray drm_minors_xa; +/* * FIXME: Not sure we want to have drm_minor here in the end, but to avoid * header include loops we need it here for now.
@@ -434,6 +436,9 @@ static inline bool drm_is_accel_client(const struct drm_file *file_priv)void drm_file_update_pid (struct drm_file *); +struct drm_minor *drm_minor_acquire (struct xarray *minors_xa,unsigned int minor_id); +void drm_minor_release (struct drm_minor *minor); +int drm_open (struct inode *inode,struct file *filp);int drm_open_helper (struct file *filp,struct drm_minor *minor); ssize_t drm_read(struct file *filp, char __user *buffer,
net/netfilter/nft_socket.c +2 -2
@@ -61,8 +61,8 @@ static noinline int nft_socket_cgroup_subtree_level(void)struct cgroup *cgrp =cgroup_get_from_path ("/" );int level; -if (!cgrp) -return -ENOENT ; +if (IS_ERR (cgrp)) +return PTR_ERR (cgrp); level = cgrp->level;
sound/soc/amd/acp/acp-legacy-common.c +5 -0
@@ -321,6 +321,8 @@ int acp_init(struct acp_chip_info *chip)pr_err ("ACP reset failed\n" );return ret; } +if (chip->acp_rev >=ACP70_DEV ) +writel (0 , chip->base +ACP_ZSC_DSP_CTRL );return 0 ; }EXPORT_SYMBOL_NS_GPL (acp_init,SND_SOC_ACP_COMMON );
@@ -336,6 +338,9 @@ int acp_deinit(struct acp_chip_info *chip)if (chip->acp_rev !=ACP70_DEV )writel (0 , chip->base +ACP_CONTROL ); + +if (chip->acp_rev >=ACP70_DEV ) +writel (0x01 , chip->base +ACP_ZSC_DSP_CTRL );return 0 ; }EXPORT_SYMBOL_NS_GPL (acp_deinit,SND_SOC_ACP_COMMON );
sound/soc/amd/acp/amd.h +2 -0
@@ -103,6 +103,8 @@#define ACP70_PGFSM_CONTROL ACP6X_PGFSM_CONTROL#define ACP70_PGFSM_STATUS ACP6X_PGFSM_STATUS +#define ACP_ZSC_DSP_CTRL 0x0001014 +#define ACP_ZSC_STS 0x0001018#define ACP_SOFT_RST_DONE_MASK 0x00010001#define ACP_PGFSM_CNTL_POWER_ON_MASK 0xffffffff