Linux 4.4.223
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.223 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/alpha/kernel/pci-sysfs.c | 4 arch/arm/boot/dts/Makefile | 1 arch/arm/boot/dts/kirkwood-ds112.dts | 2 arch/arm/boot/dts/kirkwood-lswvl.dts | 25 +- arch/arm/boot/dts/kirkwood-lswxl.dts | 31 +- arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts | 39 ++- arch/arm/boot/dts/r8a7740-armadillo800eva.dts | 2 arch/arm/mach-imx/Kconfig | 1 arch/arm/mach-omap2/omap_hwmod.c | 12 - arch/arm64/net/bpf_jit_comp.c | 1 arch/mips/boot/dts/brcm/bcm7435.dtsi | 2 arch/mips/cavium-octeon/octeon-irq.c | 2 arch/mips/cavium-octeon/setup.c | 14 + arch/mips/cavium-octeon/smp.c | 1 arch/mips/include/asm/elf.h | 1 arch/mips/include/asm/kexec.h | 1 arch/mips/include/asm/r4kcache.h | 4 arch/mips/include/asm/smp.h | 2 arch/mips/include/uapi/asm/auxvec.h | 2 arch/mips/kernel/bmips_vec.S | 9 arch/mips/kernel/branch.c | 18 - arch/mips/kernel/cps-vec.S | 1 arch/mips/kernel/cpu-probe.c | 5 arch/mips/kernel/crash.c | 18 + arch/mips/kernel/machine_kexec.c | 1 arch/mips/kernel/perf_event_mipsxx.c | 60 ++++- arch/mips/kernel/ptrace.c | 3 arch/mips/kernel/scall32-o32.S | 11 arch/mips/kernel/scall64-64.S | 3 arch/mips/kernel/scall64-n32.S | 14 - arch/mips/kernel/scall64-o32.S | 14 - arch/mips/kernel/setup.c | 2 arch/mips/kernel/smp-bmips.c | 1 arch/mips/kernel/smp-cps.c | 1 arch/mips/kernel/smp.c | 2 arch/mips/kvm/dyntrans.c | 2 arch/mips/loongson64/loongson-3/smp.c | 1 arch/mips/math-emu/cp1emu.c | 11 arch/mips/mm/c-r4k.c | 13 - arch/mips/mm/sc-rm7k.c | 2 arch/mips/mm/tlbex.c | 4 arch/mips/net/bpf_jit.c | 2 arch/powerpc/kernel/mce.c | 3 arch/powerpc/kernel/pci_of_scan.c | 12 - arch/powerpc/kernel/tm.S | 3 arch/powerpc/platforms/powernv/opal.c | 1 arch/x86/kernel/apic/x2apic_uv_x.c | 4 arch/x86/kernel/cpu/perf_event.c | 11 arch/x86/kernel/process_64.c | 2 block/blk-mq.c | 2 drivers/acpi/acpi_lpss.c | 8 drivers/ata/sata_dwc_460ex.c | 4 drivers/base/firmware_class.c | 8 drivers/base/isa.c | 2 drivers/bluetooth/btmrvl_sdio.c | 3 drivers/char/hw_random/exynos-rng.c | 9 drivers/clk/clk-gpio.c | 6 drivers/clk/clk-multiplier.c | 20 + drivers/clk/clk-xgene.c | 10 drivers/clk/imx/clk-pllv3.c | 8 drivers/clk/rockchip/clk-mmc-phase.c | 11 drivers/clk/st/clkgen-fsyn.c | 17 - drivers/clk/ti/dpll3xxx.c | 3 drivers/cpufreq/cpufreq.c | 5 drivers/dma/edma.c | 6 drivers/gpu/drm/qxl/qxl_cmd.c | 5 drivers/gpu/drm/qxl/qxl_display.c | 6 drivers/gpu/drm/qxl/qxl_draw.c | 13 - drivers/gpu/drm/qxl/qxl_ioctl.c | 5 drivers/hv/hv_utils_transport.c | 9 drivers/iio/adc/ad7793.c | 2 drivers/infiniband/hw/cxgb3/cxio_hal.c | 2 drivers/infiniband/hw/mlx4/ah.c | 1 drivers/infiniband/hw/mlx5/main.c | 2 drivers/infiniband/hw/mlx5/qp.c | 12 - drivers/input/keyboard/gpio_keys.c | 29 +- drivers/input/touchscreen/edt-ft5x06.c | 18 + drivers/iommu/dma-iommu.c | 11 drivers/md/dm.c | 2 drivers/media/pci/cx23885/cx23885-av.c | 2 drivers/media/platform/am437x/am437x-vpfe.c | 2 drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c | 65 +---- drivers/media/rc/rc-main.c | 2 drivers/memory/tegra/tegra124.c | 1 drivers/mfd/lp8788-irq.c | 2 drivers/misc/cxl/fault.c | 2 drivers/mmc/card/block.c | 4 drivers/mmc/core/debugfs.c | 2 drivers/mmc/core/sd.c | 20 + drivers/mmc/host/dw_mmc-rockchip.c | 64 +++++ drivers/mmc/host/moxart-mmc.c | 5 drivers/mmc/host/sdhci-pxav3.c | 22 + drivers/mmc/host/sdhci.c | 44 ++- drivers/mmc/host/sdhci.h | 4 drivers/mtd/nand/denali.c | 11 drivers/net/bonding/bond_3ad.c | 11 drivers/net/bonding/bond_alb.c | 7 drivers/net/bonding/bond_netlink.c | 3 drivers/net/dsa/mv88e6xxx.c | 9 drivers/net/ethernet/agere/et131x.c | 2 drivers/net/ethernet/broadcom/bcmsysport.c | 5 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 11 drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 7 drivers/net/ethernet/cadence/macb.c | 4 drivers/net/ethernet/chelsio/cxgb4/sge.c | 2 drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 2 drivers/net/ethernet/cirrus/ep93xx_eth.c | 4 drivers/net/ethernet/emulex/benet/be.h | 1 drivers/net/ethernet/emulex/benet/be_main.c | 4 drivers/net/ethernet/ethoc.c | 10 drivers/net/ethernet/hisilicon/hns/hnae.c | 8 drivers/net/ethernet/ibm/ehea/ehea_main.c | 9 drivers/net/ethernet/intel/i40e/i40e_hmc.c | 2 drivers/net/ethernet/marvell/mv643xx_eth.c | 4 drivers/net/ethernet/marvell/mvneta.c | 11 drivers/net/ethernet/marvell/mvpp2.c | 2 drivers/net/ethernet/mellanox/mlx4/catas.c | 11 drivers/net/ethernet/mellanox/mlx4/cmd.c | 9 drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 28 +- drivers/net/ethernet/mellanox/mlx4/en_port.c | 4 drivers/net/ethernet/mellanox/mlx4/fw.c | 5 drivers/net/ethernet/mellanox/mlx4/fw.h | 2 drivers/net/ethernet/mellanox/mlx4/intf.c | 3 drivers/net/ethernet/mellanox/mlx4/main.c | 39 ++- drivers/net/ethernet/mellanox/mlx4/mcg.c | 11 drivers/net/ethernet/mellanox/mlx4/mlx4.h | 5 drivers/net/ethernet/mellanox/mlx4/port.c | 13 - drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 10 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 117 +++++---- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 8 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 7 drivers/net/ethernet/mellanox/mlx5/core/health.c | 11 drivers/net/ethernet/mellanox/mlx5/core/main.c | 84 +++---- drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c | 26 +- drivers/net/ethernet/mellanox/mlx5/core/qp.c | 2 drivers/net/ethernet/mellanox/mlx5/core/wq.c | 15 - drivers/net/ethernet/mellanox/mlxsw/pci.c | 2 drivers/net/ethernet/mellanox/mlxsw/port.h | 2 drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 11 drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 4 drivers/net/ethernet/mellanox/mlxsw/switchx2.c | 3 drivers/net/ethernet/micrel/ks8842.c | 10 drivers/net/ethernet/moxa/moxart_ether.c | 4 drivers/net/ethernet/qlogic/qede/qede_main.c | 2 drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | 2 drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c | 8 drivers/net/ethernet/renesas/ravb_main.c | 2 drivers/net/ethernet/sfc/ef10.c | 3 drivers/net/ethernet/sfc/efx.c | 3 drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c | 12 - drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 11 drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c | 11 drivers/net/ethernet/ti/cpsw-phy-sel.c | 3 drivers/net/ethernet/ti/cpsw.c | 14 - drivers/net/ethernet/ti/davinci_emac.c | 7 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 4 drivers/net/geneve.c | 14 - drivers/net/macvlan.c | 10 drivers/net/macvtap.c | 2 drivers/net/phy/at803x.c | 6 drivers/net/phy/bcm7xxx.c | 2 drivers/net/phy/mdio-sun4i.c | 4 drivers/net/phy/micrel.c | 12 - drivers/net/phy/phy.c | 46 ++- drivers/net/phy/phy_device.c | 2 drivers/net/vrf.c | 177 +-------------- drivers/net/vxlan.c | 62 +++-- drivers/net/wimax/i2400m/usb-fw.c | 1 drivers/net/wireless/ath/ath10k/core.c | 2 drivers/net/wireless/ath/ath9k/htc_hst.c | 2 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 16 + drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c | 22 + drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | 2 drivers/net/wireless/iwlwifi/iwl-7000.c | 2 drivers/net/wireless/mwifiex/pcie.h | 9 drivers/net/wireless/mwifiex/sta_event.c | 10 drivers/net/wireless/mwifiex/wmm.c | 6 drivers/of/of_mdio.c | 5 drivers/pci/pci-sysfs.c | 7 drivers/pinctrl/bcm/pinctrl-bcm2835.c | 2 drivers/pinctrl/pinctrl-tegra.c | 2 drivers/power/bq27xxx_battery.c | 20 + drivers/power/ipaq_micro_battery.c | 2 drivers/power/test_power.c | 2 drivers/power/tps65217_charger.c | 6 drivers/regulator/core.c | 29 +- drivers/scsi/cxgbi/libcxgbi.c | 1 drivers/staging/media/lirc/lirc_imon.c | 2 drivers/staging/rtl8192u/r8192U_core.c | 4 drivers/target/target_core_configfs.c | 6 drivers/tty/serial/msm_serial.c | 99 +++++--- drivers/tty/serial/samsung.c | 4 drivers/usb/gadget/function/f_acm.c | 4 drivers/usb/gadget/udc/pch_udc.c | 30 -- drivers/usb/gadget/udc/udc-core.c | 2 drivers/vfio/pci/vfio_pci_config.c | 3 drivers/vfio/platform/reset/vfio_platform_amdxgbe.c | 2 fs/btrfs/disk-io.c | 2 fs/btrfs/extent-tree.c | 2 fs/cifs/connect.c | 2 fs/gfs2/file.c | 5 fs/nfs/nfs4proc.c | 4 include/asm-generic/preempt.h | 4 include/linux/cpufreq.h | 4 include/linux/ieee80211.h | 9 include/linux/mlx5/driver.h | 3 include/linux/mlx5/qp.h | 1 include/linux/mtd/nand.h | 4 include/linux/netdevice.h | 5 include/linux/sunrpc/msg_prot.h | 4 include/net/bonding.h | 7 include/net/ip6_fib.h | 2 include/net/ip6_route.h | 3 include/net/ip_fib.h | 3 include/net/route.h | 3 include/net/sch_generic.h | 5 include/net/sock.h | 18 + include/net/xfrm.h | 4 kernel/bpf/syscall.c | 4 kernel/sched/fair.c | 27 -- kernel/trace/bpf_trace.c | 4 lib/mpi/longlong.h | 34 +- net/batman-adv/main.c | 2 net/batman-adv/translation-table.c | 6 net/bridge/br_fdb.c | 52 ++-- net/bridge/br_input.c | 7 net/core/dev.c | 1 net/core/flow_dissector.c | 17 - net/core/rtnetlink.c | 1 net/core/skbuff.c | 10 net/core/sock.c | 7 net/dccp/ipv4.c | 2 net/dccp/ipv6.c | 2 net/dsa/slave.c | 7 net/ipv4/devinet.c | 12 - net/ipv4/fib_frontend.c | 3 net/ipv4/fib_semantics.c | 8 net/ipv4/fib_trie.c | 4 net/ipv4/fou.c | 6 net/ipv4/gre_offload.c | 8 net/ipv4/icmp.c | 4 net/ipv4/ip_gre.c | 46 ++- net/ipv4/ip_sockglue.c | 7 net/ipv4/netfilter/nft_dup_ipv4.c | 6 net/ipv4/route.c | 17 + net/ipv4/tcp_input.c | 5 net/ipv4/udp.c | 13 - net/ipv6/addrconf.c | 21 + net/ipv6/icmp.c | 5 net/ipv6/ip6_checksum.c | 7 net/ipv6/ip6_vti.c | 4 net/ipv6/ip6mr.c | 13 - net/ipv6/netfilter/nft_dup_ipv6.c | 6 net/ipv6/route.c | 75 ++++-- net/ipv6/tcp_ipv6.c | 7 net/ipv6/udp.c | 6 net/ipv6/xfrm6_input.c | 15 - net/ipv6/xfrm6_tunnel.c | 2 net/irda/af_irda.c | 5 net/l2tp/l2tp_core.c | 3 net/mac80211/ieee80211_i.h | 4 net/mac80211/mlme.c | 2 net/mac80211/offchannel.c | 5 net/mac80211/rx.c | 8 net/mac80211/status.c | 5 net/mac80211/tdls.c | 43 ++- net/mac80211/tx.c | 2 net/mac80211/vht.c | 30 ++ net/netfilter/nf_tables_api.c | 4 net/netfilter/nf_tables_core.c | 2 net/netfilter/nfnetlink.c | 6 net/netfilter/nft_dynset.c | 3 net/nfc/nci/core.c | 6 net/openvswitch/actions.c | 20 + net/rds/tcp.c | 2 net/rds/tcp_listen.c | 40 ++- net/sched/cls_bpf.c | 13 - net/sched/cls_flower.c | 28 +- net/sched/sch_drr.c | 4 net/sched/sch_fq.c | 32 +- net/sched/sch_fq_codel.c | 2 net/sched/sch_generic.c | 11 net/sched/sch_hfsc.c | 12 - net/sched/sch_prio.c | 4 net/sched/sch_qfq.c | 3 net/sched/sch_sfb.c | 3 net/sched/sch_tbf.c | 4 net/sctp/associola.c | 2 net/sctp/sm_make_chunk.c | 6 net/sctp/transport.c | 2 net/sunrpc/xprtrdma/backchannel.c | 22 - net/sunrpc/xprtrdma/transport.c | 3 net/sunrpc/xprtrdma/verbs.c | 41 +-- net/sunrpc/xprtrdma/xprt_rdma.h | 2 net/tipc/udp_media.c | 5 net/xfrm/xfrm_input.c | 14 - net/xfrm/xfrm_state.c | 1 net/xfrm/xfrm_user.c | 15 - scripts/config | 5 sound/pci/fm801.c | 71 +++--- sound/pci/hda/hda_intel.c | 9 sound/soc/fsl/fsl_ssi.c | 8 sound/soc/intel/atom/sst/sst_stream.c | 2 sound/soc/tegra/tegra_alc5632.c | 12 - tools/perf/util/perf_regs.c | 8 tools/testing/selftests/ipc/msgque.c | 2 309 files changed, 2004 insertions(+), 1278 deletions(-)
Adrian Hunter (1):
mmc: sdhci: Fix regression setting power on Trats2 board
Alex Vesker (1):
net/mlx4_core: Check device state before unregistering it
Alex Williamson (1):
vfio/pci: Allow VPD short read
Alexander Duyck (3):
GRE: Disable segmentation offloads w/ CSUM and we are encapsulated via FOU
ipv4: Fix memory leak in exception case for splitting tries
flow_dissector: Check for IP fragmentation even if not using IPv4 address
Alexei Starovoitov (1):
bpf, trace: check event type in bpf_perf_event_read
Alexey Kardashevskiy (1):
powerpc/pci/of: Parse unassigned resources
Alexey Khoroshilov (1):
lirc_imon: do not leave imon_probe() with mutex held
Alexey Kodanev (1):
net/xfrm_input: fix possible NULL deref of tunnel.ip6->parms.i_key
Amitkumar Karwar (2):
mwifiex: fix PCIe register information for 8997 chipset
mwifiex: add missing check for PCIe8997 chipset
Andrew Lunn (1):
net: ethernet: mvneta: Remove IFF_UNICAST_FLT which is not implemented
Andrew Rybchenko (1):
sfc: fix potential stack corruption from running past stat bitmask
Andy Shevchenko (6):
usb: gadged: pch_udc: get rid of redundant assignments
ALSA: fm801: explicitly free IRQ line
ALSA: fm801: propagate TUNER_ONLY bit when autodetected
ALSA: fm801: detect FM-only card earlier
Revert "ACPI / LPSS: allow to use specific PM domain during ->probe()"
ALSA: fm801: Initialize chip after IRQ handler is registered
Aneesh Kumar K.V (1):
cxl: Fix DAR check & use REGION_ID instead of opencoding
Arend Van Spriel (1):
brcmfmac: restore stopping netdev queue when bus clogs up
Arik Nemtsov (2):
mac80211: TDLS: always downgrade invalid chandefs
mac80211: TDLS: change BW calculation for WIDER_BW peers
Arnd Bergmann (3):
ARM: imx: select SRC for i.MX7
clk: st: avoid uninitialized variable use
mvpp2: use correct size for memset
Bart Van Assche (1):
target: Fix a memory leak in target_dev_lba_map_store()
Bartlomiej Zolnierkiewicz (1):
blk-mq: fix undefined behaviour in order_to_size()
Ben Hutchings (1):
staging: rtl8192u: Fix crash due to pointers being "confusing"
Bert Kenward (1):
sfc: clear napi_hash state when copying channels
Bjorn Helgaas (2):
PCI: Supply CPU physical address (not bus address) to iomem_is_exclusive() alpha/PCI: Call iomem_is_exclusive() for IORESOURCE_MEM, but not IORESOURCE_IO
Boris Brezillon (2):
mtd: nand: fix ONFI parameter page layout
mtd: nand: denali: add missing nand_release() call in denali_remove()
Brian Norris (2):
firmware: actually return NULL on failed request_firmware_nowait()
clk: gpio: handle error codes for of_clk_get_parent_count()
Charles Keepax (1):
regulator: core: Rely on regulator_dev_release to free constraints
Chin-Ran Lo (1):
Bluetooth: btmrvl: fix hung task warning dump
Chuanxiao Dong (1):
mmc: debugfs: correct wrong voltage value
Chuck Lever (6):
xprtrdma: Fix additional uses of spin_lock_irqsave(rb_lock)
xprtrdma: xprt_rdma_free() must not release backchannel reqs
xprtrdma: rpcrdma_bc_receive_call() should init rq_private_buf.len
NFS: Fix an LOCK/OPEN race when unlinking an open file
sunrpc: Update RPCBIND_MAXNETIDLEN
xprtrdma: Fix backchannel allocation of extra rpcrdma_reps
Cyrille Pitchen (1):
net: macb: replace macb_writel() call by queue_writel() to update queue ISR
Dan Carpenter (20):
MIPS: Octeon: Off by one in octeon_irq_gpio_map()
MIPS: RM7000: Double locking bug in rm7k_tc_disable() x86/apic/uv: Silence a shift wrapping warning
xprtrdma: checking for NULL instead of IS_ERR()
Btrfs: clean up an error code in btrfs_init_space_info()
ASoC: Intel: pass correct parameter in sst_alloc_stream_mrfld()
NFC: nci: memory leak in nci_core_conn_create()
mdio-sun4i: oops in error handling in probe
am437x-vpfe: fix an uninitialized variable bug
cx23885: uninitialized variable in cx23885_av_work_handler()
ath9k_htc: check for underflow in ath9k_htc_rx_msg()
VFIO: platform: reset: fix a warning message condition
net: moxa: fix an error code
mfd: lp8788-irq: Uninitialized variable in irq handler
ethernet: micrel: fix some error codes
power: ipaq-micro-battery: freeing the wrong variable
i40e: fix an uninitialized variable bug
qede: uninitialized variable in qede_start_xmit()
qlcnic: potential NULL dereference in qlcnic_83xx_get_minidump_template()
qlcnic: use the correct ring in qlcnic_83xx_process_rcv_ring_diag()
Daniel Borkmann (3):
bpf, mips: fix off-by-one in ctx offset allocation
cls_bpf: reset class and reuse major in da
bpf: fix map not being uncharged during map creation failure
Daniel Jurgens (3):
net/mlx4_core: Do not BUG_ON during reset when PCI is offline net/mlx4_core: Implement pci_resume callback net/mlx5: Fix wait_vital for VFs and remove fixed sleep
David Ahern (7):
net: ipv6: tcp reset, icmp need to consider L3 domain
net: vrf: Fix dev refcnt leak due to IPv6 prefix route
net: ipv6: Fix processing of RAs in presence of VRF
net: vrf: Fix dst reference counting
ipv4: Fix table id reference in fib_sync_down_addr
net: icmp6_send should use dst dev to determine L3 domain
net: icmp_route_lookup should use rt dev to determine L3 domain
David Rivshin (1):
drivers: net: cpsw: don't ignore phy-mode if phy-handle is used
Dmitry Torokhov (1):
Input: gpio-keys - fix check for disabling unsupported keys
Dong Aisheng (1):
clk: imx: clk-pllv3: fix incorrect handle of enet powerdown bit
Doug Berger (2):
net: bcmgenet: suppress warnings on failed Rx SKB allocations
net: systemport: suppress warnings on failed Rx SKB allocations
Douglas Anderson (2):
clk: rockchip: Revert "clk: rockchip: reset init state before mmc card initialization"
mmc: dw_mmc: rockchip: Set the drive phase properly
Douglas Miller (1):
be2net: Don't leak iomapped memory on removal.
Elad Raz (1):
mlxsw: switchx2: Fix ethernet port initialization
Eli Cohen (1):
net/mlx5e: Fix blue flame quota logic
Emmanuel Grumbach (1):
iwlwifi: set max firmware version of 7265 to 17
Eran Ben Elisha (2):
IB/mlx5: Fix FW version diaplay in sysfs net/mlx4_core: Fix potential corruption in counters database
Erez Shitrit (1):
net/mlx4_en: Process all completions in RX rings after port goes up
Eric Dumazet (13):
bonding: prevent out of bound accesses
tcp: do not set rtt_min to 1
net: get rid of an signed integer overflow in ip_idents_reserve()
ipv4: do not abuse GFP_ATOMIC in inet_netconf_notify_devconf()
ipv4: accept u8 in IP_TOS ancillary data
ipv6: do not abuse GFP_ATOMIC in inet6_netconf_notify_devconf()
pkt_sched: fq: use proper locking in fq_dump_stats()
mlx4: do not call napi_schedule() without care
net: bcmgenet: device stats are unsigned long
macvtap: segmented packet is consumed
fq_codel: return non zero qlen in class dumps
bnxt: add a missing rcu synchronization
qdisc: fix a module refcount leak in qdisc_create_dflt()
Felipe Balbi (1):
usb: gadget: udc: core: don't starve DMA resources
Florian Fainelli (14):
MIPS: BMIPS: Fix PRID_IMP_BMIPS5000 masking for BMIPS5200
MIPS: BMIPS: BMIPS5000 has I cache filing from D cache
MIPS: BMIPS: Clear MIPS_CACHE_ALIASES earlier
MIPS: BMIPS: local_r4k___flush_cache_all needs to blast S-cache
MIPS: BMIPS: Pretty print BMIPS5200 processor name
MIPS: BMIPS: Adjust mips-hpt-frequency for BCM7435
net: phy: Avoid polling PHY with PHY_IGNORE_INTERRUPTS
net: phy: Fix phy_mac_interrupt()
net: phy: bcm7xxx: Fix shadow mode 2 disabling
net: bcmsysport: Device stats are unsigned long
et131x: Fix logical vs bitwise check in et131x_tx_timeout()
bnxt_en: Remove locking around txr->dev_state
net: ethoc: Fix early error paths
net: ep93xx_eth: Do not crash unloading module
Franky Lin (1):
brcmfmac: add eth_type_trans back for PCIe full dongle
Geert Uytterhoeven (2):
ARM: dts: armadillo800eva Correct extal1 frequency to 24 MHz
ravb: Add missing free_irq() call to ravb_close()
Greg Kroah-Hartman (1):
Linux 4.4.223
H. Nikolaus Schaller (2):
power: bq27xxx: fix reading for bq27000 and bq27010
power: bq27xxx: fix register numbers of bq27500
Hadar Hen Zion (1):
net_sched: flower: Avoid dissection of unmasked keys
Hannes Frederic Sowa (2):
ipv4: fix checksum annotation in udp4_csum_init
ipv6: fix checksum annotation in udp6_csum_init
Hariprasad Shenai (1):
cxgb4/cxgb4vf: Fixes regression in perf when tx vlan offload is disabled
Heinrich Schuchardt (2):
ARM: dts: kirkwood: use unique machine name for ds112
ARM: dts: kirkwood: add kirkwood-ds112.dtb to Makefile
Herbert Xu (1):
macvlan: Fix potential use-after free for broadcasts
Hidehiro Kawai (1):
mips/panic: replace smp_send_stop() with kdump friendly version in panic path
Honggang Li (1):
RDMA/cxgb3: device driver frees DMA memory with different size
Iago Abal (1):
usb: gadget: pch_udc: reorder spin_[un]lock to avoid deadlock
Ido Schimmel (5):
mlxsw: pci: Correctly determine if descriptor queue is full
mlxsw: Treat local port 64 as valid
mlxsw: spectrum: Don't forward packets when STP state is DISABLED
mlxsw: spectrum: Disable learning according to STP state
mlxsw: spectrum: Indicate support for autonegotiation
Ilan Peer (1):
mac80211: Fix BW upgrade for TDLS peers
Ilan Tayari (1):
xfrm: Fix memory leak of aead algorithm name
Ivan Vecera (1):
bna: add missing per queue ethtool stat
Jaap Jan Meijer (1):
brcmfmac: add fallback for devices that do not report per-chain values
Jack Morgenstein (4):
net/mlx4_core: Fix the resource-type enum in res tracker to conform to FW spec net/mlx4_core: Do not access comm channel if it has not yet been initialized net/mlx4_en: Fix potential deadlock in port statistics flow
net/mlx4: Fix uninitialized fields in rule when adding promiscuous mode to device managed flow steering
Jaedon Shin (1):
MIPS: Fix macro typo
James Hogan (7):
MIPS: ptrace: Drop cp0_tcstatus from regoffset_table[]
MIPS: Fix HTW config on XPA kernel without LPA enabled
MIPS: perf: Fix I6400 event numbers
MIPS: KVM: Fix translation of MFC0 ErrCtl
MIPS: SMP: Update cpu_foreign_map on CPU disable
MIPS: c-r4k: Fix protected_writeback_scache_line for EVA
MIPS: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
Jan Beulich (1):
x86/LDT: Print the real LDT base address
Jere Leppänen (1):
sctp: Fix SHUTDOWN CTSN Ack in the peer restart case
Jeremie Francois (on alpha) (1):
scripts/config: allow colons in option strings for sed
Jiri Benc (4):
gre: do not assign header_ops in collect metadata mode
gre: build header correctly for collect metadata tunnels
gre: reject GUE and FOU in collect metadata mode
cxgbi: fix uninitialized flowi6
Jiri Kosina (1):
btrfs: cleaner_kthread() doesn't need explicit freeze
Jisheng Zhang (2):
mmc: sdhci: restore behavior when setting VDD via external regulator
net: mvneta: fix trivial cut-off issue in mvneta_ethtool_update_stats
Johan Hovold (9):
phy: fix device reference leaks
of_mdio: fix node leak in of_phy_register_fixed_link error path
net: dsa: slave: fix of-node leak and phy priority
net: ethernet: stmmac: dwmac-sti: fix probe error path
net: ethernet: stmmac: dwmac-rk: fix probe error path
net: ethernet: stmmac: dwmac-generic: fix probe error path
net: ethernet: ti: cpsw: fix device and of_node leaks
net: ethernet: ti: cpsw: fix secondary-emac probe error path
net: hns: fix device reference leaks
Johannes Berg (1):
mac80211: fix mgmt-tx abort cookie and leak
Johannes Weiner (1):
net: tcp_memcontrol: properly detect ancestor socket pressure
Junxiao Bi (1):
gfs2: fix flock panic issue
Kamal Heib (1):
net/mlx4_en: Fix the return value of a failure in VLAN VID add/kill
Krzysztof Kozlowski (2):
serial: samsung: Fix possible out of bounds access on non-DT platform
hwrng: exynos - Disable runtime PM on driver unbind
Krzysztof Opasiak (1):
usb: gadget: f_acm: Fix configfs attr name
Laura Abbott (1):
clk: xgene: Don't call __pa on ioremaped address
Laxman Dewangan (1):
pinctrl: tegra: Correctly check the supported configuration
Leon Romanovsky (1):
IB/mlx5: Fix RC transport send queue overhead computation
Liping Zhang (4):
netfilter: nf_tables: fix a wrong check to skip the inactive rules
netfilter: nft_dynset: fix panic if NFT_SET_HASH is not enabled
netfilter: nf_tables: destroy the set if fail to add transaction
netfilter: nft_dup: do not use sreg_dev if the user doesn't specify it
Liu Xiang (1):
power: bq27xxx_battery: Fix bq27541 AveragePower register address
Maciej S. Szmigiero (1):
ASoC: fsl_ssi: mark SACNT register volatile
Mahesh Salgaonkar (1):
powerpc/book3s: Fix MCE console messages for unrecoverable MCE.
Majd Dibbiny (2):
net/mlx5: Fix the size of modify QP mailbox net/mlx5: Fix masking of reserved bits in XRCD number
Mans Rullgard (1):
ata: sata_dwc_460ex: remove incorrect locking
Marcin Niestroj (1):
power_supply: tps65217-charger: Fix NULL deref during property export
Marcin Nowakowski (1):
MIPS: perf: Remove incorrect odd/even counter handling for I6400
Mark Tomlinson (1):
net: Don't delete routes in different VRFs
Matan Barak (1):
IB/mlx4: Initialize hop_limit when creating address handle
Mathias Krause (2):
xfrm_user: propagate sec ctx allocation errors
rtnl: reset calcit fptr in rtnl_unregister()
Matt Redfearn (1):
MIPS: scall: Handle seccomp filters which redirect syscalls
Matthew Finlay (1):
net/mlx5e: Copy all L2 headers into inline segment
Maxime Ripard (1):
clk: multiplier: Prevent the multiplier from under / over flowing
Michael Neuling (1):
powerpc/tm: Fix stack pointer corruption in __tm_recheckpoint()
Mohamad Haj Yahia (4):
net/mlx5: Avoid calling sleeping function by the health poll thread net/mlx5: Fix potential deadlock in command mode change net/mlx5: Add timeout handle to commands with callback net/mlx5: Fix pci error recovery flow
Moshe Shemesh (1):
net/mlx4_core: Fix QUERY FUNC CAP flags
Nathan Chancellor (1):
lib/mpi: Fix building for powerpc with clang
Naveen N. Rao (1):
perf tools: Fix perf regs mask generation
Neil Armstrong (2):
net: ethernet: davinci_emac: Fix devioctl while in fixed link
net: ethernet: davinci_emac: Fix platform_data overwrite
Nicholas Mc Guire (1):
mmc: moxart: fix wait_for_completion_interruptible_timeout return variable type
Nicolas Dichtel (6):
ovs/gre,geneve: fix error path when creating an iface
ipv6: add missing netconf notif when 'all' is updated
vti6: fix input path
ovs/gre: fix rtnl notifications on iface deletion ovs/geneve: fix rtnl notifications on iface deletion ovs/vxlan: fix rtnl notifications on iface deletion
Nicolas Schichan (1):
net: mv643xx_eth: fix packet corruption with TSO and tiny unaligned packets.
Nikolay Aleksandrov (1):
net: bridge: don't increment tx_dropped in br_do_proxy_arp
Noa Osherovich (1):
net/mlx5: Avoid passing dma address 0 to firmware
Nogah Frankel (1):
mlxsw: spectrum: Don't count internal TX header bytes to stats
Olaf Hering (1):
Drivers: hv: utils: use memdup_user in hvt_op_write
Olof Johansson (1):
mmc: block: return error on failed mmc_blk_get()
Or Gerlitz (1):
net/mlx5: Make command timeout way shorter
Pablo Neira (1):
udp: restore UDPlite many-cast delivery
Pablo Neira Ayuso (1):
netfilter: nfnetlink: use original skbuff when acking batches
Paul Burton (3):
MIPS: smp-cps: Stop printing EJTAG exceptions to UART
MIPS: math-emu: Fix BC1{EQ,NE}Z emulation
MIPS: Fix BC1{EQ,NE}Z return offset calculation
Peter Griffin (1):
c8sectpfe: Rework firmware loading mechanism
Peter Ujfalusi (1):
dmaengine: edma: Add probe callback to edma_tptc_driver
Peter Zijlstra (2):
sched/fair: Fix calc_cfs_shares() fixed point arithmetics width confusion sched/preempt: Fix preempt_count manipulations
Petri Gynther (1):
net: bcmgenet: fix skb_len in bcmgenet_xmit_single()
Philipp Zabel (1):
Input: edt-ft5x06 - fix setting gain, offset, and threshold via device tree
Raja Mani (1):
ath10k: free cached fw bin contents when get board id fails
Rana Shahout (1):
net/mlx5e: Fix MLX5E_100BASE_T define
Robin Murphy (1):
iommu/dma: Respect IOMMU aperture when allocating
Roger Shimizu (6):
ARM: dts: kirkwood: gpio pin fixes for linkstation ls-wxl/wsxl
ARM: dts: kirkwood: gpio pin fixes for linkstation ls-wvl/vl
ARM: dts: kirkwood: gpio-leds fixes for linkstation ls-wxl/wsxl
ARM: dts: kirkwood: gpio-leds fixes for linkstation ls-wvl/vl
ARM: dts: orion5x: gpio pin fixes for linkstation lswtgl
ARM: dts: orion5x: fix the missing mtd flash on linkstation lswtgl
Ronnie Sahlberg (1):
cifs: protect updating server->dstaddr with a spinlock
Roosen Henri (1):
phy: micrel: Fix finding PHY properties in MAC node for KSZ9031.
Russell King (2):
mmc: sd: limit SD card power limit according to cards capabilities
rc: allow rc modules to be loaded if rc-main is not a module
Sabrina Dubroca (1):
l2tp: fix use-after-free during module unload
Sasha Levin (1):
power: test_power: correctly handle empty writes
Sergei Shtylyov (1):
at803x: fix reset handling
Shmulik Ladkani (1):
net: skbuff: Remove errornous length validation in skb_vlan_pop()
Simon Horman (1):
openvswitch: update checksum in {push,pop}_mpls
Simon Wunderlich (1):
batman-adv: replace WARN with rate limited output on non-existing VLAN
Sowmini Varadhan (1):
RDS:TCP: Synchronize rds_tcp_accept_one with rds_send_xmit when resetting t_sock
Stefan Wahren (1):
pinctrl: bcm2835: Fix memory leak in error path
Stephane Eranian (1):
perf/x86: Fix filter_events() bug with event mappings
Stephen Boyd (1):
tty: serial: msm: Support more bauds
Sudip Mukherjee (1):
ASoC: tegra_alc5632: check return value
Suman Anna (1):
ARM: OMAP2+: hwmod: fix _idle() hwmod state sanity check sequence
Sven Eckelmann (1):
batman-adv: Fix lockdep annotation of batadv_tlv_container_remove
Tahsin Erdogan (1):
dm: fix second blk_delay_queue() parameter to be in msec units not jiffies
Takashi Iwai (1):
ALSA: hda: Match both PCI ID and SSID for driver blacklist
Tariq Toukan (1):
net/mlx4_core: Fix access to uninitialized index
Tero Kristo (1):
clk: ti: omap3+: dpll: use non-locking version of clk_get_rate
Thomas Pedersen (1):
mac80211: add ieee80211_is_any_nullfunc()
Tobias Jungel (1):
bonding: fix length of actor system
Toshiaki Makita (1):
bridge: Fix problems around fdb entries pointing to the bridge device
Tyler Hicks (1):
selftests/ipc: Fix test failure seen after initial test run
Vasily Averin (2):
drm/qxl: qxl_release use after free drm/qxl: qxl_release leak in qxl_draw_dirty_fb()
Vegard Nossum (1):
xfrm: fix crash in XFRM_MSG_GETSA netlink handler
Vince Hsu (1):
memory/tegra: Add number of TLB lines for Tegra124
Viresh Kumar (1):
Revert "cpufreq: Drop rwsem lock around CPUFREQ_GOV_POLICY_EXIT"
Vivien Didelot (3):
net: dsa: mv88e6xxx: unlock DSA and CPU ports
net: dsa: mv88e6xxx: enable SA learning on DSA ports
net: dsa: mv88e6xxx: fix port VLAN maps
WANG Cong (7):
net_sched: keep backlog updated with qlen
sch_drr: update backlog as well
sch_hfsc: always keep backlog updated
sch_prio: update backlog as well
sch_qfq: keep backlog updated with qlen
sch_sfb: keep backlog updated with qlen
sch_tbf: update backlog as well
Wang Sheng-Hui (1):
net/mlx5: use mlx5_buf_alloc_node instead of mlx5_buf_alloc in mlx5_wq_ll_create
Wei Yongjun (3):
net: macb: add missing free_netdev() on error in macb_probe()
tipc: fix the error handling in tipc_udp_enable()
net: axienet: Fix return value check in axienet_probe()
Willem de Bruijn (1):
dccp: limit sk_filter trim to payload
William Breathitt Gray (1):
isa: Call isa_bus_init before dependent ISA bus drivers register
Xin Long (1):
sctp: fix the transports round robin issue when init is retransmitted
Xiyu Yang (1):
wimax/i2400m: Fix potential urb refcnt leak
Yotam Gigi (2):
mlxsw: spectrum: Fix misuse of hard_header_len
mlxsw: switchx2: Fix misuse of hard_header_len
YueHaibing (1):
iio:ad7797: Use correct attribute_group
Zi Shen Lim (1):
arm64: bpf: jit JMP_JSET_{X,K}chunfan chen (1):
mwifiex: fix IBSS data path issue.
[email protected] (1):
irda: Free skb on irda_accept error path.
pravin shelar (1):
net: vxlan: lwt: Fix vxlan local traffic.
[email protected] (1):
net: ehea: avoid null pointer dereference
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 222 +SUBLEVEL = 223 EXTRAVERSION = NAME = Blurry Fish Butt
arch/alpha/kernel/pci-sysfs.c +2 -2
@@ -77,10 +77,10 @@ static int pci_mmap_resource(struct kobject *kobj,if (i >=PCI_ROM_RESOURCE )return -ENODEV ; -if (!__pci_mmap_fits (pdev, i, vma, sparse)) +if (res->flags &IORESOURCE_MEM &&iomem_is_exclusive (res->start))return -EINVAL ; -if (iomem_is_exclusive (res->start)) +if (!__pci_mmap_fits (pdev, i, vma, sparse))return -EINVAL ;pcibios_resource_to_bus (pdev->bus, &bar, res);
arch/arm/boot/dts/Makefile +1 -0
@@ -166,6 +166,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \ kirkwood-ds109.dtb \ kirkwood-ds110jv10.dtb \ kirkwood-ds111.dtb \ + kirkwood-ds112.dtb \ kirkwood-ds209.dtb \ kirkwood-ds210.dtb \ kirkwood-ds212.dtb \
arch/arm/boot/dts/kirkwood-ds112.dts +1 -1
@@ -14,7 +14,7 @@ #include "kirkwood-synology.dtsi" / { - model = "Synology DS111"; + model = "Synology DS112"; compatible = "synology,ds111", "marvell,kirkwood"; memory {
arch/arm/boot/dts/kirkwood-lswvl.dts +13 -12
@@ -1,7 +1,8 @@ /* * Device Tree file for Buffalo Linkstation LS-WVL/VL * - * Copyright (C) 2015, [email protected] + * Copyright (C) 2015, 2016 + * Roger Shimizu <[email protected]> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License
@@ -156,21 +157,21 @@ button@1 { label = "Function Button"; linux,code = <KEY_OPTION>; - gpios = <&gpio0 45 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 13 GPIO_ACTIVE_LOW>; }; button@2 { label = "Power-on Switch"; linux,code = <KEY_RESERVED>; linux,input-type = <5>; - gpios = <&gpio0 46 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; }; button@3 { label = "Power-auto Switch"; linux,code = <KEY_ESC>; linux,input-type = <5>; - gpios = <&gpio0 47 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; }; };
@@ -185,38 +186,38 @@ led@1 { label = "lswvl:red:alarm"; - gpios = <&gpio0 36 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; }; led@2 { label = "lswvl:red:func"; - gpios = <&gpio0 37 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; }; led@3 { label = "lswvl:amber:info"; - gpios = <&gpio0 38 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>; }; led@4 { label = "lswvl:blue:func"; - gpios = <&gpio0 39 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; }; led@5 { label = "lswvl:blue:power"; - gpios = <&gpio0 40 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; default-state = "keep"; }; led@6 { label = "lswvl:red:hdderr0"; - gpios = <&gpio0 34 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; }; led@7 { label = "lswvl:red:hdderr1"; - gpios = <&gpio0 35 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>; }; };
@@ -233,7 +234,7 @@ 3250 1 5000 0>; - alarm-gpios = <&gpio0 43 GPIO_ACTIVE_HIGH>; + alarm-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; }; restart_poweroff {
arch/arm/boot/dts/kirkwood-lswxl.dts +16 -15
@@ -1,7 +1,8 @@ /* * Device Tree file for Buffalo Linkstation LS-WXL/WSXL * - * Copyright (C) 2015, [email protected] + * Copyright (C) 2015, 2016 + * Roger Shimizu <[email protected]> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License
@@ -156,21 +157,21 @@ button@1 { label = "Function Button"; linux,code = <KEY_OPTION>; - gpios = <&gpio1 41 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; }; button@2 { label = "Power-on Switch"; linux,code = <KEY_RESERVED>; linux,input-type = <5>; - gpios = <&gpio1 42 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; }; button@3 { label = "Power-auto Switch"; linux,code = <KEY_ESC>; linux,input-type = <5>; - gpios = <&gpio1 43 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 11 GPIO_ACTIVE_LOW>; }; };
@@ -185,12 +186,12 @@ led@1 { label = "lswxl:blue:func"; - gpios = <&gpio1 36 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; }; led@2 { label = "lswxl:red:alarm"; - gpios = <&gpio1 49 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; }; led@3 {
@@ -200,23 +201,23 @@ led@4 { label = "lswxl:blue:power"; - gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; + default-state = "keep"; }; led@5 { label = "lswxl:red:func"; - gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; - default-state = "keep"; + gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; }; led@6 { label = "lswxl:red:hdderr0"; - gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; + gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>; }; led@7 { label = "lswxl:red:hdderr1"; - gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>; }; };
@@ -225,15 +226,15 @@ pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>; pinctrl-names = "default"; - gpios = <&gpio0 47 GPIO_ACTIVE_LOW - &gpio0 48 GPIO_ACTIVE_LOW>; + gpios = <&gpio1 16 GPIO_ACTIVE_LOW + &gpio1 15 GPIO_ACTIVE_LOW>; gpio-fan,speed-map = <0 3 1500 2 3250 1 5000 0>; - alarm-gpios = <&gpio1 49 GPIO_ACTIVE_HIGH>; + alarm-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>; }; restart_poweroff {
@@ -256,7 +257,7 @@ enable-active-high; regulator-always-on; regulator-boot-on; - gpio = <&gpio0 37 GPIO_ACTIVE_HIGH>; + gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>; }; hdd_power0: regulator@2 { compatible = "regulator-fixed";
arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts +35 -4
@@ -1,7 +1,8 @@ /* * Device Tree file for Buffalo Linkstation LS-WTGL * - * Copyright (C) 2015, Roger Shimizu <[email protected]> + * Copyright (C) 2015, 2016 + * Roger Shimizu <[email protected]> * * This file is dual-licensed: you can use it either under the terms * of the GPL or the X11 license, at your option. Note that this dual
@@ -69,8 +70,6 @@ internal-regs { pinctrl: pinctrl@10000 { - pinctrl-0 = <&pmx_usb_power &pmx_power_hdd - &pmx_fan_low &pmx_fan_high &pmx_fan_lock>; pinctrl-names = "default"; pmx_led_power: pmx-leds {
@@ -162,6 +161,7 @@ led@1 { label = "lswtgl:blue:power"; gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; + default-state = "keep"; }; led@2 {
@@ -188,7 +188,7 @@ 3250 1 5000 0>; - alarm-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>; + alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; }; restart_poweroff {
@@ -228,6 +228,37 @@ }; }; +&devbus_bootcs { + status = "okay"; + devbus,keep-config; + + flash@0 { + compatible = "jedec-flash"; + reg = <0 0x40000>; + bank-width = <1>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + header@0 { + reg = <0 0x30000>; + read-only; + }; + + uboot@30000 { + reg = <0x30000 0xF000>; + read-only; + }; + + uboot_env@3F000 { + reg = <0x3F000 0x1000>; + }; + }; + }; +}; + &mdio { status = "okay";
arch/arm/boot/dts/r8a7740-armadillo800eva.dts +1 -1
@@ -180,7 +180,7 @@ }; &extal1_clk { - clock-frequency = <25000000>; + clock-frequency = <24000000>; }; &extal2_clk { clock-frequency = <48000000>;
arch/arm/mach-imx/Kconfig +1 -0
@@ -562,6 +562,7 @@ config SOC_IMX7D select ARM_GIC select HAVE_IMX_ANATOP select HAVE_IMX_MMDC + select HAVE_IMX_SRC help This enables support for Freescale i.MX7 Dual processor.
arch/arm/mach-omap2/omap_hwmod.c +6 -6
@@ -2207,15 +2207,15 @@ static int _idle(struct omap_hwmod *oh)pr_debug ("omap_hwmod: %s: idling\n" , oh->name); +if (_are_all_hardreset_lines_asserted (oh)) +return 0 ; +if (oh->_state != _HWMOD_STATE_ENABLED) {WARN (1 ,"omap_hwmod: %s: idle state can only be entered from enabled state\n" , oh->name);return -EINVAL ; } -if (_are_all_hardreset_lines_asserted (oh)) -return 0 ; -if (oh->class->sysc)_idle_sysc (oh);_del_initiator_dep (oh, mpu_oh);
@@ -2262,6 +2262,9 @@ static int _shutdown(struct omap_hwmod *oh)int ret, i;u8 prev_state; +if (_are_all_hardreset_lines_asserted (oh)) +return 0 ; +if (oh->_state != _HWMOD_STATE_IDLE && oh->_state != _HWMOD_STATE_ENABLED) { WARN(1, "omap_hwmod: %s: disabled state can only be entered from idle, or enabled state\n",
@@ -2269,9 +2272,6 @@ static int _shutdown(struct omap_hwmod *oh)return -EINVAL ; } -if (_are_all_hardreset_lines_asserted (oh)) -return 0 ; -pr_debug ("omap_hwmod: %s: disabling\n" , oh->name);if (oh->class->pre_shutdown) {
arch/arm64/net/bpf_jit_comp.c +1 -0
@@ -482,6 +482,7 @@ emit_cond_jmp:case BPF_JGE : jmp_cond =A64_COND_CS ;break ; +case BPF_JSET :case BPF_JNE : jmp_cond =A64_COND_NE ;break ;
arch/mips/boot/dts/brcm/bcm7435.dtsi +1 -1
@@ -7,7 +7,7 @@ #address-cells = <1>; #size-cells = <0>; - mips-hpt-frequency = <163125000>; + mips-hpt-frequency = <175625000>; cpu@0 { compatible = "brcm,bmips5200";
arch/mips/cavium-octeon/octeon-irq.c +1 -1
@@ -1220,7 +1220,7 @@ static int octeon_irq_gpio_map(struct irq_domain *d, line = (hw + gpiod->base_hwirq) >>6 ; bit = (hw + gpiod->base_hwirq) &63 ; -if (line >ARRAY_SIZE (octeon_irq_ciu_to_irq) || +if (line >=ARRAY_SIZE (octeon_irq_ciu_to_irq) || octeon_irq_ciu_to_irq[line][bit] !=0 )return -EINVAL ;
arch/mips/cavium-octeon/setup.c +14 -0
@@ -251,6 +251,17 @@ static void octeon_crash_shutdown(struct pt_regs *regs) default_machine_crash_shutdown(regs); } +#ifdef CONFIG_SMP +void octeon_crash_smp_send_stop (void ) +{ +int cpu; + +/* disable watchdogs */ +for_each_online_cpu (cpu) +cvmx_write_csr (CVMX_CIU_WDOGX (cpu_logical_map (cpu)),0 ); +} +#endif +#endif /* CONFIG_KEXEC */ #ifdef CONFIG_CAVIUM_RESERVE32
@@ -864,6 +875,9 @@ void __init prom_init(void) _machine_kexec_shutdown = octeon_shutdown; _machine_crash_shutdown = octeon_crash_shutdown; _machine_kexec_prepare = octeon_kexec_prepare; +#ifdef CONFIG_SMP + _crash_smp_send_stop = octeon_crash_smp_send_stop; +#endif #endif octeon_user_io_init ();
arch/mips/cavium-octeon/smp.c +1 -0
@@ -239,6 +239,7 @@ static int octeon_cpu_disable(void)return -ENOTSUPP ;set_cpu_online (cpu, false); +calculate_cpu_foreign_map ();cpumask_clear_cpu (cpu, &cpu_callin_map);octeon_fixup_irqs ();
arch/mips/include/asm/elf.h +1 -0
@@ -420,6 +420,7 @@ extern const char *__elf_platform;#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)#endif +/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */ #define ARCH_DLINFO \ do { \ NEW_AUX_ENT(AT_SYSINFO_EHDR, \
arch/mips/include/asm/kexec.h +1 -0
@@ -45,6 +45,7 @@ extern const unsigned char kexec_smp_wait[];extern unsigned long secondary_kexec_args[4 ];extern void (*relocated_kexec_smp_wait) (void *);extern atomic_t kexec_ready_to_reboot; +extern void (*_crash_smp_send_stop)(void );#endif #endif
arch/mips/include/asm/r4kcache.h +4 -0
@@ -210,7 +210,11 @@ static inline void protected_writeback_dcache_line(unsigned long addr)static inline void protected_writeback_scache_line (unsigned long addr) { +#ifdef CONFIG_EVA +protected_cachee_op (Hit_Writeback_Inv_SD, addr); +#else protected_cache_op (Hit_Writeback_Inv_SD, addr); +#endif }/*
arch/mips/include/asm/smp.h +2 -0
@@ -63,6 +63,8 @@ extern cpumask_t cpu_coherent_mask; extern void asmlinkage smp_bootstrap(void); +extern void calculate_cpu_foreign_map (void ); +/* * this function sends a 'reschedule' IPI to another CPU. * it goes straight through and wastes no time serializing
arch/mips/include/uapi/asm/auxvec.h +2 -0
@@ -14,4 +14,6 @@/* Location of VDSO image. */ #define AT_SYSINFO_EHDR 33 +#define AT_VECTOR_SIZE_ARCH 1/* entries in ARCH_DLINFO */ +#endif /* __ASM_AUXVEC_H */
arch/mips/kernel/bmips_vec.S +7 -2
@@ -93,7 +93,8 @@ NESTED(bmips_reset_nmi_vec, PT_SIZE, sp) #if defined(CONFIG_CPU_BMIPS5000) mfc0 k0, CP0_PRID li k1, PRID_IMP_BMIPS5000 - andi k0, 0xff00 + /* mask with PRID_IMP_BMIPS5000 to cover both variants */ + andi k0, PRID_IMP_BMIPS5000 bne k0, k1, 1f /* if we're not on core 0, this must be the SMP boot signal */
@@ -166,10 +167,12 @@ bmips_smp_entry: 2: #endif /* CONFIG_CPU_BMIPS4350 || CONFIG_CPU_BMIPS4380 */ #if defined(CONFIG_CPU_BMIPS5000) - /* set exception vector base */ + /* mask with PRID_IMP_BMIPS5000 to cover both variants */ li k1, PRID_IMP_BMIPS5000 + andi k0, PRID_IMP_BMIPS5000 bne k0, k1, 3f + /* set exception vector base */ la k0, ebase lw k0, 0(k0) mtc0 k0, $15, 1
@@ -263,6 +266,8 @@ LEAF(bmips_enable_xks01) #endif /* CONFIG_CPU_BMIPS4380 */ #if defined(CONFIG_CPU_BMIPS5000) li t1, PRID_IMP_BMIPS5000 + /* mask with PRID_IMP_BMIPS5000 to cover both variants */ + andi t2, PRID_IMP_BMIPS5000 bne t2, t1, 2f mfc0 t0, $22, 5
arch/mips/kernel/branch.c +3 -15
@@ -685,21 +685,9 @@ int __compute_return_epc_for_insn(struct pt_regs *regs, }lose_fpu (1 );/* Save FPU state for the emulator. */ reg = insn.i_format.rt; - bit =0 ; -switch (insn.i_format.rs) { -case bc1eqz_op: -/* Test bit 0 */ -if (get_fpr32 (¤t->thread.fpu.fpr[reg],0 ) - &0x1 ) - bit =1 ; -break ; -case bc1nez_op: -/* Test bit 0 */ -if (!(get_fpr32 (¤t->thread.fpu.fpr[reg],0 ) - &0x1 )) - bit =1 ; -break ; - } + bit =get_fpr32 (¤t->thread.fpu.fpr[reg],0 ) &0x1 ; +if (insn.i_format.rs == bc1eqz_op) + bit = !bit;own_fpu (1 );if (bit) epc = epc + 4 +
arch/mips/kernel/cps-vec.S +0 -1
@@ -245,7 +245,6 @@ LEAF(excep_intex) .org 0x480 LEAF(excep_ejtag) - DUMP_EXCEP("EJTAG") PTR_LA k0, ejtag_debug_handler jr k0 nop
arch/mips/kernel/cpu-probe.c +4 -1
@@ -1284,7 +1284,10 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)case PRID_IMP_BMIPS5000 :case PRID_IMP_BMIPS5200 : c->cputype =CPU_BMIPS5000 ; - __cpu_name[cpu] ="Broadcom BMIPS5000" ; +if ((c->processor_id &PRID_IMP_MASK ) ==PRID_IMP_BMIPS5200 ) + __cpu_name[cpu] ="Broadcom BMIPS5200" ; +else + __cpu_name[cpu] ="Broadcom BMIPS5000" ;set_elf_platform (cpu,"bmips5000" ); c->options |=MIPS_CPU_ULRI ;break ;
arch/mips/kernel/crash.c +17 -1
@@ -50,9 +50,14 @@ static void crash_shutdown_secondary(void *passed_regs)static void crash_kexec_prepare_cpus (void ) { +static int cpus_stopped;unsigned int msecs; +unsigned int ncpus; -unsigned int ncpus =num_online_cpus () -1 ;/* Excluding the panic cpu */ +if (cpus_stopped) +return ; + + ncpus =num_online_cpus () -1 ;/* Excluding the panic cpu */ dump_send_ipi (crash_shutdown_secondary);smp_wmb ();
@@ -67,6 +72,17 @@ static void crash_kexec_prepare_cpus(void)cpu_relax (); mdelay(1); } + + cpus_stopped =1 ; +} + +/* Override the weak function in kernel/panic.c */ +void crash_smp_send_stop (void ) +{ +if (_crash_smp_send_stop) +_crash_smp_send_stop (); + +crash_kexec_prepare_cpus (); }#else /* !defined(CONFIG_SMP) */
arch/mips/kernel/machine_kexec.c +1 -0
@@ -25,6 +25,7 @@ void (*_machine_crash_shutdown)(struct pt_regs *regs) = NULL;#ifdef CONFIG_SMP void (*relocated_kexec_smp_wait) (void *);atomic_t kexec_ready_to_reboot =ATOMIC_INIT (0 ); +void (*_crash_smp_send_stop)(void ) =NULL ;#endif int
arch/mips/kernel/perf_event_mipsxx.c +57 -3
90 lines not on this page · raw message
arch/mips/kernel/ptrace.c +0 -3
@@ -670,9 +670,6 @@ static const struct pt_regs_offset regoffset_table[] = {REG_OFFSET_NAME (c0_badvaddr, cp0_badvaddr),REG_OFFSET_NAME (c0_cause, cp0_cause),REG_OFFSET_NAME (c0_epc, cp0_epc), -#ifdef CONFIG_MIPS_MT_SMTC -REG_OFFSET_NAME (c0_tcstatus, cp0_tcstatus), -#endif #ifdef CONFIG_CPU_CAVIUM_OCTEONREG_OFFSET_NAME (mpl0, mpl[0 ]), REG_OFFSET_NAME(mpl1, mpl[1]),
arch/mips/kernel/scall32-o32.S +5 -6
@@ -35,7 +35,6 @@ NESTED(handle_sys, PT_SIZE, sp) lw t1, PT_EPC(sp) # skip syscall on return - subu v0, v0, __NR_O32_Linux # check syscall number addiu t1, 4 # skip to next instruction sw t1, PT_EPC(sp)
@@ -89,6 +88,7 @@ loads_done: and t0, t1 bnez t0, syscall_trace_entry # -> yes syscall_common: + subu v0, v0, __NR_O32_Linux # check syscall number sltiu t0, v0, __NR_O32_Linux_syscalls + 1 beqz t0, illegal_syscall
@@ -118,24 +118,23 @@ o32_syscall_exit: syscall_trace_entry: SAVE_STATIC - move s0, v0 move a0, sp /* * syscall number is in v0 unless we called syscall(__NR_###) * where the real syscall number is in a0 */ - addiu a1, v0, __NR_O32_Linux - bnez v0, 1f /* __NR_syscall at offset 0 */ + move a1, v0 + subu t2, v0, __NR_O32_Linux + bnez t2, 1f /* __NR_syscall at offset 0 */ lw a1, PT_R4(sp) 1: jal syscall_trace_enter bltz v0, 1f # seccomp failed? Skip syscall - move v0, s0 # restore syscall - RESTORE_STATIC + lw v0, PT_R2(sp) # Restore syscall (maybe modified) lw a0, PT_R4(sp) # Restore argument registers lw a1, PT_R5(sp) lw a2, PT_R6(sp)
arch/mips/kernel/scall64-64.S +1 -2
@@ -82,15 +82,14 @@ n64_syscall_exit: syscall_trace_entry: SAVE_STATIC - move s0, v0 move a0, sp move a1, v0 jal syscall_trace_enter bltz v0, 1f # seccomp failed? Skip syscall - move v0, s0 RESTORE_STATIC + ld v0, PT_R2(sp) # Restore syscall (maybe modified) ld a0, PT_R4(sp) # Restore argument registers ld a1, PT_R5(sp) ld a2, PT_R6(sp)
arch/mips/kernel/scall64-n32.S +9 -5
@@ -42,9 +42,6 @@ NESTED(handle_sysn32, PT_SIZE, sp) #endif beqz t0, not_n32_scall - dsll t0, v0, 3 # offset into table - ld t2, (sysn32_call_table - (__NR_N32_Linux * 8))(t0) - sd a3, PT_R26(sp) # save a3 for syscall restarting li t1, _TIF_WORK_SYSCALL_ENTRY
@@ -53,6 +50,9 @@ NESTED(handle_sysn32, PT_SIZE, sp) bnez t0, n32_syscall_trace_entry syscall_common: + dsll t0, v0, 3 # offset into table + ld t2, (sysn32_call_table - (__NR_N32_Linux * 8))(t0) + jalr t2 # Do The Real Thing (TM) li t0, -EMAXERRNO - 1 # error?
@@ -71,21 +71,25 @@ syscall_common: n32_syscall_trace_entry: SAVE_STATIC - move s0, t2 move a0, sp move a1, v0 jal syscall_trace_enter bltz v0, 1f # seccomp failed? Skip syscall - move t2, s0 RESTORE_STATIC + ld v0, PT_R2(sp) # Restore syscall (maybe modified) ld a0, PT_R4(sp) # Restore argument registers ld a1, PT_R5(sp) ld a2, PT_R6(sp) ld a3, PT_R7(sp) ld a4, PT_R8(sp) ld a5, PT_R9(sp) + + dsubu t2, v0, __NR_N32_Linux # check (new) syscall number + sltiu t0, t2, __NR_N32_Linux_syscalls + 1 + beqz t0, not_n32_scall + j syscall_common 1: j syscall_exit
arch/mips/kernel/scall64-o32.S +9 -5
@@ -52,9 +52,6 @@ NESTED(handle_sys, PT_SIZE, sp) sll a2, a2, 0 sll a3, a3, 0 - dsll t0, v0, 3 # offset into table - ld t2, (sys32_call_table - (__NR_O32_Linux * 8))(t0) - sd a3, PT_R26(sp) # save a3 for syscall restarting /*
@@ -88,6 +85,9 @@ loads_done: bnez t0, trace_a_syscall syscall_common: + dsll t0, v0, 3 # offset into table + ld t2, (sys32_call_table - (__NR_O32_Linux * 8))(t0) + jalr t2 # Do The Real Thing (TM) li t0, -EMAXERRNO - 1 # error?
@@ -112,7 +112,6 @@ trace_a_syscall: sd a6, PT_R10(sp) sd a7, PT_R11(sp) # For indirect syscalls - move s0, t2 # Save syscall pointer move a0, sp /* * absolute syscall number is in v0 unless we called syscall(__NR_###)
@@ -133,8 +132,8 @@ trace_a_syscall: bltz v0, 1f # seccomp failed? Skip syscall - move t2, s0 RESTORE_STATIC + ld v0, PT_R2(sp) # Restore syscall (maybe modified) ld a0, PT_R4(sp) # Restore argument registers ld a1, PT_R5(sp) ld a2, PT_R6(sp)
@@ -143,6 +142,11 @@ trace_a_syscall: ld a5, PT_R9(sp) ld a6, PT_R10(sp) ld a7, PT_R11(sp) # For indirect syscalls + + dsubu t0, v0, __NR_O32_Linux # check (new) syscall number + sltiu t0, t0, __NR_O32_Linux_syscalls + 1 + beqz t0, not_o32_scall + j syscall_common 1: j syscall_exit
arch/mips/kernel/setup.c +1 -1
@@ -695,7 +695,7 @@ static void __init request_crashkernel(struct resource *res)#define USE_PROM_CMDLINE IS_ENABLED(CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER)#define USE_DTB_CMDLINE IS_ENABLED(CONFIG_MIPS_CMDLINE_FROM_DTB) -#define EXTEND_WITH_PROM IS_ENABLED(CONFIG_MIPS_CMDLINE_EXTEND) +#define EXTEND_WITH_PROM IS_ENABLED(CONFIG_MIPS_CMDLINE_DTB_EXTEND)static void __init arch_mem_init (char **cmdline_p) {
arch/mips/kernel/smp-bmips.c +1 -0
@@ -362,6 +362,7 @@ static int bmips_cpu_disable(void)pr_info ("SMP: CPU%d is offline\n" , cpu);set_cpu_online (cpu, false); +calculate_cpu_foreign_map ();cpumask_clear_cpu (cpu, &cpu_callin_map);clear_c0_status (IE_IRQ5 );
arch/mips/kernel/smp-cps.c +1 -0
@@ -338,6 +338,7 @@ static int cps_cpu_disable(void)atomic_sub (1 <<cpu_vpe_id (¤t_cpu_data), &core_cfg->vpe_mask);smp_mb__after_atomic ();set_cpu_online (cpu, false); +calculate_cpu_foreign_map ();cpumask_clear_cpu (cpu, &cpu_callin_map);return 0 ;
arch/mips/kernel/smp.c +1 -1
@@ -118,7 +118,7 @@ static inline void set_cpu_core_map(int cpu)* Calculate a new cpu_foreign_map mask whenever a * new cpu appears or disappears. */ -static inline void calculate_cpu_foreign_map (void ) +void calculate_cpu_foreign_map (void ) {int i, k, core_present;cpumask_t temp_foreign_map;
arch/mips/kvm/dyntrans.c +1 -1
@@ -82,7 +82,7 @@ int kvm_mips_trans_mfc0(uint32_t inst, uint32_t *opc, struct kvm_vcpu *vcpu)if ((rd ==MIPS_CP0_ERRCTL ) && (sel ==0 )) { mfc0_inst =CLEAR_TEMPLATE ; - mfc0_inst |= ((rt &0x1f ) <<16 ); + mfc0_inst |= ((rt &0x1f ) <<11 ); }else { mfc0_inst =LW_TEMPLATE ; mfc0_inst |= ((rt &0x1f ) <<16 );
arch/mips/loongson64/loongson-3/smp.c +1 -0
@@ -417,6 +417,7 @@ static int loongson3_cpu_disable(void)return -EBUSY ;set_cpu_online (cpu, false); +calculate_cpu_foreign_map ();cpumask_clear_cpu (cpu, &cpu_callin_map);local_irq_save (flags);fixup_irqs ();
arch/mips/math-emu/cp1emu.c +6 -5
@@ -975,9 +975,10 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx, struct mm_decoded_insn dec_insn, void *__user *fault_addr) { unsigned long contpc = xcp->cp0_epc + dec_insn.pc_inc; -unsigned int cond, cbit; +unsigned int cond, cbit, bit0;mips_instruction ir;int likely, pc_inc; +union fpureg *fpr;u32 __user *wva;u64 __user *dva;u32 wval;
@@ -1189,14 +1190,14 @@ emul:return SIGILL ; cond = likely =0 ; + fpr = ¤t->thread.fpu.fpr[MIPSInst_RT (ir)]; + bit0 =get_fpr32 (fpr,0 ) &0x1 ;switch (MIPSInst_RS (ir)) {case bc1eqz_op: -if (get_fpr32 (¤t->thread.fpu.fpr[MIPSInst_RT (ir)],0 ) &0x1 ) - cond =1 ; + cond = bit0 ==0 ;break ;case bc1nez_op: -if (!(get_fpr32 (¤t->thread.fpu.fpr[MIPSInst_RT (ir)],0 ) &0x1 )) - cond =1 ; + cond = bit0 !=0 ;break ; } goto branch_common;
arch/mips/mm/c-r4k.c +11 -2
@@ -447,6 +447,11 @@ static inline void local_r4k___flush_cache_all(void * args)r4k_blast_scache ();break ; +case CPU_BMIPS5000 : +r4k_blast_scache (); +__sync (); +break ; +default :r4k_blast_dcache ();r4k_blast_icache ();
@@ -1308,6 +1313,12 @@ static void probe_pcache(void) c->icache.flags |=MIPS_CACHE_IC_F_DC ;break ; +case CPU_BMIPS5000 : + c->icache.flags |=MIPS_CACHE_IC_F_DC ; +/* Cache aliases are handled in hardware; allow HIGHMEM */ + c->dcache.flags &= ~MIPS_CACHE_ALIASES ; +break ; +case CPU_LOONGSON2 :/* * LOONGSON2 has 4 way icache, but when using indexed cache op,
@@ -1745,8 +1756,6 @@ void r4k_cache_init(void) flush_icache_range = (void *)b5k_instruction_hazard; local_flush_icache_range = (void *)b5k_instruction_hazard; -/* Cache aliases are handled in hardware; allow HIGHMEM */ - current_cpu_data.dcache.flags &= ~MIPS_CACHE_ALIASES ;/* Optimization: an L2 flush implicitly flushes the L1 */ current_cpu_data.options |=MIPS_CPU_INCLUSIVE_CACHES ;
arch/mips/mm/sc-rm7k.c +1 -1
@@ -161,7 +161,7 @@ static void rm7k_tc_disable(void)local_irq_save (flags);blast_rm7k_tcache ();clear_c0_config (RM7K_CONF_TE ); -local_irq_save (flags); +local_irq_restore (flags); }static void rm7k_sc_disable (void )
arch/mips/mm/tlbex.c +1 -3
@@ -2329,9 +2329,7 @@ static void config_htw_params(void)if (CONFIG_PGTABLE_LEVELS >=3 ) pwsize |=ilog2 (PTRS_PER_PMD ) <<MIPS_PWSIZE_MDW_SHIFT ; -/* If XPA has been enabled, PTEs are 64-bit in size. */ -if (config_enabled (CONFIG_64BITS ) || (read_c0_pagegrain () &PG_ELPA )) - pwsize |=1 ; + pwsize |=ilog2 (sizeof (pte_t)/4 ) <<MIPS_PWSIZE_PTEW_SHIFT ;write_c0_pwsize (pwsize);
arch/mips/net/bpf_jit.c +1 -1
@@ -1207,7 +1207,7 @@ void bpf_jit_compile(struct bpf_prog *fp)memset (&ctx,0 ,sizeof (ctx)); - ctx.offsets =kcalloc (fp->len,sizeof (*ctx.offsets),GFP_KERNEL ); + ctx.offsets =kcalloc (fp->len +1 ,sizeof (*ctx.offsets),GFP_KERNEL );if (ctx.offsets ==NULL )return ;
arch/powerpc/kernel/mce.c +2 -1
@@ -92,7 +92,8 @@ void save_mce_event(struct pt_regs *regs, long handled, mce->in_use =1 ; mce->initiator =MCE_INITIATOR_CPU ; -if (handled) +/* Mark it recovered if we have handled it and MSR(RI=1). */ +if (handled && (regs->msr &MSR_RI )) mce->disposition =MCE_DISPOSITION_RECOVERED ;else mce->disposition =MCE_DISPOSITION_NOT_RECOVERED ;
arch/powerpc/kernel/pci_of_scan.c +10 -2
@@ -82,10 +82,16 @@ static void of_pci_parse_addrs(struct device_node *node, struct pci_dev *dev)const __be32 *addrs;u32 i;int proplen; +bool mark_unset = false; addrs =of_get_property (node,"assigned-addresses" , &proplen); -if (!addrs) -return ; +if (!addrs || !proplen) { + addrs =of_get_property (node,"reg" , &proplen); +if (!addrs || !proplen) +return ; + mark_unset = true; + } +pr_debug (" parse addresses (%d bytes) @ %p\n" , proplen, addrs);for (; proplen >=20 ; proplen -=20 , addrs +=5 ) { flags =pci_parse_of_flags (of_read_number (addrs,1 ),0 );
@@ -110,6 +116,8 @@ static void of_pci_parse_addrs(struct device_node *node, struct pci_dev *dev)continue ; } res->flags = flags; +if (mark_unset) + res->flags |=IORESOURCE_UNSET ; res->name =pci_name (dev); region.start = base; region.end = base + size -1 ;
arch/powerpc/kernel/tm.S +1 -2
@@ -352,8 +352,6 @@ _GLOBAL(__tm_recheckpoint) */ subi r7, r7, STACK_FRAME_OVERHEAD - SET_SCRATCH0(r1) - mfmsr r6 /* R4 = original MSR to indicate whether thread used FP/Vector etc. */
@@ -482,6 +480,7 @@ restore_gprs: * until we turn MSR RI back on. */ + SET_SCRATCH0(r1) ld r5, -8(r1) ld r1, -16(r1)
arch/powerpc/platforms/powernv/opal.c +1 -0
@@ -401,6 +401,7 @@ static int opal_recover_mce(struct pt_regs *regs,if (!(regs->msr &MSR_RI )) {/* If MSR_RI isn't set, we cannot recover */ +pr_err ("Machine check interrupt unrecoverable: MSR(RI=0)\n" ); recovered =0 ; }else if (evt->disposition ==MCE_DISPOSITION_RECOVERED ) {/* Platform corrected itself */
arch/x86/kernel/apic/x2apic_uv_x.c +2 -2
@@ -648,9 +648,9 @@ static __init void map_mmioh_high_uv3(int index, int min_pnode, int max_pnode) l = li; } addr1 = (base << shift) + - f * (unsigned long )(1 << m_io); + f * (1ULL << m_io); addr2 = (base << shift) + - (l +1 ) * (unsigned long )(1 << m_io); + (l +1 ) * (1ULL << m_io);pr_info ("UV: %s[%03d..%03d] NASID 0x%04x ADDR 0x%016lx - 0x%016lx\n" , id, fi, li, lnasid, addr1, addr2);if (max_io < l)
arch/x86/kernel/cpu/perf_event.c +10 -1
@@ -1550,6 +1550,7 @@ static void __init filter_events(struct attribute **attrs) {struct device_attribute *d;struct perf_pmu_events_attr *pmu_attr; +int offset =0 ;int i, j;for (i =0 ; attrs[i]; i++) {
@@ -1558,7 +1559,7 @@ static void __init filter_events(struct attribute **attrs)/* str trumps id */ if (pmu_attr->event_str)continue ; -if (x86_pmu.event_map (i)) +if (x86_pmu.event_map (i + offset))continue ;for (j = i; attrs[j]; j++)
@@ -1566,6 +1567,14 @@ static void __init filter_events(struct attribute **attrs)/* Check the shifted attr. */ i--; + +/* +* event_map() is index based, the attrs array is organized +* by increasing event index. If we shift the events, then +* we need to compensate for the event_map(), otherwise +* we are looking up the wrong event in the map +*/ + offset++; } }
arch/x86/kernel/process_64.c +1 -1
@@ -128,7 +128,7 @@ void release_thread(struct task_struct *dead_task)if (dead_task->mm->context.ldt) {pr_warn ("WARNING: dead process %s still has LDT? <%p/%d>\n" , dead_task->comm, - dead_task->mm->context.ldt, + dead_task->mm->context.ldt->entries, dead_task->mm->context.ldt->size);BUG (); }
block/blk-mq.c +1 -1
@@ -1491,7 +1491,7 @@ static struct blk_mq_tags *blk_mq_init_rq_map(struct blk_mq_tag_set *set,int to_do;void *p; -while (left <order_to_size (this_order -1 ) && this_order) +while (this_order && left <order_to_size (this_order -1 )) this_order--; do {
drivers/acpi/acpi_lpss.c +6 -2
@@ -704,8 +704,13 @@ static int acpi_lpss_platform_notify(struct notifier_block *nb, }switch (action) { -case BUS_NOTIFY_ADD_DEVICE : +case BUS_NOTIFY_BOUND_DRIVER : pdev->dev.pm_domain = &acpi_lpss_pm_domain; +break ; +case BUS_NOTIFY_UNBOUND_DRIVER : + pdev->dev.pm_domain =NULL ; +break ; +case BUS_NOTIFY_ADD_DEVICE :if (pdata->dev_desc->flags &LPSS_LTR )return sysfs_create_group (&pdev->dev.kobj, &lpss_attr_group);
@@ -713,7 +718,6 @@ static int acpi_lpss_platform_notify(struct notifier_block *nb,case BUS_NOTIFY_DEL_DEVICE :if (pdata->dev_desc->flags &LPSS_LTR )sysfs_remove_group (&pdev->dev.kobj, &lpss_attr_group); - pdev->dev.pm_domain =NULL ;break ;default :break ;
drivers/ata/sata_dwc_460ex.c +1 -3
@@ -924,15 +924,13 @@ static void sata_dwc_exec_command_by_tag(struct ata_port *ap,struct ata_taskfile *tf, u8 tag, u32 cmd_issued) { - unsigned long flags; struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap);dev_dbg (ap->dev,"%s cmd(0x%02x): %s tag=%d\n" , __func__, tf->command,ata_get_cmd_descript (tf->command), tag); -spin_lock_irqsave (&ap->host->lock, flags); hsdevp->cmd_issued[tag] = cmd_issued; -spin_unlock_irqrestore (&ap->host->lock, flags); +/* * Clear SError before executing a new command. * sata_dwc_scr_write and read can not be used here. Clearing the PM
drivers/base/firmware_class.c +5 -3
@@ -1119,15 +1119,17 @@ static int _request_firmware(const struct firmware **firmware_p, const char *name, struct device *device, unsigned int opt_flags) { - struct firmware *fw; + struct firmware *fw = NULL;long timeout;int ret;if (!firmware_p)return -EINVAL ; -if (!name || name[0 ] =='\0' ) -return -EINVAL ; +if (!name || name[0 ] =='\0' ) { + ret = -EINVAL ; + goto out; + } ret =_request_firmware_prepare (&fw, name, device);if (ret <=0 )/* error or already assigned */
drivers/base/isa.c +1 -1
@@ -180,4 +180,4 @@ static int __init isa_bus_init(void)return error; } -device_initcall (isa_bus_init); +postcore_initcall (isa_bus_init);
drivers/bluetooth/btmrvl_sdio.c +2 -1
@@ -1112,7 +1112,8 @@ static int btmrvl_sdio_download_fw(struct btmrvl_sdio_card *card)*/ if (btmrvl_sdio_verify_fw_download (card, pollnum)) {BT_ERR ("FW failed to be active in time!" ); -return -ETIMEDOUT ; + ret = -ETIMEDOUT ; + goto done; }sdio_release_host (card->func);
drivers/char/hw_random/exynos-rng.c +9 -0
@@ -155,6 +155,14 @@ static int exynos_rng_probe(struct platform_device *pdev)return ret; } +static int exynos_rng_remove (struct platform_device *pdev) +{ +pm_runtime_dont_use_autosuspend (&pdev->dev); +pm_runtime_disable (&pdev->dev); + +return 0 ; +} +static int __maybe_unused exynos_rng_runtime_suspend (struct device *dev) {struct platform_device *pdev =to_platform_device (dev);
@@ -212,6 +220,7 @@ static struct platform_driver exynos_rng_driver = { .of_match_table = exynos_rng_dt_match, }, .probe = exynos_rng_probe, + .remove = exynos_rng_remove, };module_platform_driver (exynos_rng_driver);
drivers/clk/clk-gpio.c +4 -2
@@ -287,12 +287,14 @@ static void __init of_gpio_clk_setup(struct device_node *node,const char **parent_names;int i, num_parents; + num_parents =of_clk_get_parent_count (node); +if (num_parents <0 ) +return ; + data =kzalloc (sizeof (*data),GFP_KERNEL );if (!data)return ; - num_parents =of_clk_get_parent_count (node); - parent_names =kcalloc (num_parents,sizeof (char *),GFP_KERNEL );if (!parent_names)return ;
drivers/clk/clk-multiplier.c +17 -3
@@ -54,14 +54,28 @@ static unsigned long __bestmult(struct clk_hw *hw, unsigned long rate,unsigned long *best_parent_rate, u8 width, unsigned long flags) { + struct clk_multiplier *mult = to_clk_multiplier(hw);unsigned long orig_parent_rate = *best_parent_rate;unsigned long parent_rate, current_rate, best_rate = ~0 ;unsigned int i, bestmult =0 ; +unsigned int maxmult = (1 << width) -1 ; + +if (!(clk_hw_get_flags (hw) &CLK_SET_RATE_PARENT )) { + bestmult = rate / orig_parent_rate; + +/* Make sure we don't end up with a 0 multiplier */ +if ((bestmult ==0 ) && + !(mult->flags &CLK_MULTIPLIER_ZERO_BYPASS )) + bestmult =1 ; -if (!(clk_hw_get_flags (hw) &CLK_SET_RATE_PARENT )) -return rate / *best_parent_rate; +/* Make sure we don't overflow the multiplier */ +if (bestmult > maxmult) + bestmult = maxmult; + +return bestmult; + } -for (i =1 ; i < ((1 << width) -1 ); i++) { +for (i =1 ; i < maxmult; i++) {if (rate == orig_parent_rate * i) {/* * This is the best case for us if we have a
drivers/clk/clk-xgene.c +4 -6
@@ -218,22 +218,20 @@ static int xgene_clk_enable(struct clk_hw *hw)struct xgene_clk *pclk =to_xgene_clk (hw);unsigned long flags =0 ;u32 data; -phys_addr_t reg;if (pclk->lock)spin_lock_irqsave (pclk->lock, flags);if (pclk->param.csr_reg !=NULL ) {pr_debug ("%s clock enabled\n" ,clk_hw_get_name (hw)); - reg =__pa (pclk->param.csr_reg);/* First enable the clock */ data =xgene_clk_read (pclk->param.csr_reg + pclk->param.reg_clk_offset); data |= pclk->param.reg_clk_mask;xgene_clk_write (data, pclk->param.csr_reg + pclk->param.reg_clk_offset); -pr_debug ("%s clock PADDR base %pa clk offset 0x%08X mask 0x%08X value 0x%08X\n" , -clk_hw_get_name (hw), ®, +pr_debug ("%s clk offset 0x%08X mask 0x%08X value 0x%08X\n" , +clk_hw_get_name (hw), pclk->param.reg_clk_offset, pclk->param.reg_clk_mask, data);
@@ -243,8 +241,8 @@ static int xgene_clk_enable(struct clk_hw *hw) data &= ~pclk->param.reg_csr_mask;xgene_clk_write (data, pclk->param.csr_reg + pclk->param.reg_csr_offset); -pr_debug ("%s CSR RESET PADDR base %pa csr offset 0x%08X mask 0x%08X value 0x%08X\n" , -clk_hw_get_name (hw), ®, +pr_debug ("%s csr offset 0x%08X mask 0x%08X value 0x%08X\n" , +clk_hw_get_name (hw), pclk->param.reg_csr_offset, pclk->param.reg_csr_mask, data); }
drivers/clk/imx/clk-pllv3.c +4 -4
@@ -76,9 +76,9 @@ static int clk_pllv3_prepare(struct clk_hw *hw) val =readl_relaxed (pll->base);if (pll->powerup_set) - val |=BM_PLL_POWER ; + val |= pll->powerdown;else - val &= ~BM_PLL_POWER ; + val &= ~pll->powerdown;writel_relaxed (val, pll->base);return clk_pllv3_wait_lock (pll);
@@ -91,9 +91,9 @@ static void clk_pllv3_unprepare(struct clk_hw *hw) val =readl_relaxed (pll->base);if (pll->powerup_set) - val &= ~BM_PLL_POWER ; + val &= ~pll->powerdown;else - val |=BM_PLL_POWER ; + val |= pll->powerdown;writel_relaxed (val, pll->base); }
drivers/clk/rockchip/clk-mmc-phase.c +0 -11
@@ -41,8 +41,6 @@ static unsigned long rockchip_mmc_recalc(struct clk_hw *hw,#define ROCKCHIP_MMC_DEGREE_MASK 0x3#define ROCKCHIP_MMC_DELAYNUM_OFFSET 2#define ROCKCHIP_MMC_DELAYNUM_MASK (0xff << ROCKCHIP_MMC_DELAYNUM_OFFSET) -#define ROCKCHIP_MMC_INIT_STATE_RESET 0x1 -#define ROCKCHIP_MMC_INIT_STATE_SHIFT 1#define PSECS_PER_SEC 1000000000000LL
@@ -183,15 +181,6 @@ struct clk *rockchip_clk_register_mmc(const char *name, mmc_clock->reg = reg; mmc_clock->shift = shift; -/* -* Assert init_state to soft reset the CLKGEN -* for mmc tuning phase and degree -*/ -if (mmc_clock->shift ==ROCKCHIP_MMC_INIT_STATE_SHIFT ) -writel (HIWORD_UPDATE (ROCKCHIP_MMC_INIT_STATE_RESET , -ROCKCHIP_MMC_INIT_STATE_RESET , - mmc_clock->shift), mmc_clock->reg); - clk =clk_register (NULL , &mmc_clock->hw);if (IS_ERR (clk)) goto err_free;
drivers/clk/st/clkgen-fsyn.c +9 -8
@@ -549,19 +549,20 @@ static int clk_fs660c32_vco_get_params(unsigned long input,return 0 ; } -static long quadfs_pll_fs660c32_round_rate (struct clk_hw *hw,unsigned long rate - ,unsigned long *prate) +static long quadfs_pll_fs660c32_round_rate (struct clk_hw *hw, +unsigned long rate, +unsigned long *prate) {struct stm_fs params; -if (!clk_fs660c32_vco_get_params (*prate, rate, ¶ms)) -clk_fs660c32_vco_get_rate (*prate, ¶ms, &rate); +if (clk_fs660c32_vco_get_params (*prate, rate, ¶ms)) +return rate; -pr_debug ("%s: %s new rate %ld [sdiv=0x%x,md=0x%x,pe=0x%x,nsdiv3=%u]\n" , +clk_fs660c32_vco_get_rate (*prate, ¶ms, &rate); + +pr_debug ("%s: %s new rate %ld [ndiv=%u]\n" , __func__,clk_hw_get_name (hw), - rate, (unsigned int )params.sdiv, - (unsigned int )params.mdiv, - (unsigned int )params.pe, (unsigned int )params.nsdiv); + rate, (unsigned int )params.ndiv);return rate; }
drivers/clk/ti/dpll3xxx.c +2 -1
@@ -437,7 +437,8 @@ int omap3_noncore_dpll_enable(struct clk_hw *hw) parent =clk_hw_get_parent (hw); -if (clk_hw_get_rate (hw) ==clk_get_rate (dd->clk_bypass)) { +if (clk_hw_get_rate (hw) == +clk_hw_get_rate (__clk_get_hw (dd->clk_bypass))) {WARN_ON (parent !=__clk_get_hw (dd->clk_bypass)); r =_omap3_noncore_dpll_bypass (clk); }else {
drivers/cpufreq/cpufreq.c +0 -5
@@ -2171,10 +2171,7 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,return ret; } -up_write (&policy->rwsem); ret =__cpufreq_governor (policy,CPUFREQ_GOV_POLICY_EXIT ); -down_write (&policy->rwsem); -if (ret) {pr_err ("%s: Failed to Exit Governor: %s (%d)\n" , __func__, old_gov->name, ret);
@@ -2190,9 +2187,7 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,if (!ret) goto out; -up_write (&policy->rwsem);__cpufreq_governor (policy,CPUFREQ_GOV_POLICY_EXIT ); -down_write (&policy->rwsem); }/* new governor failed, so re-start old one */
drivers/dma/edma.c +6 -0
@@ -2439,7 +2439,13 @@ static struct platform_driver edma_driver = { }, }; +static int edma_tptc_probe (struct platform_device *pdev) +{ +return 0 ; +} +static struct platform_driver edma_tptc_driver = { + .probe = edma_tptc_probe, .driver = { .name ="edma3-tptc" , .of_match_table = edma_tptc_of_ids,
drivers/gpu/drm/qxl/qxl_cmd.c +2 -3
@@ -529,8 +529,8 @@ int qxl_hw_surface_alloc(struct qxl_device *qdev,/* no need to add a release to the fence for this surface bo, since it is only released when we ask to destroy the surface and it would never signal otherwise */ -qxl_push_command_ring_release (qdev, release,QXL_CMD_SURFACE , false);qxl_release_fence_buffer_objects (release); +qxl_push_command_ring_release (qdev, release,QXL_CMD_SURFACE , false); surf->hw_surf_alloc = true;spin_lock (&qdev->surf_id_idr_lock);
@@ -572,9 +572,8 @@ int qxl_hw_surface_dealloc(struct qxl_device *qdev, cmd->surface_id = id;qxl_release_unmap (qdev, release, &cmd->release_info); -qxl_push_command_ring_release (qdev, release,QXL_CMD_SURFACE , false); -qxl_release_fence_buffer_objects (release); +qxl_push_command_ring_release (qdev, release,QXL_CMD_SURFACE , false);return 0 ; }
drivers/gpu/drm/qxl/qxl_display.c +3 -3
@@ -292,8 +292,8 @@ qxl_hide_cursor(struct qxl_device *qdev) cmd->type =QXL_CURSOR_HIDE ;qxl_release_unmap (qdev, release, &cmd->release_info); -qxl_push_cursor_ring_release (qdev, release,QXL_CMD_CURSOR , false);qxl_release_fence_buffer_objects (release); +qxl_push_cursor_ring_release (qdev, release,QXL_CMD_CURSOR , false);return 0 ; }
@@ -390,8 +390,8 @@ static int qxl_crtc_cursor_set2(struct drm_crtc *crtc, cmd->u.set.visible =1 ;qxl_release_unmap (qdev, release, &cmd->release_info); -qxl_push_cursor_ring_release (qdev, release,QXL_CMD_CURSOR , false);qxl_release_fence_buffer_objects (release); +qxl_push_cursor_ring_release (qdev, release,QXL_CMD_CURSOR , false);/* finish with the userspace bo */ ret =qxl_bo_reserve (user_bo, false);
@@ -450,8 +450,8 @@ static int qxl_crtc_cursor_move(struct drm_crtc *crtc, cmd->u.position.y = qcrtc->cur_y + qcrtc->hot_spot_y;qxl_release_unmap (qdev, release, &cmd->release_info); -qxl_push_cursor_ring_release (qdev, release,QXL_CMD_CURSOR , false);qxl_release_fence_buffer_objects (release); +qxl_push_cursor_ring_release (qdev, release,QXL_CMD_CURSOR , false);return 0 ; }
drivers/gpu/drm/qxl/qxl_draw.c +7 -6
@@ -245,8 +245,8 @@ void qxl_draw_opaque_fb(const struct qxl_fb_image *qxl_fb_image,qxl_bo_physical_address (qdev, dimage->bo,0 );qxl_release_unmap (qdev, release, &drawable->release_info); -qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false);qxl_release_fence_buffer_objects (release); +qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false); out_free_palette:if (palette_bo)
@@ -352,9 +352,10 @@ void qxl_draw_dirty_fb(struct qxl_device *qdev, goto out_release_backoff; rects =drawable_set_clipping (qdev, drawable, num_clips, clips_bo); -if (!rects) +if (!rects) { + ret = -EINVAL ; goto out_release_backoff; - + } drawable = (struct qxl_drawable *)qxl_release_map (qdev, release); drawable->clip.type =SPICE_CLIP_TYPE_RECTS ;
@@ -385,8 +386,8 @@ void qxl_draw_dirty_fb(struct qxl_device *qdev, }qxl_bo_kunmap (clips_bo); -qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false);qxl_release_fence_buffer_objects (release); +qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false); out_release_backoff:if (ret)
@@ -436,8 +437,8 @@ void qxl_draw_copyarea(struct qxl_device *qdev, drawable->u.copy_bits.src_pos.y = sy;qxl_release_unmap (qdev, release, &drawable->release_info); -qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false);qxl_release_fence_buffer_objects (release); +qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false); out_free_release:if (ret)
@@ -480,8 +481,8 @@ void qxl_draw_fill(struct qxl_draw_fill *qxl_draw_fill_rec)qxl_release_unmap (qdev, release, &drawable->release_info); -qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false);qxl_release_fence_buffer_objects (release); +qxl_push_command_ring_release (qdev, release,QXL_CMD_DRAW , false); out_free_release:if (ret)
drivers/gpu/drm/qxl/qxl_ioctl.c +1 -4
@@ -257,11 +257,8 @@ static int qxl_process_single_command(struct qxl_device *qdev,apply_surf_reloc (qdev, &reloc_info[i]); } +qxl_release_fence_buffer_objects (release); ret =qxl_push_command_ring_release (qdev, release, cmd->type, true); -if (ret) -qxl_release_backoff_reserve_list (release); -else -qxl_release_fence_buffer_objects (release); out_free_bos: out_free_release:
drivers/hv/hv_utils_transport.c +4 -5
@@ -80,11 +80,10 @@ static ssize_t hvt_op_write(struct file *file, const char __user *buf, hvt = container_of(file->f_op, struct hvutil_transport, fops); - inmsg =kzalloc (count,GFP_KERNEL ); -if (copy_from_user (inmsg, buf, count)) { -kfree (inmsg); -return -EFAULT ; - } + inmsg =memdup_user (buf, count); +if (IS_ERR (inmsg)) +return PTR_ERR (inmsg); +if (hvt->on_msg (inmsg, count))return -EFAULT ;kfree (inmsg);
drivers/iio/adc/ad7793.c +1 -1
@@ -579,7 +579,7 @@ static const struct iio_info ad7797_info = { .read_raw = &ad7793_read_raw, .write_raw = &ad7793_write_raw, .write_raw_get_fmt = &ad7793_write_raw_get_fmt, - .attrs = &ad7793_attribute_group, + .attrs = &ad7797_attribute_group, .validate_trigger = ad_sd_validate_trigger, .driver_module = THIS_MODULE, };
drivers/infiniband/hw/cxgb3/cxio_hal.c +1 -1
@@ -327,7 +327,7 @@ int cxio_destroy_cq(struct cxio_rdev *rdev_p, struct t3_cq *cq)kfree (cq->sw_queue);dma_free_coherent (&(rdev_p->rnic_info.pdev->dev), (1UL << (cq->size_log2)) - *sizeof (struct t3_cqe ), cq->queue, + *sizeof (struct t3_cqe ) +1 , cq->queue,dma_unmap_addr (cq, mapping));cxio_hal_put_cqid (rdev_p->rscp, cq->cqid);return err;
drivers/infiniband/hw/mlx4/ah.c +1 -0
@@ -107,6 +107,7 @@ static struct ib_ah *create_iboe_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attrreturn ERR_PTR (ret); ah->av.eth.gid_index = ret; ah->av.eth.vlan =cpu_to_be16 (vlan_tag); + ah->av.eth.hop_limit = ah_attr->grh.hop_limit;if (ah_attr->static_rate) { ah->av.eth.stat_rate = ah_attr->static_rate +MLX4_STAT_RATE_OFFSET ; while (ah->av.eth.stat_rate > IB_RATE_2_5_GBPS + MLX4_STAT_RATE_OFFSET &&
drivers/infiniband/hw/mlx5/main.c +1 -1
@@ -905,7 +905,7 @@ static ssize_t show_fw_ver(struct device *device, struct device_attribute *attr, {struct mlx5_ib_dev *dev = container_of(device, struct mlx5_ib_dev, ib_dev.dev); -return sprintf (buf,"%d.%d.%d\n" ,fw_rev_maj (dev->mdev), +return sprintf (buf,"%d.%d.%04d\n" ,fw_rev_maj (dev->mdev),fw_rev_min (dev->mdev),fw_rev_sub (dev->mdev)); }
drivers/infiniband/hw/mlx5/qp.c +7 -5
@@ -271,8 +271,10 @@ static int sq_overhead(enum ib_qp_type qp_type)/* fall through */ case IB_QPT_RC : size +=sizeof (struct mlx5_wqe_ctrl_seg ) + -sizeof (struct mlx5_wqe_atomic_seg ) + -sizeof (struct mlx5_wqe_raddr_seg ); +max (sizeof (struct mlx5_wqe_atomic_seg ) + +sizeof (struct mlx5_wqe_raddr_seg ), +sizeof (struct mlx5_wqe_umr_ctrl_seg ) + +sizeof (struct mlx5_mkey_seg ));break ;case IB_QPT_XRC_TGT :
@@ -280,9 +282,9 @@ static int sq_overhead(enum ib_qp_type qp_type)case IB_QPT_UC : size +=sizeof (struct mlx5_wqe_ctrl_seg ) + -sizeof (struct mlx5_wqe_raddr_seg ) + -sizeof (struct mlx5_wqe_umr_ctrl_seg ) + -sizeof (struct mlx5_mkey_seg ); +max (sizeof (struct mlx5_wqe_raddr_seg ), +sizeof (struct mlx5_wqe_umr_ctrl_seg ) + +sizeof (struct mlx5_mkey_seg ));break ;case IB_QPT_UD :
drivers/input/keyboard/gpio_keys.c +23 -6
@@ -96,13 +96,29 @@ struct gpio_keys_drvdata {* Return value of this function can be used to allocate bitmap * large enough to hold all bits for given type. */ -static inline int get_n_events_by_type (int type) +static int get_n_events_by_type (int type) {BUG_ON (type !=EV_SW && type !=EV_KEY );return (type ==EV_KEY ) ?KEY_CNT :SW_CNT ; } +/** +* get_bm_events_by_type() - returns bitmap of supported events per @type +* @input: input device from which bitmap is retrieved +* @type: type of button (%EV_KEY, %EV_SW) +* +* Return value of this function can be used to allocate bitmap +* large enough to hold all bits for given type. +*/ +static const unsigned long *get_bm_events_by_type (struct input_dev *dev, +int type) +{ +BUG_ON (type !=EV_SW && type !=EV_KEY ); + +return (type ==EV_KEY ) ? dev->keybit : dev->swbit; +} +/** * gpio_keys_disable_button() - disables given GPIO button * @bdata: button data for button to be disabled
@@ -213,6 +229,7 @@ static ssize_t gpio_keys_attr_store_helper(struct gpio_keys_drvdata *ddata, const char *buf, unsigned int type) { int n_events = get_n_events_by_type(type); +const unsigned long *bitmap =get_bm_events_by_type (ddata->input, type);unsigned long *bits;ssize_t error;int i;
@@ -226,6 +243,11 @@ static ssize_t gpio_keys_attr_store_helper(struct gpio_keys_drvdata *ddata, goto out;/* First validate */ +if (!bitmap_subset (bits, bitmap, n_events)) { + error = -EINVAL ; + goto out; + } +for (i =0 ; i < ddata->pdata->nbuttons; i++) {struct gpio_button_data *bdata = &ddata->data[i];
@@ -239,11 +261,6 @@ static ssize_t gpio_keys_attr_store_helper(struct gpio_keys_drvdata *ddata, } } -if (i == ddata->pdata->nbuttons) { - error = -EINVAL ; - goto out; - } -mutex_lock (&ddata->disable_lock);for (i =0 ; i < ddata->pdata->nbuttons; i++) {
drivers/input/touchscreen/edt-ft5x06.c +12 -6
@@ -822,16 +822,22 @@ static void edt_ft5x06_ts_get_defaults(struct device *dev,int error; error =device_property_read_u32 (dev,"threshold" , &val); -if (!error) - reg_addr->reg_threshold = val; +if (!error) { +edt_ft5x06_register_write (tsdata, reg_addr->reg_threshold, val); + tsdata->threshold = val; + } error =device_property_read_u32 (dev,"gain" , &val); -if (!error) - reg_addr->reg_gain = val; +if (!error) { +edt_ft5x06_register_write (tsdata, reg_addr->reg_gain, val); + tsdata->gain = val; + } error =device_property_read_u32 (dev,"offset" , &val); -if (!error) - reg_addr->reg_offset = val; +if (!error) { +edt_ft5x06_register_write (tsdata, reg_addr->reg_offset, val); + tsdata->offset = val; + } } static void
drivers/iommu/dma-iommu.c +7 -4
@@ -152,12 +152,15 @@ int dma_direction_to_prot(enum dma_data_direction dir, bool coherent) } } -static struct iova *__alloc_iova (struct iova_domain *iovad,size_t size, +static struct iova *__alloc_iova (struct iommu_domain *domain,size_t size,dma_addr_t dma_limit) { +struct iova_domain *iovad = domain->iova_cookie;unsigned long shift =iova_shift (iovad);unsigned long length =iova_align (iovad, size) >> shift; +if (domain->geometry.force_aperture) + dma_limit =min (dma_limit, domain->geometry.aperture_end);/* * Enforce size-alignment to be safe - there could perhaps be an * attribute to control this per-device, or at least per-domain...
@@ -297,7 +300,7 @@ struct page **iommu_dma_alloc(struct device *dev, size_t size,if (!pages)return NULL ; - iova =__alloc_iova (iovad, size, dev->coherent_dma_mask); + iova =__alloc_iova (domain, size, dev->coherent_dma_mask);if (!iova) goto out_free_pages;
@@ -369,7 +372,7 @@ dma_addr_t iommu_dma_map_page(struct device *dev, struct page *page,phys_addr_t phys =page_to_phys (page) + offset;size_t iova_off =iova_offset (iovad, phys);size_t len =iova_align (iovad, size + iova_off); -struct iova *iova =__alloc_iova (iovad, len,dma_get_mask (dev)); +struct iova *iova =__alloc_iova (domain, len,dma_get_mask (dev));if (!iova)return DMA_ERROR_CODE ;
@@ -483,7 +486,7 @@ int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg, prev = s; } - iova =__alloc_iova (iovad, iova_len,dma_get_mask (dev)); + iova =__alloc_iova (domain, iova_len,dma_get_mask (dev));if (!iova) goto out_restore_sg;
drivers/md/dm.c +1 -1
@@ -2192,7 +2192,7 @@ static void dm_request_fn(struct request_queue *q) goto out; delay_and_out: -blk_delay_queue (q,HZ /100 ); +blk_delay_queue (q,10 ); out:dm_put_live_table (md, srcu_idx); }
drivers/media/pci/cx23885/cx23885-av.c +1 -1
@@ -24,7 +24,7 @@ void cx23885_av_work_handler(struct work_struct *work) {struct cx23885_dev *dev = container_of(work, struct cx23885_dev, cx25840_work); -bool handled; +bool handled = false;v4l2_subdev_call (dev->sd_cx25840, core, interrupt_service_routine,PCI_MSK_AV_CORE , &handled);
drivers/media/platform/am437x/am437x-vpfe.c +1 -1
@@ -1047,7 +1047,7 @@ static int vpfe_get_ccdc_image_format(struct vpfe_device *vpfe,static int vpfe_config_ccdc_image_format (struct vpfe_device *vpfe) {enum ccdc_frmfmt frm_fmt =CCDC_FRMFMT_INTERLACED ; -int ret; +int ret =0 ;vpfe_dbg (2 , vpfe,"vpfe_config_ccdc_image_format\n" );
drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c +22 -43
136 lines not on this page · raw message
drivers/media/rc/rc-main.c +1 -1
@@ -61,7 +61,7 @@ struct rc_map *rc_map_get(const char *name)struct rc_map_list *map; map =seek_rc_map (name); -#ifdef MODULE +#ifdef CONFIG_MODULES if (!map) {int rc =request_module ("%s" , name);if (rc <0 ) {
drivers/memory/tegra/tegra124.c +1 -0
@@ -1007,6 +1007,7 @@ static const struct tegra_smmu_soc tegra124_smmu_soc = { .num_swgroups = ARRAY_SIZE(tegra124_swgroups), .supports_round_robin_arbitration = true, .supports_request_limit = true, + .num_tlb_lines = 32, .num_asids = 128, };
drivers/mfd/lp8788-irq.c +1 -1
@@ -112,7 +112,7 @@ static irqreturn_t lp8788_irq_handler(int irq, void *ptr)struct lp8788_irq_data *irqd = ptr;struct lp8788 *lp = irqd->lp;u8 status[NUM_REGS ], addr, mask; -bool handled; +bool handled = false;int i;if (lp8788_read_multi_bytes (lp,LP8788_INT_1 , status,NUM_REGS ))
drivers/misc/cxl/fault.c +1 -1
@@ -152,7 +152,7 @@ static void cxl_handle_page_fault(struct cxl_context *ctx, access = _PAGE_PRESENT;if (dsisr & CXL_PSL_DSISR_An_S) access |= _PAGE_RW; -if ((!ctx->kernel) || ~(dar & (1ULL <<63 ))) +if ((!ctx->kernel) || (REGION_ID (dar) ==USER_REGION_ID )) access |= _PAGE_USER;if (dsisr &DSISR_NOHPTE )
drivers/mmc/card/block.c +3 -1
@@ -668,8 +668,10 @@ static int mmc_blk_ioctl_multi_cmd(struct block_device *bdev, } md =mmc_blk_get (bdev->bd_disk); -if (!md) +if (!md) { + err = -EINVAL ; goto cmd_err; + } card = md->queue.card;if (IS_ERR (card)) {
drivers/mmc/core/debugfs.c +1 -1
@@ -170,7 +170,7 @@ static int mmc_ios_show(struct seq_file *s, void *data) str ="invalid" ;break ; } -seq_printf (s,"signal voltage:\t%u (%s)\n" , ios->chip_select, str); +seq_printf (s,"signal voltage:\t%u (%s)\n" , ios->signal_voltage, str);switch (ios->drv_type) {case MMC_SET_DRIVER_TYPE_A :
drivers/mmc/core/sd.c +16 -4
@@ -337,6 +337,7 @@ static int mmc_read_switch(struct mmc_card *card) card->sw_caps.sd3_bus_mode = status[13 ];/* Driver Strengths supported by the card */ card->sw_caps.sd3_drv_type = status[9 ]; + card->sw_caps.sd3_curr_limit = status[7 ] | status[6 ] <<8 ; } out:
@@ -553,14 +554,25 @@ static int sd_set_current_limit(struct mmc_card *card, u8 *status)* when we set current limit to 200ma, the card will draw 200ma, and * when we set current limit to 400/600/800ma, the card will draw its * maximum 300ma from the host. +* +* The above is incorrect: if we try to set a current limit that is +* not supported by the card, the card can rightfully error out the +* attempt, and remain at the default current limit. This results +* in a 300mA card being limited to 200mA even though the host +* supports 800mA. Failures seen with SanDisk 8GB UHS cards with +* an iMX6 host. --rmk */ -if (max_current >=800 ) +if (max_current >=800 && + card->sw_caps.sd3_curr_limit &SD_MAX_CURRENT_800 ) current_limit =SD_SET_CURRENT_LIMIT_800 ; -else if (max_current >=600 ) +else if (max_current >=600 && + card->sw_caps.sd3_curr_limit &SD_MAX_CURRENT_600 ) current_limit =SD_SET_CURRENT_LIMIT_600 ; -else if (max_current >=400 ) +else if (max_current >=400 && + card->sw_caps.sd3_curr_limit &SD_MAX_CURRENT_400 ) current_limit =SD_SET_CURRENT_LIMIT_400 ; -else if (max_current >=200 ) +else if (max_current >=200 && + card->sw_caps.sd3_curr_limit &SD_MAX_CURRENT_200 ) current_limit =SD_SET_CURRENT_LIMIT_200 ;if (current_limit !=SD_SET_CURRENT_NO_CHANGE ) {
drivers/mmc/host/dw_mmc-rockchip.c +64 -0
70 lines not on this page · raw message
drivers/mmc/host/moxart-mmc.c +3 -2
@@ -257,7 +257,7 @@ static void moxart_dma_complete(void *param)static void moxart_transfer_dma (struct mmc_data *data,struct moxart_host *host) {u32 len, dir_data, dir_slave; -unsigned long dma_time; +long dma_time;struct dma_async_tx_descriptor *desc =NULL ;struct dma_chan *dma_chan;
@@ -397,7 +397,8 @@ static void moxart_prepare_data(struct moxart_host *host)static void moxart_request (struct mmc_host *mmc,struct mmc_request *mrq) {struct moxart_host *host =mmc_priv (mmc); -unsigned long pio_time, flags; +long pio_time; +unsigned long flags;u32 status;spin_lock_irqsave (&host->lock, flags);
drivers/mmc/host/sdhci-pxav3.c +22 -0
@@ -307,8 +307,30 @@ static void pxav3_set_uhs_signaling(struct sdhci_host *host, unsigned int uhs) __func__, uhs, ctrl_2); } +static void pxav3_set_power (struct sdhci_host *host,unsigned char mode, +unsigned short vdd) +{ +struct mmc_host *mmc = host->mmc; +u8 pwr = host->pwr; + +sdhci_set_power (host, mode, vdd); + +if (host->pwr == pwr) +return ; + +if (host->pwr ==0 ) + vdd =0 ; + +if (!IS_ERR (mmc->supply.vmmc)) { +spin_unlock_irq (&host->lock); +mmc_regulator_set_ocr (mmc, mmc->supply.vmmc, vdd); +spin_lock_irq (&host->lock); + } +} +static const struct sdhci_ops pxav3_sdhci_ops = { .set_clock = sdhci_set_clock, + .set_power = pxav3_set_power, .platform_send_init_74_clocks = pxav3_gen_init_74_clocks, .get_max_clock = sdhci_pltfm_clk_get_max_clock, .set_bus_width = sdhci_set_bus_width,
drivers/mmc/host/sdhci.c +29 -15
73 lines not on this page · raw message
drivers/mmc/host/sdhci.h +4 -0
@@ -529,6 +529,8 @@ struct sdhci_ops {#endif void (*set_clock)(struct sdhci_host *host,unsigned int clock); +void (*set_power)(struct sdhci_host *host,unsigned char mode, +unsigned short vdd);int (*enable_dma)(struct sdhci_host *host);unsigned int (*get_max_clock)(struct sdhci_host *host);
@@ -660,6 +662,8 @@ static inline bool sdhci_sdio_irq_enabled(struct sdhci_host *host) }void sdhci_set_clock (struct sdhci_host *host,unsigned int clock); +void sdhci_set_power (struct sdhci_host *host,unsigned char mode, +unsigned short vdd);void sdhci_set_bus_width (struct sdhci_host *host,int width);void sdhci_reset (struct sdhci_host *host,u8 mask);void sdhci_set_uhs_signaling (struct sdhci_host *host,unsigned timing);
drivers/mtd/nand/denali.c +9 -2
@@ -1622,9 +1622,16 @@ EXPORT_SYMBOL(denali_init);/* driver exit point */ void denali_remove (struct denali_nand_info *denali) { +/* +* Pre-compute DMA buffer size to avoid any problems in case +* nand_release() ever changes in a way that mtd->writesize and +* mtd->oobsize are not reliable after this call. +*/ +int bufsize = denali->mtd.writesize + denali->mtd.oobsize; + +nand_release (&denali->mtd);denali_irq_cleanup (denali->irq, denali); -dma_unmap_single (denali->dev, denali->buf.dma_buf, - denali->mtd.writesize + denali->mtd.oobsize, +dma_unmap_single (denali->dev, denali->buf.dma_buf, bufsize,DMA_BIDIRECTIONAL ); }EXPORT_SYMBOL (denali_remove);
drivers/net/bonding/bond_3ad.c +7 -4
@@ -100,11 +100,14 @@ enum ad_link_speed_type {#define MAC_ADDRESS_EQUAL (A ,B ) \ ether_addr_equal_64bits((const u8 *)A, (const u8 *)B) -static struct mac_addr null_mac_addr = { {0 ,0 ,0 ,0 ,0 ,0 } }; +static const u8 null_mac_addr[ETH_ALEN + 2] __long_aligned = { +0 ,0 ,0 ,0 ,0 ,0 +};static u16 ad_ticks_per_sec;static const int ad_delta_in_ticks = (AD_TIMER_INTERVAL *HZ ) /1000 ; -static const u8 lacpdu_mcast_addr[ETH_ALEN ] =MULTICAST_LACPDU_ADDR ; +static const u8 lacpdu_mcast_addr[ETH_ALEN + 2] __long_aligned = +MULTICAST_LACPDU_ADDR ;/* ================= main 802.3ad protocol functions ================== */ static int ad_lacpdu_send (struct port *port);
@@ -1701,7 +1704,7 @@ static void ad_clear_agg(struct aggregator *aggregator) aggregator->is_individual = false; aggregator->actor_admin_aggregator_key =0 ; aggregator->actor_oper_aggregator_key =0 ; - aggregator->partner_system = null_mac_addr; +eth_zero_addr (aggregator->partner_system.mac_addr_value); aggregator->partner_system_priority =0 ; aggregator->partner_oper_aggregator_key =0 ; aggregator->receive_state =0 ;
@@ -1723,7 +1726,7 @@ static void ad_initialize_agg(struct aggregator *aggregator)if (aggregator) {ad_clear_agg (aggregator); - aggregator->aggregator_mac_address = null_mac_addr; +eth_zero_addr (aggregator->aggregator_mac_address.mac_addr_value); aggregator->aggregator_identifier =0 ; aggregator->slave =NULL ; }
drivers/net/bonding/bond_alb.c +2 -5
@@ -42,13 +42,10 @@ -#ifndef __long_aligned -#define __long_aligned __attribute__((aligned((sizeof(long))))) -#endif -static const u8 mac_bcast[ETH_ALEN] __long_aligned = { +static const u8 mac_bcast[ETH_ALEN + 2] __long_aligned = {0xff ,0xff ,0xff ,0xff ,0xff ,0xff }; -static const u8 mac_v6_allmcast[ETH_ALEN] __long_aligned = { +static const u8 mac_v6_allmcast[ETH_ALEN + 2] __long_aligned = {0x33 ,0x33 ,0x00 ,0x00 ,0x00 ,0x01 };static const int alb_delta_in_ticks =HZ /ALB_TIMER_TICKS_PER_SEC ;
drivers/net/bonding/bond_netlink.c +1 -2
@@ -628,8 +628,7 @@ static int bond_fill_info(struct sk_buff *skb, goto nla_put_failure;if (nla_put (skb,IFLA_BOND_AD_ACTOR_SYSTEM , -sizeof (bond->params.ad_actor_system), - &bond->params.ad_actor_system)) +ETH_ALEN , &bond->params.ad_actor_system)) goto nla_put_failure; }if (!bond_3ad_get_active_agg_info (bond, &info)) {
drivers/net/dsa/mv88e6xxx.c +5 -4
@@ -2064,9 +2064,9 @@ static int mv88e6xxx_setup_port(struct dsa_switch *ds, int port)* the other bits clear. */ reg =1 << port; -/* Disable learning for DSA and CPU ports */ -if (dsa_is_cpu_port (ds, port) ||dsa_is_dsa_port (ds, port)) - reg =PORT_ASSOC_VECTOR_LOCKED_PORT ; +/* Disable learning for CPU port */ +if (dsa_is_cpu_port (ds, port)) + reg =0 ; ret =_mv88e6xxx_reg_write (ds,REG_PORT (port),PORT_ASSOC_VECTOR , reg);if (ret)
@@ -2150,7 +2150,8 @@ static int mv88e6xxx_setup_port(struct dsa_switch *ds, int port)* database, and allow every port to egress frames on all other ports. */ reg =BIT (ps->num_ports) -1 ;/* all ports */ - ret =_mv88e6xxx_port_vlan_map_set (ds, port, reg & ~port); + reg &= ~BIT (port);/* except itself */ + ret =_mv88e6xxx_port_vlan_map_set (ds, port, reg);if (ret) goto abort;
drivers/net/ethernet/agere/et131x.c +1 -1
@@ -3854,7 +3854,7 @@ static void et131x_tx_timeout(struct net_device *netdev)unsigned long flags;/* If the device is closed, ignore the timeout */ -if (~(adapter->flags &FMP_ADAPTER_INTERRUPT_IN_USE )) +if (!(adapter->flags &FMP_ADAPTER_INTERRUPT_IN_USE ))return ;/* Any nonrecoverable hardware error?
drivers/net/ethernet/broadcom/bcmsysport.c +3 -2
@@ -396,7 +396,7 @@ static void bcm_sysport_get_stats(struct net_device *dev,else p = (char *)priv; p += s->stat_offset; - data[i] = *(u32 *)p; + data[i] = *(unsigned long *)p; } }
@@ -526,7 +526,8 @@ static struct sk_buff *bcm_sysport_rx_refill(struct bcm_sysport_priv *priv,dma_addr_t mapping;/* Allocate a new SKB for a new packet */ - skb =netdev_alloc_skb (priv->netdev,RX_BUF_LENGTH ); + skb =__netdev_alloc_skb (priv->netdev,RX_BUF_LENGTH , +GFP_ATOMIC | __GFP_NOWARN);if (!skb) { priv->mib.alloc_rx_buff_failed++;netif_err (priv, rx_err, ndev,"SKB alloc failed\n" );
drivers/net/ethernet/broadcom/bnxt/bnxt.c +4 -2
@@ -4250,6 +4250,10 @@ static void bnxt_del_napi(struct bnxt *bp)napi_hash_del (&bnapi->napi);netif_napi_del (&bnapi->napi); } +/* We called napi_hash_del() before netif_napi_del(), we need +* to respect an RCU grace period before freeing napi structures. +*/ +synchronize_net (); }static void bnxt_init_napi (struct bnxt *bp)
@@ -4306,9 +4310,7 @@ static void bnxt_tx_disable(struct bnxt *bp) bnapi = bp->bnapi[i]; txr = &bnapi->tx_ring; txq =netdev_get_tx_queue (bp->dev, i); -__netif_tx_lock (txq,smp_processor_id ()); txr->dev_state =BNXT_DEV_STATE_CLOSING ; -__netif_tx_unlock (txq); } }/* Stop all TX queues */
drivers/net/ethernet/broadcom/genet/bcmgenet.c +8 -3
@@ -927,7 +927,11 @@ static void bcmgenet_get_ethtool_stats(struct net_device *dev,else p = (char *)priv; p += s->stat_offset; - data[i] = *(u32 *)p; +if (sizeof (unsigned long ) !=sizeof (u32) && + s->stat_sizeof ==sizeof (unsigned long )) + data[i] = *(unsigned long *)p; +else + data[i] = *(u32 *)p; } }
@@ -1346,7 +1350,7 @@ static int bcmgenet_xmit_single(struct net_device *dev, tx_cb_ptr->skb = skb; - skb_len =skb_headlen (skb) <ETH_ZLEN ?ETH_ZLEN :skb_headlen (skb); + skb_len =skb_headlen (skb); mapping =dma_map_single (kdev, skb->data, skb_len,DMA_TO_DEVICE ); ret =dma_mapping_error (kdev, mapping);
@@ -1575,7 +1579,8 @@ static struct sk_buff *bcmgenet_rx_refill(struct bcmgenet_priv *priv,dma_addr_t mapping;/* Allocate a new Rx skb */ - skb =netdev_alloc_skb (priv->dev, priv->rx_buf_len +SKB_ALIGNMENT ); + skb =__netdev_alloc_skb (priv->dev, priv->rx_buf_len +SKB_ALIGNMENT , +GFP_ATOMIC | __GFP_NOWARN);if (!skb) { priv->mib.alloc_rx_buff_failed++; netif_err(priv, rx_err, priv->dev,
drivers/net/ethernet/brocade/bna/bnad_ethtool.c +6 -1
@@ -31,7 +31,7 @@#define BNAD_NUM_TXF_COUNTERS 12#define BNAD_NUM_RXF_COUNTERS 10#define BNAD_NUM_CQ_COUNTERS (3 + 5) -#define BNAD_NUM_RXQ_COUNTERS 6 +#define BNAD_NUM_RXQ_COUNTERS 7#define BNAD_NUM_TXQ_COUNTERS 5#define BNAD_ETHTOOL_STATS_NUM \
@@ -658,6 +658,8 @@ bnad_get_strings(struct net_device *netdev, u32 stringset, u8 *string) string +=ETH_GSTRING_LEN ;sprintf (string,"rxq%d_allocbuf_failed" , q_num); string +=ETH_GSTRING_LEN ; +sprintf (string,"rxq%d_mapbuf_failed" , q_num); + string +=ETH_GSTRING_LEN ;sprintf (string,"rxq%d_producer_index" , q_num); string +=ETH_GSTRING_LEN ;sprintf (string,"rxq%d_consumer_index" , q_num);
@@ -678,6 +680,9 @@ bnad_get_strings(struct net_device *netdev, u32 stringset, u8 *string)sprintf (string,"rxq%d_allocbuf_failed" , q_num); string +=ETH_GSTRING_LEN ; +sprintf (string,"rxq%d_mapbuf_failed" , + q_num); + string +=ETH_GSTRING_LEN ;sprintf (string,"rxq%d_producer_index" , q_num); string +=ETH_GSTRING_LEN ;
drivers/net/ethernet/cadence/macb.c +2 -2
@@ -1104,7 +1104,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)macb_writel (bp,NCR , ctrl |MACB_BIT (RE ));if (bp->caps &MACB_CAPS_ISR_CLEAR_ON_WRITE ) -macb_writel (bp,ISR ,MACB_BIT (RXUBR )); +queue_writel (queue,ISR ,MACB_BIT (RXUBR )); }if (status &MACB_BIT (ISR_ROVR )) {
@@ -2904,7 +2904,7 @@ static int macb_probe(struct platform_device *pdev) dev->irq =platform_get_irq (pdev,0 );if (dev->irq <0 ) { err = dev->irq; - goto err_disable_clocks; + goto err_out_free_netdev; } mac =of_get_mac_address (np);
drivers/net/ethernet/chelsio/cxgb4/sge.c +1 -1
@@ -1165,7 +1165,7 @@ out_free: dev_kfree_skb_any(skb);/* Discard the packet if the length is greater than mtu */ max_pkt_len =ETH_HLEN + dev->mtu; -if (skb_vlan_tag_present (skb)) +if (skb_vlan_tagged (skb)) max_pkt_len +=VLAN_HLEN ;if (!skb_shinfo (skb)->gso_size && (unlikely (skb->len > max_pkt_len))) goto out_free;
drivers/net/ethernet/chelsio/cxgb4vf/sge.c +1 -1
@@ -1188,7 +1188,7 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)/* Discard the packet if the length is greater than mtu */ max_pkt_len =ETH_HLEN + dev->mtu; -if (skb_vlan_tag_present (skb)) +if (skb_vlan_tagged (skb)) max_pkt_len +=VLAN_HLEN ;if (!skb_shinfo (skb)->gso_size && (unlikely (skb->len > max_pkt_len))) goto out_free;
drivers/net/ethernet/cirrus/ep93xx_eth.c +4 -0
@@ -468,6 +468,9 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep)struct device *dev = ep->dev->dev.parent;int i; +if (!ep->descs) +return ; +for (i =0 ; i <RX_QUEUE_ENTRIES ; i++) {dma_addr_t d;
@@ -490,6 +493,7 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep)dma_free_coherent (dev,sizeof (struct ep93xx_descs ), ep->descs, ep->descs_dma_addr); + ep->descs =NULL ; }static int ep93xx_alloc_buffers (struct ep93xx_priv *ep)
drivers/net/ethernet/emulex/benet/be.h +1 -0
@@ -531,6 +531,7 @@ struct be_adapter {struct delayed_work be_err_detection_work;u8 err_flags; +bool pcicfg_mapped;/* pcicfg obtained via pci_iomap() */ u32 flags;u32 cmd_privileges;/* Ethtool knobs and info */
drivers/net/ethernet/emulex/benet/be_main.c +4 -0
@@ -5526,6 +5526,8 @@ static void be_unmap_pci_bars(struct be_adapter *adapter)pci_iounmap (adapter->pdev, adapter->csr);if (adapter->db)pci_iounmap (adapter->pdev, adapter->db); +if (adapter->pcicfg && adapter->pcicfg_mapped) +pci_iounmap (adapter->pdev, adapter->pcicfg); }static int db_bar (struct be_adapter *adapter)
@@ -5577,8 +5579,10 @@ static int be_map_pci_bars(struct be_adapter *adapter)if (!addr) goto pci_map_err; adapter->pcicfg = addr; + adapter->pcicfg_mapped = true; }else { adapter->pcicfg = adapter->db +SRIOV_VF_PCICFG_OFFSET ; + adapter->pcicfg_mapped = false; } }
drivers/net/ethernet/ethoc.c +5 -5
@@ -1088,7 +1088,7 @@ static int ethoc_probe(struct platform_device *pdev)if (!priv->iobase) {dev_err (&pdev->dev,"cannot remap I/O memory space\n" ); ret = -ENXIO ; - goto error; + goto free; }if (netdev->mem_end) {
@@ -1097,7 +1097,7 @@ static int ethoc_probe(struct platform_device *pdev)if (!priv->membase) {dev_err (&pdev->dev,"cannot remap memory space\n" ); ret = -ENXIO ; - goto error; + goto free; } }else {/* Allocate buffer memory */
@@ -1108,7 +1108,7 @@ static int ethoc_probe(struct platform_device *pdev)dev_err (&pdev->dev,"cannot allocate %dB buffer\n" , buffer_size); ret = -ENOMEM ; - goto error; + goto free; } netdev->mem_end = netdev->mem_start + buffer_size; priv->dma_alloc = buffer_size;
@@ -1122,7 +1122,7 @@ static int ethoc_probe(struct platform_device *pdev) 128, (netdev->mem_end - netdev->mem_start + 1) / ETHOC_BUFSIZ);if (num_bd <4 ) { ret = -ENODEV ; - goto error; + goto free; } priv->num_bd = num_bd;/* num_tx must be a power of two */
@@ -1135,7 +1135,7 @@ static int ethoc_probe(struct platform_device *pdev) priv->vma =devm_kzalloc (&pdev->dev, num_bd*sizeof (void *),GFP_KERNEL );if (!priv->vma) { ret = -ENOMEM ; - goto error; + goto free; }/* Allow the platform setup code to pass in a MAC address. */
drivers/net/ethernet/hisilicon/hns/hnae.c +7 -1
@@ -331,8 +331,10 @@ struct hnae_handle *hnae_get_handle(struct device *owner_dev,return ERR_PTR (-ENODEV ); handle = dev->ops->get_handle (dev, port_id); -if (IS_ERR (handle)) +if (IS_ERR (handle)) { +put_device (&dev->cls_dev);return handle; + } handle->dev = dev; handle->owner_dev = owner_dev;
@@ -355,6 +357,8 @@ out_when_init_queue:for (j = i -1 ; j >=0 ; j--)hnae_fini_queue (handle->qs[j]); +put_device (&dev->cls_dev); +return ERR_PTR (-ENOMEM ); }EXPORT_SYMBOL (hnae_get_handle);
@@ -376,6 +380,8 @@ void hnae_put_handle(struct hnae_handle *h) dev->ops->put_handle (h);module_put (dev->owner); + +put_device (&dev->cls_dev); }EXPORT_SYMBOL (hnae_put_handle);
drivers/net/ethernet/ibm/ehea/ehea_main.c +4 -5
@@ -1169,16 +1169,15 @@ static void ehea_parse_eqe(struct ehea_adapter *adapter, u64 eqe) ec =EHEA_BMASK_GET (NEQE_EVENT_CODE , eqe); portnum =EHEA_BMASK_GET (NEQE_PORTNUM , eqe); port =ehea_get_port (adapter, portnum); +if (!port) { +netdev_err (NULL ,"unknown portnum %x\n" , portnum); +return ; + } dev = port->netdev;switch (ec) {case EHEA_EC_PORTSTATE_CHG :/* port state change */ -if (!port) { -netdev_err (dev,"unknown portnum %x\n" , portnum); -break ; - } -if (EHEA_BMASK_GET (NEQE_PORT_UP , eqe)) {if (!netif_carrier_ok (dev)) { ret =ehea_sense_port_attr (port);
drivers/net/ethernet/intel/i40e/i40e_hmc.c +1 -1
@@ -49,7 +49,7 @@ i40e_status i40e_add_sd_table_entry(struct i40e_hw *hw,struct i40e_hmc_sd_entry *sd_entry;bool dma_mem_alloc_done = false;struct i40e_dma_mem mem; -i40e_status ret_code; +i40e_status ret_code =I40E_SUCCESS ;u64 alloc_len;if (NULL == hmc_info->sd_table.sd_entry) {
drivers/net/ethernet/marvell/mv643xx_eth.c +2 -2
@@ -762,10 +762,10 @@ txq_put_data_tso(struct net_device *dev, struct tx_queue *txq,if (length <=8 && (uintptr_t )data &0x7 ) {/* Copy unaligned small data fragment to TSO header data area */ -memcpy (txq->tso_hdrs + txq->tx_curr_desc *TSO_HEADER_SIZE , +memcpy (txq->tso_hdrs + tx_index *TSO_HEADER_SIZE , data, length); desc->buf_ptr = txq->tso_hdrs_dma - + txq->tx_curr_desc *TSO_HEADER_SIZE ; + + tx_index *TSO_HEADER_SIZE ; }else {/* Alignment is okay, map buffer and hand off to hardware */ txq->tx_desc_mapping[tx_index] =DESC_DMA_MAP_SINGLE ;
drivers/net/ethernet/marvell/mvneta.c +5 -6
@@ -3058,26 +3058,25 @@ static void mvneta_ethtool_update_stats(struct mvneta_port *pp)const struct mvneta_statistic *s;void __iomem *base = pp->base;u32 high, low, val; +u64 val64;int i;for (i =0 , s = mvneta_statistics; s < mvneta_statistics +ARRAY_SIZE (mvneta_statistics); s++, i++) { - val =0 ; -switch (s->type) {case T_REG_32 : val =readl_relaxed (base + s->offset); + pp->ethtool_stats[i] += val;break ;case T_REG_64 :/* Docs say to read low 32-bit then high */ low =readl_relaxed (base + s->offset); high =readl_relaxed (base + s->offset +4 ); - val = (u64 )high <<32 | low; + val64 = (u64 )high <<32 | low; + pp->ethtool_stats[i] += val64;break ; } - - pp->ethtool_stats[i] += val; } }
@@ -3406,7 +3405,7 @@ static int mvneta_probe(struct platform_device *pdev) dev->features =NETIF_F_SG |NETIF_F_IP_CSUM |NETIF_F_TSO ; dev->hw_features |= dev->features; dev->vlan_features |= dev->features; - dev->priv_flags |=IFF_UNICAST_FLT |IFF_LIVE_ADDR_CHANGE ; + dev->priv_flags |=IFF_LIVE_ADDR_CHANGE ; dev->gso_max_segs =MVNETA_MAX_TSO_SEGS ; err =register_netdev (dev);
drivers/net/ethernet/marvell/mvpp2.c +1 -1
@@ -3305,7 +3305,7 @@ static void mvpp2_cls_init(struct mvpp2 *priv)mvpp2_write (priv,MVPP2_CLS_MODE_REG ,MVPP2_CLS_MODE_ACTIVE_MASK );/* Clear classifier flow table */ -memset (&fe.data,0 ,MVPP2_CLS_FLOWS_TBL_DATA_WORDS ); +memset (&fe.data,0 ,sizeof (fe.data));for (index =0 ; index <MVPP2_CLS_FLOWS_TBL_SIZE ; index++) { fe.index = index;mvpp2_cls_flow_write (priv, &fe);
drivers/net/ethernet/mellanox/mlx4/catas.c +9 -2
@@ -182,10 +182,17 @@ void mlx4_enter_error_state(struct mlx4_dev_persistent *persist) err =mlx4_reset_slave (dev); else err =mlx4_reset_master (dev); -BUG_ON (err !=0 ); +if (!err) { +mlx4_err (dev,"device was reset successfully\n" ); + }else { +/* EEH could have disabled the PCI channel during reset. That's +* recoverable and the PCI error flow will handle it. +*/ +if (!pci_channel_offline (dev->persist->pdev)) +BUG_ON (1 ); + } dev->persist->state |=MLX4_DEVICE_STATE_INTERNAL_ERROR ; -mlx4_err (dev,"device was reset successfully\n" );mutex_unlock (&persist->device_state_mutex);/* At that step HW was already reset, now notify clients */
drivers/net/ethernet/mellanox/mlx4/cmd.c +9 -0
@@ -2451,6 +2451,7 @@ err_comm_admin:kfree (priv->mfunc.master.slave_state); err_comm:iounmap (priv->mfunc.comm); + priv->mfunc.comm =NULL ; err_vhcr: dma_free_coherent(&dev->persist->pdev->dev, PAGE_SIZE, priv->mfunc.vhcr,
@@ -2518,6 +2519,13 @@ void mlx4_report_internal_err_comm_event(struct mlx4_dev *dev)int slave;u32 slave_read; +/* If the comm channel has not yet been initialized, +* skip reporting the internal error event to all +* the communication channels. +*/ +if (!priv->mfunc.comm) +return ; +/* Report an internal error event to all * communication channels. */
@@ -2552,6 +2560,7 @@ void mlx4_multi_func_cleanup(struct mlx4_dev *dev) }iounmap (priv->mfunc.comm); + priv->mfunc.comm =NULL ; }void mlx4_cmd_cleanup (struct mlx4_dev *dev,int cleanup_mask)
drivers/net/ethernet/mellanox/mlx4/en_netdev.c +21 -7
@@ -424,14 +424,18 @@ static int mlx4_en_vlan_rx_add_vid(struct net_device *dev,mutex_lock (&mdev->state_lock);if (mdev->device_up && priv->port_up) { err =mlx4_SET_VLAN_FLTR (mdev->dev, priv); -if (err) +if (err) {en_err (priv,"Failed configuring VLAN filter\n" ); + goto out; + } } -if (mlx4_register_vlan (mdev->dev, priv->port, vid, &idx)) -en_dbg (HW , priv,"failed adding vlan %d\n" , vid); -mutex_unlock (&mdev->state_lock); + err =mlx4_register_vlan (mdev->dev, priv->port, vid, &idx); +if (err) +en_dbg (HW , priv,"Failed adding vlan %d\n" , vid); -return 0 ; +out: +mutex_unlock (&mdev->state_lock); +return err; } static int mlx4_en_vlan_rx_kill_vid(struct net_device *dev,
@@ -439,7 +443,7 @@ static int mlx4_en_vlan_rx_kill_vid(struct net_device *dev, {struct mlx4_en_priv *priv =netdev_priv (dev);struct mlx4_en_dev *mdev = priv->mdev; -int err; +int err =0 ;en_dbg (HW , priv,"Killing VID:%d\n" , vid);
@@ -456,7 +460,7 @@ static int mlx4_en_vlan_rx_kill_vid(struct net_device *dev, }mutex_unlock (&mdev->state_lock); -return 0 ; +return err; }static void mlx4_en_u64_to_mac (unsigned char dst_mac[ETH_ALEN +2 ],u64 src_mac)
@@ -1716,6 +1720,16 @@ int mlx4_en_start_port(struct net_device *dev)vxlan_get_rx_port (dev);#endif priv->port_up = true; + +/* Process all completions if exist to prevent +* the queues freezing if they are full +*/ +for (i =0 ; i < priv->rx_ring_num; i++) { +local_bh_disable (); +napi_schedule (&priv->rx_cq[i]->napi); +local_bh_enable (); + } +netif_tx_start_all_queues (dev);netif_device_attach (dev);
drivers/net/ethernet/mellanox/mlx4/en_port.c +2 -2
@@ -164,7 +164,7 @@ int mlx4_en_DUMP_ETH_STATS(struct mlx4_en_dev *mdev, u8 port, u8 reset)return PTR_ERR (mailbox); err =mlx4_cmd_box (mdev->dev,0 , mailbox->dma, in_mod,0 ,MLX4_CMD_DUMP_ETH_STATS ,MLX4_CMD_TIME_CLASS_B , -MLX4_CMD_WRAPPED ); +MLX4_CMD_NATIVE );if (err) goto out;
@@ -325,7 +325,7 @@ int mlx4_en_DUMP_ETH_STATS(struct mlx4_en_dev *mdev, u8 port, u8 reset) err =mlx4_cmd_box (mdev->dev,0 , mailbox->dma, in_mod |MLX4_DUMP_ETH_STATS_FLOW_CONTROL ,0 ,MLX4_CMD_DUMP_ETH_STATS , -MLX4_CMD_TIME_CLASS_B ,MLX4_CMD_WRAPPED ); +MLX4_CMD_TIME_CLASS_B ,MLX4_CMD_NATIVE );if (err) goto out; }
drivers/net/ethernet/mellanox/mlx4/fw.c +2 -3
@@ -610,8 +610,7 @@ int mlx4_QUERY_FUNC_CAP(struct mlx4_dev *dev, u8 gen_or_port,MLX4_GET (func_cap->phys_port_id, outbox,QUERY_FUNC_CAP_PHYS_PORT_ID ); -MLX4_GET (field, outbox,QUERY_FUNC_CAP_FLAGS0_OFFSET ); - func_cap->flags |= (field &QUERY_FUNC_CAP_PHV_BIT ); +MLX4_GET (func_cap->flags0, outbox,QUERY_FUNC_CAP_FLAGS0_OFFSET );/* All other resources are allocated by the master, but we still report * 'num' and 'reserved' capabilities as follows:
@@ -2840,7 +2839,7 @@ int get_phv_bit(struct mlx4_dev *dev, u8 port, int *phv)memset (&func_cap,0 ,sizeof (func_cap)); err =mlx4_QUERY_FUNC_CAP (dev, port, &func_cap);if (!err) - *phv = func_cap.flags &QUERY_FUNC_CAP_PHV_BIT ; + *phv = func_cap.flags0 &QUERY_FUNC_CAP_PHV_BIT ;return err; }EXPORT_SYMBOL (get_phv_bit);
drivers/net/ethernet/mellanox/mlx4/fw.h +1 -1
@@ -150,7 +150,7 @@ struct mlx4_func_cap {u32 qp1_proxy_qpn;u32 reserved_lkey;u8 physical_port; -u8 port_flags; +u8 flags0;u8 flags1;u64 phys_port_id;u32 extra_flags;
drivers/net/ethernet/mellanox/mlx4/intf.c +3 -0
@@ -217,6 +217,9 @@ void mlx4_unregister_device(struct mlx4_dev *dev)struct mlx4_priv *priv =mlx4_priv (dev);struct mlx4_interface *intf; +if (!(dev->persist->interface_state &MLX4_INTERFACE_STATE_UP )) +return ; +mlx4_stop_catas_poll (dev);if (dev->persist->interface_state &MLX4_INTERFACE_STATE_DELETION &&mlx4_is_slave (dev)) {
drivers/net/ethernet/mellanox/mlx4/main.c +24 -15
@@ -3854,45 +3854,53 @@ static pci_ers_result_t mlx4_pci_slot_reset(struct pci_dev *pdev) {struct mlx4_dev_persistent *persist =pci_get_drvdata (pdev);struct mlx4_dev *dev = persist->dev; -struct mlx4_priv *priv =mlx4_priv (dev); -int ret; -int nvfs[MLX4_MAX_PORTS +1 ] = {0 ,0 ,0 }; -int total_vfs; +int err;mlx4_err (dev,"mlx4_pci_slot_reset was called\n" ); - ret =pci_enable_device (pdev); -if (ret) { -mlx4_err (dev,"Can not re-enable device, ret=%d\n" , ret); + err =pci_enable_device (pdev); +if (err) { +mlx4_err (dev,"Can not re-enable device, err=%d\n" , err);return PCI_ERS_RESULT_DISCONNECT ; }pci_set_master (pdev);pci_restore_state (pdev);pci_save_state (pdev); +return PCI_ERS_RESULT_RECOVERED ; +} + +static void mlx4_pci_resume (struct pci_dev *pdev) +{ +struct mlx4_dev_persistent *persist =pci_get_drvdata (pdev); +struct mlx4_dev *dev = persist->dev; +struct mlx4_priv *priv =mlx4_priv (dev); +int nvfs[MLX4_MAX_PORTS +1 ] = {0 ,0 ,0 }; +int total_vfs; +int err; +mlx4_err (dev,"%s was called\n" , __func__); total_vfs = dev->persist->num_vfs;memcpy (nvfs, dev->persist->nvfs,sizeof (dev->persist->nvfs));mutex_lock (&persist->interface_state_mutex);if (!(persist->interface_state &MLX4_INTERFACE_STATE_UP )) { - ret =mlx4_load_one (pdev, priv->pci_dev_data, total_vfs, nvfs, + err =mlx4_load_one (pdev, priv->pci_dev_data, total_vfs, nvfs, priv,1 ); -if (ret) { -mlx4_err (dev,"%s: mlx4_load_one failed, ret=%d\n" , - __func__, ret); +if (err) { +mlx4_err (dev,"%s: mlx4_load_one failed, err=%d\n" , + __func__, err); goto end; } - ret =restore_current_port_types (dev, dev->persist-> + err =restore_current_port_types (dev, dev->persist-> curr_port_type, dev->persist-> curr_port_poss_type); -if (ret) -mlx4_err (dev,"could not restore original port types (%d)\n" , ret); +if (err) +mlx4_err (dev,"could not restore original port types (%d)\n" , err); } end:mutex_unlock (&persist->interface_state_mutex); -return ret ?PCI_ERS_RESULT_DISCONNECT :PCI_ERS_RESULT_RECOVERED ; }static void mlx4_shutdown (struct pci_dev *pdev)
@@ -3909,6 +3917,7 @@ static void mlx4_shutdown(struct pci_dev *pdev)static const struct pci_error_handlers mlx4_err_handler = { .error_detected = mlx4_pci_err_detected, .slot_reset = mlx4_pci_slot_reset, + .resume = mlx4_pci_resume, };static struct pci_driver mlx4_driver = {
drivers/net/ethernet/mellanox/mlx4/mcg.c +8 -3
@@ -1109,7 +1109,7 @@ int mlx4_qp_attach_common(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],struct mlx4_cmd_mailbox *mailbox;struct mlx4_mgm *mgm;u32 members_count; -int index, prev; +int index =-1 , prev;int link =0 ;int i;int err;
@@ -1188,7 +1188,7 @@ int mlx4_qp_attach_common(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16], goto out; out: -if (prot ==MLX4_PROT_ETH ) { +if (prot ==MLX4_PROT_ETH && index !=-1 ) {/* manage the steering entry for promisc mode */ if (new_entry) err = new_steering_entry(dev, port, steer,
@@ -1464,7 +1464,12 @@ EXPORT_SYMBOL_GPL(mlx4_multicast_detach);int mlx4_flow_steer_promisc_add (struct mlx4_dev *dev,u8 port,u32 qpn,enum mlx4_net_trans_promisc_mode mode) { -struct mlx4_net_trans_rule rule; +struct mlx4_net_trans_rule rule = { + .queue_mode =MLX4_NET_TRANS_Q_FIFO , + .exclusive =0 , + .allow_loopback =1 , + }; +u64 *regid_p;switch (mode) {
drivers/net/ethernet/mellanox/mlx4/mlx4.h +2 -3
@@ -143,9 +143,10 @@ enum mlx4_resource {RES_MTT ,RES_MAC ,RES_VLAN , -RES_EQ , +RES_NPORT_ID ,RES_COUNTER ,RES_FS_RULE , +RES_EQ , MLX4_NUM_OF_RESOURCE_TYPE };
@@ -1312,8 +1313,6 @@ int mlx4_SET_VLAN_FLTR_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_cmd_info *cmd);int mlx4_common_set_vlan_fltr (struct mlx4_dev *dev,int function,int port,void *buf); -int mlx4_common_dump_eth_stats (struct mlx4_dev *dev,int slave,u32 in_mod, -struct mlx4_cmd_mailbox *outbox); int mlx4_DUMP_ETH_STATS_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vhcr *vhcr, struct mlx4_cmd_mailbox *inbox,
drivers/net/ethernet/mellanox/mlx4/port.c +1 -12
@@ -1155,24 +1155,13 @@ int mlx4_SET_VLAN_FLTR_wrapper(struct mlx4_dev *dev, int slave,return err; } -int mlx4_common_dump_eth_stats (struct mlx4_dev *dev,int slave, -u32 in_mod,struct mlx4_cmd_mailbox *outbox) -{ -return mlx4_cmd_box (dev,0 , outbox->dma, in_mod,0 , -MLX4_CMD_DUMP_ETH_STATS ,MLX4_CMD_TIME_CLASS_B , -MLX4_CMD_NATIVE ); -} -int mlx4_DUMP_ETH_STATS_wrapper (struct mlx4_dev *dev,int slave,struct mlx4_vhcr *vhcr,struct mlx4_cmd_mailbox *inbox,struct mlx4_cmd_mailbox *outbox,struct mlx4_cmd_info *cmd) { -if (slave != dev->caps.function) -return 0 ; -return mlx4_common_dump_eth_stats (dev, slave, - vhcr->in_modifier, outbox); +return 0 ; } int mlx4_get_slave_from_roce_gid(struct mlx4_dev *dev, int port, u8 *gid,
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +6 -4
@@ -918,11 +918,13 @@ static int handle_existing_counter(struct mlx4_dev *dev, u8 slave, int port,spin_lock_irq (mlx4_tlock (dev)); r =find_res (dev, counter_index,RES_COUNTER ); -if (!r || r->owner != slave) +if (!r || r->owner != slave) { ret = -EINVAL ; - counter = container_of(r, struct res_counter, com); -if (!counter->port) - counter->port = port; + }else { + counter = container_of(r, struct res_counter, com); +if (!counter->port) + counter->port = port; + }spin_unlock_irq (mlx4_tlock (dev));return ret;
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +64 -53
185 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/health.c +8 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/main.c +36 -48
84 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c +18 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/qp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/wq.c +8 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/pci.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/port.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum.c +8 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/switchx2.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/moxa/moxart_ether.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qede/qede_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c +11 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +10 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c +10 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/phy/phy.c +28 -18
46 lines not on this page · raw message
drivers/net/vrf.c +16 -161
177 lines not on this page · raw message
drivers/net/vxlan.c +36 -26
62 lines not on this page · raw message
drivers/net/wireless/ath/ath9k/htc_hst.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c +16 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c +17 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-7000.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mwifiex/sta_event.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/tty/serial/msm_serial.c +66 -33
99 lines not on this page · raw message
drivers/vfio/platform/reset/vfio_platform_amdxgbe.c +1 -1
Lines of this file are not shown. View the raw message.
net/bridge/br_fdb.c +27 -25
52 lines not on this page · raw message
net/ipv4/ip_gre.c +34 -12
46 lines not on this page · raw message
net/ipv6/route.c +52 -23
75 lines not on this page · raw message
net/mac80211/tdls.c +35 -8
43 lines not on this page · raw message
net/sunrpc/xprtrdma/verbs.c +23 -18
41 lines not on this page · raw message
sound/pci/fm801.c +43 -28
71 lines not on this page · 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.