Linux 5.11.6
[email protected]
maintainerFrom: Greg Kroah-Hartman <[email protected]>
I'm announcing the release of the 5.11.6 kernel.
All users of the 5.11 kernel series must upgrade.
The updated 5.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.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 arch/arm64/Kconfig | 5 arch/parisc/Kconfig | 7 arch/x86/kvm/svm/svm.c | 1 drivers/acpi/acpica/acobject.h | 1 drivers/acpi/acpica/evhandler.c | 7 drivers/acpi/acpica/evregion.c | 64 ++- drivers/acpi/acpica/evxfregn.c | 2 drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 2 drivers/hid/hid-ids.h | 2 drivers/hid/hid-ite.c | 12 drivers/hid/i2c-hid/i2c-hid-core.c | 2 drivers/iommu/amd/iommu.c | 10 drivers/misc/eeprom/eeprom_93xx46.c | 15 drivers/mmc/host/sdhci-of-dwcmshc.c | 1 drivers/nvme/host/pci.c | 8 drivers/pci/controller/cadence/pci-j721e.c | 3 drivers/pci/controller/cadence/pcie-cadence-host.c | 81 +++- drivers/pci/controller/cadence/pcie-cadence.h | 11 drivers/scsi/ufs/ufs-exynos.c | 9 drivers/scsi/ufs/ufs-mediatek.c | 1 drivers/scsi/ufs/ufshcd.c | 42 +- drivers/scsi/ufs/ufshcd.h | 10 drivers/staging/media/sunxi/cedrus/cedrus.c | 49 -- drivers/staging/media/sunxi/cedrus/cedrus.h | 1 fs/btrfs/delayed-inode.c | 3 fs/btrfs/inode.c | 2 fs/btrfs/qgroup.c | 8 fs/btrfs/qgroup.h | 2 fs/file.c | 36 +- fs/internal.h | 1 fs/io-wq.c | 17 fs/io-wq.h | 5 fs/io_uring.c | 241 ++++++------- include/linux/eeprom_93xx46.h | 2 sound/soc/intel/boards/sof_sdw.c | 89 +++-- sound/usb/mixer_quirks.c | 367 ++++++++++++++------- 37 files changed, 685 insertions(+), 436 deletions(-)
Andrey Ryabinin (1):
iommu/amd: Fix sleeping in atomic in increase_address_space()
AngeloGioacchino Del Regno (1):
drm/msm/a5xx: Remove overwriting A5XX_PC_DBG_ECO_CNTL register
Aswath Govindraju (1):
misc: eeprom_93xx46: Add quirk to support Microchip 93LC46B eeprom
Avri Altman (1):
scsi: ufs: Fix a duplicate dev quirk number
Babu Moger (1):
KVM: SVM: Clear the CR4 register on reset
Fabian Lesniak (1):
ALSA: usb-audio: add mixer quirks for Pioneer DJM-900NXS2
Greg Kroah-Hartman (1):
Linux 5.11.6
Hans de Goede (3):
ACPICA: Fix race in generic_serial_bus (I2C) and GPIO op_region parameter handling
HID: i2c-hid: Add I2C_HID_QUIRK_NO_IRQ_AFTER_RESET for ITE8568 EC on Voyo Winpad A15
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch 10E
Helge Deller (1):
parisc: Enable -mlong-calls gcc option with CONFIG_COMPILE_TEST
Jens Axboe (3):
fs: provide locked helper variant of close_fd_get_file()
io_uring: get rid of intermediate IORING_OP_CLOSE stage io_uring/io-wq: kill off now unused IO_WQ_WORK_NO_CANCEL
Jernej Skrabec (1):
media: cedrus: Remove checking for required controls
Jisheng Zhang (1):
mmc: sdhci-of-dwcmshc: set SDHCI_QUIRK2_PRESET_VALUE_BROKEN
Julian Einwag (1):
nvme-pci: mark Seagate Nytro XM1440 as QUIRK_NO_NS_DESC_LIST.
Kiwoong Kim (4):
scsi: ufs: Add a quirk to permit overriding UniPro defaults
scsi: ufs: Introduce a quirk to allow only page-aligned sg entries
scsi: ufs: ufs-exynos: Apply vendor-specific values for three timeouts
scsi: ufs: ufs-exynos: Use UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE
Nadeem Athani (1):
PCI: cadence: Retrain Link to work around Gen2 training defect
Nathan Chancellor (1):
arm64: Make CPU_BIG_ENDIAN depend on ld.bfd or ld.lld 13.0.0+
Nikolay Borisov (2):
btrfs: export and rename qgroup_reserve_meta
btrfs: don't flush from btrfs_delayed_inode_reserve_metadata
Olivia Mackintosh (1):
ALSA: usb-audio: Add DJM750 to Pioneer mixer quirk
Pascal Terjan (1):
nvme-pci: add quirks for Lexar 256GB SSD
Pavel Begunkov (6):
io_uring: fix inconsistent lock state
io_uring: deduplicate core cancellations sequence
io_uring: unpark SQPOLL thread for cancelation
io_uring: deduplicate failing task_work_add io_uring/io-wq: return 2-step work swap scheme
io_uring: don't take uring_lock during iowq cancel
Pierre-Louis Bossart (2):
ASoC: Intel: sof_sdw: reorganize quirks by generation
ASoC: Intel: sof_sdw: add quirk for HP Spectre x360 convertible
Stanley Chu (1):
scsi: ufs-mediatek: Enable UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL
Zoltán Böszörményi (1):
nvme-pci: mark Kingston SKC2000 as not supporting the deepest power state
[email protected]
maintainerFrom: Greg Kroah-Hartman <[email protected]>
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 11 -SUBLEVEL = 5 +SUBLEVEL = 6 EXTRAVERSION = NAME = 💕 Valentine's Day Edition 💕
arch/arm64/Kconfig +3 -2
@@ -952,8 +952,9 @@ choice that is selected here. config CPU_BIG_ENDIAN - bool "Build big-endian kernel" - help + bool "Build big-endian kernel" + depends on !LD_IS_LLD || LLD_VERSION >= 130000 + help Say Y if you plan on running a kernel with a big-endian userspace. config CPU_LITTLE_ENDIAN
arch/parisc/Kconfig +5 -2
@@ -201,9 +201,12 @@ config PREFETCH def_bool y depends on PA8X00 || PA7200 +config PARISC_HUGE_KERNEL + def_bool y if !MODULES || UBSAN || FTRACE || COMPILE_TEST + config MLONGCALLS - def_bool y if !MODULES || UBSAN || FTRACE - bool "Enable the -mlong-calls compiler option for big kernels" if MODULES && !UBSAN && !FTRACE + def_bool y if PARISC_HUGE_KERNEL + bool "Enable the -mlong-calls compiler option for big kernels" if !PARISC_HUGE_KERNEL depends on PA8X00 help If you configure the kernel to include many drivers built-in instead
arch/x86/kvm/svm/svm.c +1 -0
@@ -1205,6 +1205,7 @@ static void init_vmcb(struct vcpu_svm *svm)init_sys_seg (&save->ldtr,SEG_TYPE_LDT );init_sys_seg (&save->tr,SEG_TYPE_BUSY_TSS16 ); +svm_set_cr4 (&svm->vcpu,0 );svm_set_efer (&svm->vcpu,0 ); save->dr6 =0xffff0ff0 ;kvm_set_rflags (&svm->vcpu,2 );
drivers/acpi/acpica/acobject.h +1 -0
@@ -284,6 +284,7 @@ struct acpi_object_addr_handler {acpi_adr_space_handler handler;struct acpi_namespace_node *node;/* Parent device */ void *context; +acpi_mutex context_mutex;acpi_adr_space_setup setup;union acpi_operand_object *region_list;/* Regions using this handler */ union acpi_operand_object *next;
drivers/acpi/acpica/evhandler.c +7 -0
@@ -489,6 +489,13 @@ acpi_ev_install_space_handler(struct acpi_namespace_node *node,/* Init handler obj */ + status = +acpi_os_create_mutex (&handler_obj->address_space.context_mutex); +if (ACPI_FAILURE (status)) { +acpi_ut_remove_reference (handler_obj); + goto unlock_and_exit; + } + handler_obj->address_space.space_id = (u8 )space_id; handler_obj->address_space.handler_flags = flags; handler_obj->address_space.region_list =NULL ;
drivers/acpi/acpica/evregion.c +47 -17
117 lines not on this page · raw message
drivers/acpi/acpica/evxfregn.c +2 -0
@@ -201,6 +201,8 @@ acpi_remove_address_space_handler(acpi_handle device,/* Now we can delete the handler object */ +acpi_os_release_mutex (handler_obj->address_space. + context_mutex);acpi_ut_remove_reference (handler_obj); goto unlock_and_exit; }
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +0 -2
@@ -626,8 +626,6 @@ static int a5xx_hw_init(struct msm_gpu *gpu)if (adreno_gpu->info->quirks &ADRENO_QUIRK_TWO_PASS_USE_WFI )gpu_rmw (gpu,REG_A5XX_PC_DBG_ECO_CNTL ,0 , (1 <<8 )); -gpu_write (gpu,REG_A5XX_PC_DBG_ECO_CNTL ,0xc0200100 ); -/* Enable USE_RETENTION_FLOPS */ gpu_write (gpu,REG_A5XX_CP_CHICKEN_DBG ,0x02000000 );
drivers/hid/hid-ids.h +2 -0
@@ -641,6 +641,8 @@#define USB_DEVICE_ID_INNEX_GENESIS_ATARI 0x4745#define USB_VENDOR_ID_ITE 0x048d +#define I2C_VENDOR_ID_ITE 0x103c +#define I2C_DEVICE_ID_ITE_VOYO_WINPAD_A15 0x184f#define USB_DEVICE_ID_ITE_LENOVO_YOGA 0x8386#define USB_DEVICE_ID_ITE_LENOVO_YOGA2 0x8350#define I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720 0x837a
drivers/hid/hid-ite.c +9 -3
@@ -23,11 +23,16 @@ static __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned inthid_info (hdev,"Fixing up Acer Sw5-012 ITE keyboard report descriptor\n" ); rdesc[163 ] =HID_MAIN_ITEM_RELATIVE ; } -/* For Acer One S1002 keyboard-dock */ +/* For Acer One S1002/S1003 keyboard-dock */ if (*rsize ==188 && rdesc[185 ] ==0x81 && rdesc[186 ] ==0x02 ) { -hid_info (hdev,"Fixing up Acer S1002 ITE keyboard report descriptor\n" ); +hid_info (hdev,"Fixing up Acer S1002/S1003 ITE keyboard report descriptor\n" ); rdesc[186 ] =HID_MAIN_ITEM_RELATIVE ; } +/* For Acer Aspire Switch 10E (SW3-016) keyboard-dock */ +if (*rsize ==210 && rdesc[184 ] ==0x81 && rdesc[185 ] ==0x02 ) { +hid_info (hdev,"Fixing up Acer Aspire Switch 10E (SW3-016) ITE keyboard report descriptor\n" ); + rdesc[185 ] =HID_MAIN_ITEM_RELATIVE ; + } }return rdesc;
@@ -114,7 +119,8 @@ static const struct hid_device_id ite_devices[] = {/* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */ {HID_DEVICE (BUS_USB ,HID_GROUP_GENERIC ,USB_VENDOR_ID_SYNAPTICS , - USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003) }, + USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003), + .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT }, { } };MODULE_DEVICE_TABLE (hid, ite_devices);
drivers/hid/i2c-hid/i2c-hid-core.c +2 -0
@@ -171,6 +171,8 @@ static const struct i2c_hid_quirks { I2C_HID_QUIRK_SET_PWR_WAKEUP_DEV }, {I2C_VENDOR_ID_HANTICK ,I2C_PRODUCT_ID_HANTICK_5288 , I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, + { I2C_VENDOR_ID_ITE, I2C_DEVICE_ID_ITE_VOYO_WINPAD_A15, + I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, { I2C_VENDOR_ID_RAYDIUM, I2C_PRODUCT_ID_RAYDIUM_3118, I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, { USB_VENDOR_ID_ELAN, HID_ANY_ID,
drivers/iommu/amd/iommu.c +6 -4
@@ -1502,6 +1502,10 @@ static bool increase_address_space(struct protection_domain *domain,bool ret = true;u64 *pte; + pte = (void *)get_zeroed_page (gfp); +if (!pte) +return false; +spin_lock_irqsave (&domain->lock, flags);amd_iommu_domain_get_pgtable (domain, &pgtable);
@@ -1513,10 +1517,6 @@ static bool increase_address_space(struct protection_domain *domain,if (WARN_ON_ONCE (pgtable.mode ==PAGE_MODE_6_LEVEL )) goto out; - pte = (void *)get_zeroed_page (gfp); -if (!pte) - goto out; - *pte =PM_LEVEL_PDE (pgtable.mode,iommu_virt_to_phys (pgtable.root)); pgtable.root = pte;
@@ -1530,10 +1530,12 @@ static bool increase_address_space(struct protection_domain *domain,*/ amd_iommu_domain_set_pgtable (domain, pte, pgtable.mode); + pte =NULL ; ret = true; out:spin_unlock_irqrestore (&domain->lock, flags); +free_page ((unsigned long )pte);return ret; }
drivers/misc/eeprom/eeprom_93xx46.c +15 -0
@@ -35,6 +35,10 @@ static const struct eeprom_93xx46_devtype_data atmel_at93c46d_data = { EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH, }; +static const struct eeprom_93xx46_devtype_data microchip_93lc46b_data = { + .quirks =EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE , +}; +struct eeprom_93xx46_dev {struct spi_device *spi;struct eeprom_93xx46_platform_data *pdata;
@@ -55,6 +59,11 @@ static inline bool has_quirk_instruction_length(struct eeprom_93xx46_dev *edev)return edev->pdata->quirks &EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH ; } +static inline bool has_quirk_extra_read_cycle (struct eeprom_93xx46_dev *edev) +{ +return edev->pdata->quirks &EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE ; +} +static int eeprom_93xx46_read (void *priv,unsigned int off,void *val,size_t count) {
@@ -96,6 +105,11 @@ static int eeprom_93xx46_read(void *priv, unsigned int off,dev_dbg (&edev->spi->dev,"read cmd 0x%x, %d Hz\n" , cmd_addr, edev->spi->max_speed_hz); +if (has_quirk_extra_read_cycle (edev)) { + cmd_addr <<=1 ; + bits +=1 ; + } +spi_message_init (&m); t[0 ].tx_buf = (char *)&cmd_addr;
@@ -363,6 +377,7 @@ static void select_deassert(void *context)static const struct of_device_id eeprom_93xx46_of_table[] = { { .compatible ="eeprom-93xx46" , }, { .compatible ="atmel,at93c46d" , .data = &atmel_at93c46d_data, }, + { .compatible ="microchip,93lc46b" , .data = µchip_93lc46b_data, }, {} };MODULE_DEVICE_TABLE (of, eeprom_93xx46_of_table);
drivers/mmc/host/sdhci-of-dwcmshc.c +1 -0
@@ -112,6 +112,7 @@ static const struct sdhci_ops sdhci_dwcmshc_ops = {static const struct sdhci_pltfm_data sdhci_dwcmshc_pdata = { .ops = &sdhci_dwcmshc_ops, .quirks =SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN , + .quirks2 =SDHCI_QUIRK2_PRESET_VALUE_BROKEN , };static int dwcmshc_probe (struct platform_device *pdev)
drivers/nvme/host/pci.c +7 -1
@@ -3230,7 +3230,8 @@ static const struct pci_device_id nvme_id_table[] = { { PCI_DEVICE(0x126f, 0x2263), /* Silicon Motion unidentified */ .driver_data = NVME_QUIRK_NO_NS_DESC_LIST, }, { PCI_DEVICE(0x1bb1, 0x0100), /* Seagate Nytro Flash Storage */ - .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, + .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY | + NVME_QUIRK_NO_NS_DESC_LIST, }, { PCI_DEVICE(0x1c58, 0x0003), /* HGST adapter */ .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, { PCI_DEVICE(0x1c58, 0x0023), /* WDC SN200 adapter */
@@ -3244,6 +3245,9 @@ static const struct pci_device_id nvme_id_table[] = { NVME_QUIRK_IGNORE_DEV_SUBNQN, }, { PCI_DEVICE(0x1987, 0x5016), /* Phison E16 */ .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, }, + { PCI_DEVICE(0x1b4b, 0x1092), /* Lexar 256 GB SSD */ + .driver_data = NVME_QUIRK_NO_NS_DESC_LIST | + NVME_QUIRK_IGNORE_DEV_SUBNQN, }, { PCI_DEVICE(0x1d1d, 0x1f1f), /* LighNVM qemu device */ .driver_data = NVME_QUIRK_LIGHTNVM, }, { PCI_DEVICE(0x1d1d, 0x2807), /* CNEX WL */
@@ -3261,6 +3265,8 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, { PCI_DEVICE(0x1d97, 0x2263), /* SPCC */ .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, + { PCI_DEVICE(0x2646, 0x2262), /* KINGSTON SKC2000 NVMe SSD */ + .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, { PCI_DEVICE(0x2646, 0x2263), /* KINGSTON A2000 NVMe SSD */ .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001),
drivers/pci/controller/cadence/pci-j721e.c +3 -0
@@ -64,6 +64,7 @@ enum j721e_pcie_mode {struct j721e_pcie_data {enum j721e_pcie_mode mode; +bool quirk_retrain_flag; };static inline u32 j721e_pcie_user_readl (struct j721e_pcie *pcie,u32 offset)
@@ -280,6 +281,7 @@ static struct pci_ops cdns_ti_pcie_host_ops = {static const struct j721e_pcie_data j721e_pcie_rc_data = { .mode =PCI_MODE_RC , + .quirk_retrain_flag = true, };static const struct j721e_pcie_data j721e_pcie_ep_data = {
@@ -388,6 +390,7 @@ static int j721e_pcie_probe(struct platform_device *pdev) bridge->ops = &cdns_ti_pcie_host_ops; rc =pci_host_bridge_priv (bridge); + rc->quirk_retrain_flag = data->quirk_retrain_flag; cdns_pcie = &rc->pcie; cdns_pcie->dev = dev;
drivers/pci/controller/cadence/pcie-cadence-host.c +63 -18
99 lines not on this page · raw message
drivers/pci/controller/cadence/pcie-cadence.h +10 -1
@@ -119,7 +119,7 @@* Root Port Registers (PCI configuration space for the root port function) */ #define CDNS_PCIE_RP_BASE 0x00200000 - +#define CDNS_PCIE_RP_CAP_OFFSET 0xc0/* * Address Translation Registers
@@ -291,6 +291,7 @@ struct cdns_pcie {* @device_id: PCI device ID * @avail_ib_bar: Satus of RP_BAR0, RP_BAR1 and RP_NO_BAR if it's free or * available +* @quirk_retrain_flag: Retrain link as quirk for PCIe Gen2 */ struct cdns_pcie_rc {struct cdns_pcie pcie;
@@ -299,6 +300,7 @@ struct cdns_pcie_rc {u32 vendor_id;u32 device_id;bool avail_ib_bar[CDNS_PCIE_RP_MAX_IB ]; +bool quirk_retrain_flag; };/**
@@ -414,6 +416,13 @@ static inline void cdns_pcie_rp_writew(struct cdns_pcie *pcie,cdns_pcie_write_sz (addr,0x2 , value); } +static inline u16 cdns_pcie_rp_readw (struct cdns_pcie *pcie,u32 reg) +{ +void __iomem *addr = pcie->reg_base +CDNS_PCIE_RP_BASE + reg; + +return cdns_pcie_read_sz (addr,0x2 ); +} +/* Endpoint Function register access */ static inline void cdns_pcie_ep_fn_writeb (struct cdns_pcie *pcie,u8 fn,u32 reg,u8 value)
drivers/scsi/ufs/ufs-exynos.c +8 -1
@@ -640,6 +640,11 @@ static int exynos_ufs_pre_pwr_mode(struct ufs_hba *hba, } } +/* setting for three timeout values for traffic class #0 */ +ufshcd_dme_set (hba,UIC_ARG_MIB (PA_PWRMODEUSERDATA0 ),8064 ); +ufshcd_dme_set (hba,UIC_ARG_MIB (PA_PWRMODEUSERDATA1 ),28224 ); +ufshcd_dme_set (hba,UIC_ARG_MIB (PA_PWRMODEUSERDATA2 ),20160 ); +return 0 ; out:return ret;
@@ -1236,7 +1241,9 @@ struct exynos_ufs_drv_data exynos_ufs_drvs = {UFSHCI_QUIRK_BROKEN_HCE |UFSHCI_QUIRK_SKIP_RESET_INTR_AGGR |UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR | - UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL, +UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL | +UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING | + UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE, .opts =EXYNOS_UFS_OPT_HAS_APB_CLK_CTRL |EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL | EXYNOS_UFS_OPT_BROKEN_RX_SEL_IDX |
drivers/scsi/ufs/ufs-mediatek.c +1 -0
@@ -661,6 +661,7 @@ static int ufs_mtk_init(struct ufs_hba *hba)/* Enable WriteBooster */ hba->caps |=UFSHCD_CAP_WB_EN ; + hba->quirks |=UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL ; hba->vps->wb_flush_threshold =UFS_WB_BUF_REMAIN_PERCENT (80 );if (host->caps &UFS_MTK_CAP_DISABLE_AH8 )
drivers/scsi/ufs/ufshcd.c +23 -19
54 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.h +10 -0
@@ -551,6 +551,16 @@ enum ufshcd_quirks {*/ UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL =1 <<12 , +/* +* This quirk needs to disable unipro timeout values +* before power mode change +*/ +UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING =1 <<13 , + +/* +* This quirk allows only sg entries aligned with page size. +*/ + UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE = 1 << 14, }; enum ufshcd_caps {
drivers/staging/media/sunxi/cedrus/cedrus.c +0 -49
165 lines not on this page · raw message
drivers/staging/media/sunxi/cedrus/cedrus.h +0 -1
@@ -56,7 +56,6 @@ enum cedrus_h264_pic_type {struct cedrus_control {struct v4l2_ctrl_config cfg;enum cedrus_codec codec; -unsigned char required:1 ; };struct cedrus_h264_run {
fs/btrfs/delayed-inode.c +2 -1
@@ -627,7 +627,8 @@ static int btrfs_delayed_inode_reserve_metadata(*/ if (!src_rsv || (!trans->bytes_reserved && src_rsv->type !=BTRFS_BLOCK_RSV_DELALLOC )) { - ret =btrfs_qgroup_reserve_meta_prealloc (root, num_bytes, true); + ret =btrfs_qgroup_reserve_meta (root, num_bytes, +BTRFS_QGROUP_RSV_META_PREALLOC , true);if (ret <0 )return ret; ret = btrfs_block_rsv_add(root, dst_rsv, num_bytes,
fs/btrfs/inode.c +1 -1
@@ -5916,7 +5916,7 @@ static int btrfs_dirty_inode(struct inode *inode)return PTR_ERR (trans); ret =btrfs_update_inode (trans, root,BTRFS_I (inode)); -if (ret && ret == -ENOSPC ) { +if (ret && (ret == -ENOSPC || ret == -EDQUOT )) {/* whoops, lets try again with the full transaction */ btrfs_end_transaction (trans); trans =btrfs_start_transaction (root,1 );
fs/btrfs/qgroup.c +4 -4
@@ -3841,8 +3841,8 @@ static int sub_root_meta_rsv(struct btrfs_root *root, int num_bytes,return num_bytes; } -static int qgroup_reserve_meta (struct btrfs_root *root,int num_bytes, -enum btrfs_qgroup_rsv_type type,bool enforce) +int btrfs_qgroup_reserve_meta (struct btrfs_root *root,int num_bytes, +enum btrfs_qgroup_rsv_type type,bool enforce) {struct btrfs_fs_info *fs_info = root->fs_info;int ret;
@@ -3873,14 +3873,14 @@ int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes, {int ret; - ret =qgroup_reserve_meta (root, num_bytes, type, enforce); + ret =btrfs_qgroup_reserve_meta (root, num_bytes, type, enforce);if (ret <=0 && ret != -EDQUOT )return ret; ret =try_flush_qgroup (root);if (ret <0 )return ret; -return qgroup_reserve_meta (root, num_bytes, type, enforce); +return btrfs_qgroup_reserve_meta (root, num_bytes, type, enforce); }void btrfs_qgroup_free_meta_all_pertrans (struct btrfs_root *root)
fs/btrfs/qgroup.h +2 -0
@@ -361,6 +361,8 @@ int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len);int btrfs_qgroup_free_data (struct btrfs_inode *inode,struct extent_changeset *reserved,u64 start,u64 len); +int btrfs_qgroup_reserve_meta (struct btrfs_root *root,int num_bytes, +enum btrfs_qgroup_rsv_type type,bool enforce);int __btrfs_qgroup_reserve_meta (struct btrfs_root *root,int num_bytes,enum btrfs_qgroup_rsv_type type,bool enforce);/* Reserve metadata space for pertrans and prealloc type */
fs/file.c +25 -11
@@ -22,6 +22,8 @@#include <linux/close_range.h> #include <net/sock.h> +#include "internal.h" +unsigned int sysctl_nr_open__read_mostly =1024 *1024 ;unsigned int sysctl_nr_open_min =BITS_PER_LONG ;/* our min() is unusable in constant expressions ;-/ */
@@ -732,36 +734,48 @@ int __close_range(unsigned fd, unsigned max_fd, unsigned int flags) }/* -* variant of close_fd that gets a ref on the file for later fput. -* The caller must ensure that filp_close() called on the file, and then -* an fput(). +* See close_fd_get_file() below, this variant assumes current->files->file_lock +* is held. */ -int close_fd_get_file (unsigned int fd,struct file **res) +int __close_fd_get_file (unsigned int fd,struct file **res) {struct files_struct *files = current->files;struct file *file;struct fdtable *fdt; -spin_lock (&files->file_lock); fdt =files_fdtable (files);if (fd >= fdt->max_fds) - goto out_unlock; + goto out_err; file = fdt->fd[fd];if (!file) - goto out_unlock; + goto out_err;rcu_assign_pointer (fdt->fd[fd],NULL );__put_unused_fd (files, fd); -spin_unlock (&files->file_lock);get_file (file); *res = file;return 0 ; - -out_unlock: -spin_unlock (&files->file_lock); +out_err: *res =NULL ;return -ENOENT ; } +/* +* variant of close_fd that gets a ref on the file for later fput. +* The caller must ensure that filp_close() called on the file, and then +* an fput(). +*/ +int close_fd_get_file (unsigned int fd,struct file **res) +{ +struct files_struct *files = current->files; +int ret; + +spin_lock (&files->file_lock); + ret =__close_fd_get_file (fd, res); +spin_unlock (&files->file_lock); + +return ret; +} +void do_close_on_exec (struct files_struct *files) {unsigned i;
fs/internal.h +1 -0
@@ -132,6 +132,7 @@ extern struct file *do_file_open_root(struct dentry *, struct vfsmount *, const char *, const struct open_flags *);extern struct open_how build_open_how (int flags,umode_t mode);extern int build_open_flags (const struct open_how *how,struct open_flags *op); +extern int __close_fd_get_file (unsigned int fd,struct file **res);long do_sys_ftruncate (unsigned int fd,loff_t length,int small);int chmod_common (const struct path *path,umode_t mode);
fs/io-wq.c +6 -11
@@ -555,23 +555,21 @@ static void io_worker_handle_work(struct io_worker *worker)/* handle a whole dependent link */ do { - struct io_wq_work *old_work, *next_hashed, *linked; + struct io_wq_work *next_hashed, *linked; unsigned int hash = io_get_work_hash(work); next_hashed = wq_next_work(work); io_impersonate_work(worker, work); + wq->do_work(work); + io_assign_current_work(worker, NULL); - old_work = work; - linked = wq->do_work(work); - + linked = wq->free_work(work); work = next_hashed; if (!work && linked && !io_wq_is_hashed(linked)) { work = linked; linked = NULL; } io_assign_current_work(worker, work); - wq->free_work(old_work); - if (linked) io_wqe_enqueue(wqe, linked);
@@ -850,11 +848,9 @@ static void io_run_cancel(struct io_wq_work *work, struct io_wqe *wqe)struct io_wq *wq = wqe->wq;do { -struct io_wq_work *old_work = work; - work->flags |=IO_WQ_WORK_CANCEL ; - work = wq->do_work (work); - wq->free_work (old_work); + wq->do_work (work); + work = wq->free_work (work); }while (work); }
@@ -944,7 +940,6 @@ static bool io_wq_worker_cancel(struct io_worker *worker, void *data)*/ spin_lock_irqsave (&worker->lock, flags);if (worker->cur_work && - !(worker->cur_work->flags &IO_WQ_WORK_NO_CANCEL ) && match->fn (worker->cur_work, match->data)) {send_sig (SIGINT , worker->task,1 ); match->nr_running++;
fs/io-wq.h +2 -3
@@ -9,7 +9,6 @@ enum {IO_WQ_WORK_CANCEL =1 ,IO_WQ_WORK_HASHED =2 ,IO_WQ_WORK_UNBOUND =4 , -IO_WQ_WORK_NO_CANCEL =8 ,IO_WQ_WORK_CONCURRENT =16 , IO_WQ_WORK_FILES = 32,
@@ -107,8 +106,8 @@ static inline struct io_wq_work *wq_next_work(struct io_wq_work *work) return container_of(work->list.next, struct io_wq_work, list); } -typedef void (free_work_fn )(struct io_wq_work *); -typedef struct io_wq_work *(io_wq_work_fn )(struct io_wq_work *); +typedef struct io_wq_work *(free_work_fn )(struct io_wq_work *); +typedef void (io_wq_work_fn )(struct io_wq_work *);struct io_wq_data {struct user_struct *user;
fs/io_uring.c +111 -130
406 lines not on this page · raw message
include/linux/eeprom_93xx46.h +2 -0
@@ -16,6 +16,8 @@ struct eeprom_93xx46_platform_data {#define EEPROM_93XX46_QUIRK_SINGLE_WORD_READ (1 << 0)/* Instructions such as EWEN are (addrlen + 2) in length. */ #define EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH (1 << 1) +/* Add extra cycle after address during a read */ +#define EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE BIT(2)/* * optional hooks to control additional logic
sound/soc/intel/boards/sof_sdw.c +54 -35
129 lines not on this page · raw message
sound/usb/mixer_quirks.c +248 -119
459 lines not on this page · raw message