Linux 4.19.116
Greg KH
maintainerI'm announcing the release of the 4.19.116 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.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/sound/hd-audio/index.rst | 1 Documentation/sound/hd-audio/models.rst | 2 Documentation/sound/hd-audio/realtek-pc-beep.rst | 129 +++++++++ Makefile | 2 arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts | 4 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 3 arch/arm64/kernel/armv8_deprecated.c | 2 arch/mips/cavium-octeon/octeon-irq.c | 3 arch/mips/mm/tlbex.c | 5 arch/powerpc/include/asm/book3s/64/hash-4k.h | 6 arch/powerpc/include/asm/book3s/64/hash-64k.h | 8 arch/powerpc/include/asm/book3s/64/pgtable.h | 4 arch/powerpc/include/asm/book3s/64/radix.h | 5 arch/powerpc/include/asm/drmem.h | 4 arch/powerpc/include/asm/setjmp.h | 6 arch/powerpc/kernel/Makefile | 3 arch/powerpc/kernel/idle_book3s.S | 27 +- arch/powerpc/kernel/kprobes.c | 3 arch/powerpc/kernel/signal_64.c | 4 arch/powerpc/mm/tlb_nohash_low.S | 12 arch/powerpc/platforms/pseries/hotplug-memory.c | 8 arch/powerpc/platforms/pseries/lpar.c | 2 arch/powerpc/sysdev/xive/common.c | 12 arch/powerpc/sysdev/xive/native.c | 4 arch/powerpc/sysdev/xive/spapr.c | 4 arch/powerpc/sysdev/xive/xive-internal.h | 7 arch/powerpc/xmon/Makefile | 3 arch/s390/kernel/diag.c | 2 arch/s390/kvm/vsie.c | 1 arch/s390/mm/gmap.c | 6 arch/x86/boot/compressed/head_32.S | 2 arch/x86/boot/compressed/head_64.S | 4 arch/x86/entry/entry_32.S | 1 arch/x86/include/asm/kvm_host.h | 2 arch/x86/include/asm/pgtable.h | 7 arch/x86/include/asm/pgtable_types.h | 2 arch/x86/kernel/acpi/boot.c | 2 arch/x86/kvm/svm.c | 4 arch/x86/kvm/vmx.c | 110 ++------ arch/x86/kvm/x86.c | 21 + arch/x86/platform/efi/efi_64.c | 4 block/bfq-iosched.c | 16 - block/blk-ioc.c | 7 block/blk-settings.c | 3 drivers/ata/libata-pmp.c | 1 drivers/ata/libata-scsi.c | 9 drivers/base/firmware_loader/fallback.c | 2 drivers/block/null_blk_main.c | 10 drivers/block/xen-blkfront.c | 17 - drivers/bus/sunxi-rsb.c | 2 drivers/char/ipmi/ipmi_msghandler.c | 4 drivers/char/tpm/eventlog/common.c | 12 drivers/char/tpm/eventlog/tpm1.c | 2 drivers/char/tpm/eventlog/tpm2.c | 2 drivers/char/tpm/tpm-chip.c | 4 drivers/char/tpm/tpm.h | 2 drivers/clk/ingenic/jz4770-cgu.c | 4 drivers/cpufreq/imx6q-cpufreq.c | 3 drivers/cpufreq/powernv-cpufreq.c | 6 drivers/crypto/caam/caamalg_desc.c | 16 + drivers/crypto/ccree/cc_aead.c | 56 +++- drivers/crypto/ccree/cc_aead.h | 1 drivers/crypto/ccree/cc_buffer_mgr.c | 108 ++++---- drivers/crypto/mxs-dcp.c | 58 ++-- drivers/firmware/arm_sdei.c | 32 +- drivers/firmware/efi/efi.c | 2 drivers/gpu/drm/drm_dp_mst_topology.c | 19 - drivers/gpu/drm/drm_pci.c | 25 - drivers/gpu/drm/etnaviv/etnaviv_perfmon.c | 103 ++++++- drivers/i2c/busses/i2c-st.c | 1 drivers/infiniband/hw/mlx5/main.c | 6 drivers/input/serio/i8042-x86ia64io.h | 11 drivers/irqchip/irq-gic-v3-its.c | 6 drivers/irqchip/irq-versatile-fpga.c | 18 + drivers/md/dm-verity-fec.c | 1 drivers/md/dm-writecache.c | 6 drivers/md/dm-zoned-metadata.c | 1 drivers/md/md.c | 2 drivers/media/i2c/ov5695.c | 49 ++- drivers/media/i2c/video-i2c.c | 2 drivers/media/platform/qcom/venus/hfi_parser.c | 1 drivers/media/platform/ti-vpe/cal.c | 16 - drivers/mfd/dln2.c | 9 drivers/misc/echo/echo.c | 2 drivers/mtd/nand/spi/core.c | 17 - drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c | 3 drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c | 3 drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c | 51 --- drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c | 5 drivers/net/ethernet/neterion/vxge/vxge-config.h | 2 drivers/net/ethernet/neterion/vxge/vxge-main.h | 14 - drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 2 drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c | 31 +- drivers/net/wireless/ath/ath9k/main.c | 3 drivers/nvme/host/core.c | 11 drivers/nvme/host/fc.c | 14 - drivers/nvme/target/fcloop.c | 1 drivers/pci/endpoint/pci-epc-mem.c | 10 drivers/pci/hotplug/pciehp_hpc.c | 14 - drivers/pci/pcie/aspm.c | 4 drivers/pci/quirks.c | 80 +++++- drivers/pci/switch/switchtec.c | 2 drivers/rtc/rtc-omap.c | 4 drivers/s390/scsi/zfcp_erp.c | 2 drivers/scsi/lpfc/lpfc_nvme.c | 2 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 8 drivers/scsi/qla2xxx/qla_nvme.c | 1 drivers/staging/erofs/utils.c | 2 drivers/usb/dwc3/core.c | 5 drivers/usb/dwc3/core.h | 4 drivers/usb/gadget/composite.c | 9 drivers/usb/gadget/function/f_fs.c | 1 drivers/usb/host/xhci.c | 4 fs/btrfs/async-thread.c | 8 fs/btrfs/async-thread.h | 1 fs/btrfs/delayed-inode.c | 13 + fs/btrfs/disk-io.c | 27 +- fs/btrfs/file.c | 11 fs/btrfs/qgroup.c | 11 fs/btrfs/relocation.c | 35 +- fs/cifs/file.c | 2 fs/exec.c | 2 fs/ext4/inode.c | 2 fs/filesystems.c | 4 fs/gfs2/glock.c | 3 fs/hfsplus/attributes.c | 4 fs/nfs/write.c | 1 fs/ocfs2/alloc.c | 4 fs/pstore/inode.c | 5 fs/pstore/platform.c | 4 include/linux/devfreq_cooling.h | 2 include/linux/iocontext.h | 1 include/linux/mlx5/mlx5_ifc.h | 9 include/linux/nvme-fc-driver.h | 4 include/linux/pci-epc.h | 3 include/linux/sched.h | 4 include/linux/swab.h | 1 include/uapi/linux/swab.h | 10 kernel/cpu.c | 5 kernel/irq/irqdomain.c | 10 kernel/kmod.c | 4 kernel/locking/lockdep.c | 4 kernel/sched/sched.h | 8 kernel/signal.c | 2 kernel/trace/trace_kprobe.c | 2 lib/find_bit.c | 16 - mm/page_alloc.c | 8 mm/slub.c | 2 security/keys/key.c | 2 security/keys/keyctl.c | 4 sound/core/oss/pcm_plugin.c | 32 +- sound/pci/hda/hda_beep.c | 6 sound/pci/hda/hda_intel.c | 16 + sound/pci/hda/patch_realtek.c | 50 --- sound/pci/ice1712/prodigy_hifi.c | 4 sound/soc/soc-dapm.c | 8 sound/soc/soc-ops.c | 4 sound/soc/soc-pcm.c | 6 sound/soc/soc-topology.c | 2 sound/usb/mixer_maps.c | 28 ++ tools/gpio/Makefile | 2 tools/perf/Makefile.config | 11 tools/testing/selftests/vm/mlock2-tests.c | 233 ++---------------- tools/testing/selftests/x86/ptrace_syscall.c | 8 164 files changed, 1221 insertions(+), 834 deletions(-)
Alain Volmat (1):
i2c: st: fix missing struct parameter description
Alex Vesker (1):
IB/mlx5: Replace tunnel mpls capability bits for tunnel_offloads
Alexander Duyck (1):
mm: Use fixed constant in page_frag_alloc instead of size + 1
Alexander Sverdlin (1):
genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy()
Alexey Dobriyan (1):
null_blk: fix spurious IO errors after failed past-wp access
Andrei Botila (1):
crypto: caam - update xts sector size for large input length
Andy Lutomirski (1):
selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault
Andy Shevchenko (1):
mfd: dln2: Fix sanity checking for endpoints
Aneesh Kumar K.V (1):
powerpc/hash64/devmap: Use H_PAGE_THP_HUGE when setting up huge devmap PTE entries
Anssi Hannula (1):
tools: gpio: Fix out-of-tree build regression
Ard Biesheuvel (1):
efi/x86: Ignore the memory attributes table on i386
Arvind Sankar (1):
x86/boot: Use unsigned comparison for addresses
Bart Van Assche (2):
null_blk: Fix the null_add_dev() error path
null_blk: Handle null_add_dev() failures properly
Benoit Parrot (1):
media: ti-vpe: cal: fix disable_irqs to only the intended target
Bob Liu (1):
dm zoned: remove duplicate nr_rnd_zones increase in dmz_init_zone()
Bob Peterson (1):
gfs2: Don't demote a glock until its revokes are written
Boqun Feng (1):
locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps()
Changwei Ge (1):
ocfs2: no need try to truncate file beyond i_size
Chris Wilson (1):
drm: Remove PageReserved manipulation from drm_pci_alloc
Christian Gmeiner (2):
drm/etnaviv: rework perfmon query infrastructure
etnaviv: perfmon: fix total and idle HI cyleces readout
Christoph Niedermaier (1):
cpufreq: imx6q: Fixes unwanted cpu overclocking on i.MX6ULL
Christophe Leroy (1):
powerpc/kprobes: Ignore traps that happened in real mode
Clement Courbet (1):
powerpc: Make setjmp/longjmp signature standard
Cédric Le Goater (1):
powerpc/xive: Use XIVE_BAD_IRQ instead of zero to catch non configured IPIs
David Hildenbrand (2):
KVM: s390: vsie: Fix region 1 ASCE sanity shadow address checks
KVM: s390: vsie: Fix delivery of addressing exceptions
Dongchun Zhu (1):
media: i2c: ov5695: Fix power on and off sequences
Eric Biggers (2):
fs/filesystems.c: downgrade user-reachable WARN_ONCE() to pr_warn_once()
kmod: make request_module() return an error when autoloading is disabled
Eric W. Biederman (1):
signal: Extend exec_id to 64bits
Filipe Manana (2):
Btrfs: fix crash during unmount due to race with delayed inode workers
btrfs: fix missing file extent item for hole after ranged fsync
Fredrik Strupe (1):
arm64: armv8_deprecated: Fix undef_hook mask for thumb setend
Frieder Schrempf (2):
mtd: spinand: Stop using spinand->oobbuf for buffering bad block markers
mtd: spinand: Do not erase the block before writing a bad block marker
Gao Xiang (1):
erofs: correct the remaining shrink objects
Gary Lin (1):
efi/x86: Fix the deletion of variables in mixed mode
Gilad Ben-Yossef (4):
crypto: ccree - zero out internal struct before use
crypto: ccree - don't mangle the request assoclen
crypto: ccree - dec auth tag size from cryptlen map
crypto: ccree - only try to map auth tag if needed
Greg Kroah-Hartman (1):
Linux 4.19.116
Guoqing Jiang (1):
md: check arrays is suspended in mddev_detach before call quiesce operations
Gustavo A. R. Silva (1):
MIPS: OCTEON: irq: Fix potential NULL pointer dereference
Hadar Gat (1):
crypto: ccree - improve error handling
Hans de Goede (1):
Input: i8042 - add Acer Aspire 5738z to nomux list
Huacai Chen (1):
MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
James Morse (1):
firmware: arm_sdei: fix double-lock on hibernate with shared events
James Smart (2):
nvme-fc: Revert "add module to ops template to allow module references"
nvme: Treat discovery subsystems as unique subsystems
Jan Engelhardt (1):
acpi/x86: ignore unspecified bit positions in the ACPI global lock field
John Garry (1):
libata: Remove extra scsi_host_put() in ata_scsi_add_hosts()
Josef Bacik (5):
btrfs: remove a BUG_ON() from merge_reloc_roots()
btrfs: track reloc roots based on their commit root bytenr
btrfs: set update the uuid generation as soon as possible
btrfs: drop block from cache on error in relocation
btrfs: use nofs allocations for running delayed items
Juergen Gross (1):
xen/blkfront: fix memory allocation flags in blkfront_setup_indirect()
Junyong Sun (1):
firmware: fix a double abort case with fw_load_sysfs_fallback
Kai-Heng Feng (1):
libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set
Kees Cook (1):
slub: improve bit diffusion for freelist ptr obfuscation
Kishon Vijay Abraham I (1):
PCI: endpoint: Fix for concurrent memory allocation in OB address region
Konstantin Khlebnikov (1):
block: keep bdi->io_pages in sync with max_sectors_kb for stacked devices
Laurentiu Tudor (1):
powerpc/fsl_booke: Avoid creating duplicate tlb1 entry
Libor Pechacek (1):
powerpc/pseries: Avoid NULL pointer dereference when drmem is unavailable
Logan Gunthorpe (1):
PCI/switchtec: Fix init_completion race condition with poll_wait()
Lukas Wunner (1):
PCI: pciehp: Fix indefinite wait on sysfs requests
Luo bin (2):
hinic: fix a bug of waitting for IO stopped
hinic: fix wrong para of wait_for_completion_timeout
Lyude Paul (1):
drm/dp_mst: Fix clearing payload state on topology disable
Marc Zyngier (1):
irqchip/gic-v4: Provide irq_retrigger to avoid circular locking dependency
Martin Blumenstingl (1):
thermal: devfreq_cooling: inline all stubs for CONFIG_DEVFREQ_THERMAL=n
Masami Hiramatsu (1):
ftrace/kprobe: Show the maxactive number on kprobe_events
Mathias Nyman (1):
xhci: bail out early if driver can't accress host in resume
Matt Ranostay (1):
media: i2c: video-i2c: fix build errors due to 'imply hwmon'
Matthew Garrett (1):
tpm: Don't make log failures fatal
Maxime Ripard (1):
arm64: dts: allwinner: h6: Fix PMU compatible
Michael Ellerman (2):
powerpc/powernv/idle: Restore AMR/UAMOR/AMOR after idle powerpc/64/tm: Don't let userspace set regs->trap via sigreturn
Michael Mueller (1):
s390/diag: fix display of diagnose call statistics
Michael Wang (1):
sched: Avoid scale real weight down to zero
Michal Hocko (1):
selftests: vm: drop dependencies on page flags from mlock2 tests
Mikulas Patocka (1):
dm writecache: add cond_resched to avoid CPU hangs
Nathan Chancellor (2):
rtc: omap: Use define directive for PIN_CONFIG_ACTIVE_HIGH
misc: echo: Remove unnecessary parentheses and simplify check for zero
Neil Armstrong (1):
usb: dwc3: core: add support for disabling SS instances in park mode
Oliver O'Halloran (1):
cpufreq: powernv: Fix use-after-free
Ondrej Jirman (2):
ARM: dts: sun8i-a83t-tbs-a711: HM5065 doesn't like such a high voltage
bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads
Paul Cercueil (1):
clk: ingenic/jz4770: Exit with error if CGU init failed
Qian Cai (1):
ext4: fix a data race at inode->i_blocks
Qu Wenruo (1):
btrfs: qgroup: ensure qgroup_rescan_running is only set when the worker is at least queued
Raju Rangoju (1):
cxgb4/ptp: pass the sign of offset delta in FW CMD
Remi Pommarel (1):
ath9k: Handle txpower changes even when TPC is disabled
Robbie Ko (1):
btrfs: fix missing semaphore unlock in btrfs_sync_file
Rosioru Dragos (1):
crypto: mxs-dcp - fix scatterlist linearization for hash
Sahitya Tummala (1):
block: Fix use-after-free issue accessing struct io_cq
Sam Lunt (1):
perf tools: Support Python 3.8+ in Makefile
Sasha Levin (1):
Revert "drm/dp_mst: Remove VCPI while disabling topology mgr"
Sean Christopherson (4):
KVM: nVMX: Properly handle userspace interrupt window request
KVM: x86: Allocate new rmap and large page tracking when moving memslot
KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support
KVM: x86: Gracefully handle __vmalloc() failure during VM allocation
Sean V Kelley (1):
PCI: Add boot interrupt quirk mechanism for Xeon chipsets
Segher Boessenkool (1):
powerpc: Add attributes for setjmp/longjmp
Shetty, Harshini X (EXT-Sony Mobile) (1):
dm verity fec: fix memory leak in verity_fec_dtr
Simon Gander (1):
hfsplus: fix crash and filesystem corruption when deleting files
Sreekanth Reddy (1):
scsi: mpt3sas: Fix kernel panic observed on soft HBA unplug
Sriharsha Allenki (1):
usb: gadget: f_fs: Fix use after free issue as part of queue failure
Steffen Maier (1):
scsi: zfcp: fix missing erp_lock in port recovery trigger for point-to-point
Stephan Gerhold (1):
media: venus: hfi_parser: Ignore HEVC encoding for V1
Subash Abhinov Kasiviswanathan (1):
net: qualcomm: rmnet: Allow configuration updates to existing devices
Sungbo Eo (2):
irqchip/versatile-fpga: Handle chained IRQs properly irqchip/versatile-fpga: Apply clear-mask earlier
Takashi Iwai (6):
ALSA: usb-audio: Add mixer workaround for TRX40 and co
ALSA: hda: Add driver blacklist
ALSA: hda: Fix potential access overflow in beep helper
ALSA: ice1724: Fix invalid access for enumerated ctl items
ALSA: pcm: oss: Fix regression by buffer overflow fix
ALSA: hda/realtek - Add quirk for MSI GL63
Thinh Nguyen (1):
usb: gadget: composite: Inform controller driver of self-powered
Thomas Gleixner (1):
x86/entry/32: Add missing ASM_CLAC to general_protection entry
Thomas Hebb (3):
ALSA: doc: Document PC Beep Hidden Register on Realtek ALC256
ALSA: hda/realtek - Set principled PC Beep configuration for ALC256
ALSA: hda/realtek - Remove now-unnecessary XPS 13 headphone noise fixups
Thomas Hellstrom (1):
x86: Don't let pgprot_modify() change the page encryption bit
Trond Myklebust (1):
NFS: Fix a page leak in nfs_destroy_unlinked_subrequests()
Vasily Averin (3):
tpm: tpm1_bios_measurements_next should increase position index
tpm: tpm2_bios_measurements_next should increase position index
pstore: pstore_ftrace_seq_next should increase position index
Vitaly Kuznetsov (1):
KVM: VMX: fix crash cleanup when KVM wasn't used
Wen Yang (1):
ipmi: fix hung processes in __get_guid()
Xu Wang (1):
qlcnic: Fix bad kzalloc null test
Yang Xu (1):
KEYS: reaching the keys quotas correctly
Yicong Yang (1):
PCI/ASPM: Clear the correct bits when enabling L1 substates
Yilu Lin (1):
CIFS: Fix bug which the return value by asynchronous read is error
YueHaibing (1):
powerpc/pseries: Drop pointless static qualifier in vpa_debugfs_init()
Yury Norov (1):
uapi: rename ext2_swab() to swab() and share globally in swab.h
Zheng Wei (1):
net: vxge: fix wrong __VA_ARGS__ usage
Zhenzhong Duan (1):
x86/speculation: Remove redundant arch_smt_update() invocation
Zhiqiang Liu (1):
block, bfq: fix use-after-free in bfq_idle_slice_timer_body
chenqiwu (1):
pstore/platform: fix potential mem leak if pstore_init_fs failed
이경택 (4):
ASoC: fix regwmask
ASoC: dapm: connect virtual mux with default value
ASoC: dpcm: allow start or stop during pause for backend
ASoC: topology: use name_prefix for new kcontrol
Greg KH
maintainerDocumentation/sound/hd-audio/index.rst +1 -0
@@ -8,3 +8,4 @@ HD-Audio models controls dp-mst + realtek-pc-beep
Documentation/sound/hd-audio/models.rst +0 -2
@@ -216,8 +216,6 @@ alc298-dell-aio ALC298 fixups on Dell AIO machines alc275-dell-xps ALC275 fixups on Dell XPS models -alc256-dell-xps13 - ALC256 fixups on Dell XPS13 lenovo-spk-noise Workaround for speaker noise on Lenovo machines lenovo-hotkey
Documentation/sound/hd-audio/realtek-pc-beep.rst new file +129 -0
129 lines not on this page · raw message
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 115 +SUBLEVEL = 116 EXTRAVERSION = NAME = "People's Front"
arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts +2 -2
@@ -318,8 +318,8 @@ }; ®_dldo3 { - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; regulator-name = "vdd-csi"; };
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +1 -2
@@ -70,8 +70,7 @@ }; pmu { - compatible = "arm,cortex-a53-pmu", - "arm,armv8-pmuv3"; + compatible = "arm,cortex-a53-pmu"; interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
arch/arm64/kernel/armv8_deprecated.c +1 -1
@@ -604,7 +604,7 @@ static struct undef_hook setend_hooks[] = { }, {/* Thumb mode */ - .instr_mask = 0x0000fff7, + .instr_mask = 0xfffffff7, .instr_val = 0x0000b650, .pstate_mask = (PSR_AA32_T_BIT | PSR_AA32_MODE_MASK), .pstate_val = (PSR_AA32_T_BIT | PSR_AA32_MODE_USR),
arch/mips/cavium-octeon/octeon-irq.c +3 -0
@@ -2199,6 +2199,9 @@ static int octeon_irq_cib_map(struct irq_domain *d, } cd =kzalloc (sizeof (*cd),GFP_KERNEL ); +if (!cd) +return -ENOMEM ; + cd->host_data = host_data; cd->bit = hw;
arch/mips/mm/tlbex.c +4 -1
@@ -1479,6 +1479,7 @@ static void build_r4000_tlb_refill_handler(void)static void setup_pw (void ) { +unsigned int pwctl;unsigned long pgd_i, pgd_w;#ifndef __PAGETABLE_PMD_FOLDEDunsigned long pmd_i, pmd_w;
@@ -1505,6 +1506,7 @@ static void setup_pw(void) pte_i =ilog2 (_PAGE_GLOBAL); pte_w =0 ; + pwctl =1 <<30 ;/* Set PWDirExt */ #ifndef __PAGETABLE_PMD_FOLDEDwrite_c0_pwfield (pgd_i <<24 | pmd_i <<12 | pt_i <<6 | pte_i);
@@ -1515,8 +1517,9 @@ static void setup_pw(void)#endif #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT -write_c0_pwctl (1 <<6 | psn); + pwctl |= (1 <<6 | psn);#endif +write_c0_pwctl (pwctl);write_c0_kpgd ((long )swapper_pg_dir); kscratch_used_mask |= (1 <<7 );/* KScratch6 is used for KPGD */ }
arch/powerpc/include/asm/book3s/64/hash-4k.h +6 -0
@@ -145,6 +145,12 @@ extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm,extern int hash__has_transparent_hugepage (void );#endif +static inline pmd_t hash__pmd_mkdevmap (pmd_t pmd) +{ +BUG (); +return pmd; +} +#endif /* !__ASSEMBLY__ */ #endif /* _ASM_POWERPC_BOOK3S_64_HASH_4K_H */
arch/powerpc/include/asm/book3s/64/hash-64k.h +7 -1
@@ -233,7 +233,7 @@ static inline void mark_hpte_slot_valid(unsigned char *hpte_slot_array,*/ static inline int hash__pmd_trans_huge (pmd_t pmd) { -return !!((pmd_val (pmd) & (_PAGE_PTE |H_PAGE_THP_HUGE )) == +return !!((pmd_val (pmd) & (_PAGE_PTE |H_PAGE_THP_HUGE | _PAGE_DEVMAP)) == (_PAGE_PTE |H_PAGE_THP_HUGE )); }
@@ -259,6 +259,12 @@ extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp);extern int hash__has_transparent_hugepage (void );#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ + +static inline pmd_t hash__pmd_mkdevmap (pmd_t pmd) +{ +return __pmd (pmd_val (pmd) | (_PAGE_PTE |H_PAGE_THP_HUGE | _PAGE_DEVMAP)); +} +#endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_BOOK3S_64_HASH_64K_H */
arch/powerpc/include/asm/book3s/64/pgtable.h +3 -1
@@ -1253,7 +1253,9 @@ extern void serialize_against_pte_lookup(struct mm_struct *mm);static inline pmd_t pmd_mkdevmap (pmd_t pmd) { -return __pmd (pmd_val (pmd) | (_PAGE_PTE | _PAGE_DEVMAP)); +if (radix_enabled ()) +return radix__pmd_mkdevmap (pmd); +return hash__pmd_mkdevmap (pmd); }static inline int pmd_devmap (pmd_t pmd)
arch/powerpc/include/asm/book3s/64/radix.h +5 -0
@@ -255,6 +255,11 @@ extern pmd_t radix__pmdp_huge_get_and_clear(struct mm_struct *mm,extern int radix__has_transparent_hugepage (void );#endif +static inline pmd_t radix__pmd_mkdevmap (pmd_t pmd) +{ +return __pmd (pmd_val (pmd) | (_PAGE_PTE | _PAGE_DEVMAP)); +} +extern int __meminit radix__vmemmap_create_mapping (unsigned long start,unsigned long page_size,unsigned long phys);
arch/powerpc/include/asm/drmem.h +2 -2
@@ -28,12 +28,12 @@ struct drmem_lmb_info {extern struct drmem_lmb_info *drmem_info;#define for_each_drmem_lmb_in_range (lmb, start, end) \ - for ((lmb) = (start); (lmb) <= (end); (lmb)++) + for ((lmb) = (start); (lmb) < (end); (lmb)++)#define for_each_drmem_lmb (lmb) \ for_each_drmem_lmb_in_range((lmb), \ &drmem_info->lmbs[0], \ - &drmem_info->lmbs[drmem_info->n_lmbs - 1]) + &drmem_info->lmbs[drmem_info->n_lmbs])/* * The of_drconf_cell_v1 struct defines the layout of the LMB data
arch/powerpc/include/asm/setjmp.h +4 -2
@@ -12,7 +12,9 @@#define JMP_BUF_LEN 23 -extern long setjmp (long *); -extern void longjmp (long *,long ); +typedef long jmp_buf [JMP_BUF_LEN ]; + +extern int setjmp (jmp_buf env) __attribute__((returns_twice)); +extern void longjmp (jmp_buf env,int val) __attribute__((noreturn));#endif /* _ASM_POWERPC_SETJMP_H */
arch/powerpc/kernel/Makefile +0 -3
@@ -5,9 +5,6 @@ CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"' -# Avoid clang warnings around longjmp/setjmp declarations -CFLAGS_crash.o += -ffreestanding - subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror ifdef CONFIG_PPC64
arch/powerpc/kernel/idle_book3s.S +23 -4
@@ -170,8 +170,11 @@ core_idle_lock_held: bne- core_idle_lock_held blr -/* Reuse an unused pt_regs slot for IAMR */ +/* Reuse some unused pt_regs slots for AMR/IAMR/UAMOR/UAMOR */ +#define PNV_POWERSAVE_AMR _TRAP #define PNV_POWERSAVE_IAMR _DAR +#define PNV_POWERSAVE_UAMOR _DSISR +#define PNV_POWERSAVE_AMOR RESULT /* * Pass requested state in r3:
@@ -205,8 +208,16 @@ pnv_powersave_common: SAVE_NVGPRS(r1) BEGIN_FTR_SECTION + mfspr r4, SPRN_AMR mfspr r5, SPRN_IAMR + mfspr r6, SPRN_UAMOR + std r4, PNV_POWERSAVE_AMR(r1) std r5, PNV_POWERSAVE_IAMR(r1) + std r6, PNV_POWERSAVE_UAMOR(r1) +BEGIN_FTR_SECTION_NESTED(42) + mfspr r7, SPRN_AMOR + std r7, PNV_POWERSAVE_AMOR(r1) +END_FTR_SECTION_NESTED_IFSET(CPU_FTR_HVMODE, 42) END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) mfcr r5
@@ -935,12 +946,20 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) REST_GPR(2, r1) BEGIN_FTR_SECTION - /* IAMR was saved in pnv_powersave_common() */ + /* These regs were saved in pnv_powersave_common() */ + ld r4, PNV_POWERSAVE_AMR(r1) ld r5, PNV_POWERSAVE_IAMR(r1) + ld r6, PNV_POWERSAVE_UAMOR(r1) + mtspr SPRN_AMR, r4 mtspr SPRN_IAMR, r5 + mtspr SPRN_UAMOR, r6 +BEGIN_FTR_SECTION_NESTED(42) + ld r7, PNV_POWERSAVE_AMOR(r1) + mtspr SPRN_AMOR, r7 +END_FTR_SECTION_NESTED_IFSET(CPU_FTR_HVMODE, 42) /* - * We don't need an isync here because the upcoming mtmsrd is - * execution synchronizing. + * We don't need an isync here after restoring IAMR because the upcoming + * mtmsrd is execution synchronizing. */ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
arch/powerpc/kernel/kprobes.c +3 -0
@@ -277,6 +277,9 @@ int kprobe_handler(struct pt_regs *regs)if (user_mode (regs))return 0 ; +if (!(regs->msr &MSR_IR ) || !(regs->msr &MSR_DR )) +return 0 ; +/* * We don't want to be preempted for the entire * duration of kprobe processing
arch/powerpc/kernel/signal_64.c +3 -1
@@ -477,8 +477,10 @@ static long restore_tm_sigcontexts(struct task_struct *tsk, err |=__get_user (tsk->thread.ckpt_regs.ccr, &sc->gp_regs[PT_CCR ]); +/* Don't allow userspace to set the trap value */ + regs->trap =0 ; +/* These regs are not checkpointed; they can go in 'regs'. */ - err |=__get_user (regs->trap, &sc->gp_regs[PT_TRAP ]); err |=__get_user (regs->dar, &sc->gp_regs[PT_DAR ]); err |=__get_user (regs->dsisr, &sc->gp_regs[PT_DSISR ]); err |=__get_user (regs->result, &sc->gp_regs[PT_RESULT ]);
arch/powerpc/mm/tlb_nohash_low.S +11 -1
@@ -402,7 +402,7 @@ _GLOBAL(set_context) * extern void loadcam_entry(unsigned int index) * * Load TLBCAM[index] entry in to the L2 CAM MMU - * Must preserve r7, r8, r9, and r10 + * Must preserve r7, r8, r9, r10 and r11 */ _GLOBAL(loadcam_entry) mflr r5
@@ -438,6 +438,10 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_BIG_PHYS) */ _GLOBAL(loadcam_multi) mflr r8 + /* Don't switch to AS=1 if already there */ + mfmsr r11 + andi. r11,r11,MSR_IS + bne 10f /* * Set up temporary TLB entry that is the same as what we're
@@ -463,6 +467,7 @@ _GLOBAL(loadcam_multi) mtmsr r6 isync +10: mr r9,r3 add r10,r3,r4 2: bl loadcam_entry
@@ -471,6 +476,10 @@ _GLOBAL(loadcam_multi) mr r3,r9 blt 2b + /* Don't return to AS=0 if we were in AS=1 at function start */ + andi. r11,r11,MSR_IS + bne 3f + /* Return to AS=0 and clear the temporary entry */ mfmsr r6 rlwinm. r6,r6,0,~(MSR_IS|MSR_DS)
@@ -486,6 +495,7 @@ _GLOBAL(loadcam_multi) tlbwe isync +3: mtlr r8 blr #endif
arch/powerpc/platforms/pseries/hotplug-memory.c +4 -4
@@ -227,7 +227,7 @@ static int get_lmb_range(u32 drc_index, int n_lmbs, struct drmem_lmb **end_lmb) {struct drmem_lmb *lmb, *start, *end; -struct drmem_lmb *last_lmb; +struct drmem_lmb *limit; start =NULL ;for_each_drmem_lmb (lmb) {
@@ -240,10 +240,10 @@ static int get_lmb_range(u32 drc_index, int n_lmbs,if (!start)return -EINVAL ; - end = &start[n_lmbs -1 ]; + end = &start[n_lmbs]; - last_lmb = &drmem_info->lmbs[drmem_info->n_lmbs -1 ]; -if (end > last_lmb) + limit = &drmem_info->lmbs[drmem_info->n_lmbs]; +if (end > limit)return -EINVAL ; *start_lmb = start;
arch/powerpc/platforms/pseries/lpar.c +1 -1
@@ -1056,7 +1056,7 @@ static int __init vpa_debugfs_init(void) {char name[16 ];long i; -static struct dentry *vpa_dir; +struct dentry *vpa_dir;if (!firmware_has_feature (FW_FEATURE_SPLPAR ))return 0 ;
arch/powerpc/sysdev/xive/common.c +3 -9
@@ -72,13 +72,6 @@ static u32 xive_ipi_irq;/* Xive state for each CPU */ static DEFINE_PER_CPU(struct xive_cpu *, xive_cpu); -/* -* A "disabled" interrupt should never fire, to catch problems -* we set its logical number to this -*/ -#define XIVE_BAD_IRQ 0x7fffffff -#define XIVE_MAX_IRQ (XIVE_BAD_IRQ - 1) -/* An invalid CPU target */ #define XIVE_INVALID_TARGET (-1)
@@ -1074,7 +1067,7 @@ static int xive_setup_cpu_ipi(unsigned int cpu) xc =per_cpu (xive_cpu, cpu);/* Check if we are already setup */ -if (xc->hw_ipi !=0 ) +if (xc->hw_ipi !=XIVE_BAD_IRQ )return 0 ;/* Grab an IPI from the backend, this will populate xc->hw_ipi */
@@ -1111,7 +1104,7 @@ static void xive_cleanup_cpu_ipi(unsigned int cpu, struct xive_cpu *xc)/* Disable the IPI and free the IRQ data */ /* Already cleaned up ? */ -if (xc->hw_ipi ==0 ) +if (xc->hw_ipi ==XIVE_BAD_IRQ )return ;/* Mask the IPI */
@@ -1267,6 +1260,7 @@ static int xive_prepare_cpu(unsigned int cpu)if (np) xc->chip_id =of_get_ibm_chip_id (np);of_node_put (np); + xc->hw_ipi =XIVE_BAD_IRQ ;per_cpu (xive_cpu, cpu) = xc; }
arch/powerpc/sysdev/xive/native.c +2 -2
@@ -311,7 +311,7 @@ static void xive_native_put_ipi(unsigned int cpu, struct xive_cpu *xc)s64 rc;/* Free the IPI */ -if (!xc->hw_ipi) +if (xc->hw_ipi ==XIVE_BAD_IRQ )return ;for (;;) { rc =opal_xive_free_irq (xc->hw_ipi);
@@ -319,7 +319,7 @@ static void xive_native_put_ipi(unsigned int cpu, struct xive_cpu *xc)msleep (OPAL_BUSY_DELAY_MS );continue ; } - xc->hw_ipi =0 ; + xc->hw_ipi =XIVE_BAD_IRQ ;break ; } }
arch/powerpc/sysdev/xive/spapr.c +2 -2
@@ -509,11 +509,11 @@ static int xive_spapr_get_ipi(unsigned int cpu, struct xive_cpu *xc)static void xive_spapr_put_ipi (unsigned int cpu,struct xive_cpu *xc) { -if (!xc->hw_ipi) +if (xc->hw_ipi ==XIVE_BAD_IRQ )return ;xive_irq_bitmap_free (xc->hw_ipi); - xc->hw_ipi =0 ; + xc->hw_ipi =XIVE_BAD_IRQ ; }#endif /* CONFIG_SMP */
arch/powerpc/sysdev/xive/xive-internal.h +7 -0
@@ -9,6 +9,13 @@ #ifndef __XIVE_INTERNAL_H #define __XIVE_INTERNAL_H +/* + * A "disabled" interrupt should never fire, to catch problems + * we set its logical number to this + */ +#define XIVE_BAD_IRQ 0x7fffffff +#define XIVE_MAX_IRQ (XIVE_BAD_IRQ - 1) + /* Each CPU carry one of these with various per-CPU state */ struct xive_cpu { #ifdef CONFIG_SMP
arch/powerpc/xmon/Makefile +0 -3
@@ -1,9 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 # Makefile for xmon -# Avoid clang warnings around longjmp/setjmp declarations -subdir-ccflags-y := -ffreestanding - subdir-ccflags-$(CONFIG_PPC_WERROR) += -Werror GCOV_PROFILE := n
arch/s390/kernel/diag.c +1 -1
@@ -79,7 +79,7 @@ static int show_diag_stat(struct seq_file *m, void *v)static void *show_diag_stat_start (struct seq_file *m,loff_t *pos) { -return *pos <= nr_cpu_ids ? (void *)((unsigned long ) *pos +1 ) :NULL ; +return *pos <=NR_DIAG_STAT ? (void *)((unsigned long ) *pos +1 ) :NULL ; }static void *show_diag_stat_next (struct seq_file *m,void *v,loff_t *pos)
arch/s390/kvm/vsie.c +1 -0
@@ -1024,6 +1024,7 @@ static int vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) scb_s->iprcc =PGM_ADDRESSING ; scb_s->pgmilc =4 ; scb_s->gpsw.addr =__rewind_psw (scb_s->gpsw,4 ); + rc =1 ; }return rc; }
arch/s390/mm/gmap.c +5 -1
@@ -787,14 +787,18 @@ static void gmap_call_notifier(struct gmap *gmap, unsigned long start,static inline unsigned long *gmap_table_walk (struct gmap *gmap,unsigned long gaddr,int level) { +const int asce_type = gmap->asce & _ASCE_TYPE_MASK;unsigned long *table;if ((gmap->asce & _ASCE_TYPE_MASK) +4 < (level *4 ))return NULL ;if (gmap_is_shadow (gmap) && gmap->removed)return NULL ; -if (gaddr & (-1UL << (31 + ((gmap->asce & _ASCE_TYPE_MASK) >>2 )*11 ))) + +if (asce_type != _ASCE_TYPE_REGION1 && + gaddr & (-1UL << (31 + (asce_type >>2 ) *11 )))return NULL ; + table = gmap->table;switch (gmap->asce & _ASCE_TYPE_MASK) {case _ASCE_TYPE_REGION1:
arch/x86/boot/compressed/head_32.S +1 -1
@@ -106,7 +106,7 @@ ENTRY(startup_32) notl %eax andl %eax, %ebx cmpl $LOAD_PHYSICAL_ADDR, %ebx - jge 1f + jae 1f #endif movl $LOAD_PHYSICAL_ADDR, %ebx 1:
arch/x86/boot/compressed/head_64.S +2 -2
@@ -106,7 +106,7 @@ ENTRY(startup_32) notl %eax andl %eax, %ebx cmpl $LOAD_PHYSICAL_ADDR, %ebx - jge 1f + jae 1f #endif movl $LOAD_PHYSICAL_ADDR, %ebx 1:
@@ -297,7 +297,7 @@ ENTRY(startup_64) notq %rax andq %rax, %rbp cmpq $LOAD_PHYSICAL_ADDR, %rbp - jge 1f + jae 1f #endif movq $LOAD_PHYSICAL_ADDR, %rbp 1:
arch/x86/entry/entry_32.S +1 -0
@@ -1489,6 +1489,7 @@ ENTRY(int3) END(int3) ENTRY(general_protection) + ASM_CLAC pushl $do_general_protection jmp common_exception END(general_protection)
arch/x86/include/asm/kvm_host.h +1 -1
@@ -1070,7 +1070,7 @@ struct kvm_x86_ops {bool (*xsaves_supported)(void );bool (*umip_emulated)(void ); -int (*check_nested_events)(struct kvm_vcpu *vcpu,bool external_intr); +int (*check_nested_events)(struct kvm_vcpu *vcpu);void (*request_immediate_exit)(struct kvm_vcpu *vcpu);void (*sched_in)(struct kvm_vcpu *kvm,int cpu);
arch/x86/include/asm/pgtable.h +5 -2
@@ -608,12 +608,15 @@ static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)return __pmd (val); } -/* mprotect needs to preserve PAT bits when updating vm_page_prot */ +/* +* mprotect needs to preserve PAT and encryption bits when updating +* vm_page_prot +*/ #define pgprot_modify pgprot_modifystatic inline pgprot_t pgprot_modify (pgprot_t oldprot,pgprot_t newprot) {pgprotval_t preservebits =pgprot_val (oldprot) & _PAGE_CHG_MASK; -pgprotval_t addbits =pgprot_val (newprot); +pgprotval_t addbits =pgprot_val (newprot) & ~_PAGE_CHG_MASK;return __pgprot (preservebits | addbits); }
arch/x86/include/asm/pgtable_types.h +1 -1
@@ -124,7 +124,7 @@*/ #define _PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \ _PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY | \ - _PAGE_SOFT_DIRTY | _PAGE_DEVMAP) + _PAGE_SOFT_DIRTY | _PAGE_DEVMAP | _PAGE_ENC)#define _HPAGE_CHG_MASK (_PAGE_CHG_MASK | _PAGE_PSE)/*
arch/x86/kernel/acpi/boot.c +1 -1
@@ -1752,7 +1752,7 @@ int __acpi_acquire_global_lock(unsigned int *lock) new = (((old & ~0x3 ) +2 ) + ((old >>1 ) &0x1 )); val =cmpxchg (lock, old, new); }while (unlikely (val != old)); -return (new <3 ) ?-1 :0 ; +return ((new &0x3 ) <3 ) ?-1 :0 ; }int __acpi_release_global_lock (unsigned int *lock)
arch/x86/kvm/svm.c +4 -0
@@ -1917,6 +1917,10 @@ static void __unregister_enc_region_locked(struct kvm *kvm,static struct kvm *svm_vm_alloc (void ) {struct kvm_svm *kvm_svm =vzalloc (sizeof (struct kvm_svm )); + +if (!kvm_svm) +return NULL ; +return &kvm_svm->kvm; }
arch/x86/kvm/vmx.c +38 -72
198 lines not on this page · raw message
arch/x86/kvm/x86.c +16 -5
@@ -7124,7 +7124,7 @@ static void update_cr8_intercept(struct kvm_vcpu *vcpu) kvm_x86_ops->update_cr8_intercept (vcpu, tpr, max_irr); } -static int inject_pending_event (struct kvm_vcpu *vcpu,bool req_int_win) +static int inject_pending_event (struct kvm_vcpu *vcpu) {int r;
@@ -7160,7 +7160,7 @@ static int inject_pending_event(struct kvm_vcpu *vcpu, bool req_int_win)* from L2 to L1. */ if (is_guest_mode (vcpu) && kvm_x86_ops->check_nested_events) { - r = kvm_x86_ops->check_nested_events (vcpu, req_int_win); + r = kvm_x86_ops->check_nested_events (vcpu);if (r !=0 )return r; }
@@ -7210,7 +7210,7 @@ static int inject_pending_event(struct kvm_vcpu *vcpu, bool req_int_win)* KVM_REQ_EVENT only on certain events and not unconditionally? */ if (is_guest_mode (vcpu) && kvm_x86_ops->check_nested_events) { - r = kvm_x86_ops->check_nested_events (vcpu, req_int_win); + r = kvm_x86_ops->check_nested_events (vcpu);if (r !=0 )return r; }
@@ -7683,7 +7683,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) goto out; } -if (inject_pending_event (vcpu, req_int_win) !=0 ) +if (inject_pending_event (vcpu) !=0 ) req_immediate_exit = true;else {/* Enable SMI/NMI/IRQ window open exits if needed.
@@ -7894,7 +7894,7 @@ static inline int vcpu_block(struct kvm *kvm, struct kvm_vcpu *vcpu)static inline bool kvm_vcpu_running (struct kvm_vcpu *vcpu) {if (is_guest_mode (vcpu) && kvm_x86_ops->check_nested_events) - kvm_x86_ops->check_nested_events (vcpu, false); + kvm_x86_ops->check_nested_events (vcpu);return (vcpu->arch.mp_state ==KVM_MP_STATE_RUNNABLE && !vcpu->arch.apf.halted);
@@ -9229,6 +9229,13 @@ int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot, {int i; +/* +* Clear out the previous array pointers for the KVM_MR_MOVE case. The +* old arrays will be freed by __kvm_set_memory_region() if installing +* the new memslot is successful. +*/ +memset (&slot->arch,0 ,sizeof (slot->arch)); +for (i =0 ; i <KVM_NR_PAGE_SIZES ; ++i) {struct kvm_lpage_info *linfo;unsigned long ugfn;
@@ -9303,6 +9310,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, const struct kvm_userspace_memory_region *mem, enum kvm_mr_change change) { + if (change == KVM_MR_MOVE) + return kvm_arch_create_memslot(kvm, memslot, + mem->memory_size >> PAGE_SHIFT); +return 0 ; }
arch/x86/platform/efi/efi_64.c +2 -2
@@ -833,7 +833,7 @@ efi_thunk_set_variable(efi_char16_t *name, efi_guid_t *vendor, phys_vendor =virt_to_phys_or_null (vnd); phys_data =virt_to_phys_or_null_size (data, data_size); -if (!phys_name || !phys_data) +if (!phys_name || (data && !phys_data)) status =EFI_INVALID_PARAMETER ;else status = efi_thunk(set_variable, phys_name, phys_vendor,
@@ -864,7 +864,7 @@ efi_thunk_set_variable_nonblocking(efi_char16_t *name, efi_guid_t *vendor, phys_vendor =virt_to_phys_or_null (vnd); phys_data =virt_to_phys_or_null_size (data, data_size); -if (!phys_name || !phys_data) +if (!phys_name || (data && !phys_data)) status =EFI_INVALID_PARAMETER ;else status = efi_thunk(set_variable, phys_name, phys_vendor,
block/bfq-iosched.c +12 -4
@@ -5156,20 +5156,28 @@ static struct bfq_queue *bfq_init_rq(struct request *rq)return bfqq; } -static void bfq_idle_slice_timer_body (struct bfq_queue *bfqq) +static void +bfq_idle_slice_timer_body (struct bfq_data *bfqd,struct bfq_queue *bfqq) { -struct bfq_data *bfqd = bfqq->bfqd;enum bfqq_expiration reason;unsigned long flags;spin_lock_irqsave (&bfqd->lock, flags); -bfq_clear_bfqq_wait_request (bfqq); +/* +* Considering that bfqq may be in race, we should firstly check +* whether bfqq is in service before doing something on it. If +* the bfqq in race is not in service, it has already been expired +* through __bfq_bfqq_expire func and its wait_request flags has +* been cleared in __bfq_bfqd_reset_in_service func. +*/ if (bfqq != bfqd->in_service_queue) {spin_unlock_irqrestore (&bfqd->lock, flags);return ; } +bfq_clear_bfqq_wait_request (bfqq); +if (bfq_bfqq_budget_timeout (bfqq))/* * Also here the queue can be safely expired
@@ -5214,7 +5222,7 @@ static enum hrtimer_restart bfq_idle_slice_timer(struct hrtimer *timer)* early. */ if (bfqq) -bfq_idle_slice_timer_body (bfqq); +bfq_idle_slice_timer_body (bfqd, bfqq);return HRTIMER_NORESTART ; }
block/blk-ioc.c +7 -0
@@ -87,6 +87,7 @@ static void ioc_destroy_icq(struct io_cq *icq)* making it impossible to determine icq_cache. Record it in @icq. */ icq->__rcu_icq_cache = et->icq_cache; + icq->flags |=ICQ_DESTROYED ;call_rcu (&icq->__rcu_head, icq_free_icq_rcu); }
@@ -230,15 +231,21 @@ static void __ioc_clear_queue(struct list_head *icq_list) {unsigned long flags; +rcu_read_lock ();while (!list_empty (icq_list)) {struct io_cq *icq =list_entry (icq_list->next, struct io_cq, q_node);struct io_context *ioc = icq->ioc;spin_lock_irqsave (&ioc->lock, flags); +if (icq->flags &ICQ_DESTROYED ) { +spin_unlock_irqrestore (&ioc->lock, flags); +continue ; + }ioc_destroy_icq (icq);spin_unlock_irqrestore (&ioc->lock, flags); } +rcu_read_unlock (); }/**
block/blk-settings.c +3 -0
@@ -717,6 +717,9 @@ void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,printk (KERN_NOTICE "%s: Warning: Device %s is misaligned\n" , top, bottom); } + + t->backing_dev_info->io_pages = + t->limits.max_sectors >> (PAGE_SHIFT -9 ); }EXPORT_SYMBOL (disk_stack_limits);
drivers/ata/libata-pmp.c +1 -0
@@ -764,6 +764,7 @@ static int sata_pmp_eh_recover_pmp(struct ata_port *ap,if (dev->flags &ATA_DFLAG_DETACH ) { detach =1 ; + rc = -ENODEV ; goto fail; }
drivers/ata/libata-scsi.c +3 -6
@@ -4570,22 +4570,19 @@ int ata_scsi_add_hosts(struct ata_host *host, struct scsi_host_template *sht)*/ shost->max_host_blocked =1 ; - rc =scsi_add_host_with_dma (ap->scsi_host, - &ap->tdev, ap->host->dev); + rc =scsi_add_host_with_dma (shost, &ap->tdev, ap->host->dev);if (rc) - goto err_add; + goto err_alloc; }return 0 ; - err_add: -scsi_host_put (host->ports[i]->scsi_host); err_alloc:while (--i >=0 ) {struct Scsi_Host *shost = host->ports[i]->scsi_host; +/* scsi_host_put() is in ata_devres_release() */ scsi_remove_host (shost); -scsi_host_put (shost); }return rc; }
drivers/base/firmware_loader/fallback.c +1 -1
@@ -572,7 +572,7 @@ static int fw_load_sysfs_fallback(struct fw_sysfs *fw_sysfs, } retval =fw_sysfs_wait_timeout (fw_priv, timeout); -if (retval <0 ) { +if (retval <0 && retval != -ENOENT ) {mutex_lock (&fw_lock);fw_load_abort (fw_sysfs);mutex_unlock (&fw_lock);
drivers/block/null_blk_main.c +9 -1
@@ -571,6 +571,7 @@ static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq)if (tag !=-1U ) { cmd = &nq->cmds[tag]; cmd->tag = tag; + cmd->error =BLK_STS_OK ; cmd->nq = nq;if (nq->dev->irqmode ==NULL_IRQ_TIMER ) { hrtimer_init(&cmd->timer, CLOCK_MONOTONIC,
@@ -1433,6 +1434,7 @@ static blk_status_t null_queue_rq(struct blk_mq_hw_ctx *hctx, cmd->timer.function = null_cmd_timer_expired; } cmd->rq = bd->rq; + cmd->error =BLK_STS_OK ; cmd->nq = nq;blk_mq_start_request (bd->rq);
@@ -1480,7 +1482,12 @@ static void cleanup_queues(struct nullb *nullb)static void null_del_dev (struct nullb *nullb) { -struct nullb_device *dev = nullb->dev; +struct nullb_device *dev; + +if (!nullb) +return ; + + dev = nullb->dev;ida_simple_remove (&nullb_indexes, nullb->index);
@@ -1844,6 +1851,7 @@ static int null_add_dev(struct nullb_device *dev)cleanup_queues (nullb); out_free_nullb:kfree (nullb); + dev->nullb =NULL ; out:return rv; }
drivers/block/xen-blkfront.c +12 -5
@@ -47,6 +47,7 @@#include <linux/bitmap.h> #include <linux/list.h> #include <linux/workqueue.h> +#include <linux/sched/mm.h> #include <xen/xen.h> #include <xen/xenbus.h>
@@ -2188,10 +2189,12 @@ static void blkfront_setup_discard(struct blkfront_info *info)static int blkfront_setup_indirect (struct blkfront_ring_info *rinfo) { -unsigned int psegs, grants; +unsigned int psegs, grants, memflags;int err, i;struct blkfront_info *info = rinfo->dev_info; + memflags =memalloc_noio_save (); +if (info->max_indirect_segments ==0 ) {if (!HAS_EXTRA_REQ ) grants =BLKIF_MAX_SEGMENTS_PER_REQUEST ;
@@ -2223,7 +2226,7 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)BUG_ON (!list_empty (&rinfo->indirect_pages));for (i =0 ; i < num; i++) { -struct page *indirect_page =alloc_page (GFP_NOIO ); +struct page *indirect_page =alloc_page (GFP_KERNEL );if (!indirect_page) goto out_of_memory;list_add (&indirect_page->lru, &rinfo->indirect_pages);
@@ -2234,15 +2237,15 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo) rinfo->shadow[i].grants_used =kvcalloc (grants,sizeof (rinfo->shadow[i].grants_used[0 ]), -GFP_NOIO ); +GFP_KERNEL ); rinfo->shadow[i].sg =kvcalloc (psegs,sizeof (rinfo->shadow[i].sg[0 ]), -GFP_NOIO ); +GFP_KERNEL );if (info->max_indirect_segments) rinfo->shadow[i].indirect_grants =kvcalloc (INDIRECT_GREFS (grants),sizeof (rinfo->shadow[i].indirect_grants[0 ]), -GFP_NOIO ); +GFP_KERNEL ); if ((rinfo->shadow[i].grants_used == NULL) || (rinfo->shadow[i].sg == NULL) || (info->max_indirect_segments &&
@@ -2251,6 +2254,7 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)sg_init_table (rinfo->shadow[i].sg, psegs); } +memalloc_noio_restore (memflags);return 0 ;
@@ -2270,6 +2274,9 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)__free_page (indirect_page); } } + +memalloc_noio_restore (memflags); +return -ENOMEM ; }
drivers/bus/sunxi-rsb.c +1 -1
@@ -345,7 +345,7 @@ static int sunxi_rsb_read(struct sunxi_rsb *rsb, u8 rtaddr, u8 addr,if (ret) goto unlock; - *buf =readl (rsb->regs +RSB_DATA ); + *buf =readl (rsb->regs +RSB_DATA ) &GENMASK (len *8 -1 ,0 ); unlock:mutex_unlock (&rsb->lock);
drivers/char/ipmi/ipmi_msghandler.c +2 -2
@@ -3134,8 +3134,8 @@ static void __get_guid(struct ipmi_smi *intf)if (rv)/* Send failed, no GUID available. */ bmc->dyn_guid_set =0 ; - -wait_event (intf->waitq, bmc->dyn_guid_set !=2 ); +else +wait_event (intf->waitq, bmc->dyn_guid_set !=2 );/* dyn_guid_set makes the guid data available. */ smp_rmb ();
drivers/char/tpm/eventlog/common.c +4 -8
@@ -104,11 +104,8 @@ static int tpm_read_log(struct tpm_chip *chip)* * If an event log is found then the securityfs files are setup to * export it to userspace, otherwise nothing is done. -* -* Returns -ENODEV if the firmware has no event log or securityfs is not -* supported. */ -int tpm_bios_log_setup (struct tpm_chip *chip) +void tpm_bios_log_setup (struct tpm_chip *chip) {const char *name =dev_name (&chip->dev);unsigned int cnt;
@@ -117,7 +114,7 @@ int tpm_bios_log_setup(struct tpm_chip *chip) rc =tpm_read_log (chip);if (rc <0 ) -return rc; +return ; log_version = rc; cnt =0 ;
@@ -163,13 +160,12 @@ int tpm_bios_log_setup(struct tpm_chip *chip) cnt++; } -return 0 ; +return ; err: - rc =PTR_ERR (chip->bios_dir[cnt]); chip->bios_dir[cnt] =NULL ;tpm_bios_log_teardown (chip); -return rc; +return ; }void tpm_bios_log_teardown (struct tpm_chip *chip)
drivers/char/tpm/eventlog/tpm1.c +1 -1
@@ -129,6 +129,7 @@ static void *tpm1_bios_measurements_next(struct seq_file *m, void *v,u32 converted_event_size;u32 converted_event_type; + (*pos)++; converted_event_size =do_endian_conversion (event->event_size); v +=sizeof (struct tcpa_event ) + converted_event_size;
@@ -146,7 +147,6 @@ static void *tpm1_bios_measurements_next(struct seq_file *m, void *v, ((v + sizeof(struct tcpa_event) + converted_event_size) >= limit))return NULL ; - (*pos)++;return v; }
drivers/char/tpm/eventlog/tpm2.c +1 -1
@@ -143,6 +143,7 @@ static void *tpm2_bios_measurements_next(struct seq_file *m, void *v,size_t event_size;void *marker; + (*pos)++; event_header = log->bios_event_log;if (v ==SEQ_START_TOKEN ) {
@@ -167,7 +168,6 @@ static void *tpm2_bios_measurements_next(struct seq_file *m, void *v,if (((v + event_size) >= limit) || (event_size ==0 ))return NULL ; - (*pos)++;return v; }
drivers/char/tpm/tpm-chip.c +1 -3
@@ -463,9 +463,7 @@ int tpm_chip_register(struct tpm_chip *chip)tpm_sysfs_add_device (chip); - rc =tpm_bios_log_setup (chip); -if (rc !=0 && rc != -ENODEV ) -return rc; +tpm_bios_log_setup (chip);tpm_add_ppi (chip);
drivers/char/tpm/tpm.h +1 -1
@@ -602,6 +602,6 @@ int tpm2_prepare_space(struct tpm_chip *chip, struct tpm_space *space, u32 cc,int tpm2_commit_space (struct tpm_chip *chip,struct tpm_space *space,u32 cc,u8 *buf,size_t *bufsiz); -int tpm_bios_log_setup (struct tpm_chip *chip); +void tpm_bios_log_setup (struct tpm_chip *chip);void tpm_bios_log_teardown (struct tpm_chip *chip);#endif
drivers/clk/ingenic/jz4770-cgu.c +3 -1
@@ -436,8 +436,10 @@ static void __init jz4770_cgu_init(struct device_node *np) cgu =ingenic_cgu_new (jz4770_cgu_clocks,ARRAY_SIZE (jz4770_cgu_clocks), np); -if (!cgu) +if (!cgu) {pr_err ("%s: failed to initialise CGU\n" , __func__); +return ; + } retval =ingenic_cgu_register_clocks (cgu);if (retval)
drivers/cpufreq/imx6q-cpufreq.c +3 -0
@@ -310,6 +310,9 @@ static int imx6ul_opp_check_speed_grading(struct device *dev)void __iomem *base; np =of_find_compatible_node (NULL ,NULL ,"fsl,imx6ul-ocotp" ); +if (!np) + np =of_find_compatible_node (NULL ,NULL , +"fsl,imx6ull-ocotp" );if (!np)return -ENOENT ;
drivers/cpufreq/powernv-cpufreq.c +6 -0
@@ -1081,6 +1081,12 @@ static int init_chip_info(void)static inline void clean_chip_info (void ) { +int i; + +/* flush any pending work items */ +if (chips) +for (i =0 ; i < nr_chips; i++) +cancel_work_sync (&chips[i].throttle);kfree (chips); }
drivers/crypto/caam/caamalg_desc.c +14 -2
@@ -1457,7 +1457,13 @@ EXPORT_SYMBOL(cnstr_shdsc_ablkcipher_givencap);*/ void cnstr_shdsc_xts_ablkcipher_encap (u32 *const desc,struct alginfo *cdata) { -__be64 sector_size =cpu_to_be64 (512 ); +/* +* Set sector size to a big value, practically disabling +* sector size segmentation in xts implementation. We cannot +* take full advantage of this HW feature with existing +* crypto API / dm-crypt SW architecture. +*/ +__be64 sector_size =cpu_to_be64 (BIT (15 ));u32 *key_jump_cmd;init_sh_desc (desc,HDR_SHARE_SERIAL |HDR_SAVECTX );
@@ -1509,7 +1515,13 @@ EXPORT_SYMBOL(cnstr_shdsc_xts_ablkcipher_encap);*/ void cnstr_shdsc_xts_ablkcipher_decap (u32 *const desc,struct alginfo *cdata) { -__be64 sector_size =cpu_to_be64 (512 ); +/* +* Set sector size to a big value, practically disabling +* sector size segmentation in xts implementation. We cannot +* take full advantage of this HW feature with existing +* crypto API / dm-crypt SW architecture. +*/ +__be64 sector_size =cpu_to_be64 (BIT (15 ));u32 *key_jump_cmd;init_sh_desc (desc,HDR_SHARE_SERIAL |HDR_SAVECTX );
drivers/crypto/ccree/cc_aead.c +41 -15
206 lines not on this page · raw message
drivers/crypto/ccree/cc_aead.h +1 -0
@@ -67,6 +67,7 @@ struct aead_req_ctx {u8 backup_mac[MAX_MAC_SIZE ];u8 *backup_iv;/*store iv for generated IV flow*/ u8 *backup_giv;/*store iv for rfc3686(ctr) flow*/ +u32 assoclen;/* internal assoclen */ dma_addr_t mac_buf_dma_addr;/* internal ICV DMA buffer */ /* buffer for internal ccm configurations */ dma_addr_t ccm_iv0_dma_addr;
drivers/crypto/ccree/cc_buffer_mgr.c +55 -53
253 lines not on this page · raw message
drivers/crypto/mxs-dcp.c +28 -30
83 lines not on this page · raw message
drivers/firmware/arm_sdei.c +15 -17
@@ -489,11 +489,6 @@ static int _sdei_event_unregister(struct sdei_event *event) {lockdep_assert_held (&sdei_events_lock); -spin_lock (&sdei_list_lock); - event->reregister = false; - event->reenable = false; -spin_unlock (&sdei_list_lock); -if (event->type ==SDEI_EVENT_TYPE_SHARED )return sdei_api_event_unregister (event->event_num);
@@ -516,6 +511,11 @@ int sdei_event_unregister(u32 event_num)break ; } +spin_lock (&sdei_list_lock); + event->reregister = false; + event->reenable = false; +spin_unlock (&sdei_list_lock); + err =_sdei_event_unregister (event);if (err)break ;
@@ -583,26 +583,15 @@ static int _sdei_event_register(struct sdei_event *event)lockdep_assert_held (&sdei_events_lock); -spin_lock (&sdei_list_lock); - event->reregister = true; -spin_unlock (&sdei_list_lock); -if (event->type ==SDEI_EVENT_TYPE_SHARED )return sdei_api_event_register (event->event_num, sdei_entry_point, event->registered,SDEI_EVENT_REGISTER_RM_ANY ,0 ); - err =sdei_do_cross_call (_local_event_register, event); -if (err) { -spin_lock (&sdei_list_lock); - event->reregister = false; - event->reenable = false; -spin_unlock (&sdei_list_lock); - +if (err)sdei_do_cross_call (_local_event_unregister, event); - }return err; }
@@ -630,8 +619,17 @@ int sdei_event_register(u32 event_num, sdei_event_callback *cb, void *arg)break ; } +spin_lock (&sdei_list_lock); + event->reregister = true; +spin_unlock (&sdei_list_lock); + err =_sdei_event_register (event);if (err) { +spin_lock (&sdei_list_lock); + event->reregister = false; + event->reenable = false; +spin_unlock (&sdei_list_lock); +sdei_event_destroy (event);pr_warn ("Failed to register event %u: %d\n" , event_num, err);
drivers/firmware/efi/efi.c +1 -1
@@ -572,7 +572,7 @@ int __init efi_config_parse_tables(void *config_tables, int count, int sz, } } -if (efi_enabled (EFI_MEMMAP )) +if (!IS_ENABLED (CONFIG_X86_32 ) &&efi_enabled (EFI_MEMMAP ))efi_memattr_init ();efi_tpm_eventlog_init ();
drivers/gpu/drm/drm_dp_mst_topology.c +6 -13
@@ -2115,9 +2115,9 @@ static bool drm_dp_get_vc_payload_bw(int dp_link_bw,int drm_dp_mst_topology_mgr_set_mst (struct drm_dp_mst_topology_mgr *mgr,bool mst_state) {int ret =0 ; -int i =0 ;struct drm_dp_mst_branch *mstb =NULL ; +mutex_lock (&mgr->payload_lock);mutex_lock (&mgr->lock);if (mst_state == mgr->mst_state) goto out_unlock;
@@ -2176,25 +2176,18 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms/* this can fail if the device is gone */ drm_dp_dpcd_writeb (mgr->aux,DP_MSTM_CTRL ,0 ); ret =0 ; -mutex_lock (&mgr->payload_lock); -memset (mgr->payloads,0 , mgr->max_payloads *sizeof (struct drm_dp_payload )); +memset (mgr->payloads,0 , + mgr->max_payloads *sizeof (mgr->payloads[0 ])); +memset (mgr->proposed_vcpis,0 , + mgr->max_payloads *sizeof (mgr->proposed_vcpis[0 ])); mgr->payload_mask =0 ;set_bit (0 , &mgr->payload_mask); -for (i =0 ; i < mgr->max_payloads; i++) { -struct drm_dp_vcpi *vcpi = mgr->proposed_vcpis[i]; - -if (vcpi) { - vcpi->vcpi =0 ; - vcpi->num_slots =0 ; - } - mgr->proposed_vcpis[i] =NULL ; - } mgr->vcpi_mask =0 ; -mutex_unlock (&mgr->payload_lock); } out_unlock:mutex_unlock (&mgr->lock); +mutex_unlock (&mgr->payload_lock);if (mstb)drm_dp_put_mst_branch_device (mstb);return ret;
drivers/gpu/drm/drm_pci.c +2 -23
@@ -46,8 +46,6 @@drm_dma_handle_t *drm_pci_alloc (struct drm_device * dev,size_t size,size_t align) {drm_dma_handle_t *dmah; -unsigned long addr; -size_t sz;/* pci_alloc_consistent only guarantees alignment to the smallest * PAGE_SIZE order which is greater than or equal to the requested size.
@@ -61,22 +59,13 @@ drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t alireturn NULL ; dmah->size = size; - dmah->vaddr =dma_alloc_coherent (&dev->pdev->dev, size, &dmah->busaddr,GFP_KERNEL | __GFP_COMP); + dmah->vaddr =dma_alloc_coherent (&dev->pdev->dev, size, &dmah->busaddr,GFP_KERNEL );if (dmah->vaddr ==NULL ) {kfree (dmah);return NULL ; } -memset (dmah->vaddr,0 , size); - -/* XXX - Is virt_to_page() legal for consistent mem? */ -/* Reserve */ -for (addr = (unsigned long )dmah->vaddr, sz = size; - sz >0 ; addr +=PAGE_SIZE , sz -=PAGE_SIZE ) { -SetPageReserved (virt_to_page ((void *)addr)); - } -return dmah; }
@@ -89,19 +78,9 @@ EXPORT_SYMBOL(drm_pci_alloc);*/ void __drm_legacy_pci_free (struct drm_device * dev,drm_dma_handle_t * dmah) { -unsigned long addr; -size_t sz; - -if (dmah->vaddr) { -/* XXX - Is virt_to_page() legal for consistent mem? */ -/* Unreserve */ -for (addr = (unsigned long )dmah->vaddr, sz = dmah->size; - sz >0 ; addr +=PAGE_SIZE , sz -=PAGE_SIZE ) { -ClearPageReserved (virt_to_page ((void *)addr)); - } +if (dmah->vaddr)dma_free_coherent (&dev->pdev->dev, dmah->size, dmah->vaddr, dmah->busaddr); - } }/**
drivers/gpu/drm/etnaviv/etnaviv_perfmon.c +85 -18
177 lines not on this page · raw message
drivers/i2c/busses/i2c-st.c +1 -0
@@ -437,6 +437,7 @@ static void st_i2c_wr_fill_tx_fifo(struct st_i2c_dev *i2c_dev)/** * st_i2c_rd_fill_tx_fifo() - Fill the Tx FIFO in read mode * @i2c_dev: Controller's private data +* @max: Maximum amount of data to fill into the Tx FIFO * * This functions fills the Tx FIFO with fixed pattern when * in read mode to trigger clock.
drivers/infiniband/hw/mlx5/main.c +2 -4
@@ -1070,12 +1070,10 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,if (MLX5_CAP_ETH (mdev, tunnel_stateless_gre)) resp.tunnel_offloads_caps |=MLX5_IB_TUNNELED_OFFLOADS_GRE ; -if (MLX5_CAP_GEN (mdev, flex_parser_protocols) & -MLX5_FLEX_PROTO_CW_MPLS_GRE ) +if (MLX5_CAP_ETH (mdev, tunnel_stateless_mpls_over_gre)) resp.tunnel_offloads_caps |=MLX5_IB_TUNNELED_OFFLOADS_MPLS_GRE ; -if (MLX5_CAP_GEN (mdev, flex_parser_protocols) & -MLX5_FLEX_PROTO_CW_MPLS_UDP ) +if (MLX5_CAP_ETH (mdev, tunnel_stateless_mpls_over_udp)) resp.tunnel_offloads_caps |=MLX5_IB_TUNNELED_OFFLOADS_MPLS_UDP ; }
drivers/input/serio/i8042-x86ia64io.h +11 -0
@@ -534,6 +534,17 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo LaVie Z"), }, }, + { + /* + * Acer Aspire 5738z + * Touchpad stops working in mux mode when dis- + re-enabled + * with the touchpad enable/disable toggle hotkey + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"), + }, + }, { } };
drivers/irqchip/irq-gic-v3-its.c +6 -0
@@ -2858,12 +2858,18 @@ static int its_vpe_set_irqchip_state(struct irq_data *d,return 0 ; } +static int its_vpe_retrigger (struct irq_data *d) +{ +return !its_vpe_set_irqchip_state (d,IRQCHIP_STATE_PENDING , true); +} +static struct irq_chip its_vpe_irq_chip = { .name ="GICv4-vpe" , .irq_mask = its_vpe_mask_irq, .irq_unmask = its_vpe_unmask_irq, .irq_eoi = irq_chip_eoi_parent, .irq_set_affinity = its_vpe_set_affinity, + .irq_retrigger = its_vpe_retrigger, .irq_set_irqchip_state = its_vpe_set_irqchip_state, .irq_set_vcpu_affinity = its_vpe_set_vcpu_affinity, };
drivers/irqchip/irq-versatile-fpga.c +13 -5
@@ -6,6 +6,7 @@#include <linux/irq.h> #include <linux/io.h> #include <linux/irqchip.h> +#include <linux/irqchip/chained_irq.h> #include <linux/irqchip/versatile-fpga.h> #include <linux/irqdomain.h> #include <linux/module.h>
@@ -68,12 +69,16 @@ static void fpga_irq_unmask(struct irq_data *d)static void fpga_irq_handle (struct irq_desc *desc) { +struct irq_chip *chip =irq_desc_get_chip (desc);struct fpga_irq_data *f =irq_desc_get_handler_data (desc); -u32 status =readl (f->base +IRQ_STATUS ); +u32 status; + +chained_irq_enter (chip, desc); + status =readl (f->base +IRQ_STATUS );if (status ==0 ) {do_bad_IRQ (desc); -return ; + goto out; } do {
@@ -82,6 +87,9 @@ static void fpga_irq_handle(struct irq_desc *desc) status &= ~(1 << irq);generic_handle_irq (irq_find_mapping (f->domain, irq)); }while (status); + +out: +chained_irq_exit (chip, desc); }/*
@@ -204,6 +212,9 @@ int __init fpga_irq_of_init(struct device_node *node,if (of_property_read_u32 (node,"valid-mask" , &valid_mask)) valid_mask =0 ; +writel (clear_mask, base +IRQ_ENABLE_CLEAR ); +writel (clear_mask, base +FIQ_ENABLE_CLEAR ); +/* Some chips are cascaded from a parent IRQ */ parent_irq =irq_of_parse_and_map (node,0 );if (!parent_irq) {
@@ -213,9 +224,6 @@ int __init fpga_irq_of_init(struct device_node *node,fpga_irq_init (base, node->name,0 , parent_irq, valid_mask, node); -writel (clear_mask, base +IRQ_ENABLE_CLEAR ); -writel (clear_mask, base +FIQ_ENABLE_CLEAR ); -/* * On Versatile AB/PB, some secondary interrupts have a direct * pass-thru to the primary controller for IRQs 20 and 22-31 which need
drivers/md/dm-verity-fec.c +1 -0
@@ -552,6 +552,7 @@ void verity_fec_dtr(struct dm_verity *v)mempool_exit (&f->rs_pool);mempool_exit (&f->prealloc_pool);mempool_exit (&f->extra_pool); +mempool_exit (&f->output_pool);kmem_cache_destroy (f->cache);if (f->data_bufio)
drivers/md/dm-writecache.c +5 -1
@@ -878,6 +878,7 @@ static int writecache_alloc_entries(struct dm_writecache *wc)struct wc_entry *e = &wc->entries[b]; e->index = b; e->write_in_progress = false; +cond_resched (); }return 0 ;
@@ -932,6 +933,7 @@ static void writecache_resume(struct dm_target *ti) e->original_sector =le64_to_cpu (wme.original_sector); e->seq_count = le64_to_cpu(wme.seq_count); } +cond_resched (); }#endif for (b =0 ; b < wc->n_blocks; b++) {
@@ -1764,8 +1766,10 @@ static int init_memory(struct dm_writecache *wc)pmem_assign (sb (wc)->n_blocks,cpu_to_le64 (wc->n_blocks));pmem_assign (sb (wc)->seq_count,cpu_to_le64 (0 )); -for (b =0 ; b < wc->n_blocks; b++) +for (b =0 ; b < wc->n_blocks; b++) {write_original_sector_seq_count (wc, &wc->entries[b],-1 ,-1 ); +cond_resched (); + }writecache_flush_all_metadata (wc);writecache_commit_flushed (wc, false);
drivers/md/dm-zoned-metadata.c +0 -1
@@ -1105,7 +1105,6 @@ static int dmz_init_zone(struct dmz_metadata *zmd, struct dm_zone *zone,if (blkz->type ==BLK_ZONE_TYPE_CONVENTIONAL ) {set_bit (DMZ_RND , &zone->flags); - zmd->nr_rnd_zones++; }else if (blkz->type ==BLK_ZONE_TYPE_SEQWRITE_REQ || blkz->type ==BLK_ZONE_TYPE_SEQWRITE_PREF ) {set_bit (DMZ_SEQ , &zone->flags);
drivers/md/md.c +1 -1
@@ -5874,7 +5874,7 @@ EXPORT_SYMBOL_GPL(md_stop_writes);static void mddev_detach (struct mddev *mddev) {md_bitmap_wait_behind_writes (mddev); -if (mddev->pers && mddev->pers->quiesce) { +if (mddev->pers && mddev->pers->quiesce && !mddev->suspended) { mddev->pers->quiesce (mddev,1 ); mddev->pers->quiesce (mddev,0 ); }
drivers/media/i2c/ov5695.c +31 -18
84 lines not on this page · raw message
drivers/media/i2c/video-i2c.c +1 -1
@@ -105,7 +105,7 @@ static int amg88xx_xfer(struct video_i2c_data *data, char *buf)return (ret ==2 ) ?0 : -EIO ; } -#if IS_ENABLED (CONFIG_HWMON ) +#if IS_REACHABLE (CONFIG_HWMON )static const u32 amg88xx_temp_config[] = { HWMON_T_INPUT,
drivers/media/platform/qcom/venus/hfi_parser.c +1 -0
@@ -181,6 +181,7 @@ static void parse_codecs(struct venus_core *core, void *data)if (IS_V1 (core)) { core->dec_codecs &= ~HFI_VIDEO_CODEC_HEVC ; core->dec_codecs &= ~HFI_VIDEO_CODEC_SPARK ; + core->enc_codecs &= ~HFI_VIDEO_CODEC_HEVC ; } }
drivers/media/platform/ti-vpe/cal.c +8 -8
@@ -541,16 +541,16 @@ static void enable_irqs(struct cal_ctx *ctx)static void disable_irqs (struct cal_ctx *ctx) { +u32 val; +/* Disable IRQ_WDMA_END 0/1 */ -reg_write_field (ctx->dev, -CAL_HL_IRQENABLE_CLR (2 ), -CAL_HL_IRQ_CLEAR , -CAL_HL_IRQ_MASK (ctx->csi2_port)); + val =0 ; +set_field (&val,CAL_HL_IRQ_CLEAR ,CAL_HL_IRQ_MASK (ctx->csi2_port)); +reg_write (ctx->dev,CAL_HL_IRQENABLE_CLR (2 ), val);/* Disable IRQ_WDMA_START 0/1 */ -reg_write_field (ctx->dev, -CAL_HL_IRQENABLE_CLR (3 ), -CAL_HL_IRQ_CLEAR , -CAL_HL_IRQ_MASK (ctx->csi2_port)); + val =0 ; +set_field (&val,CAL_HL_IRQ_CLEAR ,CAL_HL_IRQ_MASK (ctx->csi2_port)); +reg_write (ctx->dev,CAL_HL_IRQENABLE_CLR (3 ), val);/* Todo: Add VC_IRQ and CSI2_COMPLEXIO_IRQ handling */ reg_write (ctx->dev,CAL_CSI2_VC_IRQENABLE (1 ),0 ); }
drivers/mfd/dln2.c +7 -2
@@ -93,6 +93,11 @@ struct dln2_mod_rx_slots {spinlock_t lock; }; +enum dln2_endpoint { +DLN2_EP_OUT =0 , +DLN2_EP_IN =1 , +}; +struct dln2_dev {struct usb_device *usb_dev;struct usb_interface *interface;
@@ -736,10 +741,10 @@ static int dln2_probe(struct usb_interface *interface, hostif->desc.bNumEndpoints < 2)return -ENODEV ; - epin = &hostif->endpoint[0 ].desc; - epout = &hostif->endpoint[1 ].desc; + epout = &hostif->endpoint[DLN2_EP_OUT ].desc;if (!usb_endpoint_is_bulk_out (epout))return -ENODEV ; + epin = &hostif->endpoint[DLN2_EP_IN ].desc;if (!usb_endpoint_is_bulk_in (epin))return -ENODEV ;
drivers/misc/echo/echo.c +1 -1
@@ -381,7 +381,7 @@ int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx)*/ ec->factor =0 ; ec->shift =0 ; -if ((ec->nonupdate_dwell ==0 )) { +if (!ec->nonupdate_dwell) {int p, logp, shift;/* Determine:
drivers/mtd/nand/spi/core.c +7 -10
@@ -629,18 +629,18 @@ static int spinand_mtd_write(struct mtd_info *mtd, loff_t to,static bool spinand_isbad (struct nand_device *nand,const struct nand_pos *pos) {struct spinand_device *spinand =nand_to_spinand (nand); +u8 marker[2 ] = { };struct nand_page_io_req req = { .pos = *pos, - .ooblen =2 , + .ooblen =sizeof (marker), .ooboffs =0 , - .oobbuf.in = spinand->oobbuf, + .oobbuf.in = marker, .mode =MTD_OPS_RAW , }; -memset (spinand->oobbuf,0 ,2 );spinand_select_target (spinand, pos->target);spinand_read_page (spinand, &req, false); -if (spinand->oobbuf[0 ] !=0xff || spinand->oobbuf[1 ] !=0xff ) +if (marker[0 ] !=0xff || marker[1 ] !=0xff )return true;return false;
@@ -664,15 +664,15 @@ static int spinand_mtd_block_isbad(struct mtd_info *mtd, loff_t offs)static int spinand_markbad (struct nand_device *nand,const struct nand_pos *pos) {struct spinand_device *spinand =nand_to_spinand (nand); +u8 marker[2 ] = { };struct nand_page_io_req req = { .pos = *pos, .ooboffs =0 , - .ooblen =2 , - .oobbuf.out = spinand->oobbuf, + .ooblen =sizeof (marker), + .oobbuf.out = marker, };int ret; -/* Erase block before marking it bad. */ ret =spinand_select_target (spinand, pos->target);if (ret)return ret;
@@ -681,9 +681,6 @@ static int spinand_markbad(struct nand_device *nand, const struct nand_pos *pos)if (ret)return ret; -spinand_erase_op (spinand, pos); - -memset (spinand->oobbuf,0 ,2 );return spinand_write_page (spinand, &req); }
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c +3 -0
@@ -246,6 +246,9 @@ static int cxgb4_ptp_fineadjtime(struct adapter *adapter, s64 delta) FW_PTP_CMD_PORTID_V(0)); c.retval_len16 =cpu_to_be32 (FW_CMD_LEN16_V (sizeof (c) /16 )); c.u.ts.sc =FW_PTP_SC_ADJ_FTIME ; + c.u.ts.sign = (delta <0 ) ?1 :0 ; +if (delta <0 ) + delta = -delta; c.u.ts.tm =cpu_to_be64 (delta); err =t4_wr_mbox (adapter, adapter->mbox, &c,sizeof (c),NULL );
drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c +2 -1
@@ -398,7 +398,8 @@ static int cmdq_sync_cmd_direct_resp(struct hinic_cmdq *cmdq,spin_unlock_bh (&cmdq->cmdq_lock); -if (!wait_for_completion_timeout (&done,CMDQ_TIMEOUT )) { +if (!wait_for_completion_timeout (&done, +msecs_to_jiffies (CMDQ_TIMEOUT ))) {spin_lock_bh (&cmdq->cmdq_lock);if (cmdq->errcode[curr_prod_idx] == &errcode)
drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c +2 -49
63 lines not on this page · raw message
drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c +3 -2
@@ -52,7 +52,7 @@#define MSG_NOT_RESP 0xFFFF -#define MGMT_MSG_TIMEOUT 1000 +#define MGMT_MSG_TIMEOUT 5000#define mgmt_to_pfhwdev (pf_mgmt) \ container_of(pf_mgmt, struct hinic_pfhwdev, pf_to_mgmt)
@@ -276,7 +276,8 @@ static int msg_to_mgmt_sync(struct hinic_pf_to_mgmt *pf_to_mgmt, goto unlock_sync_msg; } -if (!wait_for_completion_timeout (recv_done,MGMT_MSG_TIMEOUT )) { +if (!wait_for_completion_timeout (recv_done, +msecs_to_jiffies (MGMT_MSG_TIMEOUT ))) {dev_err (&pdev->dev,"MGMT timeout, MSG id = %d\n" , msg_id); err = -ETIMEDOUT ; goto unlock_sync_msg;
drivers/net/ethernet/neterion/vxge/vxge-config.h +1 -1
@@ -2065,7 +2065,7 @@ vxge_hw_vpath_strip_fcs_check(struct __vxge_hw_device *hldev, u64 vpath_mask);if ((level >=VXGE_ERR &&VXGE_COMPONENT_LL &VXGE_DEBUG_ERR_MASK ) || \ (level >=VXGE_TRACE &&VXGE_COMPONENT_LL &VXGE_DEBUG_TRACE_MASK ))\if ((mask &VXGE_DEBUG_MASK ) == mask) \ -printk (fmt"\n" , __VA_ARGS__); \ + printk(fmt "\n", ##__VA_ARGS__); \ } while (0) #else#define vxge_debug_ll (level, mask, fmt, ...)
drivers/net/ethernet/neterion/vxge/vxge-main.h +7 -7
@@ -452,49 +452,49 @@ int vxge_fw_upgrade(struct vxgedev *vdev, char *fw_name, int override);#if (VXGE_DEBUG_LL_CONFIG &VXGE_DEBUG_MASK )#define vxge_debug_ll_config (level, fmt, ...) \ - vxge_debug_ll(level, VXGE_DEBUG_LL_CONFIG, fmt, __VA_ARGS__) + vxge_debug_ll(level, VXGE_DEBUG_LL_CONFIG, fmt, ##__VA_ARGS__)#else #define vxge_debug_ll_config (level, fmt, ...)#endif #if (VXGE_DEBUG_INIT &VXGE_DEBUG_MASK )#define vxge_debug_init (level, fmt, ...) \ - vxge_debug_ll(level, VXGE_DEBUG_INIT, fmt, __VA_ARGS__) + vxge_debug_ll(level, VXGE_DEBUG_INIT, fmt, ##__VA_ARGS__)#else #define vxge_debug_init (level, fmt, ...)#endif #if (VXGE_DEBUG_TX &VXGE_DEBUG_MASK )#define vxge_debug_tx (level, fmt, ...) \ - vxge_debug_ll(level, VXGE_DEBUG_TX, fmt, __VA_ARGS__) + vxge_debug_ll(level, VXGE_DEBUG_TX, fmt, ##__VA_ARGS__)#else #define vxge_debug_tx (level, fmt, ...)#endif #if (VXGE_DEBUG_RX &VXGE_DEBUG_MASK )#define vxge_debug_rx (level, fmt, ...) \ - vxge_debug_ll(level, VXGE_DEBUG_RX, fmt, __VA_ARGS__) + vxge_debug_ll(level, VXGE_DEBUG_RX, fmt, ##__VA_ARGS__)#else #define vxge_debug_rx (level, fmt, ...)#endif #if (VXGE_DEBUG_MEM &VXGE_DEBUG_MASK )#define vxge_debug_mem (level, fmt, ...) \ - vxge_debug_ll(level, VXGE_DEBUG_MEM, fmt, __VA_ARGS__) + vxge_debug_ll(level, VXGE_DEBUG_MEM, fmt, ##__VA_ARGS__)#else #define vxge_debug_mem (level, fmt, ...)#endif #if (VXGE_DEBUG_ENTRYEXIT &VXGE_DEBUG_MASK )#define vxge_debug_entryexit (level, fmt, ...) \ - vxge_debug_ll(level, VXGE_DEBUG_ENTRYEXIT, fmt, __VA_ARGS__) + vxge_debug_ll(level, VXGE_DEBUG_ENTRYEXIT, fmt, ##__VA_ARGS__)#else #define vxge_debug_entryexit (level, fmt, ...)#endif #if (VXGE_DEBUG_INTR &VXGE_DEBUG_MASK )#define vxge_debug_intr (level, fmt, ...) \ - vxge_debug_ll(level, VXGE_DEBUG_INTR, fmt, __VA_ARGS__) + vxge_debug_ll(level, VXGE_DEBUG_INTR, fmt, ##__VA_ARGS__)#else #define vxge_debug_intr (level, fmt, ...)#endif
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +1 -1
@@ -1720,7 +1720,7 @@ static int qlcnic_83xx_get_reset_instruction_template(struct qlcnic_adapter *p_d ahw->reset.seq_error =0 ; ahw->reset.buff =kzalloc (QLC_83XX_RESTART_TEMPLATE_SIZE ,GFP_KERNEL ); -if (p_dev->ahw->reset.buff ==NULL ) +if (ahw->reset.buff ==NULL )return -ENOMEM ; p_buff = p_dev->ahw->reset.buff;
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +19 -12
@@ -288,7 +288,6 @@ static int rmnet_changelink(struct net_device *dev, struct nlattr *tb[], {struct rmnet_priv *priv =netdev_priv (dev);struct net_device *real_dev; -struct rmnet_endpoint *ep;struct rmnet_port *port;u16 mux_id;
@@ -303,19 +302,27 @@ static int rmnet_changelink(struct net_device *dev, struct nlattr *tb[],if (data[IFLA_RMNET_MUX_ID ]) { mux_id =nla_get_u16 (data[IFLA_RMNET_MUX_ID ]); -if (rmnet_get_endpoint (port, mux_id)) { -NL_SET_ERR_MSG_MOD (extack,"MUX ID already exists" ); -return -EINVAL ; - } - ep =rmnet_get_endpoint (port, priv->mux_id); -if (!ep) -return -ENODEV ; -hlist_del_init_rcu (&ep->hlnode); -hlist_add_head_rcu (&ep->hlnode, &port->muxed_ep[mux_id]); +if (mux_id != priv->mux_id) { +struct rmnet_endpoint *ep; + + ep =rmnet_get_endpoint (port, priv->mux_id); +if (!ep) +return -ENODEV ; - ep->mux_id = mux_id; - priv->mux_id = mux_id; +if (rmnet_get_endpoint (port, mux_id)) { +NL_SET_ERR_MSG_MOD (extack, +"MUX ID already exists" ); +return -EINVAL ; + } + +hlist_del_init_rcu (&ep->hlnode); +hlist_add_head_rcu (&ep->hlnode, + &port->muxed_ep[mux_id]); + + ep->mux_id = mux_id; + priv->mux_id = mux_id; + } }if (data[IFLA_RMNET_FLAGS ]) {
drivers/net/wireless/ath/ath9k/main.c +3 -0
@@ -1457,6 +1457,9 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)ath_chanctx_set_channel (sc, ctx, &hw->conf.chandef); } +if (changed &IEEE80211_CONF_CHANGE_POWER ) +ath9k_set_txpower (sc,NULL ); +mutex_unlock (&sc->mutex);ath9k_ps_restore (sc);
drivers/nvme/host/core.c +11 -0
@@ -2200,6 +2200,17 @@ static struct nvme_subsystem *__nvme_find_get_subsystem(const char *subsysnqn)lockdep_assert_held (&nvme_subsystems_lock); +/* +* Fail matches for discovery subsystems. This results +* in each discovery controller bound to a unique subsystem. +* This avoids issues with validating controller values +* that can only be true when there is a single unique subsystem. +* There may be multiple and completely independent entities +* that provide discovery controllers. +*/ +if (!strcmp (subsysnqn,NVME_DISC_SUBSYS_NAME )) +return NULL ; +list_for_each_entry (subsys, &nvme_subsystems, entry) {if (strcmp (subsys->subnqn, subsysnqn))continue ;
drivers/nvme/host/fc.c +2 -12
@@ -342,8 +342,7 @@ nvme_fc_register_localport(struct nvme_fc_port_info *pinfo, !template->ls_req || !template->fcp_io || !template->ls_abort || !template->fcp_abort || !template->max_hw_queues || !template->max_sgl_segments || - !template->max_dif_sgl_segments || !template->dma_boundary || - !template->module) { + !template->max_dif_sgl_segments || !template->dma_boundary) { ret = -EINVAL ; goto out_reghost_failed; }
@@ -1987,7 +1986,6 @@ nvme_fc_ctrl_free(struct kref *ref) {struct nvme_fc_ctrl *ctrl = container_of(ref, struct nvme_fc_ctrl, ref); -struct nvme_fc_lport *lport = ctrl->lport;unsigned long flags;if (ctrl->ctrl.tagset) {
@@ -2013,7 +2011,6 @@ nvme_fc_ctrl_free(struct kref *ref)if (ctrl->ctrl.opts)nvmf_free_options (ctrl->ctrl.opts);kfree (ctrl); -module_put (lport->ops->module); } static void
@@ -3055,15 +3052,10 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts, goto out_fail; } -if (!try_module_get (lport->ops->module)) { - ret = -EUNATCH ; - goto out_free_ctrl; - } - idx =ida_simple_get (&nvme_fc_ctrl_cnt,0 ,0 ,GFP_KERNEL );if (idx <0 ) { ret = -ENOSPC ; - goto out_mod_put; + goto out_free_ctrl; } ctrl->ctrl.opts = opts;
@@ -3205,8 +3197,6 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts, out_free_ida:put_device (ctrl->dev);ida_simple_remove (&nvme_fc_ctrl_cnt, ctrl->cnum); -out_mod_put: -module_put (lport->ops->module); out_free_ctrl:kfree (ctrl); out_fail:
drivers/nvme/target/fcloop.c +0 -1
@@ -825,7 +825,6 @@ fcloop_targetport_delete(struct nvmet_fc_target_port *targetport)#define FCLOOP_DMABOUND_4G 0xFFFFFFFFstatic struct nvme_fc_port_template fctemplate = { - .module =THIS_MODULE , .localport_delete = fcloop_localport_delete, .remoteport_delete = fcloop_remoteport_delete, .create_queue = fcloop_create_queue,
drivers/pci/endpoint/pci-epc-mem.c +8 -2
@@ -79,6 +79,7 @@ int __pci_epc_mem_init(struct pci_epc *epc, phys_addr_t phys_base, size_t size, mem->page_size = page_size; mem->pages = pages; mem->size = size; +mutex_init (&mem->lock); epc->mem = mem;
@@ -122,7 +123,7 @@ void __iomem *pci_epc_mem_alloc_addr(struct pci_epc *epc, phys_addr_t *phys_addr, size_t size) { int pageno; -void __iomem *virt_addr; +void __iomem *virt_addr =NULL ;struct pci_epc_mem *mem = epc->mem;unsigned int page_shift =ilog2 (mem->page_size);int order;
@@ -130,15 +131,18 @@ void __iomem *pci_epc_mem_alloc_addr(struct pci_epc *epc, size =ALIGN (size, mem->page_size); order =pci_epc_mem_get_order (mem, size); +mutex_lock (&mem->lock); pageno =bitmap_find_free_region (mem->bitmap, mem->pages, order);if (pageno <0 ) -return NULL ; + goto ret; *phys_addr = mem->phys_base + (pageno << page_shift); virt_addr =ioremap (*phys_addr, size);if (!virt_addr)bitmap_release_region (mem->bitmap, pageno, order); +ret: +mutex_unlock (&mem->lock);return virt_addr; }EXPORT_SYMBOL_GPL (pci_epc_mem_alloc_addr);
@@ -164,7 +168,9 @@ void pci_epc_mem_free_addr(struct pci_epc *epc, phys_addr_t phys_addr, pageno = (phys_addr - mem->phys_base) >> page_shift; size =ALIGN (size, mem->page_size); order =pci_epc_mem_get_order (mem, size); +mutex_lock (&mem->lock);bitmap_release_region (mem->bitmap, pageno, order); +mutex_unlock (&mem->lock); }EXPORT_SYMBOL_GPL (pci_epc_mem_free_addr);
drivers/pci/hotplug/pciehp_hpc.c +7 -7
@@ -627,17 +627,15 @@ static irqreturn_t pciehp_ist(int irq, void *dev_id)if (atomic_fetch_and (~RERUN_ISR , &ctrl->pending_events) &RERUN_ISR ) { ret =pciehp_isr (irq, dev_id);enable_irq (irq); -if (ret !=IRQ_WAKE_THREAD ) { -pci_config_pm_runtime_put (pdev); -return ret; - } +if (ret !=IRQ_WAKE_THREAD ) + goto out; }synchronize_hardirq (irq); events =atomic_xchg (&ctrl->pending_events,0 );if (!events) { -pci_config_pm_runtime_put (pdev); -return IRQ_NONE ; + ret =IRQ_NONE ; + goto out; }/* Check Attention Button Pressed */
@@ -666,10 +664,12 @@ static irqreturn_t pciehp_ist(int irq, void *dev_id)pciehp_handle_presence_or_link_change (slot, events);up_read (&ctrl->reset_lock); + ret =IRQ_HANDLED ; +out:pci_config_pm_runtime_put (pdev); ctrl->ist_running = false;wake_up (&ctrl->requester); -return IRQ_HANDLED ; +return ret; }static int pciehp_poll (void *data)
drivers/pci/pcie/aspm.c +2 -2
@@ -747,9 +747,9 @@ static void pcie_config_aspm_l1ss(struct pcie_link_state *link, u32 state)/* Enable what we need to enable */ pci_clear_and_set_dword (parent, up_cap_ptr +PCI_L1SS_CTL1 , -PCI_L1SS_CAP_L1_PM_SS , val); +PCI_L1SS_CTL1_L1SS_MASK , val);pci_clear_and_set_dword (child, dw_cap_ptr +PCI_L1SS_CTL1 , -PCI_L1SS_CAP_L1_PM_SS , val); +PCI_L1SS_CTL1_L1SS_MASK , val); }static void pcie_config_aspm_dev (struct pci_dev *pdev,u32 val)
drivers/pci/quirks.c +73 -7
80 lines not on this page · raw message
sound/pci/hda/patch_realtek.c +10 -40
50 lines not on this page · raw message
tools/testing/selftests/vm/mlock2-tests.c +37 -196
233 lines not on this page · raw message
tools/testing/selftests/x86/ptrace_syscall.c +6 -2
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.