Linux 5.19.11
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.19.11 kernel.
All users of the 5.19 kernel series must upgrade.
The updated 5.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml | 2 Makefile | 2 arch/parisc/Kconfig | 12 ++++ block/blk-core.c | 4 - block/blk-lib.c | 11 ++-- drivers/gpio/gpio-mpc8xxx.c | 1 drivers/gpio/gpio-rockchip.c | 4 - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 ++++- drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c | 9 ++- drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c | 9 ++- drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 9 ++- drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 5 + drivers/gpu/drm/amd/amdgpu/soc15.c | 25 --------- drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 4 + drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 4 + drivers/gpu/drm/i915/display/icl_dsi.c | 2 drivers/gpu/drm/i915/display/intel_dp.c | 1 drivers/gpu/drm/i915/display/intel_vdsc.c | 1 drivers/gpu/drm/i915/gt/uc/intel_guc.h | 8 ++ drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 20 +++++++ drivers/gpu/drm/i915/i915_reg.h | 16 ++--- drivers/gpu/drm/i915/i915_vma.c | 3 - drivers/gpu/drm/meson/meson_plane.c | 2 drivers/gpu/drm/meson/meson_viu.c | 2 drivers/gpu/drm/panel/panel-edp.c | 3 - drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 4 + drivers/iommu/intel/dmar.c | 7 -- drivers/iommu/intel/iommu.c | 27 +++++++++- drivers/of/fdt.c | 2 drivers/parisc/ccio-dma.c | 1 drivers/pinctrl/qcom/pinctrl-sc8180x.c | 10 +-- drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 fs/cifs/connect.c | 11 +--- fs/cifs/file.c | 3 + fs/cifs/transport.c | 6 -- fs/nfs/internal.h | 25 +++++++++ fs/nfs/nfs42proc.c | 9 ++- fs/nfs/super.c | 27 ++++++---- fs/nfs/write.c | 25 --------- include/linux/dmar.h | 4 - include/linux/of_device.h | 5 + include/net/xfrm.h | 2 io_uring/io_uring.c | 3 - kernel/cgroup/cgroup-v1.c | 2 net/ipv4/ip_output.c | 2 net/ipv4/tcp_ipv4.c | 2 net/ipv6/tcp_ipv6.c | 5 + net/sunrpc/clnt.c | 3 + net/sunrpc/xprt.c | 8 +- sound/pci/hda/patch_sigmatel.c | 24 ++++++++ tools/include/uapi/asm/errno.h | 4 - 51 files changed, 262 insertions(+), 134 deletions(-)
Alan Previn (1):
drm/i915/guc: Don't update engine busyness stats too frequently
Alex Deucher (3):
drm/amdgpu: make sure to init common IP before gmc drm/amdgpu: move nbio ih_doorbell_range() into ih code for vega drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega
Ankit Nautiyal (1):
drm/i915/vdsc: Set VDSC PIC_HEIGHT before using for DP DSC
Anna Schumaker (1):
NFSv4.2: Update mode bits after ALLOCATE and DEALLOCATE
Ashutosh Dixit (1):
drm/i915/gt: Fix perf limit reasons bit positions
Ben Hutchings (1):
tools/include/uapi: Fix <asm/errno.h> for parisc and xtensa
Chen-Yu Tsai (1):
drm/panel-edp: Fix delays for Innolux N116BCA-EA1
Dan Aloni (1):
Revert "SUNRPC: Remove unreachable error condition"
Greg Kroah-Hartman (1):
Linux 5.19.11
Helge Deller (1):
parisc: Allow CONFIG_64BIT with ARCH=parisc
Janne Grunau (1):
dt-bindings: apple,aic: Fix required item "apple,fiq-index" in affinity description
Jens Axboe (1):
io_uring/msg_ring: check file type before putting
João H. Spies (1):
pinctrl: rockchip: Enhance support for IRQ_TYPE_EDGE_BOTH
Lijo Lazar (1):
drm/amdgpu: Don't enable LTR if not supported
Lu Baolu (1):
Revert "iommu/vt-d: Fix possible recursive locking in intel_iommu_init()"
Michael Wu (1):
pinctrl: sunxi: Fix name for A100 R_PIO
Mikulas Patocka (1):
blk-lib: fix blkdev_issue_secure_erase
Molly Sophia (2):
pinctrl: qcom: sc8180x: Fix gpio_wakeirq_map
pinctrl: qcom: sc8180x: Fix wrong pin numbersNirmoy Das (1):
drm/i915: Set correct domains values at _i915_vma_move_to_active
Pali Rohár (1):
gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx
Ronnie Sahlberg (1):
cifs: revalidate mapping when doing direct writes
Sascha Hauer (1):
drm/rockchip: vop2: Fix eDP/HDMI sync polarities
Sergey Shtylyov (1):
of: fdt: fix off-by-one error in unflatten_dt_nodes()
Stefan Metzmacher (2):
cifs: don't send down the destination address to sendmsg for a SOCK_STREAM
cifs: always initialize struct msghdr smb_msg completely
Stefan Roesch (1):
block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for nowait
Stuart Menefy (2):
drm/meson: Correct OSD1 global alpha value drm/meson: Fix OSD1 RGB to YCbCr coefficient
Takashi Iwai (2):
ALSA: hda/sigmatel: Keep power up while beep is enabled
ALSA: hda/sigmatel: Fix unused variable warning for beep power change
Tetsuo Handa (1):
cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all()
Thierry Reding (1):
of/device: Fix up of_dma_configure_id() stub
Trond Myklebust (2):
SUNRPC: Fix call completion races with call_decode()
NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0
Umesh Nerlige Ramappa (1):
drm/i915/guc: Cancel GuC engine busyness worker synchronously
Yang Yingliang (1):
parisc: ccio-dma: Add missing iounmap in error path in ccio_probe()
sewookseo (1):
net: Find dst with sk's xfrm policy not ctl_sk
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/interrupt-controller/apple,aic.yaml +1 -1
@@ -96,7 +96,7 @@ properties: Documentation/devicetree/bindings/arm/cpus.yaml). required: - - fiq-index + - apple,fiq-index - cpus required:
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 19 -SUBLEVEL = 10 +SUBLEVEL = 11 EXTRAVERSION = NAME = Superb Owl
arch/parisc/Kconfig +11 -1
@@ -225,8 +225,18 @@ config MLONGCALLS Enabling this option will probably slow down your kernel. config 64BIT - def_bool "$(ARCH)" = "parisc64" + def_bool y if "$(ARCH)" = "parisc64" + bool "64-bit kernel" if "$(ARCH)" = "parisc" depends on PA8X00 + help + Enable this if you want to support 64bit kernel on PA-RISC platform. + + At the moment, only people willing to use more than 2GB of RAM, + or having a 64bit-only capable PA-RISC machine should say Y here. + + Since there is no 64bit userland on PA-RISC, there is no point to + enable this option otherwise. The 64bit kernel is significantly bigger + and slower than the 32bit one. choice prompt "Kernel page size"
block/blk-core.c +2 -2
@@ -338,7 +338,7 @@ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags)while (!blk_try_enter_queue (q, pm)) {if (flags &BLK_MQ_REQ_NOWAIT ) -return -EBUSY ; +return -EAGAIN ;/* * read pair of barrier in blk_freeze_queue_start(), we need to
@@ -368,7 +368,7 @@ int __bio_queue_enter(struct request_queue *q, struct bio *bio)if (test_bit (GD_DEAD , &disk->state)) goto dead;bio_wouldblock_error (bio); -return -EBUSY ; +return -EAGAIN ; }/*
block/blk-lib.c +8 -3
@@ -311,6 +311,11 @@ int blkdev_issue_secure_erase(struct block_device *bdev, sector_t sector,struct blk_plug plug;int ret =0 ; +/* make sure that "len << SECTOR_SHIFT" doesn't overflow */ +if (max_sectors >UINT_MAX >>SECTOR_SHIFT ) + max_sectors =UINT_MAX >>SECTOR_SHIFT ; + max_sectors &= ~bs_mask; +if (max_sectors ==0 )return -EOPNOTSUPP ;if ((sector | nr_sects) & bs_mask)
@@ -324,10 +329,10 @@ int blkdev_issue_secure_erase(struct block_device *bdev, sector_t sector, bio =blk_next_bio (bio, bdev,0 ,REQ_OP_SECURE_ERASE , gfp); bio->bi_iter.bi_sector = sector; - bio->bi_iter.bi_size = len; + bio->bi_iter.bi_size = len <<SECTOR_SHIFT ; - sector += len <<SECTOR_SHIFT ; - nr_sects -= len <<SECTOR_SHIFT ; + sector += len; + nr_sects -= len;if (!nr_sects) { ret =submit_bio_wait (bio);bio_put (bio);
drivers/gpio/gpio-mpc8xxx.c +1 -0
@@ -172,6 +172,7 @@ static int mpc8xxx_irq_set_type(struct irq_data *d, unsigned int flow_type)switch (flow_type) {case IRQ_TYPE_EDGE_FALLING : +case IRQ_TYPE_LEVEL_LOW :raw_spin_lock_irqsave (&mpc8xxx_gc->lock, flags); gc->write_reg (mpc8xxx_gc->regs +GPIO_ICR , gc->read_reg(mpc8xxx_gc->regs + GPIO_ICR)
drivers/gpio/gpio-rockchip.c +2 -2
@@ -418,11 +418,11 @@ static int rockchip_irq_set_type(struct irq_data *d, unsigned int type) goto out; }else { bank->toggle_edge_mode |= mask; - level |= mask; + level &= ~mask;/* * Determine gpio state. If 1 next interrupt should be -* falling otherwise rising. +* low otherwise high. */ data =readl (bank->reg_base + bank->gpio_regs->ext_port);if (data & mask)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +11 -3
@@ -2391,8 +2391,16 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) } adev->ip_blocks[i].status.sw = true; -/* need to do gmc hw init early so we can allocate gpu mem */ -if (adev->ip_blocks[i].version->type ==AMD_IP_BLOCK_TYPE_GMC ) { +if (adev->ip_blocks[i].version->type ==AMD_IP_BLOCK_TYPE_COMMON ) { +/* need to do common hw init early so everything is set up for gmc */ + r = adev->ip_blocks[i].version->funcs->hw_init ((void *)adev); +if (r) { +DRM_ERROR ("hw_init %d failed %d\n" , i, r); + goto init_failed; + } + adev->ip_blocks[i].status.hw = true; + }else if (adev->ip_blocks[i].version->type ==AMD_IP_BLOCK_TYPE_GMC ) { +/* need to do gmc hw init early so we can allocate gpu mem */ /* Try to reserve bad pages early */ if (amdgpu_sriov_vf (adev))amdgpu_virt_exchange_data (adev);
@@ -3078,8 +3086,8 @@ static int amdgpu_device_ip_reinit_early_sriov(struct amdgpu_device *adev)int i, r;static enum amd_ip_block_type ip_order[] = { -AMD_IP_BLOCK_TYPE_GMC ,AMD_IP_BLOCK_TYPE_COMMON , +AMD_IP_BLOCK_TYPE_GMC ,AMD_IP_BLOCK_TYPE_PSP ,AMD_IP_BLOCK_TYPE_IH , };
drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c +8 -1
@@ -380,6 +380,7 @@ static void nbio_v2_3_enable_aspm(struct amdgpu_device *adev,WREG32_PCIE (smnPCIE_LC_CNTL, data); } +#ifdef CONFIG_PCIEASPM static void nbio_v2_3_program_ltr (struct amdgpu_device *adev) {uint32_t def, data;
@@ -401,9 +402,11 @@ static void nbio_v2_3_program_ltr(struct amdgpu_device *adev)if (def != data) WREG32_PCIE(smnBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data); } +#endif static void nbio_v2_3_program_aspm (struct amdgpu_device *adev) { +#ifdef CONFIG_PCIEASPM uint32_t def, data; def = data =RREG32_PCIE (smnPCIE_LC_CNTL);
@@ -459,7 +462,10 @@ static void nbio_v2_3_program_aspm(struct amdgpu_device *adev)if (def != data)WREG32_PCIE (smnPCIE_LC_CNTL6, data); -nbio_v2_3_program_ltr (adev); +/* Don't bother about LTR if LTR is not enabled +* in the path */ +if (adev->pdev->ltr_path) +nbio_v2_3_program_ltr (adev); def = data =RREG32_SOC15 (NBIO ,0 , mmRCC_BIF_STRAP3); data |=0x5DE0 <<RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT ;
@@ -483,6 +489,7 @@ static void nbio_v2_3_program_aspm(struct amdgpu_device *adev) data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK ;if (def != data)WREG32_PCIE (smnPCIE_LC_CNTL3, data); +#endif }static void nbio_v2_3_apply_lc_spc_mode_wa (struct amdgpu_device *adev)
drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c +8 -1
@@ -282,6 +282,7 @@ static void nbio_v6_1_init_registers(struct amdgpu_device *adev) mmBIF_BX_DEV0_EPF0_VF0_HDP_MEM_COHERENCY_FLUSH_CNTL) << 2; } +#ifdef CONFIG_PCIEASPM static void nbio_v6_1_program_ltr (struct amdgpu_device *adev) {uint32_t def, data;
@@ -303,9 +304,11 @@ static void nbio_v6_1_program_ltr(struct amdgpu_device *adev)if (def != data) WREG32_PCIE(smnBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data); } +#endif static void nbio_v6_1_program_aspm (struct amdgpu_device *adev) { +#ifdef CONFIG_PCIEASPM uint32_t def, data; def = data =RREG32_PCIE (smnPCIE_LC_CNTL);
@@ -361,7 +364,10 @@ static void nbio_v6_1_program_aspm(struct amdgpu_device *adev)if (def != data)WREG32_PCIE (smnPCIE_LC_CNTL6, data); -nbio_v6_1_program_ltr (adev); +/* Don't bother about LTR if LTR is not enabled +* in the path */ +if (adev->pdev->ltr_path) +nbio_v6_1_program_ltr (adev); def = data =RREG32_PCIE (smnRCC_BIF_STRAP3); data |=0x5DE0 <<RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT ;
@@ -385,6 +391,7 @@ static void nbio_v6_1_program_aspm(struct amdgpu_device *adev) data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK ;if (def != data)WREG32_PCIE (smnPCIE_LC_CNTL3, data); +#endif }const struct amdgpu_nbio_funcs nbio_v6_1_funcs = {
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c +8 -1
@@ -673,6 +673,7 @@ struct amdgpu_nbio_ras nbio_v7_4_ras = { }; +#ifdef CONFIG_PCIEASPM static void nbio_v7_4_program_ltr (struct amdgpu_device *adev) {uint32_t def, data;
@@ -694,9 +695,11 @@ static void nbio_v7_4_program_ltr(struct amdgpu_device *adev)if (def != data) WREG32_PCIE(smnBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data); } +#endif static void nbio_v7_4_program_aspm (struct amdgpu_device *adev) { +#ifdef CONFIG_PCIEASPM uint32_t def, data;if (adev->ip_versions[NBIO_HWIP ][0 ] ==IP_VERSION (7 ,4 ,4 ))
@@ -755,7 +758,10 @@ static void nbio_v7_4_program_aspm(struct amdgpu_device *adev)if (def != data)WREG32_PCIE (smnPCIE_LC_CNTL6, data); -nbio_v7_4_program_ltr (adev); +/* Don't bother about LTR if LTR is not enabled +* in the path */ +if (adev->pdev->ltr_path) +nbio_v7_4_program_ltr (adev); def = data =RREG32_PCIE (smnRCC_BIF_STRAP3); data |=0x5DE0 <<RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT ;
@@ -779,6 +785,7 @@ static void nbio_v7_4_program_aspm(struct amdgpu_device *adev) data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK ;if (def != data)WREG32_PCIE (smnPCIE_LC_CNTL3, data); +#endif }const struct amdgpu_nbio_funcs nbio_v7_4_funcs = {
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +5 -0
@@ -1504,6 +1504,11 @@ static int sdma_v4_0_start(struct amdgpu_device *adev)WREG32_SDMA (i, mmSDMA0_CNTL, temp);if (!amdgpu_sriov_vf (adev)) { + ring = &adev->sdma.instance[i].ring; + adev->nbio.funcs->sdma_doorbell_range (adev, i, + ring->use_doorbell, ring->doorbell_index, + adev->doorbell_index.sdma_doorbell_range); +/* unhalt engine */ temp =RREG32_SDMA (i, mmSDMA0_F32_CNTL); temp =REG_SET_FIELD (temp,SDMA0_F32_CNTL ,HALT ,0 );
drivers/gpu/drm/amd/amdgpu/soc15.c +0 -25
@@ -1211,25 +1211,6 @@ static int soc15_common_sw_fini(void *handle)return 0 ; } -static void soc15_doorbell_range_init (struct amdgpu_device *adev) -{ -int i; -struct amdgpu_ring *ring; - -/* sdma/ih doorbell range are programed by hypervisor */ -if (!amdgpu_sriov_vf (adev)) { -for (i =0 ; i < adev->sdma.num_instances; i++) { - ring = &adev->sdma.instance[i].ring; - adev->nbio.funcs->sdma_doorbell_range (adev, i, - ring->use_doorbell, ring->doorbell_index, - adev->doorbell_index.sdma_doorbell_range); - } - - adev->nbio.funcs->ih_doorbell_range (adev, adev->irq.ih.use_doorbell, - adev->irq.ih.doorbell_index); - } -} -static int soc15_common_hw_init (void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle;
@@ -1249,12 +1230,6 @@ static int soc15_common_hw_init(void *handle)/* enable the doorbell aperture */ soc15_enable_doorbell_aperture (adev, true); -/* HW doorbell routing policy: doorbell writing not -* in SDMA/IH/MM/ACV range will be routed to CP. So -* we need to init SDMA/IH/MM/ACV doorbell range prior -* to CP ip block init and ring test. -*/ -soc15_doorbell_range_init (adev);return 0 ; }
drivers/gpu/drm/amd/amdgpu/vega10_ih.c +4 -0
@@ -289,6 +289,10 @@ static int vega10_ih_irq_init(struct amdgpu_device *adev) } } +if (!amdgpu_sriov_vf (adev)) + adev->nbio.funcs->ih_doorbell_range (adev, adev->irq.ih.use_doorbell, + adev->irq.ih.doorbell_index); +pci_set_master (adev->pdev);/* enable interrupts */
drivers/gpu/drm/amd/amdgpu/vega20_ih.c +4 -0
@@ -340,6 +340,10 @@ static int vega20_ih_irq_init(struct amdgpu_device *adev) } } +if (!amdgpu_sriov_vf (adev)) + adev->nbio.funcs->ih_doorbell_range (adev, adev->irq.ih.use_doorbell, + adev->irq.ih.doorbell_index); +pci_set_master (adev->pdev);/* enable interrupts */
drivers/gpu/drm/i915/display/icl_dsi.c +2 -0
@@ -1629,6 +1629,8 @@ static int gen11_dsi_dsc_compute_config(struct intel_encoder *encoder,/* FIXME: initialize from VBT */ vdsc_cfg->rc_model_size =DSC_RC_MODEL_SIZE_CONST ; + vdsc_cfg->pic_height = crtc_state->hw.adjusted_mode.crtc_vdisplay; + ret =intel_dsc_compute_params (crtc_state);if (ret)return ret;
drivers/gpu/drm/i915/display/intel_dp.c +1 -0
@@ -1379,6 +1379,7 @@ static int intel_dp_dsc_compute_params(struct intel_encoder *encoder,* DP_DSC_RC_BUF_SIZE for this. */ vdsc_cfg->rc_model_size =DSC_RC_MODEL_SIZE_CONST ; + vdsc_cfg->pic_height = crtc_state->hw.adjusted_mode.crtc_vdisplay;/* * Slice Height of 8 works for all currently available panels. So start
drivers/gpu/drm/i915/display/intel_vdsc.c +0 -1
@@ -460,7 +460,6 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config)u8 i =0 ; vdsc_cfg->pic_width = pipe_config->hw.adjusted_mode.crtc_hdisplay; - vdsc_cfg->pic_height = pipe_config->hw.adjusted_mode.crtc_vdisplay; vdsc_cfg->slice_width =DIV_ROUND_UP (vdsc_cfg->pic_width, pipe_config->dsc.slice_count);
drivers/gpu/drm/i915/gt/uc/intel_guc.h +8 -0
@@ -235,6 +235,14 @@ struct intel_guc {* @shift: Right shift value for the gpm timestamp */ u32 shift; + +/** +* @last_stat_jiffies: jiffies at last actual stats collection time +* We use this timestamp to ensure we don't oversample the +* stats because runtime power management events can trigger +* stats collection at much higher rates than required. +*/ +unsigned long last_stat_jiffies; } timestamp;#ifdef CONFIG_DRM_I915_SELFTEST
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +19 -1
@@ -1365,6 +1365,8 @@ static void __update_guc_busyness_stats(struct intel_guc *guc)unsigned long flags;ktime_t unused; + guc->timestamp.last_stat_jiffies = jiffies; +spin_lock_irqsave (&guc->timestamp.lock, flags);guc_update_pm_timestamp (guc, &unused);
@@ -1436,7 +1438,23 @@ void intel_guc_busyness_park(struct intel_gt *gt)if (!guc_submission_initialized (guc))return ; -cancel_delayed_work (&guc->timestamp.work); +/* +* There is a race with suspend flow where the worker runs after suspend +* and causes an unclaimed register access warning. Cancel the worker +* synchronously here. +*/ +cancel_delayed_work_sync (&guc->timestamp.work); + +/* +* Before parking, we should sample engine busyness stats if we need to. +* We can skip it if we are less than half a ping from the last time we +* sampled the busyness stats. +*/ +if (guc->timestamp.last_stat_jiffies && + !time_after (jiffies, guc->timestamp.last_stat_jiffies + + (guc->timestamp.ping_delay /2 ))) +return ; +__update_guc_busyness_stats (guc); }
drivers/gpu/drm/i915/i915_reg.h +8 -8
@@ -1849,14 +1849,14 @@#define GT0_PERF_LIMIT_REASONS _MMIO(0x1381a8)#define GT0_PERF_LIMIT_REASONS_MASK 0xde3 -#define PROCHOT_MASK REG_BIT(1) -#define THERMAL_LIMIT_MASK REG_BIT(2) -#define RATL_MASK REG_BIT(6) -#define VR_THERMALERT_MASK REG_BIT(7) -#define VR_TDC_MASK REG_BIT(8) -#define POWER_LIMIT_4_MASK REG_BIT(9) -#define POWER_LIMIT_1_MASK REG_BIT(11) -#define POWER_LIMIT_2_MASK REG_BIT(12) +#define PROCHOT_MASK REG_BIT(0) +#define THERMAL_LIMIT_MASK REG_BIT(1) +#define RATL_MASK REG_BIT(5) +#define VR_THERMALERT_MASK REG_BIT(6) +#define VR_TDC_MASK REG_BIT(7) +#define POWER_LIMIT_4_MASK REG_BIT(8) +#define POWER_LIMIT_1_MASK REG_BIT(10) +#define POWER_LIMIT_2_MASK REG_BIT(11)#define CHV_CLK_CTL1 _MMIO(0x101100)#define VLV_CLK_CTL2 _MMIO(0x101104)
drivers/gpu/drm/i915/i915_vma.c +2 -1
@@ -1870,12 +1870,13 @@ int _i915_vma_move_to_active(struct i915_vma *vma,enum dma_resv_usage usage;int idx; - obj->read_domains =0 ;if (flags &EXEC_OBJECT_WRITE ) { usage =DMA_RESV_USAGE_WRITE ; obj->write_domain =I915_GEM_DOMAIN_RENDER ; + obj->read_domains =0 ; }else { usage =DMA_RESV_USAGE_READ ; + obj->write_domain =0 ; }dma_fence_array_for_each (curr, idx, fence)
drivers/gpu/drm/meson/meson_plane.c +1 -1
@@ -168,7 +168,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane,/* Enable OSD and BLK0, set max global alpha */ priv->viu.osd1_ctrl_stat =OSD_ENABLE | - (0xFF <<OSD_GLOBAL_ALPHA_SHIFT ) | + (0x100 <<OSD_GLOBAL_ALPHA_SHIFT ) |OSD_BLK0_ENABLE ; priv->viu.osd1_ctrl_stat2 = readl(priv->io_base +
drivers/gpu/drm/meson/meson_viu.c +1 -1
@@ -94,7 +94,7 @@ static void meson_viu_set_g12a_osd1_matrix(struct meson_drm *priv, priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_COEF11_12));writel (((m[9 ] &0x1fff ) <<16 ) | (m[10 ] &0x1fff ), priv->io_base +_REG (VPP_WRAP_OSD1_MATRIX_COEF20_21 )); -writel ((m[11 ] &0x1fff ) <<16 , +writel ((m[11 ] &0x1fff ), priv->io_base +_REG (VPP_WRAP_OSD1_MATRIX_COEF22 )); writel(((m[18] & 0xfff) << 16) | (m[19] & 0xfff),
drivers/gpu/drm/panel/panel-edp.c +2 -1
@@ -1270,7 +1270,8 @@ static const struct panel_desc innolux_n116bca_ea1 = { }, .delay = { .hpd_absent = 200, - .prepare_to_enable = 80, + .enable = 80, + .disable = 50, .unprepare = 500, }, };
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +4 -0
@@ -1436,11 +1436,15 @@ static void rk3568_set_intf_mux(struct vop2_video_port *vp, int id, die &= ~RK3568_SYS_DSP_INFACE_EN_HDMI_MUX ; die |=RK3568_SYS_DSP_INFACE_EN_HDMI |FIELD_PREP (RK3568_SYS_DSP_INFACE_EN_HDMI_MUX , vp->id); + dip &= ~RK3568_DSP_IF_POL__HDMI_PIN_POL ; + dip |=FIELD_PREP (RK3568_DSP_IF_POL__HDMI_PIN_POL , polflags);break ;case ROCKCHIP_VOP2_EP_EDP0 : die &= ~RK3568_SYS_DSP_INFACE_EN_EDP_MUX ; die |=RK3568_SYS_DSP_INFACE_EN_EDP |FIELD_PREP (RK3568_SYS_DSP_INFACE_EN_EDP_MUX , vp->id); + dip &= ~RK3568_DSP_IF_POL__EDP_PIN_POL ; + dip |=FIELD_PREP (RK3568_DSP_IF_POL__EDP_PIN_POL , polflags);break ;case ROCKCHIP_VOP2_EP_MIPI0 : die &= ~RK3568_SYS_DSP_INFACE_EN_MIPI0_MUX ;
drivers/iommu/intel/dmar.c +0 -7
@@ -2368,13 +2368,6 @@ static int dmar_device_hotplug(acpi_handle handle, bool insert)if (!dmar_in_use ())return 0 ; -/* -* It's unlikely that any I/O board is hot added before the IOMMU -* subsystem is initialized. -*/ -if (IS_ENABLED (CONFIG_INTEL_IOMMU ) && !intel_iommu_enabled) -return -EOPNOTSUPP ; -if (dmar_detect_dsm (handle,DMAR_DSM_FUNC_DRHD )) { tmp = handle; }else {
drivers/iommu/intel/iommu.c +25 -2
@@ -3133,7 +3133,13 @@ static int __init init_dmars(void)#ifdef CONFIG_INTEL_IOMMU_SVM if (pasid_supported (iommu) &&ecap_prs (iommu->ecap)) { +/* +* Call dmar_alloc_hwirq() with dmar_global_lock held, +* could cause possible lock race condition. +*/ +up_write (&dmar_global_lock); ret =intel_svm_enable_prq (iommu); +down_write (&dmar_global_lock);if (ret) goto free_iommu; }
@@ -4039,6 +4045,7 @@ int __init intel_iommu_init(void) force_on = (!intel_iommu_tboot_noforce &&tboot_force_iommu ()) ||platform_optin_force_iommu (); +down_write (&dmar_global_lock);if (dmar_table_init ()) {if (force_on)panic ("tboot: Failed to initialize DMAR table\n" );
@@ -4051,6 +4058,16 @@ int __init intel_iommu_init(void) goto out_free_dmar; } +up_write (&dmar_global_lock); + +/* +* The bus notifier takes the dmar_global_lock, so lockdep will +* complain later when we register it under the lock. +*/ +dmar_register_bus_notifier (); + +down_write (&dmar_global_lock); +if (!no_iommu)intel_iommu_debugfs_init ();
@@ -4098,9 +4115,11 @@ int __init intel_iommu_init(void)pr_err ("Initialization failed\n" ); goto out_free_dmar; } +up_write (&dmar_global_lock);init_iommu_pm_ops (); +down_read (&dmar_global_lock);for_each_active_iommu (iommu, drhd) {/* * The flush queue implementation does not perform
@@ -4118,11 +4137,13 @@ int __init intel_iommu_init(void) "%s", iommu->name);iommu_device_register (&iommu->iommu, &intel_iommu_ops,NULL ); } +up_read (&dmar_global_lock);bus_set_iommu (&pci_bus_type, &intel_iommu_ops);if (si_domain && !hw_pass_through)register_memory_notifier (&intel_iommu_memory_nb); +down_read (&dmar_global_lock);if (probe_acpi_namespace_devices ())pr_warn ("ACPI name space devices didn't probe correctly\n" );
@@ -4133,15 +4154,17 @@ int __init intel_iommu_init(void)iommu_disable_protect_mem_regions (iommu); } +up_read (&dmar_global_lock); - intel_iommu_enabled =1 ; -dmar_register_bus_notifier ();pr_info ("Intel(R) Virtualization Technology for Directed I/O\n" ); + intel_iommu_enabled =1 ; +return 0 ; out_free_dmar:intel_iommu_free_dmars (); +up_write (&dmar_global_lock);return ret; }
drivers/of/fdt.c +1 -1
@@ -314,7 +314,7 @@ static int unflatten_dt_nodes(const void *blob,for (offset =0 ; offset >=0 && depth >= initial_depth; offset =fdt_next_node (blob, offset, &depth)) { -if (WARN_ON_ONCE (depth >=FDT_MAX_DEPTH )) +if (WARN_ON_ONCE (depth >=FDT_MAX_DEPTH -1 ))continue ; if (!IS_ENABLED(CONFIG_OF_KOBJ) &&
drivers/parisc/ccio-dma.c +1 -0
@@ -1546,6 +1546,7 @@ static int __init ccio_probe(struct parisc_device *dev) }ccio_ioc_init (ioc);if (ccio_init_resources (ioc)) { +iounmap (ioc->ioc_regs);kfree (ioc);return -ENOMEM ; }
drivers/pinctrl/qcom/pinctrl-sc8180x.c +5 -5
@@ -530,10 +530,10 @@ DECLARE_MSM_GPIO_PINS(187);DECLARE_MSM_GPIO_PINS (188 );DECLARE_MSM_GPIO_PINS (189 ); -static const unsigned int sdc2_clk_pins[] = {190 }; -static const unsigned int sdc2_cmd_pins[] = {191 }; -static const unsigned int sdc2_data_pins[] = {192 }; -static const unsigned int ufs_reset_pins[] = {193 }; +static const unsigned int ufs_reset_pins[] = {190 }; +static const unsigned int sdc2_clk_pins[] = {191 }; +static const unsigned int sdc2_cmd_pins[] = {192 }; +static const unsigned int sdc2_data_pins[] = {193 };enum sc8180x_functions { msm_mux_adsp_ext,
@@ -1582,7 +1582,7 @@ static const int sc8180x_acpi_reserved_gpios[] = {static const struct msm_gpio_wakeirq_map sc8180x_pdc_map[] = { {3 ,31 }, {5 ,32 }, {8 ,33 }, {9 ,34 }, {10 ,100 }, {12 ,104 }, {24 ,37 }, {26 ,38 }, {27 ,41 }, {28 ,42 }, {30 ,39 }, {36 ,43 }, - {37 ,43 }, {38 ,45 }, {39 ,118 }, {39 ,125 }, {41 ,47 }, + {37 ,44 }, {38 ,45 }, {39 ,118 }, {39 ,125 }, {41 ,47 }, {42 ,48 }, {46 ,50 }, {47 ,49 }, {48 ,51 }, {49 ,53 }, {50 ,52 }, {51 ,116 }, {51 ,123 }, {53 ,54 }, {54 ,55 }, {55 ,56 }, {56 ,57 }, {58 ,58 }, {60 ,60 }, {68 ,62 }, {70 ,63 }, {76 ,86 },
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c +1 -1
@@ -98,7 +98,7 @@ MODULE_DEVICE_TABLE(of, a100_r_pinctrl_match);static struct platform_driver a100_r_pinctrl_driver = { .probe = a100_r_pinctrl_probe, .driver = { - .name ="sun50iw10p1-r-pinctrl" , + .name ="sun50i-a100-r-pinctrl" , .of_match_table = a100_r_pinctrl_match, }, };
fs/cifs/connect.c +3 -8
@@ -707,9 +707,6 @@ cifs_readv_from_socket(struct TCP_Server_Info *server, struct msghdr *smb_msg)int length =0 ;int total_read; - smb_msg->msg_control =NULL ; - smb_msg->msg_controllen =0 ; -for (total_read =0 ;msg_data_left (smb_msg); total_read += length) {try_to_freeze ();
@@ -765,7 +762,7 @@ int cifs_read_from_socket(struct TCP_Server_Info *server, char *buf, unsigned int to_read) { - struct msghdr smb_msg; + struct msghdr smb_msg = {};struct kvec iov = {.iov_base = buf, .iov_len = to_read};iov_iter_kvec (&smb_msg.msg_iter,READ , &iov,1 , to_read);
@@ -775,15 +772,13 @@ cifs_read_from_socket(struct TCP_Server_Info *server, char *buf,ssize_t cifs_discard_from_socket (struct TCP_Server_Info *server,size_t to_read) { -struct msghdr smb_msg; +struct msghdr smb_msg = {};/* * iov_iter_discard already sets smb_msg.type and count and iov_offset * and cifs_readv_from_socket sets msg_control and msg_controllen * so little to initialize in struct msghdr */ - smb_msg.msg_name =NULL ; - smb_msg.msg_namelen =0 ;iov_iter_discard (&smb_msg.msg_iter,READ , to_read);return cifs_readv_from_socket (server, &smb_msg);
@@ -793,7 +788,7 @@ int cifs_read_page_from_socket(struct TCP_Server_Info *server, struct page *page, unsigned int page_offset, unsigned int to_read) { - struct msghdr smb_msg; + struct msghdr smb_msg = {};struct bio_vec bv = { .bv_page = page, .bv_len = to_read, .bv_offset = page_offset};iov_iter_bvec (&smb_msg.msg_iter,READ , &bv,1 , to_read);
fs/cifs/file.c +3 -0
@@ -3327,6 +3327,9 @@ static ssize_t __cifs_writev(ssize_t cifs_direct_writev (struct kiocb *iocb,struct iov_iter *from) { +struct file *file = iocb->ki_filp; + +cifs_revalidate_mapping (file->f_inode);return __cifs_writev (iocb, from, true); }
fs/cifs/transport.c +1 -5
@@ -196,10 +196,6 @@ smb_send_kvec(struct TCP_Server_Info *server, struct msghdr *smb_msg, *sent =0 ; - smb_msg->msg_name = (struct sockaddr *) &server->dstaddr; - smb_msg->msg_namelen =sizeof (struct sockaddr ); - smb_msg->msg_control =NULL ; - smb_msg->msg_controllen =0 ;if (server->noblocksnd) smb_msg->msg_flags =MSG_DONTWAIT +MSG_NOSIGNAL ;else
@@ -311,7 +307,7 @@ __smb_send_rqst(struct TCP_Server_Info *server, int num_rqst,sigset_t mask, oldmask;size_t total_len =0 , sent, size;struct socket *ssocket = server->ssocket; -struct msghdr smb_msg; +struct msghdr smb_msg = {};__be32 rfc1002_marker;if (cifs_rdma_enabled (server)) {
fs/nfs/internal.h +25 -0
@@ -604,6 +604,31 @@ static inline gfp_t nfs_io_gfp_mask(void)return GFP_KERNEL ; } +/* +* Special version of should_remove_suid() that ignores capabilities. +*/ +static inline int nfs_should_remove_suid (const struct inode *inode) +{ +umode_t mode = inode->i_mode; +int kill =0 ; + +/* suid always must be killed */ +if (unlikely (mode &S_ISUID )) + kill =ATTR_KILL_SUID ; + +/* +* sgid without any exec bits is just a mandatory locking mark; leave +* it alone. If some exec bits are set, it's a real sgid; kill it. +*/ +if (unlikely ((mode &S_ISGID ) && (mode &S_IXGRP ))) + kill |=ATTR_KILL_SGID ; + +if (unlikely (kill &&S_ISREG (mode))) +return kill; + +return 0 ; +} +/* unlink.c */ extern struct rpc_task * nfs_async_rename(struct inode *old_dir, struct inode *new_dir,
fs/nfs/nfs42proc.c +7 -2
@@ -78,10 +78,15 @@ static int _nfs42_proc_fallocate(struct rpc_message *msg, struct file *filep, status =nfs4_call_sync (server->client, server, msg, &args.seq_args, &res.seq_res,0 ); -if (status ==0 ) +if (status ==0 ) { +if (nfs_should_remove_suid (inode)) { +spin_lock (&inode->i_lock); +nfs_set_cache_invalid (inode,NFS_INO_INVALID_MODE ); +spin_unlock (&inode->i_lock); + } status =nfs_post_op_update_inode_force_wcc (inode, res.falloc_fattr); - + }if (msg->rpc_proc == &nfs4_procedures[NFSPROC4_CLNT_ALLOCATE ])trace_nfs4_fallocate (inode, &args, status);else
fs/nfs/super.c +18 -9
@@ -1051,22 +1051,31 @@ static void nfs_fill_super(struct super_block *sb, struct nfs_fs_context *ctx)if (ctx->bsize) sb->s_blocksize =nfs_block_size (ctx->bsize, &sb->s_blocksize_bits); -if (server->nfs_client->rpc_ops->version !=2 ) { -/* The VFS shouldn't apply the umask to mode bits. We will do -* so ourselves when necessary. +switch (server->nfs_client->rpc_ops->version) { +case 2 : + sb->s_time_gran =1000 ; + sb->s_time_min =0 ; + sb->s_time_max =U32_MAX ; +break ; +case 3 : +/* +* The VFS shouldn't apply the umask to mode bits. +* We will do so ourselves when necessary. */ sb->s_flags |=SB_POSIXACL ; sb->s_time_gran =1 ; - sb->s_export_op = &nfs_export_ops; - }else - sb->s_time_gran =1000 ; - -if (server->nfs_client->rpc_ops->version !=4 ) { sb->s_time_min =0 ; sb->s_time_max =U32_MAX ; - }else { + sb->s_export_op = &nfs_export_ops; +break ; +case 4 : + sb->s_flags |=SB_POSIXACL ; + sb->s_time_gran =1 ; sb->s_time_min =S64_MIN ; sb->s_time_max =S64_MAX ; +if (server->caps &NFS_CAP_ATOMIC_OPEN_V1 ) + sb->s_export_op = &nfs_export_ops; +break ; } sb->s_magic =NFS_SUPER_MAGIC ;
fs/nfs/write.c +0 -25
@@ -1497,31 +1497,6 @@ void nfs_commit_prepare(struct rpc_task *task, void *calldata)NFS_PROTO (data->inode)->commit_rpc_prepare (task, data); } -/* -* Special version of should_remove_suid() that ignores capabilities. -*/ -static int nfs_should_remove_suid (const struct inode *inode) -{ -umode_t mode = inode->i_mode; -int kill =0 ; - -/* suid always must be killed */ -if (unlikely (mode &S_ISUID )) - kill =ATTR_KILL_SUID ; - -/* -* sgid without any exec bits is just a mandatory locking mark; leave -* it alone. If some exec bits are set, it's a real sgid; kill it. -*/ -if (unlikely ((mode &S_ISGID ) && (mode &S_IXGRP ))) - kill |=ATTR_KILL_SGID ; - -if (unlikely (kill &&S_ISREG (mode))) -return kill; - -return 0 ; -} -static void nfs_writeback_check_extend (struct nfs_pgio_header *hdr,struct nfs_fattr *fattr) {
include/linux/dmar.h +1 -3
@@ -69,7 +69,6 @@ struct dmar_pci_notify_info {extern struct rw_semaphore dmar_global_lock;extern struct list_head dmar_drhd_units; -extern int intel_iommu_enabled;#define for_each_drhd_unit (drhd) \ list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
@@ -93,8 +92,7 @@ extern int intel_iommu_enabled;static inline bool dmar_rcu_check (void ) {return rwsem_is_locked (&dmar_global_lock) || - system_state ==SYSTEM_BOOTING || - (IS_ENABLED (CONFIG_INTEL_IOMMU ) && !intel_iommu_enabled); + system_state ==SYSTEM_BOOTING ; }#define dmar_rcu_dereference (p) rcu_dereference_check((p), dmar_rcu_check())
include/linux/of_device.h +3 -2
@@ -101,8 +101,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) }static inline int of_dma_configure_id (struct device *dev, -struct device_node *np, -bool force_dma) +struct device_node *np, +bool force_dma, +const u32 *id) {return 0 ; }
include/net/xfrm.h +2 -0
@@ -1195,6 +1195,8 @@ int __xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk);static inline int xfrm_sk_clone_policy (struct sock *sk,const struct sock *osk) { +if (!sk_fullsock (osk)) +return 0 ; sk->sk_policy[0 ] =NULL ; sk->sk_policy[1 ] =NULL ;if (unlikely (osk->sk_policy[0 ] || osk->sk_policy[1 ]))
io_uring/io_uring.c +2 -1
@@ -5061,7 +5061,8 @@ static int io_msg_ring(struct io_kiocb *req, unsigned int issue_flags)req_set_fail (req);__io_req_complete (req, issue_flags, ret,0 );/* put file to avoid an attempt to IOPOLL the req */ -io_put_file (req->file); +if (!(req->flags &REQ_F_FIXED_FILE )) +io_put_file (req->file); req->file =NULL ;return 0 ; }
kernel/cgroup/cgroup-v1.c +2 -0
@@ -59,6 +59,7 @@ int cgroup_attach_task_all(struct task_struct *from, struct task_struct *tsk)int retval =0 ;mutex_lock (&cgroup_mutex); +cpus_read_lock ();percpu_down_write (&cgroup_threadgroup_rwsem);for_each_root (root) {struct cgroup *from_cgrp;
@@ -72,6 +73,7 @@ int cgroup_attach_task_all(struct task_struct *from, struct task_struct *tsk)break ; }percpu_up_write (&cgroup_threadgroup_rwsem); +cpus_read_unlock ();mutex_unlock (&cgroup_mutex);return retval;
net/ipv4/ip_output.c +1 -1
@@ -1704,7 +1704,7 @@ void ip_send_unicast_reply(struct sock *sk, struct sk_buff *skb,tcp_hdr (skb)->source,tcp_hdr (skb)->dest, arg->uid);security_skb_classify_flow (skb,flowi4_to_flowi_common (&fl4)); - rt =ip_route_output_key (net, &fl4); + rt =ip_route_output_flow (net, &fl4, sk);if (IS_ERR (rt))return ;
net/ipv4/tcp_ipv4.c +2 -0
@@ -819,6 +819,7 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb) ctl_sk->sk_priority = (sk->sk_state ==TCP_TIME_WAIT ) ?inet_twsk (sk)->tw_priority : sk->sk_priority; transmit_time =tcp_transmit_time (sk); +xfrm_sk_clone_policy (ctl_sk, sk); } ip_send_unicast_reply(ctl_sk, skb, &TCP_SKB_CB(skb)->header.h4.opt,
@@ -827,6 +828,7 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb) transmit_time); ctl_sk->sk_mark =0 ; +xfrm_sk_free_policy (ctl_sk);sock_net_set (ctl_sk, &init_net);__TCP_INC_STATS (net,TCP_MIB_OUTSEGS );__TCP_INC_STATS (net,TCP_MIB_OUTRSTS );
net/ipv6/tcp_ipv6.c +4 -1
@@ -952,7 +952,10 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32* Underlying function will use this to retrieve the network * namespace */ - dst =ip6_dst_lookup_flow (sock_net (ctl_sk), ctl_sk, &fl6,NULL ); +if (sk && sk->sk_state !=TCP_TIME_WAIT ) + dst =ip6_dst_lookup_flow (net, sk, &fl6,NULL );/*sk's xfrm_policy can be referred*/ +else + dst =ip6_dst_lookup_flow (net, ctl_sk, &fl6,NULL );if (!IS_ERR (dst)) {skb_dst_set (buff, dst); ip6_xmit(ctl_sk, buff, &fl6, fl6.flowi6_mark, NULL,
net/sunrpc/clnt.c +3 -0
@@ -2858,6 +2858,9 @@ int rpc_clnt_test_and_add_xprt(struct rpc_clnt *clnt, task =rpc_call_null_helper (clnt, xprt,NULL ,RPC_TASK_ASYNC , &rpc_cb_add_xprt_call_ops, data); +if (IS_ERR (task)) +return PTR_ERR (task); + data->xps->xps_nunique_destaddr_xprts++;rpc_put_task (task); success:
net/sunrpc/xprt.c +4 -4
@@ -1179,11 +1179,8 @@ xprt_request_dequeue_receive_locked(struct rpc_task *task) {struct rpc_rqst *req = task->tk_rqstp; -if (test_and_clear_bit (RPC_TASK_NEED_RECV , &task->tk_runstate)) { +if (test_and_clear_bit (RPC_TASK_NEED_RECV , &task->tk_runstate))xprt_request_rb_remove (req->rq_xprt, req); -xdr_free_bvec (&req->rq_rcv_buf); - req->rq_private_buf.bvec =NULL ; - } }/**
@@ -1221,6 +1218,8 @@ void xprt_complete_rqst(struct rpc_task *task, int copied) xprt->stat.recvs++; +xdr_free_bvec (&req->rq_rcv_buf); + req->rq_private_buf.bvec =NULL ; req->rq_private_buf.len = copied;/* Ensure all writes are done before we update */ /* req->rq_reply_bytes_recvd */
@@ -1453,6 +1452,7 @@ xprt_request_dequeue_xprt(struct rpc_task *task)xprt_request_dequeue_transmit_locked (task);xprt_request_dequeue_receive_locked (task);spin_unlock (&xprt->queue_lock); +xdr_free_bvec (&req->rq_rcv_buf); } }
sound/pci/hda/patch_sigmatel.c +24 -0
@@ -209,6 +209,7 @@ struct sigmatel_spec {/* beep widgets */ hda_nid_t anabeep_nid; +bool beep_power_on;/* SPDIF-out mux */ const char *const *spdif_labels;
@@ -4443,6 +4444,28 @@ static int stac_suspend(struct hda_codec *codec) return 0; } + +static int stac_check_power_status (struct hda_codec *codec,hda_nid_t nid) +{ +#ifdef CONFIG_SND_HDA_INPUT_BEEP +struct sigmatel_spec *spec = codec->spec; +#endif +int ret =snd_hda_gen_check_power_status (codec, nid); + +#ifdef CONFIG_SND_HDA_INPUT_BEEP +if (nid == spec->gen.beep_nid && codec->beep) { +if (codec->beep->enabled != spec->beep_power_on) { + spec->beep_power_on = codec->beep->enabled; +if (spec->beep_power_on) +snd_hda_power_up_pm (codec); +else +snd_hda_power_down_pm (codec); + } + ret |= spec->beep_power_on; + } +#endif +return ret; +}#else #define stac_suspend NULL#endif /* CONFIG_PM */
@@ -4455,6 +4478,7 @@ static const struct hda_codec_ops stac_patch_ops = { .unsol_event = snd_hda_jack_unsol_event, #ifdef CONFIG_PM .suspend = stac_suspend, + .check_power_status = stac_check_power_status,#endif };
tools/include/uapi/asm/errno.h +2 -2
@@ -9,8 +9,8 @@#include "../../../arch/alpha/include/uapi/asm/errno.h" #elif defined(__mips__)#include "../../../arch/mips/include/uapi/asm/errno.h" -#elif defined(__xtensa__) -#include "../../../arch/xtensa/include/uapi/asm/errno.h" +#elif defined(__hppa__) +#include "../../../arch/parisc/include/uapi/asm/errno.h" #else #include <asm-generic/errno.h> #endif